术语表

随机梯度下降 (SGD)

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

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

了解更多

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

机器学习的相关性

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

关键概念

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

  • 损失函数衡量模型预测值与实际目标值匹配程度的指标。SGD 的目标是最小化该函数。
  • 学习率一个超参数,用于控制每次参数更新时的步长。找到一个好的学习率对有效训练至关重要。学习率计划通常用于在训练过程中调整学习率
  • 批量大小一次迭代中用于估计梯度的训练样本数量。在纯 SGD 中,批量大小为 1。当使用较小的子集时,通常称为迷你批量梯度下降法。
  • 训练数据用于训练模型的数据集。SGD 逐个样本或分批处理这些数据。高质量的数据至关重要,通常需要仔细的数据收集和注释
  • 梯度:梯度:表示损失函数最陡峭增加方向的向量。SGD 移动参数的方向与样本或小批量计算出的梯度方向相反。
  • 时间对整个训练数据集的一次完整传递。训练通常涉及多个历元。

与相关概念的区别

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

  • 批量梯度下降(BGD)每一步都使用整个训练数据集计算梯度。这能提供精确的梯度估计,但计算成本高,而且对大型数据集来说是内存密集型的。与 SGD 的噪声更新相比,它能带来更平滑的收敛路径。
  • 小批量梯度下降:介于 BGD 和 SGD 之间的一种折中方法。它使用一小部分随机数据子集(迷你批次)来计算梯度。它兼顾了 BGD 的准确性和 SGD 的效率,是实践中最常用的方法。性能取决于批量大小
  • 亚当优化器一种自适应学习率优化算法,可针对不同参数计算单个自适应学习率。它的收敛速度通常比标准 SGD 快,但有时泛化效果可能较差,这在"机器学习中自适应梯度方法的边际价值 "等研究中有所讨论。除此以外,还有许多梯度下降变体

实际应用

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

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

自然语言处理 (NLP)中使用的模型训练通常涉及海量文本数据集(数十亿字)。SGD 及其变体(如 Adam)是高效迭代这些数据的关键,可让GPT-4等模型或那些在 Hugging Face等模型学习语法、上下文和语义。随机性有助于在复杂的损失景观中摆脱局部最小值的困境。

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

对于Ultralytics YOLO 等用于实时推理的模型来说,训练需要高效。SGD 允许开发人员在COCO等大型图像数据集或通过Ultralytics HUB 等平台管理的自定义数据集上训练这些模型。与批量 GD 相比,快速更新可实现更快的收敛,这对模型开发和超参数调整过程中的快速迭代至关重要。这种效率支持自动驾驶汽车机器人等领域的应用。

阅读全部
OSZAR »