反向误差传播的深度学习方法

DNN基础

反向误差传播的深度学习方法
   上图的DNN model中,中间有多层hidden layers,每层layer上都有多个neurons(橙色),每个neuron都有多个input和1个output(这1个output的多个copy产生多个output到下一layer);在layer l neuron j 输入之一是layer l-1 的neuron k,所以w(j,k)是这根神经线的weight,b(j)是neuron i的偏移,(w,b)集合 构成了model parameters,将在training中被learned到。每一layer全部neuron的 w(j,k) 用二维矩阵存储,b(j)用一维矩阵存储。


反向误差传播

反向误差传播的深度学习方法

   以上代码是反向误差传播的深度学习方法,利用了梯度下降、误差项公式,分成前馈阶段和反向传播阶段。其中,Line2,迭代given 次;Line4,迭代每个sample 记录;
line6,…. 前馈阶段的过程如下图,即从x值输入开始,由**函数转换为第0层输出a(0);根据公式1,转换为1层输入z(1)(想象,发生在某neuron的某条输入连接线上);根据公式2,转换为1层输出a(1)(想象,发生在某neuron上);以此类推,直到第L层的输出a(L);最后归一化计算出预期值y’。

反向误差传播的深度学习方法

   以下公式1,z(j,l) 是第l层第j个neuron的输入,该neuron全部连接线的累计计算出该neuron的输入;公式2 a(l,j)是该neuron的输出, 的f()是activation function,目的让结果值从0变成非0,使反向传播时计算(w,b)更高效。
反向误差传播的深度学习方法
   Line 7-11是反向传播迭代每layer;在每次迭代中,又迭代该layer的每个neuron。Line7的误差公式如下公式(3),即l层neuron j的误差项,由**函数反函数、该neuron的输入z,以及下一层的误差项与weight的累加(想象多条连接线反向到该neuron)组成。
反向误差传播的深度学习方法
  误差公式可以由下面公式4 损失函数 推导出来。在公式4中,y(j)是x sample在neuron j的实际输出,a(L,j)是预期值,计算出的C(x)是根据x输入的第L层全部neuron的损失值,即每层只有1个损失值。该损失函数适合用于线性回归模型;如果是分类问题,损失函数用交叉熵。
反向误差传播的深度学习方法
  Line8、9,计算每个neuron的w,b对损失函数的导数,即梯度
  Line10、11,根据梯度下降公式 [1](即学习率、上一个迭代的w,b、梯度),计算出本次迭代的(w,b)

参考
[1] https://blog.csdn.net/lai_me/article/details/109130536#comments_13516893
[2] https://www.cnblogs.com/Luv-GEM/p/10694471.html
[3] https://blog.csdn.net/qq_16137569/article/details/81449209