本节摘要:正则化是防"学过头"的安全网。本节讲清四种主流正则化的原理与用法:Dropout(随机丢神经元)、权重衰减(约束参数大小)、早停(及时止损)、数据增强(增加样本多样性),并给出微调场景的组合建议。
阅读完本节,你应当能够:
模型"背题"(过拟合)的根源是记了太多细节,没学到规律。正则化的思路是"别记那么细":Dropout 随机让一部分神经元罢工(逼模型不依赖单个节点)、权重衰减把参数往小里压(逼模型用简单规律)、早停在测试变差前喊停、数据增强让数据更多样(背不过来了就只能学规律)。正则化是给模型"限流",防止用力过猛。
| 方法 | 原理 | 类比 |
|---|---|---|
| Dropout | 随机丢神经元 | 团队随机请假,逼人人能顶 |
| 权重衰减 | 参数别太大 | 别把话说得太满 |
| 早停 | 验证变差即停 | 学累了就停,别熬夜 |
| 数据增强 | 变换扩数据 | 一题多做几遍变体 |
过拟合 = 模型对训练数据的"细节"过度敏感。正则化本质是降低模型复杂度(Dropout、衰减)或增加数据多样性(增强),让模型只能学到"稳定的规律"而非"偶然的细节"。
💡 关键直觉:正则化是"防过头",不是"越强越好"。正则化过强,模型从"背题"变成"没学",两头不讨好——找"刚好不背题"的平衡点。
| 手段 | 微调中的典型配置 |
|---|---|
| 权重衰减 | AdamW 默认 0.01 |
| Dropout | 按模型默认,少调 |
| 早停 | 验证损失 2-3 轮不降即停 |
| 数据增强 | 文本可用同义改写 |
⚠️ 常见坑:微调时把 Dropout 调很大。微调数据本就少,Dropout 太强会导致"欠拟合"——微调场景保持模型默认 Dropout,重点用早停与权重衰减。
每轮训练后评估验证集 如果验证损失连续 N 轮不下降:停止训练,回滚到最佳轮次
早停是"免费的正则化"——不改变模型,只在"最好的点"停住。
| 方法 | 做法 |
|---|---|
| 同义替换 | 关键词换同义词 |
| 回译 | 中译英再英译中 |
| 噪声注入 | 加错别字(模拟真实) |
| 句式变换 | 主动句变被动句 |
| 信号 | 判断 |
|---|---|
| 训练与验证损失差距大 | 过拟合,加正则 |
| 两者都高 | 欠拟合,减正则 |
| 两者都低且接近 | 平衡,别动 |
细心的读者会注意到,AdamW 的配置里直接带了 weight_decay=0.01,而早停和 Dropout 却是独立开关。原因是权重衰减的实现方式:经典 L2 正则是在损失函数里加参数平方项,梯度里就多出一项"按参数大小成比例的惩罚";AdamW 把它从梯度计算中解耦出来,直接在参数更新时按固定比例缩小参数——这就是"解耦"的含义。
# AdamW 更新时的权重衰减(概念示意) # param -= lr * m_hat / (sqrt(v_hat) + eps) + weight_decay * param from torch.optim import AdamW opt = AdamW(model.parameters(), lr=5e-5, weight_decay=0.01)
解耦的好处是正则强度与自适应步长互不干扰:在 Adam 里直接加 L2 项,梯度大的参数衰减也被放大,正则行为随优化过程漂移;AdamW 把衰减固定在更新环节,行为可预期,因此成为大模型训练与微调的事实标准。工程上你不需要记住推导,只要知道:用 AdamW 时 weight_decay=0.01 是安全默认,一般不需要调。
把本节内容收敛成一张可执行的清单:数据量小优先用早停与权重衰减(AdamW 默认 0.01 即可);发现验证损失回升就提前停;Dropout 保持模型默认,不要因为"怕过拟合"就调大;文本数据增强优先用同义替换与回译,噪声注入要谨慎(可能污染领域风格)。正则化是"防过头"的保险丝,微调场景下简单克制比花哨更重要。
正则化稳住了,下一节找最佳配置——超参数优化。