在模型训练中,如果说损失函数是“前进的拉力”,那么权重衰减(Weight Decay)就是“收敛的压力”。它确保模型在变得“聪明”的同时,依然保持“简洁”。
一、 参数 与 Bias (偏置) 的本质区别
模型的大脑由成千上万个数字组成,但它们的职责各不相同:
| 组成部分 | 物理比喻 | 职责 | 为什么重要? |
|---|---|---|---|
| 权重 (Weights) | 肌肉强度 | 决定输入特征的影响力。 | 决定了决策边界的扭曲程度(模型复杂度)。 |
| 偏置 (Bias) | 入职门槛 | 决定神经元被激活的起步门槛。 | 负责整体平移分布,不增加模型复杂度。 |
二、 核心公式:给损失函数加一把“防膨胀锁”
正则化后的损失函数公式如下:
1. 拆解公式项
- (原始损失):预测准不准。模型想靠死记硬背来降低它。
- (惩罚项):参数的平方和。参数数值越大,这个惩罚就越剧烈。
- (Lambda/Weight Decay):这把锁的松紧调节器。
2. “锁”的逻辑本质
- 防止过拟合:模型为了让总 变小,必须在“预测精度”和“参数规模”之间做权衡。它会被迫放弃那些为了拟合随机噪声而产生的大数值权重。
- 平方项的威力:由于是平方(),这把锁对“出头鸟”(巨大的参数)极其敏感,而对微小的参数相对宽容。
三、 深度问答:关于 Weight Decay 的实战细节
1. 为什么 默认通常是 0.01?
这并非玄学,而是经验上的平衡艺术:
- 量级对齐:原始 Loss 通常在 0.1~5 之间。0.01 的系数能让惩罚项占据总 Loss 的 1%~10%。
- 新陈代谢:在 AdamW 中,0.01 意味着参数每一轮更新都会自发“瘦身”约 1%。
- 调节方向:数据量越少,过拟合风险越高, 就要调大(如 0.1);模型规模越大,参数感度越高, 往往调小。
2. 为什么 Bias 和 LayerNorm 拥有“免锁特权”?
在微调脚本中,我们通常排除掉 Bias 和 LayerNorm 的权重衰减,原因有三:
- 维度极小:它们在总参数量中占比微乎其微,对过拟合贡献极小。
- 功能纯粹:它们负责维持信号的分布平移和稳定性。强行让它们趋向 0 会破坏模型自我归一化的能力,导致训练不稳。
- 无正则意义:平移决策边界(Bias 的工作)并不会导致模型变得“敏感”或“扭曲”。
四、 工业标准:AdamW 的优越性
1. 传统的 Adam:混合更新模式
在传统的 Adam 中,权重衰减是通过向损失函数添加 L2 惩罚项实现的,其导数(梯度)被记为 。
数学逻辑
- 梯度融合:将正则化项带来的梯度直接塞进原始梯度 中。
- 自适应缩放:
- 最终更新:
❌ 核心缺陷:干扰与稀释
- 逻辑干扰:由于 参与了二阶矩 的计算,它会改变分母的大小。
- 效果失效:如果某个参数 很大但梯度 很小,Adam 的自适应机制会为了“稳定更新”而增大分母,从而无意中缩小了权重衰减的惩罚力度。这导致“减肥计划”在最需要它的时候(参数过大时)反而变得软弱无力。
2. 现代的 AdamW:解耦更新模式
AdamW 的核心思想是:将“保持体型(权重衰减)”与“寻找方向(梯度更新)”彻底分开。
数学逻辑
- 独立瘦身 (Weight Decay Step): 注意:这一步不看梯度,不问 Adam,只由学习率 和衰减系数 决定。
- 正常更新 (Adam Step): 注意:这里的 和 只计算原始梯度 ,不再受 污染。
✅ 核心优势:稳定与精准
- 正则化独立:无论模型当前的梯度波动有多剧烈,权重衰减都能以恒定的比例()稳定执行。
- 超参数解耦:在 AdamW 中,你可以独立调节学习率和权重衰减,而不会出现“动一发而牵全身”的尴尬,显著提升了大模型微调的成功率。
🛠️ 总结笔记
微调心法: 如果模型在训练集上分数极高,但在测试集上表现拉胯,说明你的“锁”挂松了。 此时应:
- 检查 是否过小(试着从 0.01 调到 0.05)。
- 确认是否误伤了 LayerNorm(确保它在豁免名单里)。
- 记住:好的模型不仅要能给对答案,更要用最简单的逻辑给对答案。