为什么在梯度下降中平均梯度有效?

数据挖掘 梯度下降 小批量梯度下降
2021-10-14 07:07:27

在全批梯度下降或 Minibatch-GD 中,我们从几个训练示例中获得梯度。然后我们对它们进行平均以获得“高质量”梯度,从几个估计中,最后一次用它来校正网络。

但是为什么平均收集的梯度会起作用?每个训练样本最终都位于误差表面上一个遥远的、完全独立的位置

因此,与其他训练示例相比,每个样本的最陡下降方向都指向不同的方向。平均这些方向应该没有意义?然而它运作良好。事实上,我们平均的样本越多,校正就越精确:full-batch vs mini-batch 方法

在此处输入图像描述

2个回答

每个训练样本最终都位于误差表面上一个遥远的、完全独立的位置

这不是对正在发生的事情的正确可视化。误差曲面图与网络参数的值相关,而不是与数据输入的值相关。在小批量或整批中单个项目的反向传播期间,每个示例都给出了参数空间中相同位置的梯度估计值。您使用的示例越多,估计值就越好(更多内容见下文)。

更准确地表示正在发生的事情是这样的:

在此处输入图像描述

您的问题在这里仍然有效:

但是为什么平均收集的梯度会起作用?

换句话说,你为什么期望从单独的例子中获取所有这些单独的梯度应该结合成一个更好的近似误差表面上的平均梯度?

这完全与误差表面本身如何构建为单个损失函数的平均值有关。如果我们将误差表面的成本函数记为C, 然后

C(X,θ)=1|X|XX大号(X,θ)

在哪里 X 代表整个数据集, θ 是模型的可训练参数, 大号 是一个单独的损失函数 X. 注意我已将标签卷入X 在这里,对于这个论点,损失是否是由于模型输出与训练数据的某些部分的比较无关紧要——我们关心的是找到误差表面的梯度。

您要为梯度下降计算的误差梯度是 θC(X,θ),因此您可以写为:

θC(X,θ)=θ(1|X|XX大号(X,θ))

任何两个函数之和的导数是导数之和,即

ddX(是的+z)=d是的dX+dzdX

此外,任何不依赖于梯度参数的固定乘数(在本例中为数据集的大小)都可以视为外部因素:

θC(X,θ)=1|X|XXθ大号(X,θ)

所以 。. . 许多函数的平均值的梯度,等于这些函数分别取的梯度的平均值。取任何完全随机的子集X将导致平均梯度的无偏估计,与获取任何变量的随机子集并取其均值相同,将为您提供总体均值的无偏估计。

如果您的样本以某种方式相关,这将不起作用,因此您经常会看到建议在训练之前对数据进行洗牌,以使其成为 iid

如果您的成本函数以除加法之外的任何方式组合示例,这也将不起作用。然而,通过乘以它们的损失函数或其他一些非线性组合来组合单独的训练示例,这将是一个不寻常的成本函数。

当我们使用“高质量”梯度校正网络时,我们试图获得一个统一的权重向量(或误差表面的最小值),该向量将适合整个数据,即所有训练示例。

每个单独示例的梯度(尽管最初在误差面上具有不同的方向)旨在实现误差面上的最小值。因此,对它们进行平均是有意义的,因为它将给出比单个梯度更好的最小值的平均方向。

我不是该领域的专家,但在我看来,这是可能的答案。希望能帮助到你。

编辑:从评论中了解到,您的图表是错误的,因为“误差面总是在模型参数之上,而不是在示例之上”。因此,如果您指的是不同方向的渐变,上述解释将对您有所帮助。