权重衰减:今天真正弄懂
先记住:一句话定义 + 一句记忆口诀 定义:权重衰减是一种在每次更新模型参数时,主动把权重按比例“往零缩减一点点”的机制,目的是压制参数过度膨胀,防止模型死记硬背。 口诀:每次更新先打折,不让权重往野跑。
【生活类比】 想象你在阳台养一盆观赏盆景。 阳光和水分充足时(对应训练数据),几根主枝会疯狂往外疯长。如果不加管束,这几根巨型枝条会把花盆压翻,遇到大风(测试场景)直接折断。 聪明的园丁每次浇水施肥(正常梯度更新)时,手里都拿着小剪刀,顺手给过长的枝条各剪短一小截(权重衰减)。 这样整棵树始终保持紧凑、匀称,无论风从哪个方向吹,都不会倒。
【必要公式与符号解释】 权重衰减在训练中体现在参数更新公式里: $$w_{t+1} = (1 - \eta \lambda) w_t - \eta g_t$$
符号逐个拆解: - $w_t$:当前这一步的权重数值。 - $\eta$(读作 eta):学习率。决定梯度改错时迈多大的步子。 - $\lambda$(读作 lambda):权重衰减系数。通常是一个很小的正数(如 0.01 或 0.0001),决定剪枝剪得有多狠。 - $g_t$:当前批次数据算出的梯度。它负责给模型纠错。 - $(1 - \eta \lambda)$:关键所在。在梯度 $g_t$ 修正参数之前,先把原参数 $w_t$ 乘以一个略小于 1 的折扣因子。数值越大,被削减得越多。
【它解决什么问题;没有它会怎样】 它主要解决过拟合。 没有它会发生什么? 在做说话人日志或音视频分类时,训练集里可能夹杂微弱的背景底噪(比如录音笔的高频电流声)。模型为了把训练损失压到最低,会把某些特定权重的绝对值放大到几千甚至上万,拼命去“记住”这些噪声信号。 一旦上了真实测试场景,换了一支麦克风,这种巨型权重就会输出失控的极端值,直接导致说话人识别准确率暴跌。权重衰减强迫参数保持较小数值,使得模型对输入的微小扰动不再敏感。
【权威资料怎么学】 - 《Dive into Deep Learning》:建议先读权重衰减章节,通过其中的二维高维几何图景建立“参数被拉向原点”的直觉,再亲手运行书中的交互代码。 - 《PyTorch Tutorials》:建议对照其官方训练分类器示例,掌握张量更新标准流程,观察优化器中是如何一行传参生效的。
【音视频与说话人日志中的真实用法】 在主流说话人特征提取网络(如 ECAPA-TDNN、ResNet-34 提取 x-vector/d-vector)以及视频多模态特征编码器中: 1. 默认挂在优化器上,常用设置是 AdamW 搭配 $\lambda = 10^{-4} \sim 10^{-2}$。 2. 实际工程细节:权重衰减只给 Conv 和 Linear 层的权重矩阵(weights)用。**BatchNorm / LayerNorm 的缩放平移参数($\gamma, \beta$)以及偏置(bias)通常明确排除在外**,不加衰减。
在标准 SGD 优化器下,向 Loss 增加 L2 正则化项与直接在更新时应用权重衰减是否数学等价?
为什么在 ECAPA-TDNN 等音频特征提取网络中,通常不对偏置(bias)使用权重衰减?
AdamW 相比传统 Adam,对权重衰减做了哪项核心改动?
【发展流程】 1. 之前怎么做:最初大家从损失函数下手,在原始任务 Loss 后面加一项权重平方和 $\frac{\lambda}{2} \|w\|^2$,这被称为 L2 正则化。反向传播时,求导自然产生衰减效果。 2. 为什么出现变化:在传统随机梯度下降(SGD)下,L2 正则化与权重衰减在数学上完全等价。但在 Adam 成为主流后,L2 正则化项会混入梯度中,被自适应历史二阶动量(方差)除掉。结果导致:频繁更新的大梯度权重反而衰减不足,冷门参数衰减过猛,正则化严重失真。 3. 现在怎么用:Loshchilov 和 Hutter 提出 AdamW(Decoupled Weight Decay)。它把权重衰减从梯度的动量计算中完全拆出来,直接在权重更新那一步独立“打折”。如今音视频大模型(如 Whisper、各类 Audio-Visual Transformer)训练标配优化器几乎全换成了 AdamW。
【与相近概念的区别】 - vs L2 正则化:SGD 下两者数学等价;自适应优化器(Adam)下不等价。L2 正则化作用于损失函数,权重衰减直接作用于更新参数。 - vs Dropout:Dropout 是在网络前向传播时随机“关闭”一部分神经元激活值,属于网络结构层面的随机阻断;权重衰减是保留所有连接,纯粹限制参数本身的数值上限。两者常协同使用。 - vs 梯度裁剪(Gradient Clipping):梯度裁剪是针对梯度向量的模长设上限,防止步子迈太大导致训练发散;权重衰减是针对权重本身设拉力,防止参数值逐渐滚雪球式增大。
【当前局限与未来推测】 - 当前局限(事实):它是一个极其粗放的全局惩罚。无法智能区分哪些大权重代表核心说话人声纹特征,哪些大权重纯属拟合背景电流声。设大了会阻碍模型学复杂语音模式(欠拟合),设小了又起不到防过拟合作用,需要大量算力做超参数搜索。 - 未来作用(推测):随着多模态自监督大模型参数量剧增,固定常数的全局衰减可能会向“通道/注意力头自适应衰减”演进。模型可能根据不同音视频模态特征的稀疏性,动态决定每一层的参数折扣力度,而不再依赖人工凭经验统一配置。
- 为什么把 LayerNorm 的偏置(bias)也加入权重衰减,反而更容易导致模型欠拟合?
- 训练音视频大模型时,若将优化器由传统 Adam 换为 AdamW 却保持相同的 weight_decay 值,模型的泛化表现通常会发生什么变化?为什么?
- 当训练样本极其充足且数据增强极其激进时,是否可以把权重衰减设为 0?这样做可能带来什么潜在风险?