深度学习——优化算法、激活函数、归一化、正则化

文章目录

  • 🌺深度学习面试八股汇总🌺
  • 优化算法
  • 激活函数
      • 1) Sigmoid 函数
      • 2) Tanh 函数
      • 3) ReLU(Rectified Linear Unit)
      • 4) Leaky ReLU
      • 5) Parametric ReLU(PReLU)
      • 6) ELU(Exponential Linear Unit)
      • 7) SELU(Scaled Exponential Linear Unit)
      • 8) Swish(SiLU)
      • 总结
  • 各种优化的归一化介绍(本质上进行标准化)
    • 普通归一化过程
    • 普通归一化分类
      • 1. 批归一化(Batch Normalization, BN)
        • 原理
        • 优点
        • 缺点
        • 使用场景
      • 2. 层归一化(Layer Normalization, LN)
        • 原理
        • 优点
        • 缺点
        • 使用场景
      • 3. 实例归一化(Instance Normalization, IN)
        • 原理
        • 优点
        • 缺点
        • 使用场景
      • 4. 组归一化(Group Normalization, GN)
        • 原理
        • 优点
        • 缺点
        • 使用场景
    • 权重归一化(Weight Normalization, WN)
        • 原理
        • 权重归一化的步骤
        • 权重归一化的作用
        • 优点
        • 缺点
        • 使用场景
    • 归一化方法对比总结
  • 正则化
      • L1 正则化(Lasso)
        • 原理
        • 使用场景
        • 优缺点
      • L2 正则化(Ridge)
        • 原理
        • 使用场景
        • 优缺点
      • Elastic Net 正则化
        • 定义
        • 公式
        • 优点
        • 缺点
        • 应用场景
      • Dropout
        • 原理
        • 使用场景
        • 优缺点
      • 早停法(Early Stopping)
        • 原理
        • 使用场景
        • 优缺点
      • Batch Normalization (BN)
        • 原理
        • 使用场景
        • 优点
        • 缺点
      • 权重衰减(Weight Decay)
        • 原理
        • 使用场景
        • 优点
        • 缺点
      • 剪枝(Pruning)
        • 原理
        • 应用场景
        • 优点
        • 缺点
  • Q&A
      • 权重归一化和权重衰减的异同

🌺深度学习面试八股汇总🌺

优化算法

在深度学习中,优化算法用于调整模型的参数(如权重和偏置)以最小化损失函数

方法

梯度下降 (Gradient Descent, GD)

简介
梯度下降是最基本的优化算法,通过计算损失函数相对于模型参数的梯度沿着梯度下降的方向更新参数,以最小化损失函数。

  • 批量梯度下降(Batch Gradient Descent):在每次迭代中使用整个训练集计算梯度,计算开销大但收敛稳定。
  • 随机梯度下降(Stochastic Gradient Descent, SGD):每次迭代只使用一个样本计算梯度,效率高,但容易在训练中产生波动。
  • 小批量梯度下降(Mini-batch Gradient Descent):在每次迭代中使用一小部分训练集进行梯度计算,平衡了批量梯度下降和随机梯度下降的优缺点。
    在这里插入图片描述

优点

  1. 简单直观:梯度下降的原理简单,计算损失函数的梯度,沿着梯度最速下降方向进行优化。

  2. 广泛适用:梯度下降可以应用于各种类型的机器学习问题,包括线性回归、逻辑回归和神经网络等。在许多优化问题中,梯度下降是基本的选择,适用范围广泛。

  3. 可扩展性强:梯度下降可以在不同的规模和复杂度下使用。通过调整批量大小(如批量梯度下降、随机梯度下降、小批量梯度下降),可以适应不同数据集的规模。

  4. 良好的收敛性:对于凸优化问题,梯度下降可以保证收敛到全局最优解。而在非凸问题中,梯度下降也能找到局部最优解,具有良好的泛化能力。

缺点

  1. 收敛速度慢:梯度下降尤其是批量梯度下降(Batch Gradient Descent),收敛速度慢。在大型数据集上,批量梯度下降的效率较低。

  2. 容易陷入局部最优:在非凸优化问题中,梯度下降容易陷入局部最优解

  3. 对学习率敏感:梯度下降依赖于超参数学习率(learning rate) 的选择。如果学习率太小,收敛速度非常慢;如果学习率太大,梯度下降可能无法收敛,甚至在训练过程中发散。

  4. 梯度消失或梯度爆炸问题:在深层神经网络中,由于链式法则,梯度值会在反向传播时逐层累积,容易导致梯度消失或梯度爆炸问题,导致网络训练不稳定或无法更新参数。

适用场景

  • 适用于数据量较大的场景,如深度学习中的大规模数据训练。

动量法 (Momentum)

简介
动量法是对GD的改进,它在更新参数时不仅考虑当前的梯度还考虑前几次的梯度。这样就像给参数加上“惯性” ,从而避免震荡
在这里插入图片描述
优点

  • 更快的收敛速度:由于动量的存在,它可以在损失函数的谷底处快速收敛。
  • 减少震荡:动量法在梯度方向上能够更稳健,减少梯度震荡现象。

缺点

  • 需要调节动量系数:动量的超参数(通常设为0.9左右)需要精心调节,使用不当可能导致训练失效。

适用场景

  • 适用于数据噪声较多或梯度震荡较大的场景,如深度神经网络中使用的卷积层。

AdaGrad (Adaptive Gradient Algorithm)

简介
AdaGrad是一种自适应学习率的方法。它为每个参数独立调整学习率学习率的调整取决于历史梯度的平方和,这使得频繁更新的参数学习率逐渐减小,而较少更新的参数学习率保持较大。这种方式防止步长过大导致的震荡,也避免步长过小导致的收敛速度慢
在这里插入图片描述

优点

  • 自适应学习率:不需要手动调整学习率,适应稀疏数据场景。
  • 适合稀疏数据:对于稀疏数据(如NLP任务中的词嵌入学习),AdaGrad表现很好。

缺点

  • 学习率过快衰减:随着训练的进行,累积的梯度会导致学习率快速减小,最终学习率趋近于0,难以继续学习。

适用场景

  • 适合于稀疏特征的场景,如自然语言处理中的词嵌入或推荐系统中的高维特征。

RMSProp (Root Mean Square Propagation)

简介
RMSProp 是为了解决 AdaGrad 中学习率过快衰减的问题。它引入了指数加权移动平均(梯度的二阶矩)平滑历史梯度的平方,使得学习率不会迅速下降。
在这里插入图片描述

优点

  • 学习率调整更稳健:通过指数加权平均处理梯度,RMSProp 可以更好地适应复杂且多变的损失面。
  • 解决AdaGrad的衰减问题:与AdaGrad相比,它能够维持适当的学习率,使得训练能持续有效进行。

缺点

  • 需要调节超参数:RMSProp中的超参数,如移动平均系数,可能需要手动调整以取得最佳效果。

适用场景

  • 适用于非平稳目标或在线学习场景,如强化学习中的Q-Learning。

Adam (Adaptive Moment Estimation)

简介
Adam 结合了动量法和RMSProp的优点 ,既使用动量法来考虑历史梯度,也通过RMSProp来自适应调整学习率。它既利用了梯度的一阶矩(动量),又利用了梯度的二阶矩(RMSprop)。

  • 一阶矩(First Moment):通常指梯度的均值,即梯度的期望值。它反映了梯度的方向和大小
  • 二阶矩(Second Moment):通常指梯度的方方差“ 或 “平方均值”,即梯度的平方的均值/期望值。它反映了梯度变化的幅度或不确定性
    在这里插入图片描述
    优点
  • 收敛速度快:Adam在大多数情况下表现出良好的收敛性,能够加速模型的训练。
  • 自适应学习率:每个参数都有独立的学习率,不需要太多的手动调参。
  • 鲁棒性:在各种问题上都表现良好,适用于大多数深度学习任务。

缺点

  • 可能过早收敛:Adam在某些场景下可能会收敛到亚最优解。
  • 需要额外的超参数:Adam的β1、β2以及学习率等超参数需要调整,可能影响训练效果。

适用场景

  • 适用于大多数深度学习任务,尤其是在梯度更新频繁且噪声较大的场景,如图像分类、语言模型训练等。

AdamW 优化算法

简介
Adam 优化算法的改进版本,专门针对优化正则化过程中的权重衰减问题。传统的 Adam 将权重衰减作为正则化的一部分,而 AdamW 通过将权重衰减与梯度更新过程分离,提供了更准确的正则化效果。

权重衰减(Weight Decay) 是一种用于正则化的技术,主要目的是防止模型过拟合。它通过在损失函数中添加一个与参数大小相关的惩罚项,来限制模型参数的大小,使得模型的权重不能无限增大。

公式:
在这里插入图片描述

AdamW 的公式与 Adam 的主要区别就在于第四步的参数更新。因此,只需要在第四步添加权重衰减项 λ ⋅ θ t \lambda \cdot \theta_t λθt 即可。AdamW 的其他部分,如梯度计算、一阶矩、二阶矩和偏差修正,和 Adam 是完全相同的。

优点

  • 更好的正则化效果:AdamW 将权重衰减梯度更新 分离,能够实现更精确的正则化,减少过拟合
  • 与 Adam 兼容:保留了 Adam 的所有优势,如自适应学习率和动量计算,同时修正了正则化问题。
  • 更快的收敛:由于正则化效果更准确,模型能够更好地收敛,尤其是在复杂网络中。
  • 广泛适用:适用于许多深度学习任务,特别是需要进行正则化的任务,如计算机视觉、自然语言处理等领域。

缺点

  • 超参数更多:与 Adam 相比,AdamW 增加了一个权重衰减超参数 ( \lambda ),因此需要调试的超参数更多,调参复杂度增加。
  • 计算复杂度略高:与 Adam 相比,虽然整体计算复杂度没有显著增加,但在包含权重衰减的场景下,其计算量稍有增加。

使用场景

  • 深度神经网络中的正则化:适用于在深度学习模型中加入正则化以避免过拟合的场景,例如在大规模数据集上进行训练时,AdamW 能更好地控制权重更新。
  • 计算机视觉任务:如图像分类、目标检测等任务,AdamW 可以通过有效的正则化提升模型的泛化能力。
  • 自然语言处理(NLP):在语言模型、文本分类等任务中,AdamW 的正则化效果能使模型在复杂数据集上更好地训练。
  • 需要长时间训练的任务:AdamW 在长时间训练任务中的表现通常比 Adam 更好,因为其优化的正则化可以避免模型随着时间过拟合。

总结

算法原理优点缺点适用场景
GD梯度下降算法,通过每次使用整个训练集, 或者SGD和MGD计算损失函数相对于模型参数的梯度沿着梯度下降的方向更新参数,以最小化损失函数。理论稳定,易于实现计算成本高,特别是在大数据集上更新缓慢小规模数据集或批量处理场景
Momentum在 SGD 基础上增加动量,不仅考虑当前的梯度,还利用过去的梯度积累,加入惯性来加速收敛并减少震荡提升收敛速度、减少震荡需调节动量系数数据噪声较多的场景
AdaGrad每个参数采用不同的学习率自适应学习率,并根据历史梯度的平方和自动调整每个参数的学习率自适应学习率,适合稀疏数据学习率快速衰减稀疏特征数据场景
RMSPropAdaGrad 基础上,通过引入梯度的二阶矩来平衡学习率的更新,解决了 AdaGrad 学习率快速衰减的问题学习率调整更稳健,解决 AdaGrad 衰减问题需调节超参数非平稳目标、强化学习
Adam结合了 Momentum 和 RMSProp,采用自适应学习率和动量来更新参数,适应性强,收敛速度快。 利用了梯度的一阶矩(动量),又利用了梯度的二阶矩(RMSprop)。收敛快,适应性强,鲁棒性好可能过早收敛,需调整多个超参数大多数深度学习任务,图像分类、语言模型
AdamW改进的 Adam 算法,结合权重衰减正则化,将权重衰减梯度更新过程分离,解决过拟合。改进的正则化,避免权重衰减导致的过拟合问题增加超参数调试复杂度正则化场景,如图像分类、NLP任务
  1. GD(Gradient Descent,梯度下降):每次迭代使用整个数据集计算梯度,并更新模型参数,确保模型稳步收敛,但在大数据集上计算成本高且更新缓慢。
  2. SGD(Stochastic Gradient Descent):每次参数更新只使用一个或小批量样本进行计算,虽然计算效率高,但更新不稳定,容易出现震荡。
  3. Momentum:通过在每次梯度更新时引入动量,动量会积累之前梯度的方向,帮助加速收敛,减少震荡。适合噪声较多的数据。
  4. AdaGrad自适应调整学习率,梯度较大的参数学习率变小,适合处理稀疏数据,但学习率在训练后期可能过小,导致收敛缓慢。
  5. RMSProp:在 AdaGrad 基础上引入滑动平均(梯度的二阶矩)的机制,使学习率更新更加稳健,避免学习率过快衰减。常用于强化学习或非平稳目标。
  6. Adam结合了 Momentum 和 RMSProp 的优势,采用自适应学习率和动量机制,使其在大多数深度学习任务中表现良好,收敛快且鲁棒性好。
  7. AdamW:在 Adam 的基础上,改进了权重衰减的方式,通过权重衰减的正则化防止模型过拟合,特别适用于需要正则化的任务,如图像分类和 NLP。

这使得每种优化算法在处理不同的任务时,能够根据具体的需要选择合适的优化方式。


经验和实践建议

训练模型时,结合不同优化方法和策略来提高模型性能的常见做法。接下来,我会详细解释每个策略和概念背后的原理及其作用。

使用 Adam 进行初始训练,之后用 SGD 进行微调

作用

  • 结合了 Adam 的快速收敛能力SGD 的精细调整能力,Adam 用于快速收敛,而 SGD 用于微调,能够快速训练模型并进一步优化模型,使其参数更接近全局最优。

解释

  • Adam 是一种自适应学习率优化算法,能够在早期阶段快速收敛。由于 Adam 能够自适应地调整每个参数的学习率,这使得 Adam 能够帮助模型尽快接近局部最优解。

  • SGD 则被认为在局部微调时表现得更为稳定。尽管收敛速度较慢,但在接近最优解时,SGD 具有更好的优化全局性能的能力。使用 SGD 可以细致地调整模型参数,使其更加接近全局最优。

其他

  • RMSProp + SGD:自适应学习率算法RMSProp 可以迅速找到损失函数的低谷(能很好地处理非平稳数据),可以用于在线学习或强化学习中。然后通过 SGD 进一步优化模型参数。

冷启动策略(Cold Start Strategy)

作用

  • 帮助模型快速找到一个初始的较好参数,避免一开始陷入局部最优,进而提高后续优化阶段的效果。

解释

  • 冷启动策略主要解决的是训练初期时,如何合理地设置参数、超参数以及模型结构,确保训练能够顺利进行,并尽快进入有效的学习阶段。

  • 初始模型参数初始化或者初始优化器选择错误 ,导致模型一开始的训练进展缓慢,甚至收敛到较差的局部最优解。采用冷启动策略,即开始时使用较大批量、较高学习率或者自适应学习率优化算法(如 Adam)进行初始训练,以帮助模型快速找到一个可行的参数区域。

  • 然后,再使用更稳健的优化方法(如 SGD)以及更小的学习率来进行进一步的训练,从而细化参数并找到更接近全局最优的解。


大批量与小批量交替训练

作用

  • 交替使用大批量和小批量训练,可以在一定程度上结合两者的优势:用小批量训练来加速模型的训练,同时用大批量训练来稳定模型,并帮助模型在更广的参数空间探索。

解释

  • 小批量(mini-batch) 对数据集的一部分进行更新来避免计算整个数据集的梯度,从而加速模型的训练。然而,小批量训练有时可能会陷入局部最优解。

  • 大批量训练 则能够更稳定地更新梯度,因为它使用更多的数据,减小了梯度中的噪声。但大批量训练的缺点是训练速度较慢。


学习率逐步衰减(Learning Rate Decay)

作用

  • 学习率衰减 可以让模型在训练初期,使用较高的学习率进行快速探索,在后期逐渐减小学习率进行更精细的调整,从而帮助模型更加稳定地收敛到全局最优解。

解释

  • 小学习率的优缺点
    • 优点
      精细调整、避免震荡、适合后期微调:小学习率能够使模型在接近最优解时进行更细致的参数调整。能避免震荡,使模型更加平稳地优化。在模型训练的后期,小学习率能够帮助模型更精确地逼近全局最优。
    • 缺点
      收敛速度慢、可能陷入局部最优:小学习率会导致参数更新幅度较小,因此模型的收敛速度较慢,特别是在训练初期时。由于更新幅度较小,模型可能会陷入局部最优解,难以跳出并探索更优的解。

  • 大学习率的优缺点
    • 优点
      收敛速度快、跳出局部最优:大学习率可以使模型在训练初期迅速调整参数,快速探索参数空间,帮助模型尽快接近局部最优解。较大的参数更新幅度有助于模型摆脱局部最优,探索更优的解。

    • 缺点
      容易震荡或发散、难以精细调整:在接近最优解时,大学习率可能导致参数更新幅度过大,导致模型在局部区域内反复跳跃,甚至发散,无法收敛。大学习率使模型的参数更新过于粗糙,难以在训练后期进行精细优化。

总结

  • 小学习率:适合训练的后期,帮助模型精细调整参数、稳定收敛。更容易过拟合
  • 大学习率:适合训练初期,帮助模型快速探索参数空间、提高收敛速度。更容易欠拟合

常见的学习率衰减策略包括:

  1. 指数衰减:学习率按照某个指数函数衰减;
  2. 阶梯衰减:在训练的某些阶段手动减小学习率;
  3. 自适应衰减:当模型的损失停止下降时,自动减小学习率。

总结

Adam 和 SGD 结合使用,以及通过 冷启动策略、大批量与小批量交替训练学习率逐步衰减,能够有效提升深度学习模型的训练效率和性能。Adam 初期的快速收敛可以节省时间和资源,而 SGD 的精细优化能力可以确保最终结果更接近全局最优。让模型在训练初期,使用较高的学习率进行快速探索,在后期逐渐减小学习率进行更精细的调整,从而帮助模型更加稳定地收敛到全局最优解。

主要考虑的参数

以下是选择优化器时需要重点关注的几个关键参数:

学习率(Learning Rate, η \eta η

描述

  • 学习率决定了每次更新参数的步长,是最重要的超参数之一。学习率过大可能导致模型在训练过程中发散,无法收敛,更容易欠拟合学习率过小则会导致模型训练速度缓慢,甚至陷入局部最优,更容易过拟合

选择标准

  • 对于大多数优化器,学习率是必调的参数。常见的做法是从较大的学习率开始逐步衰减,或者使用自适应学习率算法(如 Adam)。学习率也可以与学习率衰减机制结合使用,在训练过程中逐步降低。

影响

  • 大学习率通常加快收敛速度,但可能不稳定,可能导致欠拟合;
  • 小学习率则更稳定,但速度较慢,可能导致过拟合。
  • 使用太高或太低的学习率都可能导致模型性能不佳。

动量(Momentum, β \beta β

描述

  • 动量是用来加速梯度下降方向减少更新抖动的参数,通常用于动量法。它通过引入梯度的历史信息,使得模型参数更新方向更平滑,减少震荡

选择标准

  • 动量的典型取值范围在0.9到0.99之间。这个参数决定了历史梯度对当前梯度的影响,值越大,历史梯度的影响越大

影响

  • 动量能够提高模型收敛速度,特别是在损失函数面比较复杂时有助于跳出局部极小值。但如果动量参数过大,可能导致模型更新过程中的震荡。

自适应学习率参数(如 Adam 的 β 1 \beta_1 β1, β 2 \beta_2 β2

描述

  • 自适应优化器(如 Adam、RMSProp)会对每个参数动态调整学习率。这些优化器通常有两个主要的超参数 β 1 \beta_1 β1 β 2 \beta_2 β2 ,分别控制一阶和二阶矩估计的衰减率
    • β 1 \beta_1 β1:控制梯度的动量,一般取 0.9;
    • β 2 \beta_2 β2:控制梯度平方的动量,通常取 0.999。

选择标准

  • 默认情况下, β 1 = 0.9 \beta_1 = 0.9 β1=0.9 β 2 = 0.999 \beta_2 = 0.999 β2=0.999 通常是一个不错的起点,适合大多数任务。但是在特殊任务中,可能需要调节这些参数以更好地控制学习率调整过程。

影响

  • β 1 \beta_1 β1 β 2 \beta_2 β2 主要影响 Adam 等优化器的稳定性和自适应能力
  • β 1 \beta_1 β1 过大:动量积累过强,模型更新滞后。
  • β 1 \beta_1 β1 过小:动量作用弱化,导致更新震荡。
  • β 2 \beta_2 β2 过大:自适应学习率变化过慢,优化器调整迟缓。
  • β 2 \beta_2 β2 过小:自适应学习率波动大,优化过程不稳定。

批量大小(Batch Size)

描述

  • 批量大小决定了每次参数更新时使用的数据样本数量。小批量(mini-batch)能引入噪声,帮助模型跳出局部最优大批量训练能让模型更稳定地收敛

选择标准

  • 通常情况下,批量大小与优化器配合使用。小批量训练能使模型在参数空间中更充分地探索,而大批量训练有助于加速收敛过程。常见的批量大小在32、64、128等,根据计算资源和模型大小进行调整。

影响

  • 较小的批量大小能够帮助模型避免陷入局部最优解,但训练速度较慢,可能导致欠拟合;
  • 较大的批量大小会使梯度估计更精确,从而使模型稳定,但可能收敛到局部最优,可能导致过拟合。

梯度裁剪(Gradient Clipping)

描述

  • 在某些任务(如序列生成任务、循环神经网络中),梯度爆炸问题会导致参数更新幅度过大。梯度裁剪是一种控制梯度最大值的方法,避免梯度爆炸

选择标准

  • 在梯度可能会爆炸的场景(如长序列建模、循环神经网络中),通常会设置梯度裁剪的阈值,如5.0 或1.0,以防止梯度过大。裁剪后,梯度的 L2 范数会限制在指定的阈值内。

影响

  • 梯度裁剪可以防止梯度更新过大,导致模型参数发散,尤其适合用于梯度不稳定的任务中。

权重衰减(Weight Decay, λ \lambda λ

描述

  • 权重衰减是一种正则化技术,通过在每次梯度更新时直接对权重参数乘以一个小于 1 的因子,从而限制权重的增长。从而减少参数的值,避免过拟合

选择标准

  • λ \lambda λ(权重衰减系数)的典型取值通常是 1 0 − 4 10^{-4} 104 1 0 − 6 10 ^{-6} 106之间。权重衰减的选择主要依赖于数据集的规模、模型复杂度以及是否存在过拟合。

影响

  • 适度的权重衰减可以有效防止模型过拟合,但过大的权重衰减会导致模型欠拟合。

说明

  • SGD 优化器中:可以直接使用 L2 正则化或者权重衰减,两者效果几乎相同。
  • Adam 优化器中:建议使用 AdamW,因为它将权重衰减与正则化分离,使得模型训练更稳定、优化过程更合理。

初始化参数(Weight Initialization)

描述

  • 权重初始化对优化过程至关重要,因为不恰当的初始化会导致训练速度变慢,甚至无法收敛。常见的初始化方法包括:
    • 随机初始化
    • Xavier 初始化
    • He 初始化
    • 常数初始化

参考:深度学习——评估指标、权重初始化、梯度消失和梯度爆炸

影响

  • 良好的初始化 能加速模型的收敛,并使得梯度在前向传播和反向传播时不会过快缩小或膨胀,尤其是在深层神经网络中非常重要。
  • 不当的初始化 可能会导致训练过程中出现梯度消失或梯度爆炸现象,从而导致网络收敛困难或训练时间极长。

在选择优化器的过程中,参数初始化的策略至关重要。以下是一些常见的选择方案:

  1. Xavier 初始化:适用于 Sigmoid 和 Tanh 激活函数,防止梯度爆炸或消失。
  2. He 初始化:适用于 ReLU 和其变种激活函数的网络,如深度卷积神经网络(CNN)。
  3. LeCun 初始化:适用于 SELU 激活函数,尤其是在自归一化神经网络中效果良好。
  4. Orthogonal 初始化:特别适用于 RNNs 和深层神经网络。
  5. 常数初始化:所有权重被设置为相同的值,常用于偏置项的初始化。

总结

在选择优化器的过程中,关键是根据具体任务的需求来确定 学习率、动量、自适应参数、批量大小 等参数。同时,诸如 权重衰减、梯度裁剪计算开销 等因素也必须纳入考量,以确保模型能够在有效的计算资源和时间范围内实现最佳性能。

最常见的策略是先使用自适应学习率优化器(如 Adam)快速收敛,然后用 SGD 进一步微调参数,以达到更好的全局优化效果。同时合理设置学习率衰减等机制,进一步提高训练效果。


激活函数

激活函数是核心组件之一,它赋予神经网络非线性能力,使得模型能够学习复杂的模式和函数映射。常见的激活函数有多种,每种激活函数都有其独特的特性、优缺点,并且往往是基于前一代激活函数的改进。

1) Sigmoid 函数

在这里插入图片描述

优点

  • 平滑输出:Sigmoid 函数将输入压缩到 [0, 1] 之间,输出可以解释为概率,特别适合用于二分类问题的输出层

缺点

  • 梯度消失问题:当输入过大或过小时,Sigmoid 的梯度接近 0,导致梯度消失,特别是在深层网络中,训练效率大大降低。
  • 非零中心:输出是非零中心的,这可能导致后续层的梯度更新不均衡。

适用场景

  • 用于 输出层,特别是二分类任务中,输出可以解释为概率值。
  • 在现代深层网络中,Sigmoid 逐渐被其他激活函数替代,因为它的梯度消失问题限制了其在深层网络中的表现。

2) Tanh 函数

在这里插入图片描述

优点

  • 零中心输出:与 Sigmoid 函数相比,Tanh 函数的输出在 [-1, 1] 之间,输出接近 0 时,使得正负输入在更新时的方向性保持一致,收敛更快。
  • 平滑性:类似 Sigmoid,它具有平滑的输出,在二分类问题中能产生强有力的激活效果。

缺点

  • 梯度消失问题:尽管 Tanh 的输出范围比 Sigmoid 更宽,但仍然会出现梯度消失的问题,尤其是在输入值非常大或非常小时。

基于 Sigmoid 的改进

  • Tanh 是对 Sigmoid 函数的改进,通过将输出范围调整为[-1, 1],零中心输出,使得网络能够更好地处理负值,并避免部分梯度不均衡问题

适用场景

  • 隐藏层 中用于信号标准化和处理负数数据。特别适合需要中心化输出的场景,但在深层网络中仍存在梯度消失问题。RNN中

3) ReLU(Rectified Linear Unit)

在这里插入图片描述

优点

  • 计算简单:ReLU 是线性分段函数,计算简单高效,不需要复杂的指数计算。
  • 减轻梯度消失问题:由于 ReLU 在 x > 0 的区间上保持梯度恒定为 1,避免了梯度消失问题,尤其在深层网络中表现优异。
  • 稀疏性:ReLU 的输出是稀疏的,当输入为负值时输出为 0,这有助于网络在某些场景下提升效率。

缺点

  • 死亡神经元、Dying ReLU问题:当 ReLU 的输入为负值时,神经元的输出会一直为 0,导致某些神经元永远不会被激活,进而无法参与模型的学习。
  • 不对称性:ReLU 只对输入的正值产生作用,负值部分被置为 0,导致某些场景下信息丢失。

基于 Tanh 的改进

  • ReLU 是一种非线性激活函数,但在设计上简化了 Tanh 和 Sigmoid 的复杂性,同时减轻了梯度消失的问题。

适用场景

  • 深度神经网络的 隐藏层 中使用最广泛的激活函数,特别适用于卷积神经网络(CNN)和全连接网络(FCN)。

4) Leaky ReLU

在这里插入图片描述

优点

  • 解决死亡神经元、Dying ReLU 问题:Leaky ReLU 在 x<=0 的区间上引入了一个小的【固定的】负斜率,避免了 ReLU 函数的死神经元问题。
  • 梯度流动:通过允许负值的输入产生非零梯度,模型可以更好地更新权重。

缺点

  • 不一定总是比 ReLU 更好:虽然 Leaky ReLU 解决了死神经元的问题,但是引入了负值的输出,可能对模型效果有微小的影响,在某些任务中,它并不总是比 ReLU 有显著优势。

基于 ReLU 的改进

  • Leaky ReLU 是 ReLU 的改进版,通过为负值输入保留一个小的斜率来避免 ReLU 中的神经元失活问题

适用场景

  • 常用于深层神经网络中,需要避免死神经元问题时。Leaky ReLU 的负斜率可以帮助梯度有效传播,特别适合于 生成对抗网络(GANs)RNN 等需要更稳定梯度流的场景。

5) Parametric ReLU(PReLU)

在这里插入图片描述
在这里插入图片描述

优点

  • 可学习的斜率:与 Leaky ReLU 不同,PReLU 中的 α \alpha α 是通过训练学习的,而不是一个固定值,这使得模型能够自动调整负值部分的斜率。
  • 提升模型性能它可以动态适应每个神经元的输入,在一些深层网络中,比固定的 ReLU 或 Leaky ReLU 表现更好。

缺点

  • 增加了模型复杂度:PReLU 引入了额外的参数 α \alpha α,这增加了模型的复杂性和训练成本。

基于 Leaky ReLU 的改进

  • PReLU 是对 Leaky ReLU 的改进,使得负斜率 α \alpha α 不再固定,而是通过学习调整,以便模型在训练过程中更加灵活。

适用场景

  • 适用于 深度卷积神经网络(CNN)其他大型深度网络,当模型需要更大的灵活性和动态调整时,PReLU 提供了更优的性能。

6) ELU(Exponential Linear Unit)

在这里插入图片描述
在这里插入图片描述

优点

  • 平滑负值处理:ELU 在 x<=0 时平滑输出,使得负值部分的输出更为柔和,解决了 ReLU 和 Leaky ReLU 在负值区间的突变问题。
  • 零中心输出:相比 ReLU,ELU 的输出更接近零,有助于梯度均衡更新,提升训练速度。

缺点

  • 计算复杂度高:ELU 的负值部分包含指数计算,比 ReLU 和 Leaky ReLU 的计算复杂度更高。

基于 ReLU 的改进

  • ELU 是对 ReLU 的改进,它解决了 ReLU 处理负值时的过度稀疏问题,并通过指数函数使负值部分更平滑

适用场景

  • ELU 常用于深层网络,如 卷积神经网络(CNN),尤其是需要更平滑输出的场景。它的平滑负值处理在一定程度上提高了模型的鲁棒性。

7) SELU(Scaled Exponential Linear Unit)

在这里插入图片描述

优点

  • 自归一化:SELU 激活函数的最大特点是具有自归一化(self-normalizing)特性,它能够使得神经元的输出保持零均值和单位方差,即便经过多层网络传递后,仍然保持这种归一化效果。这一特性有助于避免梯度消失和梯度爆炸问题。
  • 消除梯度消失和爆炸:SELU 通过引入缩放因子 (\lambda) 和 (\alpha),在负值区域引入非线性并进行归一化处理,有效防止梯度消失和爆炸。
  • 无需额外正则化:SELU 可以减少或完全消除对批归一化(Batch Normalization)等正则化方法的依赖,在某些场景中表现非常稳定。

缺点

  • 依赖特定初始化和架构:SELU 要发挥最大效果,必须搭配 LeCun 正态初始化(LeCun Normal Initialization)和 Alpha Dropout。这种依赖特定初始化和架构的特性使得 SELU 在某些情况下的灵活性较差。
  • 对输入数据敏感:SELU 要求输入数据标准化,即数据需要经过归一化处理(零均值、单位方差),否则效果可能较差。

基于 ELU 的改进

  • SELU 是对 ELU 函数的改进,保留了 ELU 在负值区间的平滑处理,同时通过添加缩放因子使输出具有自归一化特性。这种自归一化特性使得神经网络更稳定,并且减轻了对批归一化等正则化手段的需求。

适用场景

  • 自归一化神经网络(SNNs):SELU 常用于自归一化神经网络,它可以减少梯度消失和爆炸问题,尤其适用于深层网络。
  • 适合需要高度稳定的训练过程,并且对批归一化等方法不适合的场景,如某些 序列生成生成对抗网络(GANs) 中,SELU 可以提高网络的训练稳定性。

8) Swish(SiLU)

在这里插入图片描述
优点

  • 平滑且非单调:Swish 是一个非单调的函数(即它既有递增区间,也有递减区间),这有助于捕捉复杂的非线性特性。
  • 更好的性能:Swish 在一些任务中表现出优于 ReLU 和其他常见激活函数的性能,尤其是在深层网络中。

缺点

  • 计算复杂度略高:相比 ReLU,Swish 由于引入了 Sigmoid 计算,其计算复杂度稍高。

基于 ReLU 的改进

  • Swish 是一种由 Google 提出的激活函数,它保留了 ReLU 的线性部分,但结合了 Sigmoid 的平滑性,特别适用于深层神经网络。

适用场景

  • 深度卷积神经网络(CNN)Transformer 等模型中,Swish 在一些任务(如图像分类、目标检测)中表现优异,特别适合深度模型。
  • SD模型的三个组件中都用到了,GSC部件中的S。

总结

激活函数优点缺点适用场景
Sigmoid平滑输出,适合二分类问题梯度消失,非零中心二分类输出层
Tanh零中心输出,平滑梯度消失中间层或输出层
ReLU计算简单,减轻梯度消失死神经元问题,不对称输出深层网络,特别是卷积神经网络(CNN)
Leaky ReLU解决 ReLU 死神经元问题,保持梯度流动不一定总是比 ReLU 更好需要避免死神经元问题的深层网络
PReLU可学习的负斜率,灵活性高增加了模型的复杂度和训练时间深度卷积网络等大型模型
ELU平滑负值处理,零中心输出计算复杂度高需要平滑负值处理的深层网络
SELU自归一化,减轻梯度消失和爆炸,减少对正则化的依赖依赖特定的初始化和数据标准化自归一化神经网络(SNN),深度网络
Swish非单调,性能好计算复杂度略高深层网络,如图像分类和目标检测

每种激活函数有其适用场景,选择激活函数时,应根据任务的特性、模型结构以及计算资源综合考虑。

  • ReLU 和其变种在现代神经网络中应用广泛;
  • Swish 和 ELU 在某些深层网络中表现更优。
  • SELU 激活函数的最大优势在于其自归一化特性,适合深度神经网络的训练,尤其是在批归一化不适用的场景中表现优异。

各种优化的归一化介绍(本质上进行标准化)

下面的归一化。本质上进行的是标准化,与普通的归一化不同。
普通归一化(例如 BN、LN等)通常放在全连接层或卷积层之后,并在激活函数之前
权重归一化直接应用于层的权重参数,因此它通常在层的定义阶段就应用。例如,在卷积层或全连接层的权重初始化或定义时。

普通归一化过程

归一化方法的统一步骤:

  1. 确定归一化范围

    • 批归一化(Batch Normalization)
    • 层归一化(Layer Normalization)
    • 实例归一化(Instance Normalization)
    • 组归一化(Group Normalization)
  2. 计算均值和方差

    • 对归一化范围内的元素计算均值 μ \mu μ和方差 σ 2 \sigma^2 σ2

    • 公式如下:
      在这里插入图片描述

    • 这里 N 是归一化范围内的元素总数。

  3. 标准化

    • 将输入值进行标准化,使其具有均值 0 和方差 1:
      在这里插入图片描述

    • ϵ \epsilon ϵ 是一个小常数,用于避免分母为零。

  4. 缩放和平移

    • 为了让模型在归一化后仍能保持灵活性,引入可学习的缩放参数 γ \gamma γ 和平移参数 β \beta β
      在这里插入图片描述
    • 通过学习 γ \gamma γ β \beta β,模型可以调整归一化后的输出尺度和偏移,使其更加适应模型的需求。

普通归一化分类

1. 批归一化(Batch Normalization, BN)

原理

一个批量中的样本同一通道进行归一化。它将每个神经元的输出值转换为均值为0、方差为1的分布,随后再进行缩放和平移。批归一化的公式如
在这里插入图片描述

优点
  • 减少了内部协变量偏移问题,使得模型更稳定。
  • 加速收敛,允许使用更高的学习率。
  • 有轻微的正则化效果,因为批次间的随机性类似于dropout的效果
缺点
  • 对小批量数据敏感。当批次较小时,均值和方差估计不准,导致效果下降。
  • 在某些情况下(如RNN、Transformer中的序列任务),批次归一化的效果不如其他归一化方法。
  • 训练和推理时行为不同:推理时使用全局的均值和方差,因此需要额外的记录和计算。
使用场景
  • 适用于大多数卷积神经网络(CNN)和全连接网络(MLP),如图像分类、物体检测等任务中。
  • 不太适合处理序列任务,如RNN和LSTM。

2. 层归一化(Layer Normalization, LN)

原理

单个样本的所有通道进行归一化,不依赖批量。
在这里插入图片描述

优点
  • 对小批次数据敏感性较低,不依赖于批次大小。
  • 在处理序列数据(如RNN、Transformer)时效果更好,因为它不依赖于批次中的样本数。
缺点
  • 相比批归一化,计算量稍大。
  • 由于没有利用批次之间的信息,收敛速度可能稍慢。
使用场景
  • 适用于序列任务,如RNN、LSTM、Transformer模型等,尤其在自然语言处理和时间序列任务中广泛使用。

3. 实例归一化(Instance Normalization, IN)

原理

单张图像的每个通道分别独立进行归一化,不依赖批量。
在这里插入图片描述

优点
  • 适合风格迁移、图像生成等任务,因为在这些任务中,局部统计量(如样本和通道内的均值和方差)比批次统计量更重要。
  • 对风格变化的敏感度更高。
缺点
  • 不适合大多数分类任务,因为它只考虑样本的单个通道,不利用全局信息。
使用场景
  • 广泛用于图像生成任务中,如GAN和风格迁移(Style Transfer)等。
  • 在卷积神经网络中常见于图像处理任务。

4. 组归一化(Group Normalization, GN)

原理

组归一化是介于批归一化和层归一化之间的一种方法。它将单个样本的特征通道分为若干组,并在每组内进行归一化操作。这种方法避免了批归一化对批次大小的依赖,同时利用了更多的局部信息
在这里插入图片描述

优点
  • 对小批次训练效果良好,不依赖于批次大小。
  • 比层归一化更有效,特别是在卷积神经网络中,能很好地利用局部特征。
缺点
  • 对卷积核的大小和特征通道数敏感,不如批归一化适用于大批次训练任务。
使用场景
  • 适用于卷积神经网络(CNN)中的图像分类任务,特别是小批次训练场景。
  • 当批归一化效果不佳或批次较小时(如语义分割、目标检测等任务)表现优越。

权重归一化(Weight Normalization, WN)

原理

权重归一化是对神经网络中的权重进行归一化,而不是激活值(准备通过激活函数(如 ReLU、Sigmoid、Tanh 等)的值)。它通过对每个神经元的权重向量进行重新参数化,将权重向量的方向与其长度分离开

权重归一化主要针对模型的权重参数,确保训练中权重更新稳定。
批/层/实例/组归一化主要针对层的激活值,确保每层输出的稳定分布,从而提高训练的速度和稳定性

权重归一化的步骤

权重归一化的过程可以分为以下几个步骤:

  1. 重参数化权重

    • 将每个权重向量重参数化为方向向量长度标量的乘积。

    • 具体表示为:在这里插入图片描述

    • 通过这种重参数化,权重向量 w \mathbf{w} w的方向被标准化为单位长度(归一化),而 g 控制权重的尺度。

  2. 计算范数

    • 计算权重向量的 L2 范数:
      在这里插入图片描述

    • 该范数用于对权重向量进行标准化,使得其长度等于 1。

  3. 标准化权重

    • 使用计算出的范数将权重向量标准化,得到单位长度的方向向量:
      在这里插入图片描述

    • 这个标准化的方向向量 v ^ \hat{\mathbf{v}} v^仅包含方向信息,而没有尺度信息。

  4. 应用缩放

    • 使用可学习的尺度参数 g 来调整权重的实际尺度,使得网络能够灵活调整权重的大小:
      在这里插入图片描述

    • 通过引入这个缩放参数 g ,模型可以学习适当的权重大小,以适应不同的训练和优化需求。

  5. 权重更新

    • 在反向传播时,优化器会更新原始权重 v \mathbf{v} v和缩放参数 g 的值,而不是直接更新标准化后的权重 w \mathbf{w} w。这种重参数化不会改变优化问题,但可以提高训练的稳定性。
权重归一化的作用
  • 提高收敛速度:权重归一化通过标准化权重的长度,使得不同层的权重尺度在训练中保持一致,减轻了梯度爆炸或消失的问题,从而加速训练收敛。
  • 更稳定的训练过程:权重归一化减少了权重值的剧烈变化,使优化过程更加平滑和稳定。
  • 增强模型的可解释性:通过将权重分解为方向和尺度两个部分,模型的行为更容易解释,因为方向向量决定了特征的方向,而缩放参数决定了特征的重要性。
优点
  • 可以加速收敛,并提高模型的稳定性。
  • 在一定程度上减少了对批次大小的依赖。
缺点
  • 相较于批归一化,效果并不总是显著。
使用场景
  • 适用于卷积神经网络和全连接网络,尤其在需要加速训练时。
  • 在一些生成模型中(如GAN)也有应用。

归一化方法对比总结

以下是归一化方法对比总结,其中加入了每种归一化方法的原理:

归一化方法原理适用场景优点缺点
批归一化(BN)一个批量中的所有样本的同一通道进行归一化,基于批次的均值和方差调整卷积网络、全连接网络加快收敛,正则化,适应大批量训练对小批次敏感,序列任务效果差
层归一化(LN)单个样本的所有通道进行归一化,不依赖批量,计算层内均值和方差RNN、Transformer、序列任务适应小批次训练,不依赖批次大小计算量较大,收敛可能稍慢
实例归一化(IN)单张图像的每个通道分别独立进行归一化,计算每个样本的通道内均值和方差图像生成、风格迁移对风格敏感,适用于生成任务不适合分类任务,无法捕捉全局信息
组归一化(GN)单个样本的特征通道分组,对每一组进行归一化,计算组内均值和方差小批次训练,卷积网络适合小批次,不依赖批次大小对卷积核大小和通道数较敏感
权重归一化(WN)对神经元的权重向量进行归一化,将方向和长度分开重新参数化卷积网络、全连接网络、生成模型加速收敛,提高稳定性效果不一定显著,某些任务中不如BN

注意,虽然他们是叫做归一化(批归一化、层归一化、实例归一化),是将多个输入特征归一化为均值为 0、方差为 1 的分布,使得网络的各层输入保持在较为稳定的范围内。本质上是进行标准化。再进行引入两个可学习参数 γ 和 𝛽,分别表示缩放和平移操作。

BN、LN、IN、GN 等归一化方法都包含了标准化的步骤,即它们都会将激活值调整为均值为 0、方差为 1 的分布,关键区别在于这些方法在不同的范围内计算均值和方差,以适应不同的训练场景和模型结构:

在这里插入图片描述
在这里插入图片描述

  • Batch Normalization (BN):对一个批量中的所有样本的同一通道进行归一化。
  • Layer Normalization (LN):对单个样本的所有通道进行归一化,不依赖批量。
  • Instance Normalization (IN):对单张图像的每个通道分别独立进行归一化,不依赖批量。

正则化

L1 正则化(Lasso)

原理

在这里插入图片描述

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

L2 正则化(Ridge)

原理

在这里插入图片描述

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

Elastic Net 正则化

定义

Elastic Net 是 L1 和 L2 正则化的结合,它同时引入了 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 正则化

原理

在每次权重更新时,加入一个权重衰减项,使得权重参数逐渐减小,从而防止权重变得过大,减少模型的复杂度
权重衰减直接在梯度更新中对权重施加一个额外的缩减项,而不需要在损失函数中添加正则化项。也就是说,权重衰减是通过直接操作梯度更新公式中的权重来实现的。:
在这里插入图片描述
其中 λ 是正则化系数,控制惩罚项的强度。该惩罚项会在每次梯度更新时对权重施加一个减小的力度,从而限制权重的增长。

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

  1. 实现方式
    • L2 正则化:在传统的 L2 正则化中,惩罚项是直接添加在损失函数中。因此,反向传播时会计算这个惩罚项的梯度,并将它加入到权重的更新中。优化器仅对 Loss求导。
    • 权重衰减:在权重衰减中,惩罚项不直接添加到损失函数中,而是在梯度更新时作为一个附加的“权重缩小”操作。在每次更新时,优化器会自动将权重按比例缩小。例如,对于SGD 优化器,权重更新公式变成:

在这里插入图片描述

  1. 优化器依赖
    • 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)步骤中,通过正则化参数应用
对梯度的影响不影响权重的梯度更新计算对每次权重更新施加惩罚,直接减小权重值
是否显式操作是,对权重重参数化否,通过损失函数中添加正则项间接实现
  • 权重归一化:用于训练时提高稳定性和收敛速度,对权重进行重参数化分解,直接应用在层的权重上。
  • 权重衰减:用于防止过拟合,对损失函数中的权重平方项施加惩罚,通过优化器在每次权重更新时施加影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/911770.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用 Python搭建一个微型的HTTP服务器用于传输 2024/11/9

使用内置的 http.server 模块,来搭建微型服务器。 快速启动服务器http.server --- HTTP 服务器Python 3.13.0 文档 声明:文章代码部分 由 ai 生成 创建一个简单的文件共享服务器 进入 需要共享的目录 再打开cmd 输入以下代码 python -m http.server 8000 打开服务器 设置主…

虚拟机linux7.9下安装mysql

1.MySQL官网下载安装包&#xff1a; MySQL :: Download MySQL Community Server https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 2.解压文件&#xff1a; #tar xvzf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 3.移动文件&#…

Turtlebot3 buger 硬件与操作平台详细介绍

引言 TurtleBot3 有三个版本&#xff0c;分别是紧凑型的 Burger、功能更强的 Waffle和性能提升的 Waffle Pi&#xff0c;分别适用于不同的应用需求。使用 Raspberry Pi 作为主控单板计算机&#xff08;SBC&#xff09;&#xff0c;而 Waffle Pi 可以使用更强大的 NVIDIA Jetson…

LabVIEW导入并显示CAD DXF文件图形 程序见附件

LabVIEW导入并显示CAD DXF文件图形 程序见附件 LabVIEW导入并显示CAD DXF文件图形 程序见附件 - 北京瀚文网星科技有限公司 LabVIEW广泛应用于自动化、数据采集、图形显示等领域。对于涉及CAD图形的应用&#xff0c;LabVIEW也提供了一些方法来导入和显示CAD DXF文件&#x…

北斗智能定位平板终端|三防平板|北斗有源终端|北斗搜救终端

在当今快速发展的科技时代&#xff0c;智能设备的应用已经渗透到我们生活的方方面面&#xff0c;从日常娱乐到专业工作&#xff0c;无一不彰显着科技的魅力。特别是在高精度定位领域&#xff0c;随着全球卫星导航系统&#xff08;GNSS&#xff09;技术的不断进步&#xff0c;智…

40.第二阶段x86游戏实战2-初识lua

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

华为ENSP--ISIS路由协议

项目背景 为了确保资源共享、办公自动化和节省人力成本&#xff0c;公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议&#xff0c;现打算迁移到IS-IS路由协议&#xff0c;张同学正在该公司实习&#xff0c;为了提高实际工作的准确性和…

【Hadoop实训】Flume系统负载均衡测试

一、搭建并配置Flume机器 在master上&#xff0c;执行&#xff1a; scp -r /export/servers/flume slave1:/export/servers/scp -r /export/servers/flume slave2:/export/servers/scp /etc/profile slave1:/etc/profilescp /etc/profile slave2:/etc/profile 执行完上述指令后…

Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)

前言&#xff1a;多线程编程已经广泛开始使用&#xff0c;其可以充分利用系统资源来提升效率&#xff0c;但是线程安全问题也随之出现&#xff0c;它直接影响了程序的正确性和稳定性&#xff0c;需要对其进行深入的理解与解决。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解…

2024 CSS保姆级教程二 - BFC详解

前言 - CSS中的文档流 在介绍BFC之前&#xff0c;需要先给大家介绍一下文档流。​ 我们常说的文档流其实分为定位流、浮动流、普通流三种。​ ​ 1. 绝对定位(Absolute positioning)​ 如果元素的属性 position 为 absolute 或 fixed&#xff0c;它就是一个绝对定位元素。​ 在…

在 Spring Boot 中实时监控 Redis 命令流

前言 在 Redis 的日常使用和调试中&#xff0c;监控命令流有助于我们更好地理解 Redis 的工作状态。Redis 提供了 MONITOR 命令&#xff0c;可以实时输出 Redis 中所有客户端的命令请求&#xff0c;这一功能在调试和分析性能时非常有帮助。在 Spring Boot 项目中&#xff0c;我…

ReadKidz | 一个生成儿童故事绘本的平台

AI创作丨使用ReadKidz快速生成儿童故事绘本 ReadKidz 是一款AI平台&#xff0c;专为快速创作儿童故事绘本而设计。用户仅需输入简单提示词并根据喜好进行选择&#xff0c;便能生成精美的个性化绘本&#xff0c;适合家长、教师或创作者为孩子们创建有趣且富教育意义的故事。 使用…

aosp15系统窗口闪屏原生bug-dim图层相关-你会修改吗?

背景 近期各个大厂已经开始准备aosp15的系统rom适配工作了&#xff0c;应该是想2025年初开发发布相关的新机型&#xff0c;所以慢慢的我们也要开始适应aosp15版本的相关问题的修改和研究哈。 近期就有相关学员朋友在做android15相关的dialog开发时候&#xff0c;发现了一个严…

UML统一建模语言,学习笔记

目录 一、UML 的概述 二、UML 的主要图形类型 1. 类图 2. 对象图 3. 用例图 4. 序列图 5. 协作图 6. 状态图 7. 活动图 三、UML 的关系 1. 继承 2. 实现 3. 关联 4. 聚合 5. 组合 四、UML 的应用场景 1. 软件设计系统 2. 需求分析 3. 项目文档化 4. 团队协…

133.鸿蒙基础01

鸿蒙基础 1.自定义构建函数1. 构建函数-[Builder ](/Builder )2. 构建函数-传参传递(单向)3. 构建函数-传递参数(双向)4. 构建函数-传递参数练习5. 构建函数-[BuilderParam ](/BuilderParam ) 传递UI 2.组件状态共享1. 状态共享-父子单向2. 状态共享-父子双向3. 状态共享-后代组…

uniapp组件样式运行至小程序失效

文章目录 一、uniapp样式穿透打包运行至微信小程序失效 一、uniapp样式穿透打包运行至微信小程序失效 组件样式隔离文章参考 解决方案 options: {styleIsolation: "shared",},这个配置项改变了小程序组件的样式隔离模式&#xff0c;使得组件的样式能够共享和继承。…

在服务器里安装2个conda

1、安装新的conda 下载地址&#xff1a;Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 本文选择&#xff1a;Anaconda3-2023.03-1-Linux-x86_64.sh 安装&#xff1a;Ubuntu安装Anaconda详细步骤&#xff08;Ubuntu22.04.1&#xff…

软考系统分析师知识点三七:今日考试

前言 今年报考了11月份的软考高级&#xff1a;系统分析师。 考试时间&#xff1a;11月9日。 今日考试。 今日考试 上午&#xff1a;选择题、案例题&#xff0c;注意记一下选择题和案例题中出现的知识点。 中午&#xff1a;再次整理强记一下论文框架、论文知识点 下午&…

通过 Windows IIS 服务访问腾讯云 CFS 文件系统

互联网信息服务&#xff08;IIS&#xff09;可以像访问本地数据一样访问文件存储&#xff08;Cloud File Storage&#xff0c;CFS&#xff09;系统上的数据&#xff0c;并提供 Web 服务&#xff0c;实现网站存储与计算分离。本文介绍如何配置 IIS 访问 CFS 文件系统。 背景信息…

鸿蒙的进击之路

1. 题记&#xff1a; 为什么要写鸿蒙&#xff0c;因为她是华为的&#xff0c;为什么是华为就要写&#xff0c;因为华为背负了国人太多太多的包袱&#xff0c;或点赞或抨击。 我是强烈支持华为的&#xff0c;但我会客观公正地去评价华为的产品&#xff0c;就比如这篇博文&#…