跳转至

正则化与防过拟合

L1 和 L2 正则化的公式是什么?它们分别导致怎样的参数分布?

公式

  • L1 正则化(Lasso):在损失函数上添加参数绝对值之和的惩罚项。

image.png

  • L2 正则化(Ridge):添加参数平方和的惩罚项。

image.png

导致的参数分布(先验视角)

从贝叶斯角度看,正则化相当于给参数引入先验分布。

image.png

直观上,L1 正则化的约束域是菱形(等值线是方形),L2 的约束域是圆形。当损失函数的等高线与这些约束域相切时,在菱形的角点(坐标轴上)更容易发生接触,导致某些参数直接为零。

image.png


L1 正则化为什么能产生稀疏解?L2 正则化为什么不能?

从优化几何上看,L1 正则化项不可微于零,且梯度为常数(符号函数),这使得那些不重要特征的权重在优化过程中被推向 0,并且一旦到达 0 就很难再“复活”,因为 0 附近的梯度会立刻把它推向 0。

而 L2 正则化的梯度与权重大小成正比,当权重接近 0 时,梯度也趋近于 0,因此权重会逐渐衰减但难以精确达到 0,除非损失函数本身要求。

此外,从拉普拉斯先验的尖峰特性可知,后验分布的最大值更可能出现在参数为 0 的点上。所以 L1 能够实现特征选择,L2 则只能将权重压缩但保持所有特征。


权重衰减(Weight Decay)与 L2 正则化在 SGD 中是等价的,为什么在 Adam 中不等价?AdamW 如何修正?

在 SGD 中的等价性

image.png

差有关,不再是纯粹的固定衰减率。 而真正的权重衰减是直接在更新前将参数乘以 (1−ηλ),不受自适应学习率影响。 因此,在 Adam 中 L2 正则化与权重衰减不等价,而且 L2 正则化方式可能导致大梯度参数的正则化被削弱,小梯度参数的正则化被放大,不利于解耦调整。

AdamW 的修正

AdamW 将权重衰减从梯度计算中解耦出来,直接修改参数更新步骤:

image.png

这样就保证了权重衰减独立于自适应梯度缩放,恢复了与 SGD 一致的衰减效果。大量实验表明 AdamW 拥有更好的泛化能力和更稳定的训练。


Dropout 的工作原理是什么?为什么它可以看作一种集成学习?

工作原理

image.png

测试时,所有神经元都保留,但为了保持与训练时输出期望一致,需要将权重乘以 1−p(或训练时除以 1−p,两种实现等价)。

为什么可看作集成学习

每次训练时,由于随机丢弃,网络结构都会变化,相当于从完整的网络中采样出一个“子网络”。

经过多次迭代,模型实际上是在指数级数量的不同子网络上训练,这些子网络共享大部分参数。

测试时使用完整网络,可近似为对这些子网络进行模型平均。因此 Dropout 是一种隐式集成,有效降低了过拟合,提高泛化能力。


在训练时使用 Dropout,在测试时需要做什么?为什么通常要缩放权重?

测试时需关闭 Dropout,所有神经元参与计算。

为了保持训练和测试时神经元输出值的期望一致,有两种常见策略:

image.png


Dropout 的丢弃概率一般如何设置?在不同层上设置不同概率的原因是什么?

  • 一般设置:隐藏层常用 p=0.5,输入层常用 p=0.2 或更小(如 0.1),输出层一般不使用 Dropout。

  • 原因:

  • 输入层特征维度高且较为稀疏,保持较多输入信息更有利,因此丢弃率较低。
  • 隐藏层参数多、容易过拟合,使用较大的丢弃率(0.5)能产生丰富的子网络,增强正则化。
  • 如果对所有层使用相同的丢弃概率,可能会导致浅层信息丢失过多或深层正则化不足。

  • 现代趋势:在大模型(如 Transformer)中,Dropout 率通常更低(0.1),有时只在特定子层使用。

另外,丢弃率也可以作为超参数通过验证集调整;如果模型不收敛或欠拟合,可适当降低 Dropout。


Spatial Dropout 与普通 Dropout 有什么区别?适用于什么场景?

  • 普通 Dropout:对每个标量元素独立随机丢弃,适用于全连接层。

  • Spatial Dropout:对整个通道(特征图)进行随机丢弃。即同一个通道的所有空间位置(宽、高)被同时置零或保留。

  • 适用场景:常用于卷积神经网络(CNN)。因为 CNN 的特征图在空间上高度相关,若按像素点独立丢弃,相邻像素可能一部分保留一部分丢失,网络容易通过周围像素“猜出”被丢弃的值,削弱正则化效果。将整个通道丢弃可以强制特征图学习更鲁棒的特征表达,防止通道间的共适应。


DropConnect 与 Dropout 的不同之处是什么?

  • Dropout:随机丢弃神经元输出(激活值),即每次将某些激活值置为 0。

  • DropConnect:随机丢弃权重连接,即每次将权重矩阵中的某些元素置为 0,保留的权重不重新缩放,而是在训练时对输出产生影响。相当于随机断开输入与输出之间的连接。

  • 主要区别:DropConnect 作用于权重矩阵,Dropout 作用于激活向量。DropConnect 提供了更细粒度的正则化,能训练出更稀疏的连接,但计算效率通常较低,收敛可能需要更长时间。效果上,在某些任务中 DropConnect 能进一步提升泛化性能。


随机深度(Stochastic Depth)是怎么做的?它在训练深层 ResNet 时有什么好处?

做法:在 ResNet 的残差块中,随机将整个残差分支“关闭”,即直接跳过该块,只保留恒等映射(Identity 通路),相当于将该块从网络中丢弃。具体公式:

image.png

其中 bl∈{0,1} 是一个伯努利随机变量,控制残差分支是否激活。存活概率 plpl 可能随深度递减(如线性衰减)。

好处:

  • 训练深层网络时,随机深度相当于缩短了网络的有效深度,缓解了梯度消失,使得深层信息更容易传递。

  • 可视为训练了多个不同深度的网络并进行了隐式集成,测试时使用完整深度,相当于平均了浅层与深层网络的预测。

  • 能显著加速训练(因为跳过块不计算),同时作为一种强大的正则化,防止深层 ResNet 过拟合。


数据增强作为一种正则化手段,是如何防止过拟合的?举例说明图像和文本增强方法。

原理:数据增强通过人为生成更多训练样本变体,增加数据的多样性,从而减小模型对训练集中特定细节的依赖,强制模型学习更本质、不变的特征,降低过拟合风险。本质上相当于在数据分布上施加了扰动,约束模型在局部变化下的稳定性。

图像增强方法:

  • 随机翻转(水平、垂直)

  • 随机裁剪与缩放

  • 色彩抖动(亮度、对比度、饱和度、色调调整)

  • 随机旋转、平移、仿射变换

  • 高斯噪声、模糊

  • Mixup、CutMix(后文详述)

文本增强方法:

  • 同义词替换:随机选择词汇替换为同义词

  • 回译:将文本翻译成其他语言再翻译回来,产生语义相似但表达不同的句子

  • 随机插入、删除或交换单词

  • 使用预训练语言模型生成改写(如基于 BERT 的上下文增强)

  • 掩码语言模型预测替换(如用 BERT 预测被 mask 的词)

这些方法都能够在保持语义/类别标签的前提下创造新样本,使模型不容易记住训练数据的噪声和细节。


Early Stopping 是如何防止过拟合的?如何根据验证集曲线选择停止点?

原理:训练过程中,随着迭代次数增加,模型在训练集上的损失通常会持续下降,但在验证集上的损失往往先下降后上升(或误差先减后增)。Early Stopping 就是在验证集指标开始恶化时停止训练,从而避免模型过度拟合训练数据中的噪声。

如何选择停止点:

  • 监控验证集损失(或准确率等指标),当它在连续 k 个 epoch 内没有改善(即不再下降或上升)时,停止训练,并恢复至最佳验证指标对应的模型参数。

  • k 为“耐心”超参数(patience),设置过大可能仍过拟合,过小可能过早停止。

  • 实际中常绘制训练和验证损失曲线,寻找验证损失最小点。可使用“保存最佳模型”的回调。

从宏观角度看,Early Stopping 通过限制有效训练步数,限制了模型有效容量,与权重衰减等方法有相似的泛化效果,也可视为一种高效的超参数选择手段。


标签平滑(Label Smoothing)是如何作为一种正则化手段的?它改变了损失函数的什么性质?

image.png

正则化作用:

  • 防止模型对训练标签过于自信(输出概率极端接近 1 或 0),避免网络过分拟合错误标注或噪声标签。

  • 鼓励模型学习类别之间的相对关系,使特征表示更加泛化。

  • 实验证明它能提升模型校准度(预测置信度与准确率更匹配),减少过拟合。

改变损失函数的性质:

image.png


Mixup 和 CutMix 分别是怎么做数据增强的?它们的原理有什么区别?

Mixup:

image.png

  • 原理:在输入空间进行线性凸组合,同时标签也相应混合,迫使模型对输入变化输出线性变化的预测,鼓励模型学习样本之间的线性行为,提升泛化且对对抗样本更鲁棒。这相当于一种数据增广下的邻域风险最小化。

CutMix:

  • 方式:随机裁剪一张图片的一个矩形区域,将该区域替换为另一张图片的对应区域,标签也按面积比例混合:

image.png

  • 其中 λλ 是掩码面积比例,从 Beta 分布采样。

  • 原理:通过空间上的替换,强制模型关注局部区域而不只是全局统计;与 Mixup 的不同在于 CutMix 融合更“局部”,没有对整体图像进行模糊混合,保留了局部区域的自然性。它能显著提升 CNN 的定位能力和鲁棒性。

区别:

Mixup 是全局像素级混合,产生像素平均的模糊图像,标签也完全平滑。

CutMix 则是区域级替换,生成图像局部真实、局部属于另一类,混合比例由面积决定。两者均通过混合标签实现正则化,但 CutMix 更有利于需要精细空间信息保持的任务(如目标检测、定位)。


在训练大模型时,为什么有时候会同时使用 Dropout 和 BN?需要注意什么顺序?

同时使用的原因:

BN 主要用于加速收敛、稳定训练、允许更大学习率;Dropout 提供强大的正则化以对抗过拟合。两者作用不同且可以互补,尤其在大型全连接层或 Transformer 中。

注意顺序:

理论上,Dropout 会随机改变神经元的激活方差,而 BN 则在每个 batch 内维持稳定的均值和方差。如果顺序不当,可能造成“方差偏移”问题。通常推荐两种顺序:

  1. 卷积/全连接 → BN → 激活 → Dropout(BN 先于 Dropout,让 BN 稳定分布后再进行随机丢弃)。这种顺序在 ResNet 和现代 CNN 中很常见。

  2. 一些工作中也使用 Conv → ReLU → Conv → BN → Dropout 等变形,但核心是避免 Dropout 放在 BN 之前影响归一化统计量。

早期的 Inception 系列中曾建议将 Dropout 放在 BN 之后、激活之前,但后来大量实践表明 BN -> ReLU -> Dropout 效果不错。更关键的是,训练和测试时需确保 Dropout 的状态切换正确。

对于 Transformer,通常 Dropout 施加在 Attention 输出的线性层之后,以及 FFN 子层内,而 LN 在子层之前或之后(Pre-Norm/Post-Norm),因此天然位置不同,冲突较小。


如果模型出现过拟合,你会按照什么顺序尝试各种正则化方法?

综合成本、效果和常见实践,推荐按以下顺序逐步尝试:

  1. 数据增强:首先增加数据多样性(如更强的图像裁剪、翻转、Mixup/CutMix 等),这是效果最自然且不易伤害模型能力的方式。

  2. Early Stopping:监控验证曲线,选取最佳 checkpoint,阻止过度训练。

  3. 增加权重衰减(L2 / AdamW):调大正则化系数,或在 Adam 中改用解耦的 AdamW。

  4. Dropout:在网络中合适位置添加 Dropout,并调整丢弃概率,通常从较小的概率开始试起。

  5. 标签平滑:在分类任务中微调 ϵϵ,例如 0.1。

  6. 降低模型复杂度:减少网络层数、神经元个数,或使用更轻量架构。

  7. 应用更多显式正则化:如 L1 正则化(稀疏化)、梯度裁剪、DropConnect、Stochastic Depth 等。

  8. 增大 batch size ? 需注意增大 batch size 可能降低隐式正则化,需要相应调整学习率或配合其他手段。

  9. 获取更多真实数据:若无数据,使用生成对抗网络或合成数据。

  10. 半监督或自监督预训练:借助大量无标签数据改善表征,减少有标签数据的过拟合风险。

实际调试时,先从简单且计算开销小的方法开始,观察验证集表现变化,逐步叠加。若过拟合依然严重,则需要重新审视训练集与测试集的数据分布是否一致,或是评估指标本身是否合理。