正则化和优化算法区别

文章目录

深度学习优化中两个根本不同的概念: 正则化优化算法

核心概念区分:正则化 和 优化算法

  • 常见的优化算法

    • SGD (随机梯度下降)
    • SGD with Momentum
    • RMSprop
    • Adam
    • AdamW
    • Adagrad
    • Adadelta
    • Nesterov Accelerated Gradient
  • 正则化方式

    • L1正则化
    • L2正则化(权重衰减)
    • Dropout
    • Batch Normalization
    • Layer Normalization
    • Weight Clipping
  • 学习率调度器

    • StepLR
    • CosineAnnealingLR
    • ReduceLROnPlateau
      首先,我们必须明确一个根本区别:
  • 正则化(如L1、L2、权重衰减) :其首要目标是改变模型本身 ,通过限制模型的复杂度(具体表现为参数的大小),来提高 其在未见数据(测试集)上的泛化能力防止过拟合

    • 影响的是"最终学到的模型是什么样子"
  • 优化算法(如SGD, Momentum, AdaGrad, Adam) :其首要目标是高效、稳定地找到损失函数的一个(局部)最小值

    • 它关注的是"如何更快、更好地走到山谷底部"。它不改变优化目标(损失函数)的本质。

在计算梯度时,它们在参数更新公式这一步骤上的表面相似性 ,但背后的目的、时机和数学含义完全不同

第一部分:正则化家族(控制模型复杂度)

它们的共同点是在参数更新时,引入一个与参数值本身成正比的"衰减力"或"惩罚力" ,把参数值"拉向"零。
1. L2正则化(岭回归)

  • 做法:在原始的损失函数 L(θ) 后面直接加一项:L_reg(θ) = L(θ) + (λ/2) * ||θ||²。这里 λ 是正则化强度,||θ||² 是所有参数平方和(L2范数)。
  • 对梯度的影响 :计算新损失函数 L_reg 的梯度时,会多出一项 λ * θ。所以参数更新公式变为:
    θ = θ - η * (∇L(θ) + λ * θ)
    整理一下:θ = (1 - ηλ) * θ - η * ∇L(θ)
  • 效果:在每次更新时,先将参数缩小一点(乘以 1-ηλ),再沿着负梯度方向走。这强制让参数保持较小的绝对值,使模型更平滑,抗噪声能力更强。

2. 权重衰减

  • 做法:不修改损失函数。直接在标准的参数更新步骤里,在梯度更新之后,额外对参数进行缩放。
    θ = θ - η * ∇L(θ) - ηλ * θ
    整理一下:θ = (1 - ηλ) * θ - η * ∇L(θ)
  • 与L2正则化的关系:对于标准的随机梯度下降(SGD),权重衰减在数学上完全等价于L2正则化(您可以看到上面两个公式最终一样)。所以文档说它"更直接",因为它跳过了修改损失函数这一步,直接在更新规则里实现了"衰减"。
  • 注意:对于像Adam这样的自适应优化器,权重衰减和L2正则化不再严格等价,但目的相同------抑制参数增长。

3. L1正则化(套索回归)

  • 做法:在损失函数后加一项:L_reg(θ) = L(θ) + λ * |θ|。这里 |θ| 是参数绝对值之和(L1范数)。
  • 对梯度的影响:其梯度多出一项 λ * sign(θ)(sign是符号函数,θ>0时为1,θ<0时为-1)。更新公式类似:
    θ = θ - η * ∇L(θ) - ηλ * sign(θ)
  • 效果:它不仅让参数变小,更关键的是,它倾向于产生稀疏解(即让很多不重要的参数直接变成0),起到了特征选择的作用。

小结:正则化的核心是 - ηλ * θ 或 - ηλ * sign(θ) 这项,它像一个始终指向零点的"拉力"。

第二部分:优化算法家族(寻找损失最低点)

它们的共同点是只关心如何利用梯度 ∇L(θ) 信息来更新参数,目标是更快、更稳地收敛。它们不会主动引入对参数值 θ 本身的惩罚。
1. 随机梯度下降(SGD)

  • 做法 :最基础的方法。参数沿着当前批数据计算出的负梯度方向更新。
    θ = θ - η * ∇L(θ)
    η 是学习率,是一个超参数,需要手动设定,且在训练中通常固定或按计划衰减。
  • 问题:学习率选择困难;容易在沟壑方向震荡;收敛慢。

2. Momentum(动量)

  • 目的:解决SGD在山谷中震荡、下降慢的问题。引入"惯性"思想。
  • 做法 :不仅看当前梯度,还累积过去梯度的指数移动平均作为"速度" v
    v = β * v + (1 - β) * ∇L(θ) (有的版本直接用 v = β * v + ∇L(θ))
    θ = θ - η * v
  • 效果:在持续的方向上加速,在震荡的方向上抵消,从而更快、更稳地穿过平坦区域和沟壑。

3. AdaGrad(自适应梯度)

目的 :为每个参数自适应地调整学习率。适合处理稀疏数据或特征尺度差异大的情况。
做法 :累积每个参数历史梯度的平方和 s 。用这个平方和来缩放每个参数的学习率。
s = s + ∇L(θ)²

θ = θ - η * ∇L(θ) / √(s + ε) (ε 防止除零)

效果:对于频繁更新(梯度大)的参数,s 变大,学习率自动减小;对于不频繁更新(梯度小)的参数,s 小,学习率相对较大。问题:s 会一直单调增长,导致后期学习率过小,提前停止学习。

4. Adam(Adaptive Moment Estimation)

  • 目的:结合 Momentum(一阶矩) 和 AdaGrad(二阶矩) 的优点,成为目前最流行的默认优化器。

  • 做法

    • 计算梯度的一阶矩(动量均值) m二阶矩(梯度平方的均值) v ,都使用指数移动平均。
      m = β1 * m + (1 - β1) * ∇L(θ)
      v = β2 * v + (1 - β2) * ∇L(θ)²
    • 对 m 和 v 进行偏差校正(因为初始为0)。
    • 参数更新:θ = θ - η * m_hat / (√(v_hat) + ε)
  • 效果:像Momentum一样保持前进动力,同时又像AdaGrad那样为每个参数自适应调整步长,且避免了学习率过早衰减。

小结 :优化算法的核心是围绕梯度 ∇L(θ) 做文章,通过计算其动量、缩放其幅度等方式,设计更聪明的"下山策略"。它们不关心参数 θ 本身的大小。

总结与对比表

特性 正则化 (L1, L2, 权重衰减) 优化算法 (SGD, Momentum, AdaGrad, Adam)
首要目标 提高泛化能力,防止过拟合。控制模型复杂度。 加速训练,促进收敛。高效找到损失函数最小值。
作用对象 模型参数 (θ) 本身。施加一个指向零的力。 梯度 (∇L)。调整梯度的大小和方向用于更新。
数学本质 在优化问题中增加一个约束项(先验)。 求解无约束优化问题的数值迭代方法。
关键项 -ηλ * θ 或 -ηλ * sign(θ) (与参数值成正比) 基于 ∇L(θ) 构造的 v, s, m 等项。
超参数 正则化强度 λ。 学习率 η,动量系数 β,一阶矩系数 β1,二阶矩系数 β2 等。
关系 可以与任何优化算法结合使用。例如,你可以使用 SGD with Weight Decay,或者 AdamW(Adam with decoupled weight decay,一种更现代的将权重衰减与Adam结合的方式)。

最终回答您的问题:

L1、L2、权重衰减的"加减参数"是为了惩罚大参数 ,简化模型,属于正则化

Momentum、AdaGrad、Adam、SGD的"加入权重"是为了更好地利用梯度信息来指导更新方向/步长 ,属于优化算法

它们是深度学习训练中相辅相成的两个独立工具:优化算法决定"怎么走",正则化决定"不想走到某些地方(参数过大)"。在实际中,我们总是同时使用它们。

Dropout和批量归一化

此外对 Dropout(丢弃法) 和 批量归一化(Batch Normalization, BN) 进行分类和解释。

  1. Dropout:属于正则化技术
    Dropout 是一种在训练阶段使用的、通过修改神经网络结构本身来防止过拟合的技术。
  • 核心思想:在每次前向传播训练时,随机"丢弃"(即暂时屏蔽)网络中一部分神经元(如50%),让本次更新只在一个更瘦、随机的"子网络"上进行。

  • 工作原理

    • 训练时:每个神经元以概率 p 被临时设置为零(不激活),其输出被缩放(通常乘以 1/(1-p) 以保持训练时输出的总期望值不变)。
    • 预测时:使用完整的网络,所有神经元都激活,但权重需要乘以 1-p(如果训练时做了缩放,预测时则无需再调整)。
  • 效果与目的

    • 打破协同适应:防止网络过度依赖某些特定的神经元或特征组合,迫使每个神经元都能独立地提供有用特征,从而增强模型的鲁棒性和泛化能力。
    • 模型平均的近似:随机丢弃相当于训练了多个不同的子网络,预测时相当于这些子网络的"平均",这是一种高效的模型集成。

  • 与权重衰减的区别:权重衰减直接惩罚参数值的大小,而 Dropout 是通过随机改变网络激活的路径来增加噪声,间接约束模型复杂度。它们从不同角度实现正则化。

  1. 批量归一化(Batch Normalization) :主要属于优化技术但附带正则化效果
    BN 是一种通过改变网络层输入的分布来加速训练、稳定学习过程 的技术。它的主要目标是优化,但其实现方式带来了轻微的正则化副作用。
    核心思想 :对每一层的输入(即上一层的激活输出)进行归一化处理,使其均值为0、方差为1,然后再进行缩放和平移。
    工作原理(训练时)
    • 对于一个 mini-batch 的数据,计算该层输入的均值和方差。
    • 用这个均值和方差对该批次的输入进行标准化。
    • 引入两个可学习的参数(缩放因子 γ 和平移因子 β),对标准化后的值进行线性变换。这保证了网络的表达能力不会因归一化而下降。
  • 主要效果与目的(作为优化技术)
    • 缓解内部协变量偏移:使每一层的输入分布更稳定,极大缓解了深度网络训练中的梯度消失/爆炸问题。
    • 允许使用更高的学习率:训练过程更平稳,可以使用更大的学习率加速收敛。
    • 降低对参数初始化的敏感度:网络对初始权重的选择不再那么脆弱。
  • 附带的正则化效果
    • 因为在训练时,每个批次的均值和方差都是基于该批次样本估计的,这给网络激活值引入了依赖于批次内其他样本的噪声。
    • 这种噪声类似于 Dropout 和数据增强的效果,可以轻微提高模型的泛化能力。但在预测时,使用的是整个训练集上统计的固定均值和方差,所以这种正则化效果是有限的、非主要的。

总结对比

方法 主要类别 核心目标 作用阶段 如何工作
Dropout 正则化 防止过拟合,提高泛化能力 训练时随机丢弃神经元;预测时使用完整网络。 修改网络结构,增加噪声,打破神经元间的固定依赖。
批量归一化 优化技术(为主) 加速训练,稳定收敛,允许高学习率 训练时用批次统计;预测时用全局固定统计。 标准化层输入,稳定分布。其引入的批次噪声带来次要的正则化效果。
  1. 其他常见的正则化与优化方法

其他方法

除了已讨论的,还有以下重要方法:

正则化方法(防止过拟合):

  • 数据增强:对训练数据进行随机变换(如翻转、裁剪、旋转、颜色抖动等),人工扩大数据集,是最有效且直接的正则化手段。
  • 早停:在训练过程中持续监控验证集性能,当性能不再提升时即停止训练,防止模型在训练集上过度优化。
  • 标签平滑:在分类任务中,将硬标签(如 [0, 0, 1])稍微软化(如 [0.05, 0.05, 0.9]),可以减少模型对正确标签的过度自信,提高泛化性。

优化技术(改善训练过程):

  • 学习率调度:不是一种独立算法,而是策略。在训练中动态调整学习率(如步长衰减、余弦退火、热重启等),帮助模型更好地收敛。
  • 梯度裁剪:当梯度超过某个阈值时,将其缩放回阈值内。常用于训练RNN等模型,防止梯度爆炸,稳定训练。
  • 权重初始化:如 Xavier/Glorot 初始化、He 初始化等,正确的初始化能显著影响训练起点和收敛速度,是优化成功的前提。

最终归纳

在深度学习中,正则化技术(如权重衰减、Dropout、数据增强)和优化技术(如SGD/Adam、批量归一化、学习率调度)是相辅相成的两大工具箱。

  • 你需要优化技术 来让模型高效、稳定地学习("快速下山")。
  • 你需要正则化技术 来确保学到的模型不过于复杂和特异 ,能在新数据上表现良好("不去那些陡峭怪异的山谷")。
    在实际应用中,通常会组合使用多种技术,例如:使用 AdamW(带解耦权重衰减的Adam)作为优化器,配合 批量归一化 来加速训练,同时在网络中加入 Dropout 层,并对输入图像进行 数据增强,最后用 早停 来决定训练轮数。
相关推荐
li星野3 小时前
刷题:数组
数据结构·算法
kishu_iOS&AI3 小时前
深度学习 —— 神经网络(1)
人工智能·深度学习·神经网络
tankeven3 小时前
HJ182 画展布置
c++·算法
CS_Zero5 小时前
无人机路径规划算法——EGO-planner建模总结—— EGO-planner 论文笔记(一)
论文阅读·算法·无人机
杰梵5 小时前
聚酯切片DSC热分析应用报告
人工智能·算法
@BangBang5 小时前
leetcode (4): 连通域/岛屿问题
算法·leetcode·深度优先
Ulyanov5 小时前
像素迷宫:路径规划算法的可视化与实战
大数据·开发语言·python·算法
纤纡.5 小时前
轻松实现多语言文字识别与实时检测:PaddleOCR 实战指南
人工智能·深度学习·opencv·paddlepaddle
Mr_pyx5 小时前
【LeetCode Hot 100】 除自身以外数组的乘积(238题)多解法详解
算法·leetcode·职场和发展