SGD(随机梯度下降)

SGD

小批量一点点更新

亦作、亦称:随机梯度下降 · Stochastic Gradient Descent

随机梯度下降(SGD)是深度学习中最基础、也最重要的参数优化方法,通过每次仅用一个样本或小批量数据估计梯度来迭代更新模型权重。它的随机性不仅大幅降低了每步的计算成本,还在实践中帮助模型跳出局部极小值,成为现代神经网络训练的核心驱动力。

概述

SGD 是梯度下降的随机化变体,以「每次只看一小批数据」换取更高的更新频率和更低的内存压力。

  • 核心公式:θ ← θ − η · ∇L(θ; x_i, y_i),其中 η 为学习率,梯度仅在一个或一批样本上计算
  • 批量大小:从单样本(纯随机 SGD)到数百条(Mini-batch SGD),实践中最常用 Mini-batch 形式
  • 随机性的双面性:梯度估计含噪声,既会让损失曲线抖动,也有助于逃离平坦区和尖锐极小值
  • 计算效率:对比全量梯度下降(GD),每步计算量大幅减少,适合超大规模数据集
  • 基础地位:Adam、AdamW 等现代优化器均以 SGD 为理论基础,理解 SGD 是读懂优化器文献的前提

工作原理

SGD 每轮训练将数据集随机打乱,按批次依次计算损失与梯度并更新参数。

  • 前向传播:用当前参数对小批量数据计算预测值与损失
  • 反向传播:通过链式法则将损失对每个参数求偏导,得到梯度向量
  • 参数更新:沿梯度反方向按学习率幅度更新参数,即「向损失曲面最陡方向往下走一步」
  • Epoch 循环:遍历完整数据集一次称为一个 Epoch,SGD 在每个 Epoch 内完成多次参数更新
  • 学习率调度:固定学习率通常效果欠佳,实践中常搭配余弦退火线性 Warmup 等策略动态调整

类型与变体

在基础 SGD 之上发展出多种改进变体,用于解决收敛速度慢或梯度震荡问题。

  • SGD + Momentum:引入动量项(Polyak,1964 年提出重球法)积累历史梯度方向,减少震荡、加速收敛
  • Nesterov Momentum(NAG):先用动量「向前看一步」再计算梯度,在凸函数上可达最优收敛率
  • AdaGrad:为每个参数独立累积历史梯度平方,自适应调整学习率,适合稀疏特征
  • RMSProp:用指数移动平均代替 AdaGrad 的全量累积,防止学习率过快衰减至零
  • Adam / AdamW:结合 Momentum 与 RMSProp 思想,目前最主流的优化器;AdamW 额外将 Weight Decay 从梯度更新中解耦,实现更规范的正则化

应用场景

SGD 及其变体几乎贯穿所有深度学习训练任务。

  • 大规模语言模型预训练:GPT、LLaMA 等采用 AdamW(SGD 的进化形式)在数万亿 Token 上训练
  • 计算机视觉:ResNet、ViT 等图像模型的原始论文大量使用带 Momentum 的 SGD,泛化性能往往优于 Adam
  • 微调(Fine-tuning):SFT、RLHF 等对齐阶段均依赖 SGD 系优化器调整预训练权重
  • 在线学习:单样本 SGD 可在数据流中实时更新模型,适用于推荐系统等动态场景
  • 联邦学习:各客户端本地执行 SGD 更新后上传梯度或模型差值,同时保护数据隐私

与相邻概念的区别

SGD 与多个相近术语常被混淆,以下对比厘清边界。

  • SGD vs 梯度下降(GD):GD 每步用全量数据计算精确梯度,更新稳定但计算量大;SGD 用小批量估计,快但有噪声
  • SGD vs Adam:SGD 学习率固定(需手动调度),Adam 为每个参数自适应调整学习率;视觉任务 SGD 有时泛化更好,NLP 任务 Adam 系更主流
  • SGD vs 二阶优化(如 L-BFGS):二阶方法利用曲率信息收敛更快,但计算 Hessian 代价极高,难以扩展到亿级参数模型
  • Mini-batch SGD vs 纯随机 SGD:「纯随机」指每次单样本,「Mini-batch」指每次若干样本;现代深度学习几乎专指 Mini-batch 形式
  • SGD vs 学习率调度器:调度器不是优化器本身,而是控制 SGD/Adam 学习率随训练进程动态变化的策略模块

局限与常见误区

理解 SGD 的局限有助于在实际训练中做出更合理的选择。

  • 超参数敏感:学习率、Momentum 系数、批量大小需仔细调优,选错会导致发散或收敛极慢
  • 各向异性问题:不同参数梯度尺度差异大时,统一学习率难以同时适配,Adam 的自适应机制正是为此而生
  • 鞍点停滞:高维非凸损失面中梯度可能在鞍点附近接近零,随机性只能部分缓解这一问题
  • 误区:SGD 已过时:带 Momentum + Warmup + 余弦调度的 SGD 在图像分类等任务中仍与 Adam 持平甚至更优
  • 误区:批量越大越好:过大批量降低了随机性,可能导致泛化性能下降(「泛化鸿沟」现象)

发展脉络

从统计学的随机逼近理论到现代大模型训练,SGD 经历了七十余年的演化。

  • 1951:Robbins & Monro 提出随机逼近算法,奠定 SGD 数学基础
  • 1964:Polyak 提出重球动量法(Heavy-ball method),为 SGD+Momentum 提供理论支撑
  • 1983:Nesterov 提出加速梯度法,NAG 随后被引入深度学习优化器
  • 1986:Rumelhart、Hinton、Williams 将反向传播与梯度下降结合,推动神经网络实用化
  • 1998:LeCun 等人在 LeNet-5 论文中系统使用 Mini-batch SGD,验证其在图像任务的有效性
  • 2011:Duchi 等人提出 AdaGrad,开启自适应学习率优化器时代
  • 2012:AlexNet 用带 Momentum 的 SGD 大幅刷新 ImageNet 记录,引爆深度学习热潮
  • 2014/2015:Kingma & Ba 提出 Adam,成为最广泛使用的 SGD 变体
  • 2017 年起:大规模 Transformer 训练使 AdamW 成为 LLM 标配优化器

常见误解

日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。

  • 「小批量一点点更新」
  • 「深度学习优化器的祖宗」
  • 「用噪声梯度训练模型」

相关术语

和本术语关联紧密的其他词条,便于串联理解。

🎯 考点练习

含该术语的高频面试题,含标准答案与追问。

延伸阅读

从知识库精选 3 篇文章,帮助深入理解该术语。

  1. 1

    机器学习基础:从线性模型到决策树

    机器学习入门必读。涵盖线性回归、逻辑回归、决策树、KNN、SVM 等核心算法,从数学原理到 Python 实战,配合对比表格和可视化图解,帮你建立完整的 ML 知识框架。

  2. 2

    反向传播:神经网络如何学习

    深入理解反向传播算法的数学原理、计算图实现和训练中的关键问题

  3. 3

    梯度下降算法全解:从 SGD 到 Adam 的优化之路

    系统掌握从最基础的梯度下降到高阶自适应优化算法的完整演进路径,理解每种优化器的数学原理、适用场景与现代深度学习中的最佳实践

外部参考

维基百科:查看「SGD」词条

本页内容为本站原创撰写;维基百科链接仅作延伸参考。