⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

2.3 优化器与模型的分工 ​

核心问题: 优化器、模型结构和训练系统分别解决什么问题?

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明。


不要把优化器等同于模型 ​

训练一个模型至少包含三个部分:

部分决定什么示例
模型输入如何映射为输出线性回归、决策树、神经网络
目标函数什么结果算好均方误差、交叉熵、间隔损失
优化方法如何调整参数以降低目标函数SGD、AdamW、坐标下降

例如,逻辑回归定义了一个线性分类模型和交叉熵目标;梯度下降只是求参数的一种方法。更换优化器不会把逻辑回归变成神经网络。

决策树则通常使用贪心分裂,不依赖反向传播。这说明“机器学习训练”并不只有梯度下降一种形式。


从 SGD 到 AdamW ​

SGD 用当前小批量梯度更新参数:

θt+1=θt−ηgt

Momentum 累积历史方向以减小震荡;RMSprop 根据近期平方梯度调整每个参数的步长;Adam 同时维护一阶矩和二阶矩估计。AdamW 将权重衰减与梯度更新解耦,是 Transformer 训练中的常见选择。

这些方法各有适用条件,不存在对所有任务都最优的优化器。学习率、批大小、调度策略和数值精度通常也会影响收敛。


大模型训练增加了哪些工程问题 ​

模型规模扩大后,优化公式没有因此改变,但一次参数更新需要解决更多系统约束:

  • 显存:参数、梯度和优化器状态都占用内存。
  • 数值范围:低精度计算可能上溢或下溢,需要损失缩放等处理。
  • 有效批大小:单卡批量受限时,可用梯度累积或数据并行扩大批量。
  • 通信:数据并行需要同步梯度,模型或张量并行需要交换中间结果。
  • 调度:训练初期常使用 warmup,随后衰减学习率;具体配置应通过验证曲线确定。

梯度累积近似扩大有效批大小,但如果归一化、随机性或调度按微批次变化,它不一定与一次大批量更新完全等价。混合精度可以减少显存和计算量,实际收益取决于硬件与算子支持。


为什么本章仍然学习传统机器学习 ​

传统模型用较小的例子把关键选择分开呈现:

  • 线性回归和逻辑回归展示预测函数、损失与参数估计的关系。
  • SVM 展示间隔、正则化和核函数。
  • 决策树展示递归分裂;随机森林展示如何通过样本与特征随机化降低方差。

这些模型不是通向 Transformer 的必经“演进阶段”。它们适合的数据规模、输入形式和可解释需求不同,也经常作为深度模型之外的基线。

进入后续章节时,可以继续使用同一组问题检查神经网络:输入如何表示、目标函数是什么、参数怎样更新、验证指标是否改善。


代码实验 ​

实验比较线性 MMSE 估计与一个简单神经网络在同一任务上的表现。重点不是证明某类模型必然更好,而是观察模型假设与优化过程如何共同影响结果。

代码文件: code/ch02_optimization/mmse_vs_nn.py运行方式: python code/ch02_optimization/mmse_vs_nn.py

运行时至少记录:

  1. 两个模型使用的输入、目标和指标是否一致;
  2. 训练集与测试集误差;
  3. 改变噪声或样本量后,结论是否保持。

本节小结 ​

  • 模型定义可表达的函数,目标函数定义训练方向,优化器负责寻找参数。
  • 大模型训练的难点还包括显存、数值精度、并行通信和学习率调度。
  • 传统机器学习提供清晰基线,不需要硬类比为 Transformer 的组成部分。

下一节: 2.4 数值方法基础

本教程采用 CC BY-NC-SA 4.0 许可协议