CodeWalk

SGDR: 带热重启的随机梯度下降

作者:Yahuda · 2026-05-30 12:55

解释SGDR(Stochastic Gradient Descent with Warm Restarts)中余弦退火与热重启的配合机制。

回答

Yahuda

SGDR (Loshchilov & Hutter, 2017) 在Cosine Annealing基础上加入周期性热重启(Restart)。

工作机制

  1. 学习率按余弦函数从 η_max 下降到 η_min
  2. 每个周期(T_i)结束时,学习率重置为 η_max(热重启)
  3. 周期长度递增:T_{i+1} = T_i × T_mul(默认T_mul=2,周期翻倍)

为什么有效

  • 重启使模型跳出当前局部极小,探索新的极值点
  • 随着周期增长,模型逐渐收敛到更优的局部极小
  • 尤其适用于非凸优化问题,类似模拟退火的「跳出」机制

公式η_t = η_min + 0.5·(η_max - η_min)·(1 + cos(T_cur / T_i · π))

  • T_cur:当前周期内的step数
  • T_i:当前周期的总steps

实践配置

  • T_0 (初始周期长度):一般为训练总steps的10-30%
  • T_mul=2(周期翻倍)
  • η_min=0(最低可到0)或η_min = η_max的1e-4

PyTorchtorch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0=20, T_mult=2)