反向传播和反向自动微分有何相同之处(或不同之处)?

14
Wikipedia关于反向传播算法的页面中提到:

计算梯度的反向传播算法已经被发现多次,并且是一种称为反向累积模式下的自动微分技术的特殊情况。

能否有人用通俗易懂的语言解释一下这个声明?这里所微分的函数是什么?“特殊情况”是什么?使用的是伴随值本身还是最终梯度?

更新:自写此文以来,我发现该主题在深度学习书籍第6.5.9节中有涉及。请参见https://www.deeplearningbook.org/。我还发现哈伯和鲁索托的论文“稳定的深度神经网络架构”对此问题很有启发性。

2个回答

6
在神经网络的训练中,我们希望找到一组权重 w,使误差 E(N(w,x)-y) 最小化。(其中x是训练输入,y是训练输出,N是网络,E是某个误差函数)。
标准的优化方法是梯度下降法,它使用网络的导数 N'。我们可以将网络表示为矩阵乘积,并使用矩阵微积分手动进行计算,但也可以编写(自动)算法。
反向传播是一种特殊的算法,具有某些优点。例如,它使得仅相对于所选权重样本取导数变得容易,这对随机梯度下降非常有用。它还指定了如何保存前馈(实际网络值),以便轻松地计算所需的导数。
你应该能够在教科书和在线上找到特定算法的精确代码。

3
“被区分的功能是什么?'特殊情况'是什么?”
反向传播和反向模式自动微分之间最重要的区别在于,反向模式自动微分计算从R^n -> R^m的矢量值函数的向量-雅各比乘积,而反向传播计算从R^n -> R的标量值函数的梯度。因此,对于标量函数,反向传播是反向模式自动微分的一个特殊情况。
当我们训练神经网络时,我们总是有一个标量值损失函数,因此我们总是使用反向传播。这就是被区分的功能。既然反向传播是反向模式自动微分的子集,那么在训练神经网络时我们也在使用反向模式自动微分。
“是自身伴随数用于最终梯度还是用于最终梯度?”
变量的伴随数是其关于损失函数的梯度。当我们进行神经网络训练时,我们使用参数(如权重、偏置等)相对于损失的梯度来更新参数。因此,我们确实使用伴随数,但只使用参数的伴随数(它们等同于参数的梯度)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接