典型的卷积神经网络,开始阶段都是卷积层以及池化层的相互交替使用,之后采用全连接层将卷积和池化后的结果特征全部提取进行概率计算处理。
在具体的误差反馈和权重更新的处理上,不论是全连接层的更新还是卷积层的更新,使用的都是经典的反馈神经网络算法,这种方法较原本较为复杂的、要考虑长期的链式法则转化为只需要考虑前后节点输入和输出误差对权重的影响,使得当神经网络深度加大时能够利用计算机计算,以及卷积核在计算过程中产生非常多的数据计算。

反馈神经网络正向与反向传播公式推导

经典反馈神经网络主要包括3个部分,数据的前向计算、误差的反向传播以及权值的更新。如下图所示。

神经网络负反馈直接控制 有反馈的神经网络_公式推导


  可以看到每个层l(假设是卷积或者池化层的一种)都会接一个下采样层l+1。对于反馈神经网络来说,要想求得层l的每个神经元对应的权值更新,就需要先求层l的每一个神经元点的灵敏度。简单来说,总体有以下几个权重以及数值需要在传递的过程中进行计算,即:

  1.输入层-卷积层

  2.卷积层-池化层

  3.池化层-全连接层

  4.全连接层-输出层

  这是正向的计算,而当权值更新时,需要对其进行反向更新,即:

  1.输出层-全连接层

  2.全连接层-池化层

  3.池化层-卷积层

  4.卷积层-输出层

1.前向传播算法
  对于前向传播的值传递,隐藏层输出值定义如下:
        神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_02=神经网络负反馈直接控制 有反馈的神经网络_神经网络负反馈直接控制_03×神经网络负反馈直接控制 有反馈的神经网络_卷积_04
        神经网络负反馈直接控制 有反馈的神经网络_神经网络负反馈直接控制_05 = 神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_06
  其中神经网络负反馈直接控制 有反馈的神经网络_卷积_04是当前输入节点的值,神经网络负反馈直接控制 有反馈的神经网络_神经网络负反馈直接控制_03是连接到此节点的权重,神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_02是输出值。f是当前阶段的激活函数,神经网络负反馈直接控制 有反馈的神经网络_神经网络负反馈直接控制_05是当前节点的输入值经过计算后被激活的值。
  对于输出层,定义如下:
        神经网络负反馈直接控制 有反馈的神经网络_公式推导_11 = 神经网络负反馈直接控制 有反馈的神经网络_神经网络_12
  其中,神经网络负反馈直接控制 有反馈的神经网络_公式推导_13为输入的权重,神经网络负反馈直接控制 有反馈的神经网络_神经网络负反馈直接控制_05为输入到输出节点的输入值。对所有输入值进行权重计算后求得和值,将其作为神经网络的最后输出值神经网络负反馈直接控制 有反馈的神经网络_公式推导_11

2.反向传播算法

  与前向传播类似,首先定义两个值神经网络负反馈直接控制 有反馈的神经网络_神经网络_16神经网络负反馈直接控制 有反馈的神经网络_卷积_17:

        神经网络负反馈直接控制 有反馈的神经网络_神经网络_16 = 神经网络负反馈直接控制 有反馈的神经网络_卷积_19 = (Y - T)

        神经网络负反馈直接控制 有反馈的神经网络_卷积_17 = 神经网络负反馈直接控制 有反馈的神经网络_公式推导_21

  其中,神经网络负反馈直接控制 有反馈的神经网络_神经网络_16为输出层的误差项,其计算值为真实值与模型计算值的差值。Y是计算值,T是输出真实值。神经网络负反馈直接控制 有反馈的神经网络_卷积_17为输出层的误差。

  神经网络反馈算法,就是逐层地将最终的误差进行分解,即每一层只与下一层打交道(如下图所示)。因此,可以假设每一层均为输出层的前一个层级,通过计算前一个层级与输出层的误差得到权重的更新。

神经网络负反馈直接控制 有反馈的神经网络_神经网络负反馈直接控制_24


   因此反馈神经网络计算公式定义如下:

   神经网络负反馈直接控制 有反馈的神经网络_卷积_17 = 神经网络负反馈直接控制 有反馈的神经网络_公式推导_21

      =神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_27 × 神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_28

      =神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_27 × f’(神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_02)

      =神经网络负反馈直接控制 有反馈的神经网络_卷积_19 × 神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_32 × f’(神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_02)

      =神经网络负反馈直接控制 有反馈的神经网络_神经网络_16 × 神经网络负反馈直接控制 有反馈的神经网络_神经网络_35 × f’(神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_02)

      =神经网络负反馈直接控制 有反馈的神经网络_神经网络_35 × 神经网络负反馈直接控制 有反馈的神经网络_神经网络_16 × f’(神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_02)

   即当前层输出值对误差的梯度可以通过下一层的误差与权重和输出值的梯度乘积获得。在公式神经网络负反馈直接控制 有反馈的神经网络_神经网络_35 × 神经网络负反馈直接控制 有反馈的神经网络_神经网络_16 × f’(神经网络负反馈直接控制 有反馈的神经网络_反馈神经网络_02)中,神经网络负反馈直接控制 有反馈的神经网络_神经网络_16若为输出层,即可以通过神经网络负反馈直接控制 有反馈的神经网络_神经网络_16 = 神经网络负反馈直接控制 有反馈的神经网络_卷积_19 = (Y - T)求得;而神经网络负反馈直接控制 有反馈的神经网络_神经网络_16为非输出层时,可以使用逐层反馈方式求得神经网络负反馈直接控制 有反馈的神经网络_神经网络_16的值。

   换一种形式将上面的公式表示为:

   神经网络负反馈直接控制 有反馈的神经网络_神经网络负反馈直接控制_48 =神经网络负反馈直接控制 有反馈的神经网络_公式推导_49 × 神经网络负反馈直接控制 有反馈的神经网络_公式推导_50 × f’(神经网络负反馈直接控制 有反馈的神经网络_神经网络负反馈直接控制_51)

  通过更为泛化的公式把当前层的输出对输入的梯度计算转化成求下一个层级的梯度计算值。

3.权重的更新
  反馈神经网络计算的目的是对权重进行更新。与梯度下降法类似,其更新可以仿照梯度下降对权值的更新公式:
   θ = θ - α(f(θ) - 神经网络负反馈直接控制 有反馈的神经网络_卷积_52)神经网络负反馈直接控制 有反馈的神经网络_卷积_53
   即:
   神经网络负反馈直接控制 有反馈的神经网络_公式推导_54=神经网络负反馈直接控制 有反馈的神经网络_公式推导_54 + α×神经网络负反馈直接控制 有反馈的神经网络_卷积_56×神经网络负反馈直接控制 有反馈的神经网络_公式推导_57
   神经网络负反馈直接控制 有反馈的神经网络_神经网络_58=神经网络负反馈直接控制 有反馈的神经网络_神经网络_58 + α×神经网络负反馈直接控制 有反馈的神经网络_卷积_56
   其中ji表示为反向传播时对应的节点系数,通过对神经网络负反馈直接控制 有反馈的神经网络_卷积_56的计算来更新对应的权重值。