【问题标题】:how is backpropagation the same (or not) as reverse automatic differentiation?反向传播如何与反向自动微分相同(或不同)?
【发布时间】:2014-06-22 12:45:51
【问题描述】:

Wikipedia page for backpropagation 有这样的声明:

计算梯度的反向传播算法已经 重新发现了很多次,并且是更多的特例 逆向称为自动微分的一般技术 积累模式。

有人可以解释一下吗,通俗地说?被区分的功能是什么?什么是“特例”?使用的是伴随值本身还是最终梯度?

更新:自从写了这篇文章后,我发现这在深度学习一本书的第 6.5.9 节中有介绍。见https://www.deeplearningbook.org/。我还发现这篇论文在这个主题上提供了丰富的信息:“深度神经的稳定架构 网络”,由 Haber 和 Ruthotto 撰写。

【问题讨论】:

    标签: algorithm neural-network backpropagation calculus automatic-differentiation


    【解决方案1】:

    “被微分的函数是什么?什么是“特例?””

    反向传播和反向模式 AD 之间最重要的区别是反向模式 AD 从 R^n -> R^m 计算向量值函数的向量-雅可比积,而反向传播计算标量值的梯度函数来自 R^n -> R。因此,对于标量函数,反向传播是反向模式 AD 的一种特殊情况。

    当我们训练神经网络时,我们总是有一个标量值损失函数,所以我们总是使用反向传播。这是被区分的功能。由于反向传播是反向模式 AD 的子集,所以我们在训练神经网络时也使用反向模式 AD。

    “使用的是伴随值本身还是最终梯度?”

    变量的伴随是损失函数相对于该变量的梯度。当我们进行神经网络训练时,我们使用参数(如权重、偏差等)相对于损失的梯度来更新参数。所以我们确实使用了伴随词,但只使用了参数的伴随词(相当于参数的梯度)。

    【讨论】:

      【解决方案2】:

      在神经网络训练中,我们希望找到一组权重w 以最小化错误E(N(w,x)-y)。 (x 是训练输入,y 是训练输出,N 是网络,E 是一些误差函数)。

      进行此类优化的标准方法是梯度下降,它使用网络的导数N' 说。我们可以将网络表示为矩阵乘积并使用矩阵演算手动完成,但我们也可以编写(自动)算法。

      反向传播是一种特殊的算法,具有一定的优势。例如,它可以很容易地仅对选定的权重样本进行导数,这是随机梯度下降所需要的。它还指定如何保​​存前馈(实际网络值),以便轻松访问它们以计算所需的导数。

      您应该能够在教科书和网上找到特定算法的确切代码。

      【讨论】:

        猜你喜欢
        • 2016-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-19
        相关资源
        最近更新 更多