把网络训起来:损失、批次、优化器与稳定训练的全套手法
串起一次真实训练的全部旋钮:损失怎么选、批大小与轮次是什么意思、学习率怎么定、SGD 到 Adam 的演进,以及初始化、批归一化、Dropout、早停这些让网络「训得动、不过拟合」的工程手法
- 理解 Epoch / Batch / Iteration 的区别与 mini-batch 的意义
- 能按任务选损失函数,理解学习率对训练的决定性影响
- 说清 SGD、Momentum、Adam 的演进逻辑
- 掌握初始化、批归一化、Dropout、早停各自解决什么问题
训练循环里的三个基本量
一次完整遍历全部训练数据叫一个 Epoch;为了兼顾稳定和效率,不会一次喂全部样本,而是把数据分成小批 mini-batch,每批做一次前向—反向—更新,一批的大小叫 batch size,处理一批叫一次 iteration。用小批而非单样本,梯度更稳、硬件并行效率更高;比全量数据又更灵活。
取样
取一小批样本与标签
前向
算预测与该批平均损失
反向
backward 算梯度
更新
优化器走一步,清空梯度
损失函数:训练的「指挥棒」
学习率:最重要的单个超参数
学习率决定每一步迈多大。太大,损失在谷底来回震荡甚至发散(loss 变成 NaN);太小,收敛极慢、还可能卡在局部洼地。常见做法是从一个较小值开始试,配合学习率调度:前期稍快、后期逐步衰减以精细收敛。调模型时,学习率几乎总是第一个该排查的旋钮。
优化器的演进:从 SGD 到 Adam
SGD
沿当前批梯度反方向走一步,简单可靠但会在峡谷震荡、慢
+ Momentum
累积历史方向,像小球带惯性冲过震荡、越过小坑
Adam
同时为每个参数自适应调整步长(一阶矩+二阶矩),默认省心、收敛快
现代变体
AdamW 把权重衰减做对,是训练大模型/Transformer 的常用选择
没有「绝对最强」的优化器:Adam 类省心、前期快,精调的 SGD+Momentum 在某些视觉任务上最终泛化更好;训练 Transformer 普遍用 AdamW。理解它们是在「怎么利用梯度历史」上做文章,比死记参数更重要。
让网络训得稳、不背题的四件套
合理初始化
权重不能全0、不能过大过小;Xavier/He 初始化让每层信号方差稳定,否则一开始就梯度消失/爆炸
批归一化 BN
对每层输入做标准化,稳定数值分布、允许更大学习率、加速收敛
Dropout
训练时随机「关掉」一部分神经元,逼网络不依赖个别通路,降低过拟合
早停 Early Stop
盯着验证集损失,一旦它不再下降反而回升就停,防止越训越背题
训练出问题先看两条曲线:训练损失降不降(不降=欠拟合/学习率/初始化/优化器问题),验证损失跟不跟(跟不住=过拟合,加数据/正则/早停/降复杂度)。这两条曲线贯穿从玩具网络到千亿模型的所有调试。
资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
从线性回归到神经网络,本质都一样:定义一个带参数的函数 fθ(x),用损失函数衡量它和真实答案的差距,再沿梯度方向更新参数。监督、无监督、强化学习的区别,只在「训练信号从哪里来」。先把这套统一视角立住,后面遇到的任何模型都是它的具体实例,就不会被层出不穷的名词淹没。