如何直观地解释 back propagation 算法?

简单的理解,它的确就是复合函数的链式法则,但其在实际运算中的意义比链式法则要大的多。

多层神经网络的本质就是一个多层复合的函数。借用网上找到的一幅图[1],来直观描绘一下这种复合关系。

如何直观地解释 back propagation 算法?

其对应的表达式如下:

如何直观地解释 back propagation 算法?

上面式中的Wij就是相邻两层神经元之间的权值,它们就是深度学习需要学习的参数,也就相当于直线拟合y=k*x+b中的待求参数k和b。

和直线拟合一样,深度学习的训练也有一个目标函数,这个目标函数定义了什么样的参数才算一组“好参数”,不过在机器学习中,一般是采用成本函数(cost function),然后,训练目标就是通过调整每一个权值Wij来使得cost达到最小。cost函数也可以看成是由所有待求权值Wij为自变量的复合函数,而且基本上是非凸的,即含有许多局部最小值。但实际中发现,采用我们常用的梯度下降法就可以有效的求解最小化cost函数的问题。

梯度下降法需要给定一个初始点,并求出该点的梯度向量,然后以负梯度方向为搜索方向,以一定的步长进行搜索,从而确定下一个迭代点,再计算该新的梯度方向,如此重复直到cost收敛。那么如何计算梯度呢?

假设我们把cost函数表示为如何直观地解释 back propagation 算法?,那么它的梯度向量[2]就等于如何直观地解释 back propagation 算法?, 其中如何直观地解释 back propagation 算法?表示正交单位向量。为此,我们需求出cost函数H对每一个权值Wij的偏导数。而BP算法正是用来求解这种多层复合函数的所有变量的偏导数的利器

如何直观地解释 back propagation 算法?



利用链式法则我们知道:
如何直观地解释 back propagation 算法?以及如何直观地解释 back propagation 算法?

大家也许已经注意到,这样做是十分冗余的,因为很多路径被重复访问了。对于权值动则数万的深度模型中的神经网络,这样的冗余所导致的计算量是相当大的。


同样是利用链式法则,BP算法则机智地避开了这种冗余,它对于每一个路径只访问一次就能求顶点对所有下层节点的偏导值。
正如反向传播(BP)算法的名字说的那样,BP算法是反向(自上往下)来寻找路径的。


如何直观地解释 back propagation 算法?
如何直观地解释 back propagation 算法?