三、反向传播算法的案例
3.1、前向传播计算
  以下面神经网络的基本结构,已对神经网络进行了初始化,赋予了权重、偏置和输入输出:




机器学习反向传播案例 反向传播算法实例_机器学习反向传播案例


  对网络开始前向传播计算:



机器学习反向传播案例 反向传播算法实例_神经网络_02


  因为h1使用了神经元激励函数,所以h1的输出为:



机器学习反向传播案例 反向传播算法实例_神经网络_03


  同理可得,h2的输出为:



机器学习反向传播案例 反向传播算法实例_权值_04


  继续前向传播,计算o1节点的输出为:



机器学习反向传播案例 反向传播算法实例_神经网络_05


  同理,得到o2节点的输出为:



机器学习反向传播案例 反向传播算法实例_机器学习反向传播案例_06


  接下来就是计算总的误差:



机器学习反向传播案例 反向传播算法实例_神经网络_07




机器学习反向传播案例 反向传播算法实例_函数_08




机器学习反向传播案例 反向传播算法实例_权值_09




机器学习反向传播案例 反向传播算法实例_神经网络_10


  计算好误差,接下俩就需要利用误差来进行反向传播,更新参数的值。

3.2、反向传播计算
1、更新倒数第二层和输出层之间的权值
  首先考虑w5对最后总的误差的影响,计算Etotal对w5的导数:



机器学习反向传播案例 反向传播算法实例_机器学习反向传播案例_11


  将Etotal对w5的求导进行分解:



机器学习反向传播案例 反向传播算法实例_权值_12




机器学习反向传播案例 反向传播算法实例_神经网络_13




机器学习反向传播案例 反向传播算法实例_算法_14




机器学习反向传播案例 反向传播算法实例_函数_15


  将上面三式相乘求得Etotal对w5的导数:



机器学习反向传播案例 反向传播算法实例_函数_16


  所以可以计算得到:



机器学习反向传播案例 反向传播算法实例_神经网络_17


  同理,可得:



机器学习反向传播案例 反向传播算法实例_函数_18


2、更新输入层和第二层之间的权值
  考虑w1对最后总的误差的影响,计算Etotal对w1的导数:



机器学习反向传播案例 反向传播算法实例_机器学习反向传播案例_19


  具体分解如下图:



机器学习反向传播案例 反向传播算法实例_算法_20


  对分解结果分别求解:



机器学习反向传播案例 反向传播算法实例_神经网络_21


  先求解上式的前一部分:



机器学习反向传播案例 反向传播算法实例_函数_22




机器学习反向传播案例 反向传播算法实例_函数_23




机器学习反向传播案例 反向传播算法实例_机器学习反向传播案例_24


  所以计算得到前一部分的解为:



机器学习反向传播案例 反向传播算法实例_神经网络_25


  同理,可得:



机器学习反向传播案例 反向传播算法实例_函数_26


  因此,可得:



机器学习反向传播案例 反向传播算法实例_算法_27


  下面对outh1对neth1进行求导:



机器学习反向传播案例 反向传播算法实例_函数_28


  然后求neth1对w1的导数:



机器学习反向传播案例 反向传播算法实例_算法_29


  最后将上面得到的三部分结果相乘,得到Etotal对w1的导数:



机器学习反向传播案例 反向传播算法实例_权值_30


  然后对相应的权值进行更新:



机器学习反向传播案例 反向传播算法实例_函数_31


  同理,可计算得到:



机器学习反向传播案例 反向传播算法实例_机器学习反向传播案例_32


  至此已对整个网络进行了一次参数更新。