您的位置:首页 > 理论基础 > 计算机网络

BP神经网络

2016-07-08 09:36 561 查看

三层BP神经网络

三层网络结构图



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

BP算法推导

yj=∑ixiwij(1)

Oyi=f(yj)(2)

其中激励函数f(x)=11+e−x

f′(x)=f(x)∗(1−f(x))(3)

zk=∑jf(yj)vjk

此时系统的损失值为

E=12∑k(zk−dk)2(4)



∂E∂zk=zk−dk=δzk(5)

∂E∂yj=∑k∂E∂zk∂zk∂f(yj)∂f(yj)∂yj=∑kδzkvjkf′(yj)=δyj(6)

∂E∂vjk=∂E∂zk∂zk∂vjk=δzk∗f(yj)(7)

∂E∂wij=∂E∂yj∂yj∂wij=δyj∗xi(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=12∥y−f(zL)∥2

输出层

设网络有L层,则第L层第i个节点的残差为:

δLi=∂∂zLi12∥y−f(zL)∥2

δLi=∂∂zLi12∥y−f(zL)∥2=∂∂zLi12∑j=1n(yj−OLj)2=−(yi−OLi)∗f′(zLi)(9)

隐藏层

另倒数第二层为l,神经元个数为m;最后一层为大写L, 神经元个数为n。

则易得:

zLj=∑mk=1f(zlk)Wlkj(10)

δli=∂E∂zli=∂∂zli12∥y−f(zL)∥2=∂∂zli12∑j=1n(yj−OLj)2=−∑j=1n(yj−OLj)∗∂∂zliOLj=−∑j=1n(yj−OLj)∗f′(zLj)∗∂zLj∂zli=∑j=1nδLj∂zLj∂zli=∑j=1nδLj∂∂zli∑k=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)

∂E∂wlkj=∂E∂zl+1i∗∂zl+1i∂wlkj=δl+1i∗f(zlk)(14)

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

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

偏置参数导数

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

∂E∂bli=∂E∂zl+1i∗∂zl+1i∂bli=δl+1i(15)

参考文献

BP算法与公式推导
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  神经网络