【深度学习之二】正则化函数(weight decay, dropout, label smoothing, and etc)详解,以及不同的函数适用的场景
在深度学习中正则化函数的重要性不言而喻,今天主要总结一些当前常用的一些正则化函数
在深度学习中,正则化(Regularization)是一种防止模型过拟合的技术。过拟合指的是模型在训练数据上表现很好,但在未见过的测试数据或新数据上的泛化能力较差。正则化通过向损失函数添加额外的信息来限制模型复杂度,从而帮助提高模型的泛化能力。具体来说,正则化技术可以减少模型对训练数据的依赖,使其更加通用。
正则化的主要作用包括:
- 减少模型复杂度:通过限制模型参数的大小,避免模型过于复杂,从而减少过拟合的风险。例如,L1和L2正则化是两种常用的正则化方法,它们分别通过向损失函数添加参数绝对值之和(L1)或参数平方和(L2)的形式来惩罚大权重。
- 特征选择:L1正则化除了可以减少过拟合外,还具有稀疏性,即它可以将一些不重要的特征的权重降为零,从而实现自动特征选择。而L2正则化不会将权重降为零,但可以使权重变得更小,有助于平滑决策边界。
- 提高模型的泛化能力:通过减少模型对训练数据的过度拟合,正则化有助于模型更好地泛化到新的、未见过的数据上。
- 防止过拟合:正则化是解决过拟合问题的一种有效手段。过拟合通常发生在模型过于复杂或者训练数据量相对较小的情况下,正则化可以通过控制模型复杂度来缓解这一问题。
- 提高模型稳定性:正则化还可以增加模型的稳定性,使模型对输入数据的小变化不那么敏感
dropout算法步骤
dropout 是一种用于防止深度学习模型过拟合的正则化技术。它通过在每次训练迭代中随机“丢弃”一部分神经元(即将它们的输出置为零),从而降低神经网络对特定节点和权重的过度依赖,提升模型的泛化能力。
核心思想:在训练过程中,随机选择一些神经元,将它们的输出置为零,同时保留其他神经元的完整输出。每次训练迭代中,被“丢弃”的神经元是随机的,训练完成后,在推理阶段使用所有神经元的加权平均输出。
假设在某一层的输入为向量 x,输出为向量 y,dropout的具体实现步骤如下:
1.训练阶段
- 随机生成一个与输入同形状的二进制掩码向量 r,每个元素服从伯努利分布 ri∼Bernoulli§,其中 p 是保留概率。
- 对应的Dropout应用公式:
y=r⊙x
其中 ⊙ 表示逐元素相乘。 - 将被“丢弃”的神经元输出置为零。
2.推理阶段 - 不再随机丢弃神经元,而是将训练阶段的输出按保留概率 ppp 进行缩放:
y=p⋅x - 这样可以保证在训练和推理阶段的输出期望一致。
3.保留概率 p - 指定神经元被保留的概率,通常设置为 0.5(隐藏层)或接近 1(输入层)。
- 较小的 ppp 值表示更多的神经元会被丢弃。
优点
1.防止过拟合:通过随机丢弃神经元,降低了特定神经元的过度权重,增加了网络的鲁棒性。
2.增加泛化能力:模型学习到更多的特征组合,而不是依赖特定路径。
3.简单易用:实现简单,且能无缝集成到大多数深度学习框架中。
缺点
1.训练时间增加:由于随机丢弃,需要更长的时间达到收敛。
2.影响模型容量:过高的Dropout率可能会导致模型欠拟合。
Weight Decay
Weight Decay 是一种常用的正则化技术,主要通过惩罚模型的权重大小来防止过拟合,增强模型的泛化能力。在优化过程中,Weight Decay 会向目标函数中添加权重的 (L_2) 范数约束,从而限制权重的增长。
核心思想
通过在优化过程中对权重施加 (L_2) 正则化,鼓励模型的权重保持较小的值。这种约束可以防止模型学习到过于复杂或对训练数据过拟合的特征。
损失函数形式:
假设原始损失函数为 L(w),其中 w是模型的权重,Weight Decay 的正则化后的损失函数为:
梯度更新:
优化器在更新权重时,会同时考虑损失函数的梯度和正则化项的影响:
Weight Decay 与 (L_2) 正则化的关系
Weight Decay 和 (L_2) 正则化在数学上等价,但在实现中可能存在差异:
1.Weight Decay:直接通过优化器对权重进行衰减。
2.(L_2) 正则化:将正则化项显式添加到损失函数中。
例如,在使用 AdamW 优化器时,Weight Decay 是独立于梯度更新的,通过调整权重而非修改梯度计算,解决了传统 Adam 中正则化效果较差的问题。
优点
1.防止过拟合:通过抑制权重的增大,限制模型复杂度。
2.提升泛化能力:模型更关注整体结构而非个别样本的特性。
3.简单高效:实现方便,开销低。
缺点
1.需要调节超参数 ( \lambda ):不同任务和模型中,正则化强度的选择可能不同。
2.对稀疏特征的影响:Weight Decay 会均匀衰减所有权重,在处理稀疏特征时可能不如 (L_1) 正则化有效。
应用场景
- 常用于深度学习任务(如图像分类、自然语言处理),尤其是在模型参数较多时。
- 与现代优化器(如 AdamW、SGD with Momentum)结合使用效果更佳。
Weight Decay 与 AdamW 的改进
传统 Adam 优化器对 Weight Decay 的实现效果较差,因为 (L_2) 正则化的梯度会被 Adam 的自适应学习率缩放,削弱正则化效果。
AdamW 通过将 Weight Decay 作为权重衰减独立处理,改进了正则化性能,是现代优化器中的标准做法。
Label Smoothing
Label Smoothing 是一种正则化技术,旨在缓解模型过度自信的问题。在分类任务中,它通过平滑目标标签分布来增强模型的泛化能力,从而提高性能。
核心思想
传统分类任务的目标是最小化交叉熵损失,标签通常是 one-hot 编码 的,即对于类别 ( k ),目标分布 ( q ) 为:
这种目标分布可能导致模型对正确类别的预测过于自信(输出接近 1),对其他类别的预测完全为 0。Label Smoothing 通过在目标分布中引入少量均匀分布成分,使目标分布更平滑:
损失函数
优点
1.防止过拟合:平滑后的标签不会让模型过分自信,避免学习到过于尖锐的分布。
2.提升泛化性能:在测试集上模型往往表现更好,尤其是对不确定性较高的样本。
3.减少梯度消失:更平滑的目标分布可以减缓梯度消失问题。
适用场景
- 多分类任务(尤其是在模型容易过拟合的情况下)。
- 任务类别较多或类别分布不均匀时,Label Smoothing 可增强模型对类别之间关系的建模能力。
- 在 NLP 任务(如机器翻译)中,经常与注意力机制配合使用。
注意事项
1.平滑参数选择:( \epsilon ) 通常取 ( [0.05, 0.1] ),值过大会影响模型性能。
2.类别权重平衡:对于类别严重不平衡的问题,Label Smoothing 的效果可能需要额外调整。
3.过度平滑风险:平滑过多可能导致模型对类别区分能力下降。
直观理解
Label Smoothing 的目标是让模型预测的分布不要太“尖锐”,在概率分布上保持适度的“谦虚”,从而减少过拟合,提升泛化能力。