梯度下降中权重梯度的方向冲突?

数据挖掘 神经网络 梯度下降 反向传播
2022-02-13 02:19:53

在典型的 ANN 反向传播设置中,我们有多个权重,我们尝试通过计算函数相对于权重的梯度来减少损失函数,比如说 w 1、 w 2、 w 3以最终更新它们。

我们计算 ∂Err/∂w 1 , ∂Err/∂w 2 , ∂Err/∂w 3并将每个权重的权重更新为 w i = w i + ∂Err / ∂w i,以便我们朝着损失函数在度量上减小的方向。

我看到的问题是,在损失函数方面,某些权重增量方向可能一直存在冲突。也就是说,当 w 1 单独趋向∂Err/∂w 1 时,Err 可能会减少可能当 w 1与 w 2一起更新时,Err 实际上会增加,也就是说,当我们在方向上一起采取措施时在所有这些权重中,我们实际上可能不会走下 Err。不是这样吗?我错过了什么?

1个回答

也就是说,当 w1 单独趋向 ∂Err/∂w1 时 Err 可能会减小,但很可能当 w1 与 w2 一起更新时 Err 实际上会增加,也就是说,当我们朝着所有这些权重的方向一起采取步骤时,我们实际上可能不会走下 Err。

不是这样吗?

不完全是。使用反向传播,可以精确计算权重梯度(对于给定的训练数据)。他们中的许多人同时更新并不重要。渐变不会“冲突”,它们是 100% 兼容的。但它们仅在本地对当前值有效wi

保证在与梯度相反的方向上一次更新所有权重以减少该训练数据的误差值,需要注意的是,只有当步长为也是无穷小的。

如果您进行的更新步骤太大(对于某些“太大”的值,根据上下文变化很大),那么曲线可能在该步骤上保持一致,并且您的错误值可能会增加。

这个问题与一次更新多个权重没有直接关系。即使您只有一个重量,它也可能发生。然而,当有一个更复杂的函数时,更多的权重会同时发生变化,函数执行此操作的位置可能会更多。

在实践中,无限小的更新需要很长时间来训练,所以你需要找到一个更大的值——但不要太大而导致问题——作为一种折衷方案。

此外:

  • 您拥有的训练数据通常最多可以让您创建与您正在搜索的“真实”函数的粗略近似。所以你真的不想在你的训练数据集的误差函数中找到一个实际的全局最小值,因为它会过拟合。

  • 通常,使用小批量时,梯度也只是一个粗略的近似值,因此更新只会大致朝着正确的方向进行(这有时会很好,因为它可以帮助摆脱局部最小值和鞍点)