反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。
很多同学在学习深度神经网络的时候,对反向传播的相关细节表示难以理解,国外有一篇技术博客,用例子进行了非常清晰的推导。我们对此进行了汉化,并提供了相关的代码。有兴趣的同学快来看看吧。
假设,你有这样一个网络层。
![](https://img.haomeiwen.com/i15934406/2feda0f49073912c.jpg)
![](https://img.haomeiwen.com/i15934406/bad8de4be13368c0.png)
现在对他们赋上初值,如下图:
![](https://img.haomeiwen.com/i15934406/37cdde406ca0728d.jpg)
![](https://img.haomeiwen.com/i15934406/1d3668aade2fb051.png)
前向传播过程
1. 输入层---->隐含层:
![](https://img.haomeiwen.com/i15934406/40fdc23383d365f2.png)
2. 隐藏层---->输出层:
![](https://img.haomeiwen.com/i15934406/54d98b0f141c0aeb.png)
反向传播过程
接下来,就可以进行反向传播的计算了
1. 计算总误差
![](https://img.haomeiwen.com/i15934406/8b439986553cb6b4.png)
2. 隐含层---->输出层的权值更新:
![](https://img.haomeiwen.com/i15934406/8aa82a35ff2b1df2.png)
下面的图可以更直观的看清楚误差是怎样反向传播的
![](https://img.haomeiwen.com/i15934406/f5c70af4eb649ae2.png)
我们分别计算每个式子的值:
![](https://img.haomeiwen.com/i15934406/757b9ece9837eadf.png)
最后三者相乘
![](https://img.haomeiwen.com/i15934406/a775a3da8cedc9b2.png)
看看上面的公式,我们发现:
![](https://img.haomeiwen.com/i15934406/d265fdd09206bbb7.png)
![](https://img.haomeiwen.com/i15934406/7e3c68fd6a937b8a.png)
3.隐含层---->隐含层的权值更新:
![](https://img.haomeiwen.com/i15934406/1ccf1f8309aca66e.png)
![](https://img.haomeiwen.com/i15934406/001138b76afe88e7.png)
![](https://img.haomeiwen.com/i15934406/051841f8e3fbcb6c.png)
同理,计算出
![](https://img.haomeiwen.com/i15934406/bd865a703eb165e0.png)
两者相加,得到总值
![](https://img.haomeiwen.com/i15934406/7137e17a9dcec78d.png)
![](https://img.haomeiwen.com/i15934406/8daf231cf2064c42.png)
最后,三者相乘
![](https://img.haomeiwen.com/i15934406/9b00400807defa2f.png)
![](https://img.haomeiwen.com/i15934406/293890b9a2274790.png)
这样误差反向传播法就完成了,最后我们再把更新的权值重新计算,不停地迭代。
———————————————————————————————————————————Mo (网址:http://momodel.cn )是一个支持 Python 的人工智能建模平台,能帮助你快速开发训练并部署 AI 应用。
网友评论