请问反向传播和梯度算法的名解怎么写

前面一系列的手记都是围绕【机器学习】展开的机器学习是深度学习的基石,两者有着密不可分的关系从本章节开始,将是【深度学习】的专题博客每一篇博客都昰自己的一次思想风暴,如果你对于自己的理解有些混乱那么不妨从我的理解角度试试。深度学习最核心的内容就是神经网络,而对於入门而言反向传播算法(Back Propagation Neural Networks,简称BP算法)又是绕不开的一大障碍。网络上甚多讲述BP算法的博客但是很多都有各种各样的问nonglege 题,导致洎己学习起来相当吃力所以在行文之初,我的目标便是希望能给出一份最全面、最清晰、零错误的BP算法手记

神经元是神经网络的基本組成单元,了解神经元的结构对了解整个神经网络大有裨益目前神经网络采用的神经元模型为“M-P神经元模型”,该神经元模型与生物神經元模型类似有输入端(树突)、输出端(轴突)、处理中枢(神经元中枢),模型如下所示:

注:上图所示的“M-P神经元”模型与实际嘚“M-P神经元”模型有所出处具体细节可以参考西瓜书(神经网络章节)。此处如此介绍是为了与下文叙述保持一致,且如此理解更为簡单

神经网络,是神经元按层结合的一个神经元网络通常我们将输入(xix_ixi?)与偏置(bbb)也当做神经元处理(只是没有对应的处理函数),故我们经常见到的神经网络如下图所示:
其中的符号定义规则如图上的规则所示其中"+1+1+1"的神经元均为偏置项,x1,x2,x3x_1,x_2,x_3x1?,x2?,x3?为输入项对应于数據的三个属性。如上便为神经元的一般结构当然,由于组合方式、神经元数量以及激活函数的多样化导致神经网络的结构也多种多样,而此处的神经网络模型仅限于本文。

对于神经网络模型的计算过程主要分为两个部分:

前向传播算法,用于计算模型最终的输出结果;后向传播算法用于减小模型输出结果与实际结果之前的误差,通过调整参数权重来优化模型故,神经网络就是通过前向传播与后姠传播算法的循环迭代来训练模型,进而进行预测或者分类

对于前向传播算法以及后向传播算法的介绍,我们将以如下的4层神经网络結构为例进行介绍:

有两个隐藏层,分别为Layer 2、Layer 3且输出结果为2维数据。

前向传播也即正向传播,按照输入层、隐藏层到输出层的方向進行传播即正向计算过程。

按照图例所示我们可知:

如果抛开矩阵运算,但从代数运算的过程来推到我们可以轻易的得到:

故前向傳播算法的过程介绍完毕,即从输入一步一步的到达输出的传播过程

反向传播算法,其实和线性回归的思想是一样的通过梯度下降的方法,逐渐调节参数进而训练模型。所以此部分内容主要围绕梯度下降和误差反向传播来讲关于梯度下降的具体细节,可以参考前面機器学习章节的线性回归内容由于中间篇幅较长,为了便于阅读再次将神经网络模型展示如下:

其中对应于上面的神经网络模型,则有:

其中nLn_LnL?表示输入数据的维数,对于此处的模型而言nL=3n_L=3nL?=3y(i)y^{(i)}y(i)代表样本的真实LabelLabelLabelo(i)o^{(i)}o(i)表示神经网络的输出结果通过观察公式,我们不难发现前媔的系数12\frac{1}{2}21?可有可无。此处加入该系数只是为了后续计算(求导)方便。


根据损失函数则整个神经网络的代价函数为:

所有训练数据的总體(平均)代价可写成:

当然我们的目标也是:调整权重和偏置试整体代价(误差)最小


如果采用梯度下降法(或批量梯度下降法)即:

我们以单个训练样本(x,y)(\mathbf{x},y)(x,y)为例,神经网络依然采用本文涉及的神经网络进行介绍假设:


首先更新输出层Layer 4权重参数,其损失函数表示为:

4层嘚权重参数进行求偏导以w11(4)w^{(4)}_{11}w11(4)?为例,根据链式求导法则(复合函数求导法则)有:


同理可求得其余的权重参数:
推广到一般情况假设神經网络共LLL层,则:

如果把上面的两个公式表达为矩阵则为:

其中?\bigodot?表示矩阵对应位置相乘。


其次,隐藏层Layer 3的权重参数更新
在介绍更新之湔很有必要进行一个相关的推导,根据δi(l)\delta_i^{(l)}δi(l)?的定义:

n_{l+1}zj(l+1)?,1jnl+1?从而由“函数之和的求导法则”及“求导的链式法则”有:

对上式(1)继續化简,由于:

联立(1)(2)两式可得:

故此刻BP算法最重要的公式已经证明完毕,它利用 l+1l + 1l+1 层的 法”名字的由来如果把它表达为矩阵(向量)形式,则为: 通过以上证明此刻我们回到Layer 3层的参数更新:

最后,更新隐藏层Layer 2 的权重参数同样根据:

此处省略参数更新的具体细节。


除叻更新权重参数以外我们公式中还包含有偏置参数bbb,更新偏置参数bbb如下:

借助于以上的四个核心公式,我们可以归纳BP算法的具体流程

4.1 单个訓练样本的BP算法流程

  1. Lwij(l)?,bi(l)?,2lL初始化为一个很小的接近于零的随机值。

  2. 利用下面的“前向传播”公式计算每层的状态和激活值:

  3. 是神经网絡对训练数据产生的实际输出然后,利用下面公式从第L?1L-1L?1层到第 2 层依次计算隐藏层的δ(l),(l=L?1,L?2,L?3,?,2)\delta^{(l)},(l =

  4. 按下面公式求这个训练数据的代价函數对参数的偏导数:

4.2BP“批量梯度下降”算法总结

  1. 用 BP 算法四个核心公式求得每一个训练数据的代价函数对参数的偏导数;
  2. 迭代执行第 (1),(2) 步直到满足停止准则(比如相邻两次迭代的误差的差别很小,或者直接限制 迭代的次数)

说明:每对参数进行一次更新都要遍历整个训练数据集,当训練数据集不大时这不是问题当训练数据集 非常巨大时,可以采用随机梯度下降法(每次仅使用一个训练数据来更新参数)

}

反向传播算法和梯度下降算法有什么不同

刚才基础交流群有同学提出来,

这个问题很好也是深度学习基础。

所谓反向传播传播的是损失,也就是根据最后的损失計算网络中每一个节点的梯度,这里利用了链式法则使得梯度的计算并不是很复杂。

什么梯度下降呢根据上面的反向传播,我们求解叻每一个参数的梯度我们让每一个参数,剪去 它的梯度乘以一个系数(这个系数其实就是学习速率)这个过程就叫梯度下降。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信