前向传播神经网络的目标函数
对于一系列的训练样本 X,期望的输入为 t=(t1,...,tc)t=(t_1,...,t_c)t=(t1,...,tc),网络的实际输出 z=(z1,...,zc)z=(z_1,...,z_c)z=(z1,...,zc),定义目标函数为
J(w)=12∣∣t−z∣∣2=12∑k=1c(tk−zk)2J(w)=\frac{1}{2}||t-z||^2=\frac{1}{2}\sum^c_{k=1}(t_k-z_k)^2J(w)=21∣∣t−z∣∣2=21k=1∑c(tk−zk)2
即各输出误差的平方的累加,由此产生的问题是:如何计算目标函数的最小值?
常用的方法为 梯度下降法
梯度下降
如图表示的是参数 www 与目标函数 J(w)J(w)J(w) 的关系图,红色部分表示目标函数有着较高的取值,需要使目标函数的值尽量的低,也就是深蓝色的部分,w1,w2w_1,w_2w1,w2 表示 www
向量的两个维度。
梯度下降 的步骤是:先确定一个初始点,将 www 按照梯度下降的方向进行调整,就会使得 J(w)J(w)J(w) 往更低的方向进行变化,算法的结束将是在 www 下降到无法继续下降为止。
w(m+1)=w(m)+Δw(m)=w(m)−η∂J∂ww(m+1)=w(m)+\Delta w(m)=w(m)-\eta\frac{\partial J}{\partial w}w(m+1)=w(m)+Δw(m)=w(m)−η∂w∂J
输出层权重改变量
由链式求导法则,目标函数 J(w)J(w)J(w) 对 wkjw_{kj}wkj(对应隐藏层与输出层之间的权重) 求偏导为
其中 f′(netk)f'(net_k)f′(netk) 对应输出层激活函数的导数,
如 Sigmoid 函数,zk=f(netk)=Sigmoid(netk)z_k=f(net_k)=Sigmoid(net_k)zk=f(netk)=Sigmoid(netk)
隐藏层权重改变量
由目标函数 JJJ 对 wjiw_{ji}wji(输入层与隐藏层之间的权重)求导可得
其中 netj=∑m=1dWjmXmnet_j = \sum^d_{m=1}W_{jm}X_mnetj=∑m=1dWjmXm 表示隐藏层单元的总输入
由此计算隐藏层权重改变量,其中
误差传播迭代公式
输出层和隐藏层的误差传播公式可统一为:
- 权重增量 = -1 ×\times× 学习步长 ×\times× 目标函数对权重的偏导数
- 目标函数对权重的偏导数 = -1 ×\times× 残差 ×\times× 当前层的输入
- 残差 = 当前层激励函数的导数 ×\times× 上层反传来的误差
- 上层反传来的误差 = 上层残差的加权和
隐藏层误差反向传播示意
反向传播算法举例
假定输入样本的自变量为 (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)=11+e−xf(x)=\frac{1}{1+e^{-x}}f(x)=1+e−x1,X 等于输入的权重和。
将 P 上的函数记为 p,Q 上的函数记为 q,O 上的函数记为 o,例如
P(A,B)=11+e−(AP∗A+BP∗B)=11+e−(0.1∗0.35+0.9∗0.8)=0.68
P(A, B)=\frac{1}{1+e^{-(AP*A+BP*B)}}=\frac{1}{1+e^{-(0.1*0.35+0.9*0.8)}}=0.68
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
\mathrm{P}(\mathrm{A}, \mathrm{B})=0.68 ; \quad \mathrm{Q}(\mathrm{A}, \mathrm{B})=0.6637 ; \quad \mathrm{O}(\mathrm{P}, \mathrm{Q})=0.69
P(A,B)=0.68;Q(A,B)=0.6637;O(P,Q)=0.69
计算目标损失函数 ξ=12e2=12(0.69−0.5)2=0.01805\xi=\frac{1}{2} e^{2}=\frac{1}{2}(0.69-0.5)^{2}=0.01805ξ=21e2=21(0.69−0.5)2=0.01805,我们希望通过调节 PO,QO 使其变小。
使用梯度下降法
∂ξ∂PO=∂ξ∂e∗∂e∂o∗∂o∂PO={e}∗{O∗(1−O)}∗{P}
\frac{\partial \xi}{\partial \mathrm{PO}}=\frac{\partial \xi}{\partial \mathrm{e}} * \frac{\partial \mathrm{e}}{\partial \mathrm{o}} * \frac{\partial \mathrm{o}}{\partial \mathrm{P} \mathrm{O}}=\{\mathrm{e}\} *\{O *(1-O)\} *\{\mathrm{P}\}
∂PO∂ξ=∂e∂ξ∗∂o∂e∗∂PO∂o={e}∗{O∗(1−O)}∗{P}
=(0.69−0.5)∗0.69∗(1−0.69)∗0.68=0.02763
=(0.69-0.5) * 0.69 *(1-0.69) * 0.68=0.02763
=(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
\frac{\partial \xi}{\partial Q O}=e * f(x)(1-f(x)) * Q=(0.69-0.5) * 0.69 *(1-0.69) * 0.6673=0.02711
∂QO∂ξ=e∗f(x)(1−f(x))∗Q=(0.69−0.5)∗0.69∗(1−0.69)∗0.6673=0.02711
更新隐藏层与输出层权重 POPOPO 与 QOQOQO
PO∗=PO−∂ξ∂PO=0.2723
PO^*=PO-\frac{\partial\xi}{\partial PO}=0.2723
PO∗=PO−∂PO∂ξ=0.2723
QO∗=QO−∂ξ∂QO=0.8730
QO^*=QO-\frac{\partial\xi}{\partial QO}=0.8730
QO∗=QO−∂QO∂ξ=0.8730
∂ξ∂AP=∂ξ∂e∗∂e∂o∗∂o∂p∗∂pAP={e}∗{O(1−O)}∗{PO∗}∗{(1−P)∗P}∗{A}
\frac{\partial \xi}{\partial \mathrm{AP}}=\frac{\partial \xi}{\partial \mathrm{e}} * \frac{\partial \mathrm{e}}{\partial \mathrm{o}} * \frac{\partial \mathrm{o}}{\partial \mathrm{p}} * \frac{\partial \mathrm{p}}{\mathrm{AP}}=\{\mathrm{e}\} *\{\mathrm{O}(1-O)\} *\left\{\mathrm{PO}^{*}\right\} *\{(1-\mathrm{P}) * \mathrm{P}\} *\{\mathrm{A}\}
∂AP∂ξ=∂e∂ξ∗∂o∂e∗∂p∂o∗AP∂p={e}∗{O(1−O)}∗{PO∗}∗{(1−P)∗P}∗{A}
更新输入层与隐藏层权重 AP,BP,AQ,BQAP,BP,AQ,BQAP,BP,AQ,BQ
AP∗=AP−∂ξ∂AP=0.09916
AP^*=AP-\frac{\partial\xi}{\partial AP}=0.09916
AP∗=AP−∂AP∂ξ=0.09916
BP∗=BP−∂ξ∂BP=0.7978
BP^*=BP-\frac{\partial\xi}{\partial BP}=0.7978
BP∗=BP−∂BP∂ξ=0.7978
AQ∗=AQ−∂ξ∂AQ=0.3972
AQ^*=AQ-\frac{\partial\xi}{\partial AQ}=0.3972
AQ∗=AQ−∂AQ∂ξ=0.3972
BQ∗=BQ−∂ξ∂BQ=0.5928
BQ^*=BQ-\frac{\partial\xi}{\partial BQ}=0.5928
BQ∗=BQ−∂BQ∂ξ=0.5928