王权富贵:反向传播链式的推导-----《Python神经网络编程》的学习笔记

笔记汇总:https://blog.csdn.net/a1103688841/article/details/84350432

感谢:《Python神经网络编程》--塔里克·拉希德著 ----这本书,解析的很详细

这是一幅BP神经网络的示意图:

首先,我们使用梯度下降法进行参数优化。

其中E是误差函数,这里用(目标值-实际值)的平方。这种方法有如下几个好处:
1.使用误差的平方,我们可以很容易使用代数计算出梯度下降的斜率。
2.误差函数平滑连续,这使得梯度下降法很好地发挥作用——没有间断,也没有突然的跳跃。
3.越接近最小值,梯度越小,这意味着,如果我们使⽤这个函数调节步长,超调的风险就会变得较小。

参考链式法则,把输出提出来。

这里tn是真实值是固定的 所以是对这个函数求On的导数。

将输出Ok展开

接下里就是求Sigmoid函数的导数了,如下。

带入公式如下:

去除多余的系数(系数不影响比例关系,故可以去除):

到这里我们已经完美的解决了Sigmoid函数的反向传播,其余激活函数也是类似。

============================================================

使用矩阵计算如下图。

这里有一个方向的问题要注意,输入的input的一组信息是一列的。隐藏层的输出是一列的。输出层的输出也是一列的。

所以这边的Oj隐藏层的输出,根据上面的式子就知道要转置了。

猜你喜欢

转载自blog.csdn.net/a1103688841/article/details/85149795
今日推荐