avatar

Catalog
反向传播算法

我们已经知道了梯度下降法的基本原理,那么对神经网络中的参数进行更新就可以利用梯度下降的方法,首先,我们根据链式法则对每个参数进行求导,然后利用梯度下降法更新。这样做当然是可行的,但是未免太蠢了。假如有100万个参数,我们就要求导100万次,并且每次都要进行链式展开,计算量实在太大了。此时,有一个聪明的善于观察的人啊,他发现每次链式展开的求导公式里,有很多重复的部分,根据这个现象,他提出了大名鼎鼎的反向传播算法,解决了神经网络中求梯度时计算量太大的问题。

反向传播算法图解

微信截图_20200216001150

微信截图_20200216001840


微信截图_20200216002028

惊喜发现: 和正向传播用的权重一模一样,和正向传播过程一模一样。


微信截图_20200216003313

简要概括

假设在正向传播中的某一层表示为:

[公式]

则反向传播中,对Z的求导公式为(T表示转置):公式1

[公式]

对W的求导公式为(T表示转置):公式2

[公式]

只要我们从后往前算,每一步只需要利用上一步的结果,加一点点小小的步骤。所有的z、w、b都只需要利用对out的导数即可(不太严谨,因为没有把激活函数考虑在内,但激活函数并不破坏这种依赖,只是加了一点小小的步骤)。

Author: realLiuSir
Link: http://yoursite.com/2020/02/15/%E5%8F%8D%E5%90%91%E4%BC%A0%E6%92%AD%E7%AE%97%E6%B3%95/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶