深度学习笔记——正则化

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍深度学习中常见的正则化。

文章目录

正则化

L1 正则化(Lasso)

原理

L1正则化通过在损失函数中加入权重的绝对值和 来约束模型复杂度。其目标函数为:
min ⁡ ( 1 2 m ∑ i = 1 m ( y i − y ^ i ) 2 + λ ∑ j = 1 n ∣ w j ∣ ) \min \left( \frac{1}{2m} \sum_{i = 1}^{m} (y_i - \hat{y}i)^2 + \lambda \sum{j = 1}^{n} |w_j| \right) min(2m1i=1∑m(yi−y^i)2+λj=1∑n∣wj∣)

其中, λ \lambda λ是正则化强度, w j w_j wj是第 j j j个特征的权重。

使用场景
  • 特征选择 :L1 正则化能够将部分不重要的特征权重缩减为 0,从而实现特征选择
  • 高维稀疏数据集:如基因数据分析,模型能够自动去除无关特征。
优缺点
  • 优点:生成稀疏解,易于解释,自动选择重要的特征。
  • 缺点:对特征高度相关的数据,随机选择特征,模型不稳定。

L2 正则化(Ridge)

原理

L2正则化通过在损失函数中加入权重的平方和 来约束模型复杂度。其目标函数为:
min ⁡ ( 1 2 m ∑ i = 1 m ( y i − y ^ i ) 2 + λ ∑ j = 1 n w j 2 ) \min \left( \frac{1}{2m} \sum_{i = 1}^{m} (y_i - \hat{y}i)^2 + \lambda \sum{j = 1}^{n} w_j^2 \right) min(2m1i=1∑m(yi−y^i)2+λj=1∑nwj2)

其中, λ \lambda λ是正则化强度, w j w_j wj是第 j j j个特征的权重。

使用场景
  • 多重共线性问题 :在特征间存在多重共线性的情况下 ,L2 正则化能够减小模型方差,防止模型对数据的过拟合
  • 回归任务 :如岭回归(Ridge Regression)中常用来提升模型鲁棒性
优缺点
  • 优点:防止模型过拟合,能有效处理特征多重共线性问题。
  • 缺点:不能进行特征选择,所有特征权重都被减小。

Elastic Net 正则化

定义

Elastic Net 是 L1 和 L2 正则化的结合,它同时引入了 L1 和 L2 正则化项,在获得稀疏解的同时,保持一定的平滑性。

公式

J ElasticNet ( θ ) = J ( θ ) + λ 1 ∑ i ∣ θ i ∣ + λ 2 ∑ i θ i 2 J_{\text{ElasticNet}}(\theta) = J(\theta) + \lambda_1 \sum_{i} |\theta_i| + \lambda_2 \sum_{i} \theta_i^2 JElasticNet(θ)=J(θ)+λ1i∑∣θi∣+λ2i∑θi2

其中, λ 1 \lambda_1 λ1和 λ 2 \lambda_2 λ2控制L1和L2正则化的权重。

优点
  • 结合了 L1 和 L2 正则化的优点,既能够稀疏化模型,又不会完全忽略相关性特征。
  • 对高维数据和特征之间存在高度相关性的数据表现良好。
缺点
  • 相比于单独使用 L1 或 L2 正则化,它有更多的超参数需要调节。
应用场景
  • 常用于具有高维特征的数据集,特别是在需要稀疏化的同时,又不希望完全丢失特征之间相关性的信息。

Dropout

原理

Dropout 是一种用于深度神经网络的正则化方法。训练过程中,Dropout 随机将部分神经元的输出设置为 0防止神经元对特定特征的依赖 ,从而提升模型的泛化能力。类似集成学习,每次生成的都不一样。丢弃概率 (p),通常设置为 0.2 到 0.5

使用场景
  • 深度神经网络:在深度学习中广泛应用,如卷积神经网络(CNN)、循环神经网络(RNN)等。
  • 避免过拟合 :尤其在模型复杂、训练数据较少的场景中,能够有效降低过拟合风险
优缺点
  • 优点:有效防止过拟合,提升模型鲁棒性。
  • 缺点:训练时间较长,推理过程中不适用。

早停法(Early Stopping)

原理

早停法是一种防止模型过拟合的策略 。在训练过程中,监控验证集的误差变化,当验证集误差不再降低时,提前停止训练,防止模型过拟合到训练数据

使用场景
  • 深度学习:几乎适用于所有深度学习模型,在神经网络训练中常用,防止训练过度拟合。
  • 梯度下降优化:在任何基于梯度下降的优化过程中均可使用,如线性回归、逻辑回归等。
优缺点
  • 优点:简单有效,能够动态调节训练过程。
  • 缺点:需要合理设置停止条件,可能导致模型欠拟合。

Batch Normalization (BN)

虽然 Batch Normalization(BN)通常被认为是一种加速训练的技巧,但它也有正则化的效果。BN 通过对每一批次的输入进行归一化,使得模型训练更加稳定,防止过拟合。

原理

BN 通过将每个批次的激活值标准化为均值为 0,方差为 1,然后通过可学习的缩放和平移参数恢复特征分布。由于批次间的变化引入了一定的噪声,这对模型有一定的正则化作用。

使用场景
  • 广泛应用于卷积神经网络(CNN)和全连接网络(FCN)中。
优点
  • 提升训练速度,并有一定的正则化效果。
  • 适合卷积神经网络和全连接神经网络,能有效减少过拟合。
缺点
  • 在小批量训练时效果不稳定。
  • 引入了额外的计算开销。

权重衰减(Weight Decay)

权重衰减是一种通过直接对权重进行衰减 的正则化方法,它等价于 L2 正则化

原理

在每次权重更新时,加入一个权重衰减项 ,使得权重参数逐渐减小,从而防止权重变得过大,减少模型的复杂度

权重衰减直接在梯度更新中对权重施加一个额外的缩减项 ,而不需要在损失函数中添加正则化项。也就是说,权重衰减是通过直接操作梯度更新公式中的权重来实现的。

公式:
θ = θ − α ⋅ ∂ L data ∂ θ − α λ θ \theta = \theta - \alpha \cdot \frac{\partial L_{\text{data}}}{\partial \theta} - \alpha \lambda \theta θ=θ−α⋅∂θ∂Ldata−αλθ

其中:

  • α \alpha α是学习率。
  • λ \lambda λ是权重衰减系数。
  • θ \theta θ是模型的权重。

其中 λ 是正则化系数,控制惩罚项的强度。该惩罚项会在每次梯度更新时对权重施加一个减小的力度,从而限制权重的增长。

L2正则化和权重衰减目标一致、数学形式相似,但是并不是同一种手段:

  1. 实现方式

    • L2 正则化 :在传统的 L2 正则化中,惩罚项是直接添加在损失函数中 。因此,反向传播时会计算这个惩罚项的梯度,并将它加入到权重的更新中。优化器仅对 Loss求导。
    • 权重衰减 :在权重衰减中,惩罚项不直接添加到损失函数中,而是在梯度更新时作为一个附加的"权重缩小"操作 。在每次更新时,优化器会自动将权重按比例缩小。例如,对于SGD 优化器,权重更新公式变成:
      w = w − α ⋅ ∂ L loss ∂ w − α ⋅ λ ⋅ w w = w - \alpha \cdot \frac{\partial L_{\text{loss}}}{\partial w} - \alpha \cdot \lambda \cdot w w=w−α⋅∂w∂Lloss−α⋅λ⋅w
    • 这里, α ⋅ λ ⋅ w \alpha \cdot \lambda \cdot w α⋅λ⋅w是直接对权重施加的缩小因子,而不影响梯度方向。
  2. 优化器依赖

    • L2 正则化不依赖于特定的优化器。正则项直接通过损失函数梯度传播,适用于所有优化器。
    • 权重衰减:有些优化器(如 AdamW)在实现时将权重衰减项独立处理,而不会将其纳入损失的反向传播中。
使用场景
  • 与 SGD 等优化器配合使用效果较好,尤其适用于大型神经网络,可以防止权重过大导致的过拟合。对于 Adam 优化器,建议使用 AdamW 版本来获得更合适的权重衰减效果。
优点
  • 类似于 L2 正则化,简单易用,有效减少过拟合。
缺点
  • 与 L2 正则化非常相似,但在某些优化器(如 Adam)中,权重衰减的实现可能会与 L2 正则化略有不同。在这些情况下,直接使用 L2 正则化可能会更符合预期的效果。

剪枝(Pruning)

剪枝通常在模型训练完成后进行,作为一种后处理技术。例如决策树中的剪枝操作。

原理

剪枝通过删除神经网络中重要性较低的连接或神经元 ,减少模型规模,从而达到简化网络的目的。剪枝不仅可以减少计算量和存储需求 ,还能在一定程度上防止过拟合,使模型在推理时更加高效。

应用场景
  • 移动和嵌入式设备:剪枝特别适用于资源受限的设备(如手机、嵌入式系统、物联网设备)上,以减小模型尺寸和降低推理时间。
  • 深度学习模型加速:剪枝广泛用于加速深度神经网络的推理过程,特别是在需要实时处理的任务中,如自动驾驶、图像识别等。
  • 大规模模型压缩:在大规模模型(如大规模卷积神经网络、语言模型)中,剪枝可以显著减少计算量,使得模型更高效地运行。
优点
  • 减少模型复杂度:剪枝可以显著减少网络中的参数,降低计算和内存需求,使得模型更适合在资源有限的设备上(如移动设备、嵌入式系统)运行。
  • 提高模型的泛化能力:通过移除不重要的权重和神经元,减少模型对特定数据特征的过拟合,从而提高泛化能力。
  • 加速推理:剪枝后的模型由于参数减少,推理速度得到显著提升。
缺点
  • 需要额外的剪枝步骤
  • 可能影响模型性能:如果剪枝不当,可能会削弱模型的表现,模型的准确性可能会大幅下降。
  • 需要重新训练:剪枝后的模型有时需要重新微调或训练,以恢复模型性能。

以下是关于常见正则化方法的总结表格:

正则化方法 原理 使用场景 优点 缺点
L1 正则化 (Lasso) 通过增加权重绝对值惩罚项,实现特征稀疏化,部分权重缩减为 0。 高维稀疏数据集,特征选择任务。 生成稀疏解,易于解释,自动选择重要的特征。 对特征高度相关的数据,可能随机选择特征,导致模型不稳定。
L2 正则化 (Ridge) 通过增加权重平方和惩罚项,减小权重大小,防止权重过大。 多重共线性问题、回归任务,如岭回归。 防止模型过拟合,处理特征多重共线性问题,模型更加鲁棒。 无法进行特征选择,所有特征权重都被减小。
Elastic Net 正则化 L1 和 L2 正则化结合,既稀疏化模型,又保留相关性特征。 高维特征的数据集,稀疏化和相关性特征共存的场景。 结合 L1 和 L2 优点,稀疏化与平滑化并存,适用于高维数据。 增加了超参数调节的复杂性。
Dropout 训练时随机丢弃部分神经元输出,防止神经元对特定特征的依赖,提升泛化能力。 深度神经网络,CNN、RNN,适合复杂模型或数据较少的场景。 有效防止过拟合,提升模型鲁棒性。 训练时间较长,推理时不适用。
早停法 (Early Stopping) 监控验证集误差,验证集误差不再下降时提前停止训练,防止过拟合。 深度学习模型,梯度下降优化任务,如线性回归、逻辑回归。 简单有效,动态调节训练过程,减少过拟合。 需要合理设置停止条件,可能导致欠拟合。
Batch Normalization (BN) 对每一批次的输入进行归一化,保持训练过程中的稳定性,并有一定正则化效果。 卷积神经网络和全连接神经网络,适用于大批量训练。 加速训练,减少过拟合,提升模型稳定性。 小批量训练时效果不稳定,增加计算开销。
权重衰减 (Weight Decay) 在每次权重更新时加入权重衰减项,防止权重过大,等价于 L2 正则化。 大规模神经网络,常与 SGD、AdamW 等优化器配合使用。 简单有效,减少过拟合,类似 L2 正则化。 与 L2 略有不同,某些优化器中的效果不同。
剪枝 (Pruning) 训练后移除神经网络中不重要的连接或神经元,减少模型规模,降低计算量,提升泛化能力。 移动设备、嵌入式系统、大规模模型压缩,适合资源受限设备和加速任务。 减少模型复杂度,提升推理速度,适合资源受限设备。 需要额外剪枝步骤,可能影响模型性能,需要重新训练。

这个表格总结了常见的正则化方法,涵盖了其工作原理、使用场景、优点和缺点。根据具体任务和数据集,可以选择合适的正则化方法来提高模型的泛化能力和训练效率。


Q&A

权重归一化和权重衰减的异同

二者都作用于模型的权重。都是用来提升泛化能力。但是有下面的不同:

特性 权重归一化 权重衰减
主要目的 提升训练稳定性,帮助模型更快收敛 正则化,防止过拟合
实现方式 将权重分解为范数和方向 损失函数中增加 L2 正则化项,将权重缩小
应用位置 在使用权重归一化的层(例如卷积层或全连接层)中 在优化器的更新(如 SGD、Adam)步骤中,通过正则化参数应用
对梯度的影响 不影响权重的梯度更新计算 对每次权重更新施加惩罚,直接减小权重值
是否显式操作 是,对权重重参数化 否,通过损失函数中添加正则项间接实现
  • 权重归一化 :用于训练时提高稳定性和收敛速度,对权重进行重参数化分解,直接应用在层的权重上。
  • 权重衰减 :用于防止过拟合,对损失函数中的权重平方项施加惩罚,通过优化器在每次权重更新时施加影响。

热门专栏

机器学习

机器学习笔记合集

深度学习

深度学习笔记合集

相关推荐
好评笔记2 小时前
视频多模态模型——视频版ViT
论文阅读·人工智能·深度学习·机器学习·计算机视觉·面试·aigc
说私域2 小时前
“开源AI智能名片2+1链动模式S2B2C商城小程序源码”在市场推广中的应用与策略
人工智能·小程序·开源
果冻人工智能2 小时前
“星门计划对AI未来的意义——以及谁将掌控它”
大数据·人工智能·microsoft·自然语言处理·llama·ai员工
兔兔爱学习兔兔爱学习3 小时前
lightgbm做分类
人工智能·分类·数据挖掘
oioihoii3 小时前
DeepSeek R1与OpenAI o1深度对比
人工智能·机器学习
迪娜学姐3 小时前
DeepSeek学术写作测评第一弹:论文润色,中译英效果如何?
人工智能·chatgpt
前端达人3 小时前
「AI学习笔记」深度学习的起源与发展:从神经网络到大数据(二)
人工智能·笔记·深度学习·神经网络·学习
西猫雷婶3 小时前
python学opencv|读取图像(四十九)原理探究:使用cv2.bitwise()系列函数实现图像按位运算
人工智能·opencv·计算机视觉
Ciderw4 小时前
Go的垃圾回收(GC)机制
开发语言·c++·后端·面试·golang·gc