术语表

随机梯度下降 (SGD)

了解随机梯度下降法如何优化机器学习模型,从而为大型数据集和深度学习任务提供高效训练。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

随机梯度下降算法(通常称为 SGD是一种流行而高效的优化算法,广泛应用于机器学习(ML),尤其是深度学习(DL)。它是标准梯度下降算法的一种变体,但在处理超大数据集时专为提高速度和效率而设计。SGD 每一步都使用整个数据集来计算梯度(损失函数的最陡下降方向),而不是根据单个随机选择的数据样本或称为迷你批的小子集来近似梯度。这种方法大大降低了计算成本和内存需求,使得在海量数据上训练复杂模型变得可行。

机器学习的相关性

SGD 是训练大规模机器学习模型的基石,尤其是为许多现代人工智能应用提供动力的复杂神经网络 (NN)。当处理的数据集过大,内存无法容纳,或使用传统的批量梯度下降法处理时间过长时,SGD 的高效性使其成为不可或缺的工具。像 Ultralytics YOLO等模型通常在训练过程中利用 SGD 或其变体来学习物体检测图像分类图像分割等任务的模式。主要的深度学习框架,如 PyTorchTensorFlow等主要深度学习框架都提供了强大的 SGD 实现,凸显了其在人工智能生态系统中的基础作用。

关键概念

理解 SGD 涉及几个核心理念:

  • 随机性:所谓 "随机性",指的是每一步只使用一个或几个样本来估计梯度所带来的随机性。这种随机性为优化过程增加了噪音,有时可以帮助模型摆脱局部极小值的困境,找到更好的整体解决方案。
  • 小批量:虽然纯 SGD 每次更新使用一个样本,但在实践中更常见的是使用一个小的 "迷你批次 "样本(如 32、64、128)。这种方法通常仍被称为 SGD,它兼顾了单样本更新的效率和小批量平均梯度所带来的稳定性。批次大小由批次大小超参数控制。
  • 学习率:这个关键的超参数决定了优化过程中步长的大小。精心选择的学习率对收敛至关重要;学习率过高,优化过程可能会超过最小值;学习率过低,训练过程会变得过于缓慢。学习率调度等技术通常与 SGD 同时使用。
  • 损失函数SGD 的目标是最小化损失函数,该函数用于测量模型预测值与训练数据中实际目标值之间的差异。

与相关概念的区别

SGD 是几种优化算法中的一种,必须将它与其他算法区分开来:

  • 梯度下降(批量 GD):主要区别在于如何计算梯度。批量 GD 在每次参数更新时都会使用整个数据集,从而提供精确的梯度,但对于大型数据集来说,计算成本高且速度慢。SGD 只使用一个样本(或一个迷你批次),每次更新的速度更快,但噪音更大。你可以在梯度下降术语表页面了解有关标准方法的更多信息。
  • 小批量梯度下降法:这是最常见的实际应用,通常简称为 SGD。它在数据的小型随机子集(迷你批次)上计算梯度。它在批量 GD 的准确性和纯 SGD 的效率之间取得了平衡。
  • 亚当优化器Adam 是一种自适应学习率优化算法,这意味着它会根据过去的梯度单独调整每个参数的学习率。虽然Adam的收敛速度通常比基本的 SGD 快,但 SGD(尤其是带动量的 SGD)有时能更好地泛化到未见过的数据,这一点在"机器学习中自适应梯度方法的边际价值 "等研究中已有讨论。

实际应用

SGD 的高效性使其能够用于众多大规模人工智能应用中:

示例 1:训练大型语言模型 (LLM)

自然语言处理(NLP)中使用的模型一样,训练模型通常涉及海量文本数据集(数十亿字)。SGD 及其变体对于高效迭代这些数据,让模型学习语法、上下文和语义至关重要。像 Hugging Face等平台在很大程度上依赖这些优化器来训练转换器模型

示例 2:实时物体检测训练

对于Ultralytics YOLO 这样专为实时推理设计的模型来说,训练需要高效。SGD 允许开发人员在COCO等大型图像数据集或通过Ultralytics HUB 等平台管理的自定义数据集上训练这些模型。与批量 GD 相比,快速更新可以加快收敛速度,这对于在模型开发和超参数调整过程中快速迭代至关重要。

阅读全部