在模型训练中,如果说损失函数是“前进的拉力”,那么权重衰减(Weight Decay)就是“收敛的压力”。它确保模型在变得“聪明”的同时,依然保持“简洁”。
一、 参数 θ 与 Bias (偏置) 的本质区别
模型的大脑由成千上万个数字组成,但它们的职责各不相同:
| 组成部分 | 物理比喻 | 职责 | 为什么重要? |
|---|
| 权重 (Weights) | 肌肉强度 | 决定输入特征的影响力。 | 决定了决策边界的扭曲程度(模型复杂度)。 |
| 偏置 (Bias) | 入职门槛 | 决定神经元被激活的起步门槛。 | 负责整体平移分布,不增加模型复杂度。 |
二、 核心公式:给损失函数加一把“防膨胀锁”
正则化后的损失函数公式如下:
Lnew=Loriginal+2λ∥θ∥2
1. 拆解公式项
- Loriginal (原始损失):预测准不准。模型想靠死记硬背来降低它。
- ∥θ∥2 (惩罚项):参数的平方和。参数数值越大,这个惩罚就越剧烈。
- λ (Lambda/Weight Decay):这把锁的松紧调节器。
2. “锁”的逻辑本质
- 防止过拟合:模型为了让总 Lnew 变小,必须在“预测精度”和“参数规模”之间做权衡。它会被迫放弃那些为了拟合随机噪声而产生的大数值权重。
- 平方项的威力:由于是平方(θ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 惩罚项实现的,其导数(梯度)被记为
gt+λθt。
数学逻辑
- 梯度融合:将正则化项带来的梯度直接塞进原始梯度 gt 中。
- 自适应缩放:
mt=动量(gt+λθt)
vt=二阶矩(gt+λθt)
- 最终更新:
θt+1=θt−η⋅vt+ϵmt
核心缺陷:干扰与稀释
- 逻辑干扰:由于 λθt 参与了二阶矩 vt 的计算,它会改变分母的大小。
- 效果失效:如果某个参数 θ 很大但梯度 gt 很小,Adam 的自适应机制会为了“稳定更新”而增大分母,从而无意中缩小了权重衰减的惩罚力度。这导致“减肥计划”在最需要它的时候(参数过大时)反而变得软弱无力。
2. 现代的 AdamW:解耦更新模式
AdamW 的核心思想是:将“保持体型(权重衰减)”与“寻找方向(梯度更新)”彻底分开。
数学逻辑
- 独立瘦身 (Weight Decay Step):
θtemp=θt⋅(1−ηλ)
注意:这一步不看梯度,不问 Adam,只由学习率 η 和衰减系数 λ 决定。
- 正常更新 (Adam Step):
θt+1=θtemp−η⋅vt(gt)+ϵmt(gt)
注意:这里的 mt 和 vt 只计算原始梯度 gt,不再受 λ 污染。
核心优势:稳定与精准
- 正则化独立:无论模型当前的梯度波动有多剧烈,权重衰减都能以恒定的比例(ηλ)稳定执行。
- 超参数解耦:在 AdamW 中,你可以独立调节学习率和权重衰减,而不会出现“动一发而牵全身”的尴尬,显著提升了大模型微调的成功率。
️ 总结笔记