宁波网站的优化,网站建设标志头像图片,培训学校,网络营销的常用策略文章目录 #x1f33a;深度学习面试八股汇总#x1f33a;优化算法方法梯度下降 (Gradient Descent, GD)动量法 (Momentum)AdaGrad (Adaptive Gradient Algorithm)RMSProp (Root Mean Square Propagation)Adam (Adaptive Moment Estimation)AdamW 优化算法总结 经验和实践建议… 文章目录 深度学习面试八股汇总优化算法方法梯度下降 (Gradient Descent, GD)动量法 (Momentum)AdaGrad (Adaptive Gradient Algorithm)RMSProp (Root Mean Square Propagation)Adam (Adaptive Moment Estimation)AdamW 优化算法总结 经验和实践建议使用 Adam 进行初始训练之后用 SGD 进行微调冷启动策略Cold Start Strategy大批量与小批量交替训练学习率逐步衰减Learning Rate Decay总结 主要考虑的参数学习率Learning Rate, η \eta η动量Momentum, β \beta β自适应学习率参数如 Adam 的 β 1 \beta_1 β1, β 2 \beta_2 β2批量大小Batch Size梯度裁剪Gradient Clipping权重衰减Weight Decay, λ \lambda λ初始化参数Weight Initialization总结 激活函数1) Sigmoid 函数2) Tanh 函数3) ReLURectified Linear Unit4) Leaky ReLU5) Parametric ReLUPReLU6) ELUExponential Linear Unit7) SELUScaled Exponential Linear Unit8) 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原理应用场景优点缺点 QA权重归一化和权重衰减的异同 深度学习面试八股汇总
优化算法
在深度学习中优化算法用于调整模型的参数如权重和偏置以最小化损失函数。
方法
梯度下降 (Gradient Descent, GD)
简介 梯度下降是最基本的优化算法通过计算损失函数相对于模型参数的梯度沿着梯度下降的方向更新参数以最小化损失函数。
批量梯度下降Batch Gradient Descent在每次迭代中使用整个训练集计算梯度计算开销大但收敛稳定。随机梯度下降Stochastic Gradient Descent, SGD每次迭代只使用一个样本计算梯度效率高但容易在训练中产生波动。小批量梯度下降Mini-batch Gradient Descent在每次迭代中使用一小部分训练集进行梯度计算平衡了批量梯度下降和随机梯度下降的优缺点。
优点 简单直观梯度下降的原理简单计算损失函数的梯度沿着梯度最速下降方向进行优化。 广泛适用梯度下降可以应用于各种类型的机器学习问题包括线性回归、逻辑回归和神经网络等。在许多优化问题中梯度下降是基本的选择适用范围广泛。 可扩展性强梯度下降可以在不同的规模和复杂度下使用。通过调整批量大小如批量梯度下降、随机梯度下降、小批量梯度下降可以适应不同数据集的规模。 良好的收敛性对于凸优化问题梯度下降可以保证收敛到全局最优解。而在非凸问题中梯度下降也能找到局部最优解具有良好的泛化能力。
缺点 收敛速度慢梯度下降尤其是批量梯度下降Batch Gradient Descent收敛速度慢。在大型数据集上批量梯度下降的效率较低。 容易陷入局部最优在非凸优化问题中梯度下降容易陷入局部最优解。 对学习率敏感梯度下降依赖于超参数学习率(learning rate) 的选择。如果学习率太小收敛速度非常慢如果学习率太大梯度下降可能无法收敛甚至在训练过程中发散。 梯度消失或梯度爆炸问题在深层神经网络中由于链式法则梯度值会在反向传播时逐层累积容易导致梯度消失或梯度爆炸问题导致网络训练不稳定或无法更新参数。
适用场景
适用于数据量较大的场景如深度学习中的大规模数据训练。
动量法 (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对每个参数采用不同的学习率自适应学习率并根据历史梯度的平方和自动调整每个参数的学习率。自适应学习率适合稀疏数据学习率快速衰减稀疏特征数据场景RMSProp在 AdaGrad 基础上通过引入梯度的二阶矩来平衡学习率的更新解决了 AdaGrad 学习率快速衰减的问题。学习率调整更稳健解决 AdaGrad 衰减问题需调节超参数非平稳目标、强化学习Adam结合了 Momentum 和 RMSProp采用自适应学习率和动量来更新参数适应性强收敛速度快。 利用了梯度的一阶矩动量又利用了梯度的二阶矩RMSprop。收敛快适应性强鲁棒性好可能过早收敛需调整多个超参数大多数深度学习任务图像分类、语言模型AdamW改进的 Adam 算法结合权重衰减正则化将权重衰减与梯度更新过程分离解决过拟合。改进的正则化避免权重衰减导致的过拟合问题增加超参数调试复杂度正则化场景如图像分类、NLP任务
GDGradient Descent梯度下降每次迭代使用整个数据集计算梯度并更新模型参数确保模型稳步收敛但在大数据集上计算成本高且更新缓慢。SGDStochastic Gradient Descent每次参数更新只使用一个或小批量样本进行计算虽然计算效率高但更新不稳定容易出现震荡。Momentum通过在每次梯度更新时引入动量动量会积累之前梯度的方向帮助加速收敛减少震荡。适合噪声较多的数据。AdaGrad自适应调整学习率梯度较大的参数学习率变小适合处理稀疏数据但学习率在训练后期可能过小导致收敛缓慢。RMSProp在 AdaGrad 基础上引入滑动平均梯度的二阶矩的机制使学习率更新更加稳健避免学习率过快衰减。常用于强化学习或非平稳目标。Adam结合了 Momentum 和 RMSProp 的优势采用自适应学习率和动量机制使其在大多数深度学习任务中表现良好收敛快且鲁棒性好。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
作用
学习率衰减 可以让模型在训练初期使用较高的学习率进行快速探索在后期逐渐减小学习率进行更精细的调整从而帮助模型更加稳定地收敛到全局最优解。
解释
小学习率的优缺点 优点 精细调整、避免震荡、适合后期微调小学习率能够使模型在接近最优解时进行更细致的参数调整。能避免震荡使模型更加平稳地优化。在模型训练的后期小学习率能够帮助模型更精确地逼近全局最优。缺点 收敛速度慢、可能陷入局部最优小学习率会导致参数更新幅度较小因此模型的收敛速度较慢特别是在训练初期时。由于更新幅度较小模型可能会陷入局部最优解难以跳出并探索更优的解。 大学习率的优缺点 优点 收敛速度快、跳出局部最优大学习率可以使模型在训练初期迅速调整参数快速探索参数空间帮助模型尽快接近局部最优解。较大的参数更新幅度有助于模型摆脱局部最优探索更优的解。 缺点 容易震荡或发散、难以精细调整在接近最优解时大学习率可能导致参数更新幅度过大导致模型在局部区域内反复跳跃甚至发散无法收敛。大学习率使模型的参数更新过于粗糙难以在训练后期进行精细优化。
总结
小学习率适合训练的后期帮助模型精细调整参数、稳定收敛。更容易过拟合。大学习率适合训练初期帮助模型快速探索参数空间、提高收敛速度。更容易欠拟合。
常见的学习率衰减策略包括
指数衰减学习率按照某个指数函数衰减阶梯衰减在训练的某些阶段手动减小学习率自适应衰减当模型的损失停止下降时自动减小学习率。
总结
将 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 β10.9 和 β 2 0.999 \beta_2 0.999 β20.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} 10−4到 1 0 − 6 10 ^{-6} 10−6之间。权重衰减的选择主要依赖于数据集的规模、模型复杂度以及是否存在过拟合。
影响
适度的权重衰减可以有效防止模型过拟合但过大的权重衰减会导致模型欠拟合。
说明
SGD 优化器中可以直接使用 L2 正则化或者权重衰减两者效果几乎相同。Adam 优化器中建议使用 AdamW因为它将权重衰减与正则化分离使得模型训练更稳定、优化过程更合理。
初始化参数Weight Initialization
描述
权重初始化对优化过程至关重要因为不恰当的初始化会导致训练速度变慢甚至无法收敛。常见的初始化方法包括 随机初始化Xavier 初始化He 初始化常数初始化。
参考深度学习——评估指标、权重初始化、梯度消失和梯度爆炸
影响
良好的初始化 能加速模型的收敛并使得梯度在前向传播和反向传播时不会过快缩小或膨胀尤其是在深层神经网络中非常重要。不当的初始化 可能会导致训练过程中出现梯度消失或梯度爆炸现象从而导致网络收敛困难或训练时间极长。
在选择优化器的过程中参数初始化的策略至关重要。以下是一些常见的选择方案
Xavier 初始化适用于 Sigmoid 和 Tanh 激活函数防止梯度爆炸或消失。He 初始化适用于 ReLU 和其变种激活函数的网络如深度卷积神经网络CNN。LeCun 初始化适用于 SELU 激活函数尤其是在自归一化神经网络中效果良好。Orthogonal 初始化特别适用于 RNNs 和深层神经网络。常数初始化所有权重被设置为相同的值常用于偏置项的初始化。
总结
在选择优化器的过程中关键是根据具体任务的需求来确定 学习率、动量、自适应参数、批量大小 等参数。同时诸如 权重衰减、梯度裁剪 和 计算开销 等因素也必须纳入考量以确保模型能够在有效的计算资源和时间范围内实现最佳性能。
最常见的策略是先使用自适应学习率优化器如 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) ReLURectified 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 在 x0 的区间上引入了一个小的【固定的】负斜率避免了 ReLU 函数的死神经元问题。梯度流动通过允许负值的输入产生非零梯度模型可以更好地更新权重。
缺点
不一定总是比 ReLU 更好虽然 Leaky ReLU 解决了死神经元的问题但是引入了负值的输出可能对模型效果有微小的影响在某些任务中它并不总是比 ReLU 有显著优势。
基于 ReLU 的改进
Leaky ReLU 是 ReLU 的改进版通过为负值输入保留一个小的斜率来避免 ReLU 中的神经元失活问题。
适用场景
常用于深层神经网络中需要避免死神经元问题时。Leaky ReLU 的负斜率可以帮助梯度有效传播特别适合于 生成对抗网络GANs 和 RNN 等需要更稳定梯度流的场景。
5) Parametric ReLUPReLU 优点
可学习的斜率与 Leaky ReLU 不同PReLU 中的 α \alpha α 是通过训练学习的而不是一个固定值这使得模型能够自动调整负值部分的斜率。提升模型性能它可以动态适应每个神经元的输入在一些深层网络中比固定的 ReLU 或 Leaky ReLU 表现更好。
缺点
增加了模型复杂度PReLU 引入了额外的参数 α \alpha α这增加了模型的复杂性和训练成本。
基于 Leaky ReLU 的改进
PReLU 是对 Leaky ReLU 的改进使得负斜率 α \alpha α 不再固定而是通过学习调整以便模型在训练过程中更加灵活。
适用场景
适用于 深度卷积神经网络CNN 和 其他大型深度网络当模型需要更大的灵活性和动态调整时PReLU 提供了更优的性能。
6) ELUExponential Linear Unit 优点
平滑负值处理ELU 在 x0 时平滑输出使得负值部分的输出更为柔和解决了 ReLU 和 Leaky ReLU 在负值区间的突变问题。零中心输出相比 ReLUELU 的输出更接近零有助于梯度均衡更新提升训练速度。
缺点
计算复杂度高ELU 的负值部分包含指数计算比 ReLU 和 Leaky ReLU 的计算复杂度更高。
基于 ReLU 的改进
ELU 是对 ReLU 的改进它解决了 ReLU 处理负值时的过度稀疏问题并通过指数函数使负值部分更平滑。
适用场景
ELU 常用于深层网络如 卷积神经网络CNN尤其是需要更平滑输出的场景。它的平滑负值处理在一定程度上提高了模型的鲁棒性。
7) SELUScaled 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 在负值区间的平滑处理同时通过添加缩放因子使输出具有自归一化特性。这种自归一化特性使得神经网络更稳定并且减轻了对批归一化等正则化手段的需求。
适用场景
自归一化神经网络SNNsSELU 常用于自归一化神经网络它可以减少梯度消失和爆炸问题尤其适用于深层网络。适合需要高度稳定的训练过程并且对批归一化等方法不适合的场景如某些 序列生成 或 生成对抗网络GANs 中SELU 可以提高网络的训练稳定性。
8) Swish(SiLU) 优点
平滑且非单调Swish 是一个非单调的函数即它既有递增区间也有递减区间这有助于捕捉复杂的非线性特性。更好的性能Swish 在一些任务中表现出优于 ReLU 和其他常见激活函数的性能尤其是在深层网络中。
缺点
计算复杂度略高相比 ReLUSwish 由于引入了 Sigmoid 计算其计算复杂度稍高。
基于 ReLU 的改进
Swish 是一种由 Google 提出的激活函数它保留了 ReLU 的线性部分但结合了 Sigmoid 的平滑性特别适用于深层神经网络。
适用场景
深度卷积神经网络CNN 和 Transformer 等模型中Swish 在一些任务如图像分类、目标检测中表现优异特别适合深度模型。SD模型的三个组件中都用到了GSC部件中的S。
总结
激活函数优点缺点适用场景Sigmoid平滑输出适合二分类问题梯度消失非零中心二分类输出层Tanh零中心输出平滑梯度消失中间层或输出层ReLU计算简单减轻梯度消失死神经元问题不对称输出深层网络特别是卷积神经网络CNNLeaky ReLU解决 ReLU 死神经元问题保持梯度流动不一定总是比 ReLU 更好需要避免死神经元问题的深层网络PReLU可学习的负斜率灵活性高增加了模型的复杂度和训练时间深度卷积网络等大型模型ELU平滑负值处理零中心输出计算复杂度高需要平滑负值处理的深层网络SELU自归一化减轻梯度消失和爆炸减少对正则化的依赖依赖特定的初始化和数据标准化自归一化神经网络SNN深度网络Swish非单调性能好计算复杂度略高深层网络如图像分类和目标检测
每种激活函数有其适用场景选择激活函数时应根据任务的特性、模型结构以及计算资源综合考虑。
ReLU 和其变种在现代神经网络中应用广泛Swish 和 ELU 在某些深层网络中表现更优。SELU 激活函数的最大优势在于其自归一化特性适合深度神经网络的训练尤其是在批归一化不适用的场景中表现优异。 各种优化的归一化介绍本质上进行标准化
下面的归一化。本质上进行的是标准化与普通的归一化不同。 普通归一化例如 BN、LN等通常放在全连接层或卷积层之后并在激活函数之前。 权重归一化直接应用于层的权重参数因此它通常在层的定义阶段就应用。例如在卷积层或全连接层的权重初始化或定义时。
普通归一化过程
归一化方法的统一步骤 确定归一化范围 批归一化Batch Normalization层归一化Layer Normalization实例归一化Instance Normalization组归一化Group Normalization 计算均值和方差 对归一化范围内的元素计算均值 μ \mu μ和方差 σ 2 \sigma^2 σ2。 公式如下 这里 N 是归一化范围内的元素总数。 标准化 将输入值进行标准化使其具有均值 0 和方差 1 ϵ \epsilon ϵ 是一个小常数用于避免分母为零。 缩放和平移 为了让模型在归一化后仍能保持灵活性引入可学习的缩放参数 γ \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 等的值。它通过对每个神经元的权重向量进行重新参数化将权重向量的方向与其长度分离开。 权重归一化主要针对模型的权重参数确保训练中权重更新稳定。 批/层/实例/组归一化主要针对层的激活值确保每层输出的稳定分布从而提高训练的速度和稳定性。 权重归一化的步骤
权重归一化的过程可以分为以下几个步骤 重参数化权重 将每个权重向量重参数化为方向向量和长度标量的乘积。 具体表示为 通过这种重参数化权重向量 w \mathbf{w} w的方向被标准化为单位长度归一化而 g 控制权重的尺度。 计算范数 计算权重向量的 L2 范数 该范数用于对权重向量进行标准化使得其长度等于 1。 标准化权重 使用计算出的范数将权重向量标准化得到单位长度的方向向量 这个标准化的方向向量 v ^ \hat{\mathbf{v}} v^仅包含方向信息而没有尺度信息。 应用缩放 使用可学习的尺度参数 g 来调整权重的实际尺度使得网络能够灵活调整权重的大小 通过引入这个缩放参数 g 模型可以学习适当的权重大小以适应不同的训练和优化需求。 权重更新 在反向传播时优化器会更新原始权重 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 NormalizationBN通常被认为是一种加速训练的技巧但它也有正则化的效果。BN 通过对每一批次的输入进行归一化使得模型训练更加稳定防止过拟合。
原理
BN 通过将每个批次的激活值标准化为均值为 0方差为 1然后通过可学习的缩放和平移参数恢复特征分布。由于批次间的变化引入了一定的噪声这对模型有一定的正则化作用。
使用场景
广泛应用于卷积神经网络CNN和全连接网络FCN中。
优点
提升训练速度并有一定的正则化效果。适合卷积神经网络和全连接神经网络能有效减少过拟合。
缺点
在小批量训练时效果不稳定。引入了额外的计算开销。
权重衰减Weight Decay
权重衰减是一种通过直接对权重进行衰减的正则化方法它等价于 L2 正则化。
原理
在每次权重更新时加入一个权重衰减项使得权重参数逐渐减小从而防止权重变得过大减少模型的复杂度。 权重衰减直接在梯度更新中对权重施加一个额外的缩减项而不需要在损失函数中添加正则化项。也就是说权重衰减是通过直接操作梯度更新公式中的权重来实现的。 其中 λ 是正则化系数控制惩罚项的强度。该惩罚项会在每次梯度更新时对权重施加一个减小的力度从而限制权重的增长。 L2正则化和权重衰减目标一致、数学形式相似但是并不是同一种手段 实现方式 L2 正则化在传统的 L2 正则化中惩罚项是直接添加在损失函数中。因此反向传播时会计算这个惩罚项的梯度并将它加入到权重的更新中。优化器仅对 Loss求导。权重衰减在权重衰减中惩罚项不直接添加到损失函数中而是在梯度更新时作为一个附加的“权重缩小”操作。在每次更新时优化器会自动将权重按比例缩小。例如对于SGD 优化器权重更新公式变成 优化器依赖 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)训练后移除神经网络中不重要的连接或神经元减少模型规模降低计算量提升泛化能力。移动设备、嵌入式系统、大规模模型压缩适合资源受限设备和加速任务。减少模型复杂度提升推理速度适合资源受限设备。需要额外剪枝步骤可能影响模型性能需要重新训练。
这个表格总结了常见的正则化方法涵盖了其工作原理、使用场景、优点和缺点。根据具体任务和数据集可以选择合适的正则化方法来提高模型的泛化能力和训练效率。 QA
权重归一化和权重衰减的异同
二者都作用于模型的权重。都是用来提升泛化能力。但是有下面的不同
特性权重归一化权重衰减主要目的提升训练稳定性帮助模型更快收敛正则化防止过拟合实现方式将权重分解为范数和方向损失函数中增加 L2 正则化项将权重缩小应用位置在使用权重归一化的层例如卷积层或全连接层中在优化器的更新如 SGD、Adam步骤中通过正则化参数应用对梯度的影响不影响权重的梯度更新计算对每次权重更新施加惩罚直接减小权重值是否显式操作是对权重重参数化否通过损失函数中添加正则项间接实现
权重归一化用于训练时提高稳定性和收敛速度对权重进行重参数化分解直接应用在层的权重上。权重衰减用于防止过拟合对损失函数中的权重平方项施加惩罚通过优化器在每次权重更新时施加影响。