多层神经网络BP算法解释

# 多层神经网络BP算法解释 ## 前向传播 *** * 该项目采用反向传播算法描述了多层神经网络的教学过程。 为了说明这个过程,使用了具有两个输入和一个输出的三层神经网络,如下图所示:
多层神经网络BP算法解释_第1张图片

  • 每个神经元由两个单元组成。
  • 第一单元添加权重系数和输入信号的乘积。
  • 第二个单元实现非线性功能,称为神经元激活功能。
  • 信号 e e 是加法器输出信号.
  • y=f(e) y = f ( e ) 是非线性元件的输出信号。
  • 信号 y y 也是神经元的输出信号。
多层神经网络BP算法解释_第2张图片

  • 训练数据由(期望输出) z z 和输入信号 x1 x 1 x2 x 2 组成。
  • 神经网络训练是一个迭代过程。 在每次迭代中,使用来自训练数据集的新数据来修改节点的权重系数 w w
  • 使用下面描述的算法计算修改:每个教学步骤从强制来自训练集的两个输入信号开始。 在此阶段之后,我们可以确定每个网络层中每个神经元的输出信号值。
  • 下面的图片说明了信号如何通过网络传播,符号 wxmn w ( x m ) n 表示输入层中网络输入 xm x m 和神经元 n n 之间的连接权重。 符号 yn y n 表示神经元 n n 的输出信号。
多层神经网络BP算法解释_第3张图片 多层神经网络BP算法解释_第4张图片 多层神经网络BP算法解释_第5张图片
y1=f1(w(x1)1x1+w(x2)1x2) y 1 = f 1 ( w ( x 1 ) 1 ∗ x 1 + w ( x 2 ) 1 ∗ x 2 )
y2=f2(w(x1)2x1+w(x2)2x2) y 2 = f 2 ( w ( x 1 ) 2 ∗ x 1 + w ( x 2 ) 2 ∗ x 2 )
y3=f3(w(x1)3x1+w(x2)3x2) y 3 = f 3 ( w ( x 1 ) 3 ∗ x 1 + w ( x 2 ) 3 ∗ x 2 )
* 其中 f() f ( ) 函数可以是 sigmod s i g m o d 函数
ex.f(z)=11+ez e x . f ( z ) = 1 1 + e − z
/div> *** * 通过隐藏层传播信号。 * 符号 wmn w m n 表示下一层中神经元 m m 的输出与神经元 n n 的输入之间的连接的权重。
多层神经网络BP算法解释_第6张图片 多层神经网络BP算法解释_第7张图片 多层神经网络BP算法解释_第8张图片
## BP网络 *** * 将神经网络的输出信号 y^ y ^ 与在训练数据集中找到的真实值( y y )进行比较。 该差异被称为输出层神经元的误差信号 δ δ
δ=yy^ δ = y − y ^
与下图片对应关系为 y=z y = z , y^=y y ^ = y
多层神经网络BP算法解释_第9张图片

  • 无法计算直接计算隐藏层的真实值和误差,因为该过程在实际生产中不存在,或不可得。
  • 为此,八十年代中期,提出了 BP算法


  • 上一条是重点,重点,重点。

  • 注意 下图公式有误 ,正确表达为
  • δ4=w46δdf6(e)de=w46δy^(1y^) δ 4 = w 46 ∗ δ ∗ d f 6 ( e ) d e = − w 46 ∗ δ ∗ y ^ ∗ ( 1 − y ^ )
  • 其他的同类表达式也需要类似的修改,请注意。
  • 对于有多条边连接的节点, δ δ 为每条边结果的和。

多层神经网络BP算法解释_第10张图片
多层神经网络BP算法解释_第11张图片 多层神经网络BP算法解释_第12张图片 多层神经网络BP算法解释_第13张图片 多层神经网络BP算法解释_第14张图片

  • 获得每个神经元的误差信号后,可以利用误差来修改每个神经元输入节点的权重系数。
  • 下面的公式
    (δ2)e=(yy^)2e=(yy^)y^(1y^) ∂ ( δ 2 ) ∂ e = ∂ ( y − y ^ ) 2 ∂ e = − ( y − y ^ ) ∗ y ^ ∗ ( 1 − y ^ )

    表示神经元激活函数的导数     残差   。
  • δ2 δ 2 即为   损失函数
  • 又因为对 dedθ d e d θ
  • dedθ=θTxθ=x d e d θ = ∂ θ T x ∂ θ = x
  • 由于链式法则
  • (δ2)θ=(yy^)2ededθ=(y^y)y^(1y^)x=δy^(1y^)x ∂ ( δ 2 ) ∂ θ = ∂ ( y − y ^ ) 2 ∂ e d e d θ = − ( y ^ − y ) ∗ y ^ ∗ ( 1 − y ^ ) ∗ x = − δ ∗ y ^ ∗ ( 1 − y ^ ) ∗ x

  • y^ y ^ 表示输出值

  • y y 表示真实值
  • x x 代表上一层的输出或者原始的输入
  • δ δ 表示误差 这里用到了上一节BP中的假设
  • 通过这部分化简,我们利用误差 δ δ 代替了的 yy^ y − y ^ 从而避开了隐藏层中的未知量 y y
  • 最后利用标准的* 梯度下降公式*:
    w^=wη=w+ηδy^(1y^)x=w+ηδyex w ^ = w − η ∗ ∇ = w + η ∗ δ ∗ y ^ ∗ ( 1 − y ^ ) ∗ x = w + η ∗ δ ∗ ∂ y ∂ e ∗ x

多层神经网络BP算法解释_第15张图片
多层神经网络BP算法解释_第16张图片
多层神经网络BP算法解释_第17张图片 多层神经网络BP算法解释_第18张图片 多层神经网络BP算法解释_第19张图片 多层神经网络BP算法解释_第20张图片

转载请注明出处,csdn的markdown还是很迷的。

参考

参考资料来源

你可能感兴趣的:(神经网络)