前向传播和反向传播_BP(反向传播算法)公式推导及例题解析
写在前面:最近赶上《模式识别》课程考试,就把BP重新复习了下。猜测老师可能会出这方面的计算题(hhh,也是不知道我哪里来的自信),就学习了Matt Mazur博客的例题。(再加一句废话:其实在我之前,已经有前辈 @EdisonGzq 写过了,觉得还是有必要自己推,所以就画蛇添足了)这里我们使用两个输入、隐含层两个神经元、两个输出,其中隐含层和输出层都有偏置,结构如下:为了能够保证传播过程的顺利进行
写在前面:最近赶上《模式识别》课程考试,就把BP重新复习了下。猜测老师可能会出这方面的计算题(hhh,也是不知道我哪里来的自信),就学习了Matt Mazur博客的例题。
(再加一句废话:其实在我之前,已经有前辈 @EdisonGzq 写过了,觉得还是有必要自己推,所以就画蛇添足了)
这里我们使用两个输入、隐含层两个神经元、两个输出,其中隐含层和输出层都有偏置,结构如下:
为了能够保证传播过程的顺利进行,这里对参数进行了初始化:
前向传播
隐含层
这里我们先计算
之后将输入传递给激活函数(这里使用的是sigmoid激活函数),得到:
同理,可以得到
输出层
将隐含层的输出作为输入,对输出层的神经元重复上述过程。
同理可以得到
误差计算
这里我们均方误差作为目标函数:
有了output,之后分别计算
则,总误差为:
反向传播
反向传播是根据链式求导法则对参数(
输出层-->隐含层
(1)
进一步解释:
为了求出
首先计算对
其次计算对
之后计算对
最后得到的
这里将学习率设为0.5,更新之后的
同理,可对
(2)
(结构图显示每层共用一个偏置,但是个人觉得每个神经元的偏置计算结果应该是不一样的,故应该分别进行更新,这里只对第一个神经元的偏置更新进行说明,下同)
得到一个更新之后的
隐含层-->输入层
(1)
对于
更进一步说明:
根据上图,我们知道
先计算上式第一个因式
而
所以
将它们相乘得到:
同理,对第二个因式
因此
之后,我们可以得到
这样,就得到了
更新之后的
同理,我们可以得到其余更新后的w
(2)
可得
则,完成一次更新后的
这样,我们就完成了一次前向传播和反向传播。
注:除偏置更新的图片外,其余图片均来自Matt Mazur博客。
更多推荐
所有评论(0)