前向传播神经网络的目标函数
对于一系列的训练样本 X,期望的输入为 t=(t1,...,tc),网络的实际输出 z=(z1,...,zc),定义目标函数为
J(w)=21∣∣t−z∣∣2=21k=1∑c(tk−zk)2
即各输出误差的平方的累加,由此产生的问题是:如何计算目标函数的最小值?
常用的方法为 梯度下降法
梯度下降

如图表示的是参数 w 与目标函数 J(w) 的关系图,红色部分表示目标函数有着较高的取值,需要使目标函数的值尽量的低,也就是深蓝色的部分,w1,w2 表示 w
向量的两个维度。
梯度下降 的步骤是:先确定一个初始点,将 w 按照梯度下降的方向进行调整,就会使得 J(w) 往更低的方向进行变化,算法的结束将是在 w 下降到无法继续下降为止。
w(m+1)=w(m)+Δw(m)=w(m)−η∂w∂J
输出层权重改变量

由链式求导法则,目标函数 J(w) 对 wkj(对应隐藏层与输出层之间的权重) 求偏导为


其中 f′(netk) 对应输出层**函数的导数,
如 Sigmoid 函数,zk=f(netk)=Sigmoid(netk)
隐藏层权重改变量

由目标函数 J 对 wji(输入层与隐藏层之间的权重)求导可得

其中 netj=∑m=1dWjmXm 表示隐藏层单元的总输入

由此计算隐藏层权重改变量,其中


误差传播迭代公式


输出层和隐藏层的误差传播公式可统一为:
- 权重增量 = -1 × 学习步长 × 目标函数对权重的偏导数
- 目标函数对权重的偏导数 = -1 × 残差 × 当前层的输入
- 残差 = 当前层激励函数的导数 × 上层反传来的误差
- 上层反传来的误差 = 上层残差的加权和
隐藏层误差反向传播示意

反向传播算法举例

假定输入样本的自变量为 (0.35, 0.9),因变量为 0.5,初始的权重函数如上图所示
AP = 0.1; AQ = 0.4; PO = 0.3
BP = 0.8; BQ = 0.6; QO = 0.9
三个神经元都使用 Sigmoid 函数作为**函数 f(x)=1+e−x1,X 等于输入的权重和。
将 P 上的函数记为 p,Q 上的函数记为 q,O 上的函数记为 o,例如
P(A,B)=1+e−(AP∗A+BP∗B)1=1+e−(0.1∗0.35+0.9∗0.8)1=0.68
同理计算:
P(A,B)=0.68;Q(A,B)=0.6637;O(P,Q)=0.69
计算目标损失函数 ξ=21e2=21(0.69−0.5)2=0.01805,我们希望通过调节 PO,QO 使其变小。
使用梯度下降法
∂PO∂ξ=∂e∂ξ∗∂o∂e∗∂PO∂o={e}∗{O∗(1−O)}∗{P}
=(0.69−0.5)∗0.69∗(1−0.69)∗0.68=0.02763
∂QO∂ξ=e∗f(x)(1−f(x))∗Q=(0.69−0.5)∗0.69∗(1−0.69)∗0.6673=0.02711
更新隐藏层与输出层权重 PO 与 QO
PO∗=PO−∂PO∂ξ=0.2723
QO∗=QO−∂QO∂ξ=0.8730
∂AP∂ξ=∂e∂ξ∗∂o∂e∗∂p∂o∗AP∂p={e}∗{O(1−O)}∗{PO∗}∗{(1−P)∗P}∗{A}
更新输入层与隐藏层权重 AP,BP,AQ,BQ
AP∗=AP−∂AP∂ξ=0.09916
BP∗=BP−∂BP∂ξ=0.7978
AQ∗=AQ−∂AQ∂ξ=0.3972
BQ∗=BQ−∂BQ∂ξ=0.5928
