Appearance
一句话总结:训练就是"找一组参数让损失最小"——梯度告诉方向、链式法则让梯度从输出层一路传回每一层(反向传播)、优化器决定每步怎么走(SGD→Momentum→Adam);理解这条链,就理解了模型是怎么"学会"的。
梯度:损失下降的方向
- 梯度 ∇L(θ) = ∂L/∂θ:参数往哪个方向调,Loss 下降最快
- 参数更新:θ ← θ - η·∇L(η 学习率,控制步长)
- 学习率过大 → 震荡不收敛;过小 → 收敛极慢
链式法则与反向传播
神经网络是巨型复合函数(多米诺骨牌):损失 = f(输出层),输出层 = f(倒数第二层)……第 1 层 = f(输入)。
- 链式法则:复合函数求导逐层相乘,损失对第 1 层参数的梯度 = 从输出层一路乘回去
- 反向传播(BP):先正向算损失,再从后往前逐层积累梯度(每层只做局部导数 × 上游梯度)
- 核心公式:
- 线性层 y = Wx + b:dL/dW = (dL/dy)·xᵀ,dL/db = dL/dy
- 激活层 y = f(z):dL/dz = dL/dy ⊙ f'(z)(⊙ 逐元素乘)
- 框架自动完成(PyTorch 的 backward),但面试要能手推一层
梯度消失与爆炸
深层网络:梯度是多层导数乘积(∂L/∂W₁ = ∂L/∂Wₙ · ∂Wₙ/∂Wₙ₋₁ · … · ∂W₂/∂W₁)。
- 乘积 < 1 → 梯度消失(深层学不动);乘积 > 1 → 梯度爆炸(数值溢出)
- 缓解:残差连接(跳层让梯度直通)、归一化(Batch/LayerNorm)、ReLU 类激活、梯度裁剪
优化器演进(从 SGD 到 Adam)
| 优化器 | 机制 | 一句话直觉 |
|---|---|---|
| 批量 GD | 全量数据算梯度 | 准但慢 |
| SGD | 每样本/小批量更新 | 快、带噪声能跳出局部极小,但震荡 |
| Momentum | 一阶动量 m(β₁=0.9) | 管方向:加速、抑制震荡 |
| AdaGrad | 累计梯度平方 | 自适应步长,但步长单调衰减 |
| RMSProp | 二阶动量 v | 管步长:大梯度缩步、小梯度放步 |
| Adam | m + v 双动量 | Momentum + RMSProp 组合,默认首选 |
| AdamW | Adam + 解耦权重衰减 | 大模型/Transformer 训练标配 |
Adam 更新步骤(默写级):
- 梯度 gₜ
- 一阶矩 mₜ = β₁·mₜ₋₁ + (1-β₁)gₜ(方向)
- 二阶矩 vₜ = β₂·vₜ₋₁ + (1-β₂)gₜ²(步长)
- 偏差校正:m̂ = m/(1-β₁ᵗ),v̂ = v/(1-β₂ᵗ)(起步时 m、v 为 0 需修正)
- 更新:θ ← θ - η·m̂/(√v̂ + ε)
- 默认超参:β₁=0.9,β₂=0.999,ε=1e-8
学习率策略与工程
- 衰减:分段常数、指数衰减、1/t 衰减、warmup(先小后大再衰减,Transformer 常用)
- 工程要点:模型分层(简单任务小模型、复杂任务大模型,省 50-70% 成本)、梯度裁剪(防爆炸)、每轮 Token/步数预算
面试要点
- 能手推一层线性层的梯度(dL/dW = 上游梯度 × 输入转置)
- 能讲清 Adam = Momentum(方向)+ RMSProp(步长),并默写更新公式
- 能解释梯度消失/爆炸的成因(链式乘积)与三个缓解手段
- Agent 岗延伸:RLHF/PPO 的优化、在线 eval 采样、成本 FinOps 与模型路由
相关概念
- 数学基础-人工智能中的数学导读 — 教材第 8 章优化对应本篇
- 数学基础-信息论与损失函数 — 损失函数是什么
- 人工智能导论-神经网络与深度学习 — 网络的整体框架
- [AI-Agent-模型微调](/学习笔记/AI技术/AI Agent/AI-Agent-模型微调) — 微调即继续训练,优化器直接相关