Bra*_*non 10 algorithm automatic-differentiation calculus backpropagation neural-network
用于计算梯度的反向传播算法已被多次重新发现,并且是在反向累积模式中称为自动微分的更通用技术的特殊情况.
有人可以用这个来解释这个问题吗?被区分的功能是什么?什么是"特例"?它是使用的伴随值本身还是最终的渐变?
在神经网络训练中,我们希望找到一组w
最小化误差 的权重E(N(w,x)-y)
.(x
是训练输入,y
是训练输出,N
是网络并且E
是一些误差函数).
像这样进行优化的标准方法是梯度下降,它使用网络的衍生物N'
.我们可以将网络表示为矩阵产品,并使用矩阵演算手动完成,但我们也可以编写(自动)算法.
反向传播是一种特殊的算法,具有一定的优势.例如,对于随机梯度下降所需的选择的权重样本,它可以很容易地获得导数.它还指定了如何保存前馈(实际网络值),以便可以轻松访问它们以计算所需的导数.
您应该能够在教科书和在线中找到特定算法的确切代码.
“被微分的功能是什么?‘特例’是什么?”
反向传播和反向模式 AD 之间最重要的区别是,反向模式 AD 计算 R^n -> R^m 中向量值函数的向量雅可比积,而反向传播计算 R 中标量值函数的梯度^n -> R。因此,反向传播是标量函数的反向模式 AD 的特殊情况。
当我们训练神经网络时,我们总是有一个标量值损失函数,所以我们总是使用反向传播。这就是函数的微分。由于反向传播是反向模式 AD 的子集,因此我们在训练神经网络时也使用反向模式 AD。
“使用的是伴随值本身还是最终的梯度?”
变量的伴随是损失函数相对于该变量的梯度。当我们进行神经网络训练时,我们使用参数(如权重、偏差等)相对于损失的梯度来更新参数。所以我们确实使用了伴随词,但只是参数的伴随词(相当于参数的梯度)。