BP神经网络

三层BP神经网络

三层网络结构图

BP神经网络_第1张图片
x 为输入向量, y 为隐藏层的神经元, z 为输出层, d 为目标真实值, 本文默认 z 不经过sigmod处理。x-y的权重为 w ,y-z的权重为 v

BP算法推导

yj=ixiwij(1)
Oyi=f(yj)(2)
其中激励函数 f(x)=11+ex
f(x)=f(x)(1f(x))(3)
zk=jf(yj)vjk
此时系统的损失值为
E=12k(zkdk)2(4)

Ezk=zkdk=δzk(5)
Eyj=kEzkzkf(yj)f(yj)yj=kδzkvjkf(yj)=δyj(6)
Evjk=Ezkzkvjk=δzkf(yj)(7)
Ewij=Eyjyjwij=δyjxi(8)

从第(6)式可以看出y层的第j个节点(神经元)的残差等与z层与其所连接的所有节点(神经元)的残差与权值的乘值的和再乘以对该节点(y层的第j个节点)的导数。

从(7)(8)y层第j个节点到z层第k个节点的权值导数等于y层第j个节点的激励值乘以z层第k个节点的残差。
因为这是简单的三层网络,(8)式中的 xi 相当于前一层的激励值,只不过这里没有前一层。

神经网络的求解过程中,需要求解神经元的残差,权重的导数,偏值的导数(例子没有这个值)。

多层神经网络算法推导

Oli=f(zli) 表示第l层第i个节点的激励值,即第l层的输出值。
损失值 E=12yf(zL)2

输出层

设网络有L层,则第L层第i个节点的残差为:
δLi=zLi12yf(zL)2

δLi=zLi12yf(zL)2=zLi12j=1n(yjOLj)2=(yiOLi)f(zLi)(9)

隐藏层

另倒数第二层为l,神经元个数为m;最后一层为大写L, 神经元个数为n。
则易得:
zLj=mk=1f(zlk)Wlkj(10)

δli=Ezli=zli12yf(zL)2=zli12j=1n(yjOLj)2=j=1n(yjOLj)zliOLj=j=1n(yjOLj)f(zLj)zLjzli=j=1nδLjzLjzli=j=1nδLjzlik=1mf(zlk)Wlkj=(j=1nδLjWlkj)f(zli)(11)

其中 Olj=f(zli)
这是倒数第二层和最后一层的残差,
如果把倒数第二层看做最后一层,根据公式11可以推导出任意层的残差:
δli=(nj=1δl+1jWlkj)f(zli)(12)
根据公示(6)(12)可以得出一个普遍性的结论.

第l层的第i个节点(神经元)的残差等于第l+1层与l层相连接的所有节点的权值和残差的加权和乘以对l层第i个节点的导数。

这个结论在之后的CNN推导有很重要的作用。

权重导数

有了残差就可以很容易推导出权重的导数
zl+1j=mk=1f(zlk)Wlkj(13)

Ewlkj=Ezl+1izl+1iwlkj=δl+1if(zlk)(14)

同样,从(7)(8)(14)可以得出一个结论

第l层的第k个节点到第l+1层的第j个节点的权值导数等于第l层的第k个节点的激励值与第l+1层第j个节点的残差乘积

偏置参数导数

求导方法与权重导数一样,

Ebli=Ezl+1izl+1ibli=δl+1i(15)

参考文献

BP算法与公式推导

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