三、反向传播算法的案例
3.1、前向传播计算
以下面神经网络的基本结构,已对神经网络进行了初始化,赋予了权重、偏置和输入输出:
对网络开始前向传播计算:
因为h1使用了神经元激励函数,所以h1的输出为:
同理可得,h2的输出为:
继续前向传播,计算o1节点的输出为:
同理,得到o2节点的输出为:
接下来就是计算总的误差:
计算好误差,接下俩就需要利用误差来进行反向传播,更新参数的值。
3.2、反向传播计算
1、更新倒数第二层和输出层之间的权值
首先考虑w5对最后总的误差的影响,计算Etotal对w5的导数:
将Etotal对w5的求导进行分解:
将上面三式相乘求得Etotal对w5的导数:
所以可以计算得到:
同理,可得:
2、更新输入层和第二层之间的权值
考虑w1对最后总的误差的影响,计算Etotal对w1的导数:
具体分解如下图:
对分解结果分别求解:
先求解上式的前一部分:
所以计算得到前一部分的解为:
同理,可得:
因此,可得:
下面对outh1对neth1进行求导:
然后求neth1对w1的导数:
最后将上面得到的三部分结果相乘,得到Etotal对w1的导数:
然后对相应的权值进行更新:
同理,可计算得到:
至此已对整个网络进行了一次参数更新。