我一直在尝试理解反向传播一段时间。我遇到了它的两种变体。
- 在 Andrew Ng 类中,隐藏层权重的导数是使用分布回隐藏节点的误差信号来计算的。
- 在 Geoffrey Hinton 类中,隐藏层权重的导数是使用已经计算的下一层的导数计算的,并且根据我的微积分知识,这更有意义。
有人可以解释第一个变体是如何工作的吗?
我一直在尝试理解反向传播一段时间。我遇到了它的两种变体。
有人可以解释第一个变体是如何工作的吗?
第一个变体是第二个变体,或者更准确地说,只有一种类型的反向传播,它与损失函数相对于网络参数的梯度一起工作。
不过,这并不是一个不常见的问题,我认为引起混淆的主要问题是,当损失函数被巧妙地构造以便它与输出层激活函数一起工作时,导数项是数值,这看起来与直接取线性误差相同。研究实现这样一个网络的代码的人很容易得出这样的结论,即初始梯度实际上是一个初始误差(虽然这些在数值上相等,但它们是不同的概念,在通用神经网络中它们不必等于)
这种情况适用于以下网络架构:
均方误差和线性输出层 - 注意乘数有没有故意简化导数。
二元交叉熵和 sigmoid 输出层。损失的导数巧妙地抵消了 sigmoid 的导数,在预变换阶段留下梯度.
多类 logloss,对真实类进行 one-hot 编码和softmax输出层。损失的导数再次巧妙地抵消了,在预变换阶段留下梯度为真正的班级。
因此,当您被告知反向传播通过网络反向处理“错误信号”或“错误”时,只需将“梯度”添加到短语的开头即可。有些人会故意说它是速记,其他人可能会诚实地混淆。
这同样适用于更深的层,尽管除了“这是正在分布的[梯度]错误”的简写之外,没有其他来源会混淆“这是正在分布的错误”。