精华内容
下载资源
问答
  •   写这个文章主要是因为学习了吴恩达老师的机器学习视频,在神经网络的反向传播算法(Back Propagation)的公式推导有些模糊,所以自己也查阅了很多资料,才基本搞明白其中的原理。所以希望通过写一下文章来进行...

    1.前言

      写这个文章主要是因为学习了吴恩达老师的机器学习视频,在神经网络的反向传播算法(Back Propagation)的公式推导有些模糊,所以自己也查阅了很多资料,才基本搞明白其中的原理。所以希望通过写一下文章来进行梳理一下。
      因为本文的公式推导是基于吴恩达老师的课程,课程里的神经网络部分主要讲述的是神经网络在分类的应用,因此激活函数采用的是sigmoid函数,下面的公式推导也基于这个进行推导。
      最后,因为自己是刚开始学习机器学习,所以可能理解上存在一些小的偏差。如果文章中有错误,欢迎大家指正。

    2.前向传播

      要理解反向传播,那么就必须先理解前向传播,下图以一个三层神经网络为例。。
    在这里插入图片描述

      根据上图,我给大家罗列一下正向传播的步骤,前向传播还是比较好理解的。通过输入层(Layer1)将数据输入(注意要加上偏执单元a0(l)=1),然后经过隐藏层(Layer2)加工处理,最后通过输出层(Layer3)进行输出结果。

    1、输入层输入训练集
      输入层其实就是对应上图中的Layer1
      我们会有训练集**(x,y)**,训练集中会包含许多的 (x(i),y(i))样本,每一个x(i)中又会包含许多的特征 xj(i),如x1(i)、x2(i)等等。
      然后我们将x(i)中的xj(i)输入到神经网络中,就成为了输入层中的 aj(0),其中x1(i)=a1(1)、x2(i)=a2(1)
      最后,为了计算方便,我们需要加上 偏置单元a0(1)=1

    2、隐藏层计算zj(2)
      第二步就是通过权重矩阵计算出zj(2),具体的计算方法如下图所示:
    在这里插入图片描述
      因为权重w和参数θ代表的是一个意思,因此对于上图可以进行向量化表示,具体如下图所示(@代表矩阵的方式相乘):
    在这里插入图片描述
    3、通过激活函数计算出aj(2)
      通过上一步计算的zj(2),经过激活函数sigmoid,计算出aj(2),具体如下图所示
    在这里插入图片描述

    4、计算输出层的aj(3)
      原理和上面计算隐藏层的类似,这里就不再重复了,相类比就可以计算出aj(3)

    3.反向传播

    还是老规矩,我们先上图,再一步一步进行解释。
    在这里插入图片描述
      反向传播的提出其实是为了解决偏导数计算量大的问题,利用反向传播算法可以快速计算任意一个偏导数。反向传播算法的思想和前向传播是一样的,只是一个反向的过程,推导过程中注意链式法则,一层扣一环即可求得结果。
      大家在看下面的推导的时候,一定记得高数中的链式法则,逐步推导就可以了,其实是一个很简单的过程。

    1、定义损失函数
      首先,我们先定义这个神经网络的损失函数,如下图所示
    在这里插入图片描述

    2、定义误差δ
      吴恩达老师在视频中将δ翻译为误差,其实这是一种广义上的误差。因为除了输出层之外,我们是无法直接得到每一层的误差的。
      广义上定义这个误差是这样的,如下图所示:
    在这里插入图片描述
      因为偏导数其实就是表明了自变量对因变量产生了多大的影响。因此对于上面这个图中关于δ的定义,我们也就可以理解为zj(l)这个数对最终输出层的计算的误差J(θ)产生了多大的影响,也就是这个数对于这个误差做出了多大贡献。最理想的状态是δ=0,也就是偏导数等于0,没有对误差最终的误差产生影响。然后我们就将把这个“贡献”称为误差。
       后面的公式计算每一层的δj(l)其实都是基于这个定义进行推导的。至于为什么在输出层没有使用这个定义去求误差,而是直接使用δj(L)=aj(L)-y得到输出层的误差,大家可以看完全文后回头去看一下这篇文章:反向传播输出层误差 δ。这篇文章清晰地进行了证明,这是因为逻辑回归的损失函数凑巧的一个性质造成的,如果是其他的损失函数则需要按照定义去

    3、第L层δ(输出层)的具体推导
       首先,我们先定义误差δ的一般形式,如下图所示:
    在这里插入图片描述

       对于输出层的误差推导如下图所示:
    在这里插入图片描述
    4、第l层误差δ的具体推导
       下面我们对上一步进行推广,得到普遍的l层的误差误差δ
    在这里插入图片描述

       对上图结果向量化可得:
    在这里插入图片描述
       上面的推导看似很复杂,其实就是遵循一个链式法则,我已经基本没有省略步骤了,应该是很详细了。推导的时候需要记得前向传播中a(l)是如何通过权重矩阵编程z(l+1)的,然后z(l+1)通过激活函数又会变成a(l+1),只要遵循这个就可以一步一步推导得出结果。

    5、计算得出θij(l)的偏导数
       反向传播算法的最终目的就是为了方便计算偏导数,到这一步就可以计算偏导数了。下面先重新放上吴恩达老师的视频截图,如下图所示
    在这里插入图片描述

       从上图中我们可以看到,吴恩达老师还把g’(a)展开成了g(a)*(1-g(a))的形式,这个其实是因为sigmoid函数的性质造成的,具体推导如下:
    在这里插入图片描述
       关于偏导数的推导如下图所示:
    在这里插入图片描述
       通过上面的推导,就可以完全解释吴恩达老师所有公式的原理了。

    4.参考文章

    1、反向传播算法(过程及公式推导)
    2、反向传播输出层误差 δ
    3、详解反向传播算法(上)
    4、详解反向传播算法(下)

    展开全文
  • 反向传播算法原理

    千次阅读 2018-10-05 12:15:54
    反向传播算法的直观理解 点击链接:https://blog.csdn.net/mao_xiao_feng/article/details/53048213  博文介绍很详细,我不在复制粘贴,大家点击查看。

    反向传播算法的直观理解

    点击链接:https://blog.csdn.net/mao_xiao_feng/article/details/53048213 

    博文介绍很详细,我不在复制粘贴,大家点击查看。

    展开全文
  • 神经网络BP反向传播算法原理和详细推导流程

    万次阅读 多人点赞 2018-05-09 22:25:53
    1 反向传播算法和BP网络简介 误差反向传播算法简称反向传播算法(即BP算法)。使用反向传播算法的多层感知器又称为BP神经网络。BP算法是一个迭代算法,它的基本思想为:(1)先计算每一层的状态和激活值,直到最后一...

    1  反向传播算法和BP网络简介

     

        误差反向传播算法简称反向传播算法(即BP算法)。使用反向传播算法的多层感知器又称为BP神经网络。BP算法是一个迭代算法,它的基本思想为:(1)先计算每一层的状态和激活值,直到最后一层(即信号是前向传播的);(2)计算每一层的误差,误差的计算过程是从最后一层向前推进的(这就是反向传播算法名字的由来);(3)更新参数(目标是误差变小)。迭代前面两个步骤,直到满足停止准则(比如相邻两次迭代的误差的差别很小)。

        本文的记号说明:

     

     

     

    下面以三层感知器(即只含有一个隐藏层的多层感知器)为例介绍“反向传播算法(BP 算法)”。

    2 信息前向传播

     

     

    3 误差反向传播

    3.1 输出层的权重参数更新

    3.2  隐藏层的权重参数更新

    3.3输出层和隐藏层的偏置参数更新

    3.4 BP算法四个核心公式

     

    3.5 BP 算法计算某个训练数据的代价函数对参数的偏导数

    3.6 BP 算法总结:用“批量梯度下降”算法更新参数

    4 梯度消失问题及其解决办法

    5 加快 BP 网络训练速度:Rprop 算法

     

     

     

     

    展开全文
  • 神经网络反向传播算法原理笔记

    万次阅读 2018-05-27 14:46:58
    神经网络是一种是基于生物学中神经网络的基本原理,在理解和抽象了人脑结构和外界刺激响应机制后,以网络拓扑知识为理论基础,模拟人脑的神经系统对复杂信息的处理机制的一种数学模型。该模型以并行分布的处理能力、...

           神经网络是一种是基于生物学中神经网络的基本原理,在理解和抽象了人脑结构和外界刺激响应机制后,以网络拓扑知识为理论基础,模拟人脑的神经系统对复杂信息的处理机制的一种数学模型。该模型以并行分布的处理能力、高容错性、智能化和自学习等能力为特征,将信息的加工和存储结合在一起,以其独特的知识表示方式和智能化的自适应学习能力,引起各学科领域的关注。它实际上是一个有大量简单元件相互连接而成的复杂网络,具有高度的非线性,能够进行复杂的逻辑操作和非线性关系实现的系统。

           神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激活函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),神经网络就是通过这种方式来模拟人类的记忆。网络的输出则取决于网络的结构、网络的连接方式、权重和激活函数。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。神经网络的构筑理念是受到生物的神经网络运作启发而产生的。人工神经网络则是把对生物神经网络的认识与数学统计模型相结合,借助数学统计工具来实现。另一方面在人工智能学的人工感知领域,通过数学统计学的方法,使神经网络能够具备类似于人的决定能力和简单的判断能力。
           神经网络架构:
    1
    2
    假设有这样一个学生分数数据集:
    3
           两个输入栏表示了学生学习的时间和期中考试的分数。最终结果栏可以有两种值,1 或者 0,来表示学生是否通过的期末考试。例如,如果学生学习了 35 个小时并在期中获得了 67 分,他 / 她就会通过期末考试。
           现在假设我们想预测一个学习了 25 个小时并在期中考试中获得 70 分的学生是否能够通过期末考试 ?这是一个二元分类问题,多层感知器可以从给定的样本(训练数据)进行学习,并且根据给出的新的数据点,进行准确的预测。
    训练多层感知器:反向传播算法
           反向传播误差,通常缩写为「BackProp」,是几种训练人工神经网络的方法之一。这是一种监督学习方法,即通过标记的训练数据来学习(有监督者来引导学习)。简单说来,BackProp 就像「从错误中学习」。监督者在人工神经网络犯错误时进行纠正。
           一个人工神经网络包含多层的节点;输入层,中间隐藏层和输出层。相邻层节点的连接都有配有「权重」。学习的目的是为这些边缘分配正确的权重。通过输入向量,这些权重可以决定输出向量。在监督学习中,训练集是已标注的。这意味着对于一些给定的输入,我们知道期望的输出。
           反向传播算法:最初,所有的边权重(edge weight)都是随机分配的。对于所有训练数据集中的输入,人工神经网络都被激活,并且观察其输出。这些输出会和我们已知的、期望的输出进行比较,误差会「传播」回上一层。该误差会被标注,权重也会被相应的「调整」。该流程重复,直到输出误差低于制定的标准。
           上述算法结束后,我们就得到了一个学习过的神经网络,该网络被认为是可以接受「新」输入的。该神经网络可以说从一些样本(标注数据)和其错误(误差传播)中得到了学习。

    多层感知器的前向传播:
    4
           在分类任务中,通常在感知器的输出层中使用 Softmax 函数作为激活函数,以保证输出的是概率并且相加等于 1。Softmax 函数接收一个随机实值的分数向量,转化成多个介于 0 和 1 之间、并且总和为 1 的多个向量值。所以,在这个例子中:
           概率(Pass)+概率(Fail)=1

    第一步:前向传播
           网络中所有的权重都是随机分配的。现在考虑上图中标注 V 的隐藏层节点。假设从输入连接到这些节点的权重分别为 w1、w2 和 w3(如图上图所示)。
           神经网络会将第一个训练样本作为输入(已知在输入为 35 和 67 的情况下,通过的概率为 1)。
           网络的输入=[35, 67]
           期望的网络输出(目标)=[1, 0]
           涉及到的节点的输出 V 可以按如下方式计算(f 是类似 Sigmoid 的激活函数):
                   V = f(1w1 + 35w2 + 67*w3)

    第二步:反向传播和权重更新
           计算输出节点的总误差,并将这些误差用反向传播算法传播回网络,以计算梯度。接下来,使用类似梯度下降之类的算法来「调整」网络中的所有权重,目的是减少输出层的误差。下图展示了这一过程(暂时忽略图中的数学等式)。
           假设附给节点的新权重分别是 w4,w5 和 w6(在反向传播和权重调整之后)。
    5

    在同样的输入下,多层感知器网络有更好的表现:
    6

    展开全文
  • 第二章反向传播算法如何工作 反向传播算法实质上是一种计算梯度的快速算法。 2.1计算神经网络中的矩阵计算 我们首先规定一下网络中权重w和偏置b的表示方法。表示从层的第k个神经元到第层第j个神经元的权重。同样...
  • 反向传播算法 这个网络只有3层,分别是蓝色的输入层、绿色的隐藏层和红色的输出层。 假设给了m个训练样本,第i个输入输出对表示为: 其中,x和y是3维向量。对于输入x,我们把g称作神经网络的预测(输出)值。 ...
  • 文件内描述了BF神经网络的基本原理(英文),看不懂可以自行百度找中文,网上资料很...资料里面重点是使用反向传播算法在MATLAB上实现了函数y=sin(2piX1)*sin(2piX2)的拟合。附带有MATLAB的(.m)文件,可以直接运行。
  • 目录1 反向传播算法数学基础1.1 前向传播1.2 反向传播2 矩阵运算 1 反向传播算法数学基础 反向传播算法是用于对神经网络中的各个网络参数计算偏导值的一种算法,其核心是链式求导法则。 注:本节涉及到较复杂的数学...
  • 反向传播算法原理 我们先直观的看一下反向传播的原理,假设有一个网络: 这是一个三层的神经网络,我们以这个网络为例子,展示下BP算法的过程。 其中,每个神经元有两个单元,第一个单元是对其输入信号和对应的...
  • 详解 误差反向传播算法推导

    万次阅读 多人点赞 2018-09-14 03:58:31
    误差反向传播算法误差 反向传播算法(back propagation,简称BP模型)是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络...
  • 深入浅出反向传播原理 Backpropagation

    千次阅读 2018-08-29 23:33:54
    深入浅出反向传播原理 Backpropagation 在深度学习中,我们的训练模型是一个多层次的神经网络,每个节点对应一个激活函数,上一个Layer的输出就是下一个Layer的输入。这样的模型,非常像复合函数层层的依赖关系:...
  • 误差反向传播算法是通过误差函数计算实际输出值与期望输出值之间的误差,把误差从最后的输出层依次传播到之前各层,最后通过调整各层连接权重与偏置达到减小误差的目的。而权重和偏置的调整一般使用梯度下降法。 ...
  • RNN通过反向传播和记忆机制,能够处理任意长度的序列,在架构上比前馈神经网络更符合生物神经网络的结构,它的产生也正是为了解决这类问题而应用而生的。  RNN及改进的LSTM等深度学习模型都是基于神经网络而发展的...
  • 反向传播算法推导-卷积神经网络

    千次阅读 2018-08-08 11:57:32
    在SIGAI之前的公众号文章“反向传播算法推导-全连接神经网络”中,我们推导了全连接神经网络的反向传播算法。其核心是定义误差项,以及确定误差项的递推公式,再根据误差项得到对权重矩阵、偏置向量的...
  • 本文介绍BPTT的原理和实现,是读“Recurrent Neural Networks Tutorial, Part 3 – Backpropagation Through Time and Vanishing Gradients”的读书笔记,代码也来自于这篇文章,加了部分注释。
  • 这就是反向传播算法设计的内容,反向传播过程的细节如下: (1)随机初始化网络中各层的参数:连接权和偏置值,通常将它们随机初始化为均值为0、方差为0.01的随机数 (2)对输入数据进行前向计算,从输入层到...
  • 前向传播算法和反向传播算法

    千次阅读 2017-12-28 22:22:55
    最近在看神经网络中的前向传播算法(FP)和反向传播算法(BP),特地进行总结一下,方便以后理解。1.基本概念  上图是一张自己画的神经网络的图。假设每一层都添加了偏度单元(即值为1的神经元),用来表示阀值(因为...
  • 梯度下降和反向传播算法讲解

    千次阅读 2019-10-22 16:19:07
    1. 原理讲解 在讲梯度下降之前,先向大家推荐一门课程《数值分析》,有的书也将它称为《计算方法》。 数值分析(numerical analysis),为数学的一个分支,是研究分析用计算机求解数学计算问题的数值计算方法及其...
  • 反向传播算法原理到实现

    千次阅读 2017-12-12 17:15:16
    博主接触深度学习已经一段时间,近期在与别人进行讨论时,发现自己对于反向传播算法理解的并不是十分的透彻,现在想通过这篇博文缕清一下思路.自身才疏学浅欢迎各位批评指正. 参考文献 李宏毅深度学习视频 The ...
  • 文章目录九、神经网络参数的反向传播算法9.1 代价函数9.2 反向传播算法9.3 反向传播算法的直观理解9.5 梯度检验9.6 随机初始化9.7 总结 九、神经网络参数的反向传播算法 9.1 代价函数 首先引入一些新标记方法: ...
  • 目前,深度学习采用的模型主要是神经网络模型,其主要原因是神经网络模型可以使用误差反向传播算法,从而可以比较好地解决贡献度分配问题。只要是超过一层的神经网络都会存在贡献度分配问题,因此可以将超过一层的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,600
精华内容 9,440
关键字:

反向传播算法原理

友情链接: 实验2-1_DOA.rar