反向传播与反向自动微分的相同(或不相同)如何?

时间:2014-05-06 03:48:38

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

Wikipedia page for backpropagation有此声明:

  

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

有人可以解释这个,用外行的话说吗?被区分的功能是什么?什么是“特例”?它是使用的伴随值本身还是最终的渐变?

2 个答案:

答案 0 :(得分:5)

在神经网络训练中,我们希望找到一组权重w,以最大限度地减少错误E(N(w,x)-y)。 (x是培训输入,y是培训输出,N是网络,E是一些错误函数。)

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

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

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

答案 1 :(得分:0)

“区分的功能是什么?“特殊情况”是什么?”

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

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

“使用的是伴随值本身还是最终的渐变?”

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