反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。

很多同学在学习深度神经网络的时候,对反向传播的相关细节表示难以理解,国外有一篇技术博客,用例子进行了非常清晰的推导。我们对此进行了汉化,并提供了相关的代码。有兴趣的同学快来看看吧。

相关代码 (请在电脑端用 Chrome 浏览器打开)

原文地址

假设,你有这样一个网络层【技术博客】机器学习分享——反向传播算法推导-Mo 动态
【技术博客】机器学习分享——反向传播算法推导-Mo 动态
现在对他们赋上初值,如下图:
【技术博客】机器学习分享——反向传播算法推导-Mo 动态
【技术博客】机器学习分享——反向传播算法推导-Mo 动态

前向传播过程

  

1. 输入层---->隐含层:

【技术博客】机器学习分享——反向传播算法推导-Mo 动态

2. 隐藏层---->输出层:

【技术博客】机器学习分享——反向传播算法推导-Mo 动态

反向传播过程

接下来,就可以进行反向传播的计算了

1. 计算总误差

【技术博客】机器学习分享——反向传播算法推导-Mo 动态

2. 隐含层---->输出层的权值更新:

【技术博客】机器学习分享——反向传播算法推导-Mo 动态
下面的图可以更直观的看清楚误差是怎样反向传播的
【技术博客】机器学习分享——反向传播算法推导-Mo 动态
我们分别计算每个式子的值:
【技术博客】机器学习分享——反向传播算法推导-Mo 动态
最后三者相乘【技术博客】机器学习分享——反向传播算法推导-Mo 动态
看看上面的公式,我们发现:【技术博客】机器学习分享——反向传播算法推导-Mo 动态
【技术博客】机器学习分享——反向传播算法推导-Mo 动态

3.隐含层---->隐含层的权值更新:

【技术博客】机器学习分享——反向传播算法推导-Mo 动态
【技术博客】机器学习分享——反向传播算法推导-Mo 动态
同理,计算出【技术博客】机器学习分享——反向传播算法推导-Mo 动态
两者相加,得到总值
【技术博客】机器学习分享——反向传播算法推导-Mo 动态
【技术博客】机器学习分享——反向传播算法推导-Mo 动态
最后,三者相乘 【技术博客】机器学习分享——反向传播算法推导-Mo 动态
【技术博客】机器学习分享——反向传播算法推导-Mo 动态
这样误差反向传播法就完成了,最后我们再把更新的权值重新计算,不停地迭代.

电脑端查看完整代码
【技术博客】机器学习分享——反向传播算法推导-Mo 动态