【问题标题】:how is backpropagation the same (or not) as reverse automatic differentiation?反向传播如何与反向自动微分相同(或不同)?
【发布时间】:2014-06-22 12:45:51
【问题描述】:
【问题讨论】:
标签:
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' 说。我们可以将网络表示为矩阵乘积并使用矩阵演算手动完成,但我们也可以编写(自动)算法。
反向传播是一种特殊的算法,具有一定的优势。例如,它可以很容易地仅对选定的权重样本进行导数,这是随机梯度下降所需要的。它还指定如何保存前馈(实际网络值),以便轻松访问它们以计算所需的导数。
您应该能够在教科书和网上找到特定算法的确切代码。