预训练工程模块四 · 优化器代码约 12 分钟
优化器:SGD、Adam、AdamW
谁来决定参数往哪挪、挪多少
学完这节你能:
- 理解动量的作用
- 区分 Adam 与 AdamW
- 知道权重衰减是什么
- SGD:最朴素,按梯度直接更新;加动量后能冲过小坑、加速收敛。
- Adam:给每个参数自适应学习率(用一阶动量 m、二阶动量 v),收敛快、超参好调,是大模型默认。
- AdamW:把「权重衰减」从梯度里解耦出来单独做,正则更正确,是当前大模型标配。
🔑 权重衰减(weight decay):每步让参数稍微缩小一点,抑制参数过大、防过拟合。AdamW 的 W 就是「解耦的 weight decay」,比在 Adam 里混进 L2 更规范。
💡 记住 Adam 每个参数要存两份动量(m、v)——这正是下一节显存计算里「优化器态吃显存」的原因。
自测AdamW 相比 Adam 的主要改进是:
// 带走一句话
SGD(可加动量)→Adam(自适应学习率,存 m/v 双动量)→AdamW(解耦权重衰减,大模型标配)。
独立练习
做到这些,才算完成本节
- 在本地运行代码,打印每个关键张量的 shape。
- 关闭示例后从空文件重写核心部分,并补一个异常或边界测试。
学习记录
记录本节阅读进度
建议先独立回答自测。读完记录不等于已经掌握。