梯度下降变体:SGD/Adam/RMSProp

模型靠梯度下降最小化损失。最朴素的批量梯度下降每次用全量数据算梯度,准确但慢;于是有了各种用更小批量、带动量、自适应学习率的变体。

基础:SGD 与 Mini-batch

随机梯度下降(SGD)每次用一个小批量估计梯度并更新,速度快、有噪声但有助于逃离尖锐极小点。Mini-batch 是对内存与稳定性的折中,是深度学习的默认训练方式。

Momentum 与 RMSProp

Momentum 把历史梯度做指数滑动平均,沿一致方向加速、抑制震荡。RMSProp 则对每维梯度做平方的指数平均,用其倒数缩放学习率,让不同参数有各自的有效步长,适合非平稳目标。

Adam:动量加自适应

Adam 同时结合了 Momentum(一阶矩)与 RMSProp(二阶矩)的思想,对梯度做偏差校正后用自适应步长更新。它收敛快、对超参较鲁棒,是很多任务的默认选择。

import torch

optimizer = torch.optim.Adam(model.parameters(), lr=1e-3, betas=(0.9, 0.999))
for x, y in loader:
    optimizer.zero_grad()
    loss = criterion(model(x), y)
    loss.backward()
    optimizer.step()

怎么选

数据稀疏或参数尺度差异大时,自适应方法(Adam/RMSProp)通常更稳。若追求最终泛化与理论清晰,调好的 SGD+Momentum 在很多视觉任务上仍具竞争力。学习率与 batch size 往往比选哪个优化器更关键。

小结

SGD 简单通用,Momentum 加速收敛,RMSProp 与 Adam 引入自适应步长使训练更稳更快。落地时优先 Adam 起步,再用学习率调度与 batch size 调优;追求极致泛化可回到 SGD。

参考与延伸阅读

本文累计阅读