GD、Batch GD、SGD 和 Mini-Batch SGD 有何不同?

数据挖掘 机器学习 神经网络 梯度下降
2022-02-24 06:29:41

这四种梯度下降函数有何不同?

  • 广东
  • 批量 GD
  • 新元
  • 小批量 SGD
3个回答

梯度下降是一种优化方法,用于使用目标函数(NN 中的损失函数)的梯度来优化模型的参数。它优化参数,直到损失函数的值最小(我们已经达到损失函数的最小值)。就神经网络而言,它通常被称为反向传播

以下所有方法都是梯度下降的变体。您可以从此视频中了解更多信息。

批量梯度下降:

来自整个数据集的样本用于优化参数,即计算单个更新的梯度。对于 100 个样本的数据集,更新只发生一次。

随机梯度下降:

随机 GD 计算数据集中每个样本的梯度,因此对数据集中的每个样本进行更新。对于 100 个样本的数据集,更新发生 100 次。

小批量梯度下降:

这是为了捕捉 Batch 和 Stochastic GD 的优点。我们不是使用单个样本 (Stochastic GD) 或整个数据集 (Batch GD),而是采用小批量或数据集块并相应地更新参数。对于 100 个样本的数据集,如果批次大小为 5,则意味着我们有 20 个批次。因此,更新发生 20 次。

以上所有方法都使用梯度下降进行优化。主要区别在于计算梯度的样本数量。梯度在 Mini-Batch 和 Batch GD 中进行平均。

您可以参考这些博客/帖子:

批量梯度下降与随机梯度下降

梯度下降算法及其变体

虽然GD的解释很好,但我想通过假设的情况再补充几点。

考虑我们有一个非常大的值的数据集,比如以百万为单位。

  1. GD:这将仅在计算所有样本的平均损失后更新权重。因此,在这种情况下,它将变得非常昂贵,并且收敛非常缓慢。
  2. Batch GD/Mini-Batch GD:GD 的替代品。选择批量大小并克服上述GD问题。但仍然批量执行。
  3. SGD:更新每个样本的权重并快速收敛。

所以有人会争论,为什么我们不应该总是使用 SGD?

由于 SGD 更新每个样本的权重,它的结果不是那么精确,因此它不会帮助我们收敛到最佳解决方案,或者我们也可以说不允许我们获得最佳全局最小值,而是接近全局最小值价值。

注意:我建议在 SGD 上观看此视频至少它消除了我的大部分疑问。

梯度下降(GD)是指一般的优化方法,它利用损失函数的梯度,在最速下降的“方向”上更新模型的参数值。因此, GD可以指批量 GD、SGD 或小批量 SGD。

SGD是指在每个标记对 (\boldsymbol{x}, y) 之后更新模型参数的 GD 其中 boldsymbol是观察值,是相应的标签或类别(在分类任务的情况下)。(x,y)xy

Batch GD 和 mini-batch SGD(通常)是同义词,它们指的是 GD 方法的一个版本,其中使用一个或多个标记对(用“batch”或“mini-batch”表示)更新参数。有关更多详细信息,请参阅内容。

但是,请注意,一般而言,有些人可能不会根据上述定义使用这些术语。例如,有些人可能会使用 SGD 来指代 mini-batch SGD。