码迷,mamicode.com
首页 > 其他好文 > 详细

神经网络的BP推导过程

时间:2018-10-26 22:10:22      阅读:367      评论:0      收藏:0      [点我收藏+]

标签:需要   设置   之间   数学   接下来   oid   更新   权重   根据   

神经网络的BP推导过程

技术分享图片

下面我们从一个简单的例子入手考虑如何从数学上计算代价函数的梯度,考虑如下简单的神经网络,该神经网络有三层神经元,对应的两个权重矩阵,为了计算梯度我们只需要计算两个偏导数即可:

首先计算第二个权重矩阵的偏导数,即

首先需要在之间建立联系,很容易可以看到的值取决于,而,而又是由取sigmoid得到,最后,所以他们之间的联系可以如下表示:

技术分享图片

按照求导的链式法则,我们可以先求对的导数,然后乘以对的导数,即

由于

不难计算

上式可以重写为

接下来仅需要计算即可,由于

 

忽略前面的

技术分享图片

以及正则项

设k=1得到

这里只对一个example推导,最后累加即可

因此

得到下面的求导过程

由于

,计算如下,得

至此我们得到了

 

接下去我们需要求的偏导数,的依赖关系如下:

技术分享图片

根据链式求导法则有

分别计算等式右边的三项可得

带入后得

上式可以重写为

将上面的结果放在一起,我们得到对两个权重矩阵的偏导数为:

观察上面的四个等式,我们发现

  • 偏导数可以由当层神经元向量与下一层的误差向量相乘得到
  • 当前层的误差向量可以由下一层的误差向量与权重矩阵的乘积得到

所以可以从后往前逐层计算误差向量,然后通过简单的乘法运算得到代价函数对每一层权重矩阵的偏导数。

 

技术分享图片

假设我们有m个训练example,L层神经网络,并且此处考虑正则项,即

初始化:设置(理解为对第l层的权重矩阵的偏导累加值,每一个训练的偏导数累加值,最后再除以样本数得到均值)

For k=1:m

    设置 =

    通过前向传播算法(FP)计算对各层的预测值,其中l=1,2,3,4…,L

    计算最后一层的误差向量,利用后向传播算法(BP)从后至前逐层计算误差向量,计算公式为

    更新

End//

计算梯度:

技术分享图片

技术分享图片

 

 

附录:

技术分享图片

技术分享图片

技术分享图片

 

 

技术分享图片

技术分享图片

技术分享图片

技术分享图片

神经网络的BP推导过程

标签:需要   设置   之间   数学   接下来   oid   更新   权重   根据   

原文地址:https://www.cnblogs.com/kexinxin/p/9858565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!