维基百科关于反向传播的页面有这样的声明:
谁能解释一下,用外行的话来说?被微分的函数是什么?什么是"特例"?是使用伴随值本身还是最终的梯度?计算梯度的反向传播算法已经得到重新发现的次数多了,而且是特例多了一般的技术称为自动微分的逆向积累模式。
更新:自从写这篇文章以来,我发现这在深度学习书籍第6.5.9节中有涉及。参见https://www.deeplearningbook.org/。我还发现这篇论文在"深度神经系统的稳定架构"这一主题上提供了丰富的信息networks"
在神经网络训练中,我们想要找到一组权值w
,使误差E(N(w,x)-y)
最小化。(x
为训练输入,y
为训练输出,N
为网络,E
为某个误差函数)。
做这样的优化的标准方法是梯度下降,它使用网络的导数,N'
说。我们可以将网络表示为矩阵乘积,并使用矩阵演算手动完成,但我们也可以编写(自动)算法。
反向传播算法是该类算法中的一种特殊算法,具有一定的优势。例如,它可以很容易地只对一个选定的权重样本求导,这是随机梯度下降所需要的。它还指定了如何保存前馈(实际网络值),以便在计算所需的导数时可以轻松访问它们。
您应该能够在教科书中以及在线上找到特定算法的确切代码。
"被微分的函数是什么?什么是"特例"?"
反向传播和逆模AD之间最重要的区别是逆模AD是从R^n到> R^m计算向量值函数的向量-雅可比积,而反向传播是从R^n到> R计算标量值函数的梯度,因此反向传播是标量函数的逆模AD的特殊情况。
当我们训练神经网络时,我们总是有一个标量值损失函数,所以我们总是使用反向传播。这是被微分的函数。由于反向反向是反向模式AD的一个子集,因此我们在训练神经网络时也使用反向模式AD。
"是使用伴随值本身还是最终梯度?"
一个变量的伴随是损失函数相对于该变量的梯度。当我们进行神经网络训练时,我们使用参数(如权重、偏差等)相对于损失的梯度来更新参数。所以我们确实使用了伴随函数,但只是参数的伴随函数(它等价于参数的梯度)