相信很多人和我一样看了很多的博客,很多书始终对于BP算法都是一头雾水。
其实可以大致总结计算步骤如下:
- 通过前向传播得到最终的损失。
- 计算梯度(需要更新的参数的梯度)。
- 更新梯度。
里面总是出现一些公式很费解。(其实大家可以把它当作梯度下降优化算法的简洁版)
这里推荐一个写的很不错的博客以代码实现的角度来理解:https://www.cnblogs.com/pinard/p/6422831.html
我通过一个简单的推导,来进一步了解反向传播。这里相比于上面推荐的博客相当于是一个具体的验证。
也可以从不同的角度理解反向传播。
下图是简单的神经网络结构。(大家可以把这个图画一下,方便对照后面的推导)
由于前向传播相简单,就直接开始推导反向传播。
输入层对权重w5核偏置b3进行更新,隐藏层对w1,和b1进行更新。
需要说明几点:我下面的推导in**表示输入,out**表示输出。E表示误差。
首先是输出层的:(下面是输出层手误写错了…………)
然后是隐藏层的:
看完这个之后仍然不理解,其实也没关系,总的来说,把它当作连续求偏导的过程就行了。
----------------------------------------------------------------------------------------------------------------
参考 https://blog.csdn.net/u014303046/article/details/78200010#t2
参考 https://www.cnblogs.com/charlotte77/p/7783261.html
吴恩达机器学习视频
周志华机器学习中神经网络