反向传播的直观理解 (以及为什么反向传播是一种快速的算法)

反向传播的直观理解 (以及为什么反向传播是一种快速的算法)_第1张图片

解释:公式 46 其实就是微分的定义公式,”W + εej  ”代表对于由 j 个 weight 构成的单位向量 W,在其他权重都不变的情况下,使得 Wj 微小的改变 ε(W为单位向量,ej = 1,ε可正可负)。这个公式是向量形式。

反向传播的直观理解 (以及为什么反向传播是一种快速的算法)_第2张图片

解释:计算一次网络传播需要1,00,001次说的是模型进行一次梯度下降,即更新一次所有权重。1,000,000个参数需要将网络向前传播 1,000,000 次来计算1,000,000个 C ( W + εej )   ,而 C( W ) 只需要一次向前传播就可以算出来。所以说反向传播是一个快速的方法。

为什么反向传播只要一次前向传播和一次反向传播(直观理解方向传播):

 

来看看一个极简单的深度神经网络:每一层都只有一个单一的神经元。下图就是有四层隐藏层的神经网络:

 

                            

我们现在来看看关于 bias 的反向传播,具体表达式如下(为什么是这样请参照上面说明,然后链式法则):

                            

上面虽然只写了 b1关于代价函数 C 偏导数这一个公式,但其实已经将所有的 b1 、b2 、b3 、b4 关于代价函数的偏导数计算出来了:

b4 关于代价函数的偏导数:   

b3 关于代价函数的偏导数:   =    * b4 关于代价函数的偏导数 

b2 关于代价函数的偏导数:     = 类似上面

 

所以你发现了什么。反向传播算法的确只需要先向前传播计算一次 C ,然后再反向传播一次就能计算所有的参数关于代价函数的偏导数。然后进行梯度下降。参数更新。(上面的说明只解释了偏置 bias,其实权重 weights 也是这样计算出来的,而且是weights 和 bias 一起计算出来,先算倒数第一层参数关于代价函数的偏导,然后利用之前的计算来计算倒数第二层,倒数第三层 、倒数第四层......)

完!

 

本文引用的图片内容来自:Neural Networks and Deep Learning(美)Michael Nielsen 著

 

 

你可能感兴趣的:(反向传播的直观理解 (以及为什么反向传播是一种快速的算法))