SGDR: 带热重启的随机梯度下降
解释SGDR(Stochastic Gradient Descent with Warm Restarts)中余弦退火与热重启的配合机制。
回答
Yahuda
SGDR (Loshchilov & Hutter, 2017) 在Cosine Annealing基础上加入周期性热重启(Restart)。
工作机制:
- 学习率按余弦函数从
η_max下降到η_min - 每个周期(T_i)结束时,学习率重置为
η_max(热重启) - 周期长度递增:
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
PyTorch:torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0=20, T_mult=2)