多层感知机的BP算法

2019-05-14  本文已影响0人  若罗

设输入层为`$x_1,x_2$`,唯一的一层隐藏层的节点为`$z_1,z_2,z_3$`,输出层为`$y$`.

设输入层的权重为`$w_{111},w_{112},...,w_{1ij}$`.w下第一位表示第一层的权重,第二位表示x的下标,第三位表示隐藏层的下标。隐藏层各节点的权重为`$w_{211},w_{221},...,w_2j1$`,同理,只是因为输出层只有一个y。

设阶跃函数为g,`$u_{21}$`为阶跃函数的输入值,也就是中间层输出的线性加权

\frac{\partial E}{\partial w_{2j1}} = \frac{\partial E}{\partial y} \frac{\partial y}{\partial u_{21}} \frac{\partial u_{21}}{\partial w_{2j1}}

=-(r-y)y(1-y)z_j

E对y是最小二乘,求导是`$-(r-y)$`

y对u是sigmoid函数,求导是`$y(1-y)$`

线性组合u对`$w_{2j1}$`的求导是`$z_j$`

第二层的线性组合对第一层的权重求导

\frac{\partial u_{21}}{\partial w_{1ij}}=

\frac{\partial u_{21}}{\partial z_j}

\frac{\partial z_j}{\partial w_{1ij}}

= \frac{\partial u_{21}}{\partial z_j}

\frac{\partial z_j}{\partial u_{1j}}

\frac{\partial u_{1j}}{\partial w_{1ij}}

其中

u_{1j} = \sum_jw_{1ij}x_i

继续

\frac{\partial z_j}{\partial u_{1j}}

\frac{\partial u_{1j}}{\partial w_{1ij}}

=z_j(1-z_j)x_i

综上所述

\frac{\partial E}{\partial w_{1ij}} = -(r-y)y(1-y) \frac{\partial u_{21}}{\partial w_{1ij}}

\frac{\partial u_{21}}{\partial w_{1ij}} =

w_{2j1}z_j(1-z_j)x_i

\frac{\partial E}{\partial w_{1ij}} = -(r-y)y(1-y)w_{2j1}z_j(1-z_j)x_i

然后更新第二组和第一组的权重(为了使损失函数变小,偏导数如果是正,则说明该权重越大,损失值越大,为了让损失值变小,则要减去该偏导数。如果偏导数为负,则说明该权重越大,损失值越小,那么则要减去这个为负的偏导数,让该权重变大。)

w_{2j1} \leftarrow w_{2j1} + \alpha (r-y)y(1-y)z_j

w_{1ij} \leftarrow w_{1ij} + \alpha (r-y)y(1-y)w_{2j1}z_j(1-z_j)x_i

上面的式子因为减去一个负号,两个负号抵消成加号

上一篇 下一篇

猜你喜欢

热点阅读