【深度学习】5. 正则化方法:从 Weight Decay 到 BatchNorm、GroupNorm, Dropout、DropConnect, Early Stopping 与归一化技术

深度学习中的正则化方法全解析:从 Weight Decay 到 BatchNorm、Dropout、Early Stopping 与归一化技术

本文系统梳理了深度学习中各类正则化方法,包括:

  • 显式正则化:L1/L2 正则、Weight Decay、Bayesian 视角下的先验项
  • 训练过程正则化:Early Stopping、输入加噪、Dropout、DropConnect
  • 网络结构正则化:数据增强、标签平滑、模型稀疏性控制
  • 归一化机制:BatchNorm、LayerNorm、GroupNorm 等在不同任务下的效果对比

一、正则化是什么(What is Regularization)

在机器学习中,“正则化”有广义与狭义两种定义:

  • 广义定义:任何可以防止模型过拟合、改善训练过程的方法都可以归为正则化;
  • 狭义定义:在损失函数中添加显式惩罚项(如 L1/L2 范数)以约束模型复杂度。

例子:多项式拟合中的过拟合问题

考虑一个多项式回归模型:

y = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + ⋯ + a n x n + ε y = a_0 + a_1 x + a_2 x^2 + a_3 x^3 + \cdots + a_n x^n + \varepsilon y=a0+a1x+a2x2+a3x3++anxn+ε

当多项式次数 n n n 很大时,即使模型可以很好拟合训练数据,也容易在测试集上产生剧烈震荡。这就是典型的过拟合现象。

二、如何防止过拟合

常见的防止过拟合方法包括:

  • 增加数据量(More data)

  • 丢弃不必要的假设(Simplify hypothesis class)

  • 正则化:通过显式或隐式方式,控制模型复杂度或优化行为

    经典正则化:约束假设的一些主要方法。

  • 其他类型的正则化:数据增强、提前停止等。

我们关注的核心问题是:

如何以数学的方式形式化“控制模型复杂度”?

三、正则化作为约束优化

3.1 硬约束形式(Hard Constraint)

将正则化约束写作优化问题中的一个限制条件:

min ⁡ θ   1 n ∑ i = 1 n ℓ ( θ , x i , y i ) s.t.  R ( θ ) ≤ r \min_{\theta} \ \frac{1}{n} \sum_{i=1}^{n} \ell(\theta, x_i, y_i) \quad \text{s.t.} \ R(\theta) \leq r θmin n1i=1n(θ,xi,yi)s.t. R(θ)r

其中:

  • ℓ ( θ ; x i , y i ) \ell(\theta; x_i, y_i) (θ;xi,yi) 是损失函数;
  • R ( θ ) R(\theta) R(θ) 是正则化函数(如 ∥ θ ∥ 2 2 \|\theta\|_2^2 θ22);
  • r r r 是允许的复杂度上界。

这意味着:在训练误差最小化的同时,参数复杂度不得超过阈值。

3.2 软约束形式(Soft Constraint)

更常见的做法是将约束移入目标函数,作为惩罚项加权求和:

min ⁡ θ   1 n ∑ i = 1 n ℓ ( θ , x i , y i ) + λ R ( θ ) \min_{\theta} \ \frac{1}{n} \sum_{i=1}^{n} \ell(\theta, x_i, y_i) + \lambda R(\theta) θmin n1i=1n(θ,xi,yi)+λR(θ)

其中:

  • λ > 0 \lambda > 0 λ>0 是超参数,控制损失项和正则项的相对权重;
  • R ( θ ) R(\theta) R(θ) 通常选为 ℓ 1 \ell_1 1 ℓ 2 \ell_2 2 范数。

这是一种“软性限制”,允许复杂度稍微增长但给予惩罚。

四、正则化的贝叶斯解释(Regularization as Bayesian Prior)

在贝叶斯视角下,正则化可以被解释为对模型参数施加先验概率分布。深度学习中的参数 θ \theta θ 并非是确定的最优解,而是从一个分布中抽取的可能值。

4.1 贝叶斯学习中的基本概念

  • 一切皆为分布(Bayesian view):我们对模型假设、参数等都使用概率分布建模。
  • 先验分布(Prior) p ( θ ) p(\theta) p(θ),表示在看到数据之前,我们对参数的信念。
  • 似然函数(Likelihood) p ( { x i , y i } ∣ θ ) p(\{x_i, y_i\} \mid \theta) p({xi,yi}θ),表示在参数 θ \theta θ 给定的条件下,数据的生成概率。
  • 后验分布(Posterior) p ( θ ∣ { x i , y i } ) p(\theta \mid \{x_i, y_i\}) p(θ{xi,yi}),表示在看到数据之后我们对参数的更新信念。

4.2 贝叶斯定理

根据贝叶斯公式,有:

p ( θ ∣ { x i , y i } ) = p ( θ ) ⋅ p ( { x i , y i } ∣ θ ) p ( { x i , y i } ) p(\theta \mid \{x_i, y_i\}) = \frac{p(\theta) \cdot p(\{x_i, y_i\} \mid \theta)}{p(\{x_i, y_i\})} p(θ{xi,yi})=p({xi,yi})p(θ)p({xi,yi}θ)

其中:

  • 分子由 先验分布似然函数 构成;
  • 分母 p ( { x i , y i } ) p(\{x_i, y_i\}) p({xi,yi}) 是边缘似然,可以看作是一个常数,不依赖于 θ \theta θ

因此我们有:

log ⁡ p ( θ ∣ { x i , y i } ) ∝ log ⁡ p ( θ ) + log ⁡ p ( { x i , y i } ∣ θ ) \log p(\theta \mid \{x_i, y_i\}) \propto \log p(\theta) + \log p(\{x_i, y_i\} \mid \theta) logp(θ{xi,yi})logp(θ)+logp({xi,yi}θ)

4.3 最大后验估计(MAP)

我们希望找到最可能的参数值,即最大化后验概率:

θ ^ MAP = arg ⁡ max ⁡ θ log ⁡ p ( θ ∣ { x i , y i } ) \hat{\theta}_{\text{MAP}} = \arg \max_{\theta} \log p(\theta \mid \{x_i, y_i\}) θ^MAP=argθmaxlogp(θ{xi,yi})

等价于:

θ ^ MAP = arg ⁡ max ⁡ θ [ log ⁡ p ( θ ) + log ⁡ p ( { x i , y i } ∣ θ ) ] \hat{\theta}_{\text{MAP}} = \arg \max_{\theta} \left[ \log p(\theta) + \log p(\{x_i, y_i\} \mid \theta) \right] θ^MAP=argθmax[logp(θ)+logp({xi,yi}θ)]

我们将其拆分为两个部分理解:

  • 正则项(Regularization): log ⁡ p ( θ ) \log p(\theta) logp(θ),表示我们对参数应满足某些先验假设;
  • 损失项(Likelihood / MLE): log ⁡ p ( { x i , y i } ∣ θ ) \log p(\{x_i, y_i\} \mid \theta) logp({xi,yi}θ),对应最大似然估计(MLE)的目标函数。

因此,正则化就是在最大化似然目标之外,加上了一个对参数行为的约束项。

4.4 先验形式与正则类型的对应关系

先验分布形式 对应的正则项
高斯分布 N ( 0 , σ 2 ) \mathcal{N}(0, \sigma^2) N(0,σ2) L2 正则化: λ ∣ θ ∣ 2 2 \lambda |\theta|_2^2 λθ22
拉普拉斯分布 Laplace ( 0 , b ) (0, b) (0,b) L1 正则化: λ ∣ θ ∣ 1 \lambda |\theta|_1 λθ1

从贝叶斯角度来看,正则化的选择就是先验分布的选择
选择 L2 正则意味着我们相信参数应该集中在 0 附近且分布平滑;选择 L1 正则意味着我们期望大多数参数为 0(产生稀疏解)。

五、Weight Decay(权重衰减)

权重衰减(Weight Decay)是最经典的显式正则化方法之一,它通过抑制参数值变大,从而控制模型复杂度,降低过拟合风险。

其核心思想是:在每一步更新时都对参数施加衰减,使其逐渐趋近于零。

5.1 损失函数形式

权重衰减对应的优化目标为带有 L2 范数的正则化损失函数:

L total ( θ ) = L ( θ ) + α 2 ∥ θ ∥ 2 2 \mathcal{L}_{\text{total}}(\theta) = \mathcal{L}(\theta) + \frac{\alpha}{2} \|\theta\|_2^2 Ltotal(θ)=L(θ)+2αθ22

其中:

  • L ( θ ) \mathcal{L}(\theta) L(θ) 是原始损失函数(如交叉熵、均方误差);
  • ∥ θ ∥ 2 2 \|\theta\|_2^2 θ22 是参数的平方和;
  • α \alpha α 是正则化系数,控制 L2 惩罚项的强度。

5.2 梯度更新公式推导

对该目标函数求梯度,有:

∇ θ L total ( θ ) = ∇ θ L ( θ ) + α θ \nabla_\theta \mathcal{L}_{\text{total}}(\theta) = \nabla_\theta \mathcal{L}(\theta) + \alpha \theta θLtotal(θ)=θL(θ)+αθ

代入标准 SGD 更新规则:

θ ← θ − η ( ∇ θ L ( θ ) + α θ ) \theta \leftarrow \theta - \eta \left( \nabla_\theta \mathcal{L}(\theta) + \alpha \theta \right) θθη(θL(θ)+αθ)

将其拆分整理得到:

θ ← ( 1 − η α ) θ − η ∇ θ L ( θ ) \theta \leftarrow (1 - \eta \alpha) \theta - \eta \nabla_\theta \mathcal{L}(\theta) θ(1ηα)θηθL(θ)

可以看出:每一步更新中,参数都会乘上一个小于 1 的衰减因子 ( 1 − η α ) (1 - \eta \alpha) (1ηα),这就是所谓的“权重衰减”。

5.3 本质分析

独立于研究人员工作的工程师注意到,如果你只是在每次训练迭代中减少每个权重的值,你就会得到一个改进的训练模型,它不太可能过拟合

将参数衰减写成更新中的一部分,其本质就是:

在不显式修改损失函数的前提下,通过优化器实现 L2 正则化的效果。

L2方法有坚实的基础理论,但实现起来很复杂。权重衰减方法“刚好有效”,但实现起来很简单

注意:在某些深度学习库(如 PyTorch)的实现中,Weight Decay 是直接添加在梯度更新中的,而不是加入损失函数里

5.4 与 L2 正则化的等价性

回顾我们前面讲到的软约束正则化:

min ⁡ θ   1 n ∑ i = 1 n ℓ ( θ ; x i , y i ) + λ ∥ θ ∥ 2 2 \min_\theta \ \frac{1}{n} \sum_{i=1}^n \ell(\theta; x_i, y_i) + \lambda \|\theta\|_2^2 θmin n1i=1n(θ;xi,yi)+λθ22

与 Weight Decay 的损失函数形式是完全一致的。二者仅在实现路径上略有不同,但数学等价。

5.5 使用建议

  • 权重衰减在神经网络中极为常用,尤其是在训练全连接层、卷积层时;
  • 对于有归一化操作(如 BatchNorm)或偏置项,通常不添加正则化
  • 推荐值范围: α ∈ [ 1 e − 5 , 1 e − 2 ] \alpha \in [1e^{-5}, 1e^{-2}] α[1e5,1e2]

5.6 与优化器的关系

  • SGD 中,Weight Decay 与 L2 正则严格等价;
  • Adam、RMSprop 等自适应优化器中,Weight Decay 的实现方式需要区别于直接添加 L2 项,推荐使用 AdamW(Decoupled Weight Decay)算法进行分离实现。

六、对输入添加噪声(Add Noise to the Input)

除了在目标函数中显式加入正则项,或者在优化器中控制权重的更新,我们也可以通过对输入添加噪声的方式进行正则化。这是一种隐式的正则化方法

这种方法的核心思想是:

通过随机扰动训练样本,迫使模型学会对输入的扰动具有鲁棒性,从而提升泛化性能。

6.1 噪声注入形式

对输入添加噪声的方式可以有多种类型:

  • 加性高斯噪声(Additive Gaussian noise)

    对原始输入 x x x 添加均值为 0 的正态噪声:

    x ~ = x + ϵ , ϵ ∼ N ( 0 , σ 2 I ) \tilde{x} = x + \epsilon, \quad \epsilon \sim \mathcal{N}(0, \sigma^2 I) x~=x+ϵ,ϵN(0,σ2I)

  • 乘性噪声(Multiplicative noise)

    例如在 Dropout 中使用的伯努利遮罩:

    x ~ = x ⊙ z , z ∼ Bernoulli ( 1 − p ) \tilde{x} = x \odot z, \quad z \sim \text{Bernoulli}(1 - p) x~=xz,zBernoulli(1p)

  • 随机遮挡输入维度

    在图像任务中,这种技术与 Cutout、Masking 等技术类似。

6.2 数学解释:输入噪声 ≈ 参数正则化

设模型输出为 f ( x , θ ) f(x, \theta) f(x,θ),我们将输入加入噪声 ϵ \epsilon ϵ 得到 x ~ = x + ϵ \tilde{x} = x + \epsilon x~=x+ϵ,此时模型输出变为:

f ( x + ϵ , θ ) f(x + \epsilon, \theta) f(x+ϵ,θ)

ϵ \epsilon ϵ 很小时,泰勒展开该输出(在 x x x 处)为:

f ( x + ϵ , θ ) ≈ f ( x , θ ) + ϵ ⊤ ∇ x f ( x , θ ) f(x + \epsilon, \theta) \approx f(x, \theta) + \epsilon^\top \nabla_x f(x, \theta) f(x+ϵ,θ)f(x,θ)+ϵxf(x,θ)

对加噪后的输出求平方损失并取期望:

E ϵ [ ( f ( x + ϵ , θ ) − y ) 2 ] \mathbb{E}_\epsilon \left[ (f(x + \epsilon, \theta) - y)^2 \right] Eϵ[(f(x+ϵ,θ)y)2]

近似等价于:

( f ( x , θ ) − y ) 2 + σ 2 ∥ ∇ x f ( x , θ ) ∥ 2 (f(x, \theta) - y)^2 + \sigma^2 \|\nabla_x f(x, \theta)\|^2 (f(x,θ)y)2+σ2xf(x,θ)2

也就是说:

在输入添加高斯噪声,相当于对模型的输入梯度做正则化。

这种正则化鼓励模型对输入的扰动不敏感,提高鲁棒性。

在输入中加入噪声:一种特殊的增强。

6.3 小结

方法 正则化解释
加性高斯噪声 等价于输入梯度正则项 ∣ ∇ x f ( x , θ ) ∣ 2 |\nabla_x f(x, \theta)|^2 xf(x,θ)2
Dropout(遮挡) 等价于对结构采样的模型集成
图像遮挡、抖动、随机剪裁等数据增强 提高模型对局部扰动、视角变化的泛化能力

这种类型的正则化属于 数据级干预,但其效果可以形式化地理解为隐式参数约束,因此也纳入正则化范畴。

七、Early Stopping(早停)

Early Stopping(早停)是一种简单有效的正则化技术,它的基本思想是:

在训练误差持续下降但验证误差开始上升时,及时停止训练,避免过拟合。

7.1 训练过程中的行为

在训练神经网络时,我们通常会监控训练集与验证集上的误差变化:

  • 初期:训练误差和验证误差都下降;
  • 中期:训练误差继续下降,验证误差趋于平稳;
  • 后期:训练误差下降但验证误差反弹 —— 过拟合开始。

此时若继续训练,会导致模型对训练数据“记忆”过强,泛化能力下降。Early Stopping 通过以下流程避免这一问题:

7.2 Early Stopping 实施流程

  1. 在每次 epoch 结束后,记录当前模型在验证集上的误差;
  2. 如果验证误差连续 k k k 次没有下降,则停止训练;
  3. 返回验证误差最低时对应的模型参数作为最终模型。

该过程引入了一个超参数 patience,表示可以容忍多少次不下降。

7.3 示例策略

  • 设定最大训练轮数为 100;
  • 每轮记录验证误差;
  • 如果连续 5 次验证误差没有下降,则停止训练;
  • 将验证误差最小时的模型权重保存并返回。

这种策略的图示如下:

Epoch Training Loss Validation Loss Stop?
1 0.9 0.8
10 0.5 0.4
20 0.3 0.35
30 0.2 0.37 ✖️
35 0.15 0.38

验证集在第 20 epoch 最优,因此返回第 20 轮模型。

7.4 优点与缺点

优点
  • 高效:训练过程中动态判断是否停止,节省训练时间;
  • 无需改动模型结构:直接基于已有训练流程,仅需额外记录一份权重;
  • 简单实用:适配各种模型与任务;
缺点
  • 需要验证集:必须有足够的验证样本,不能把所有数据用于训练;
  • 停止点不稳定:验证误差本身有波动,可能受随机因素影响;
  • 模型最佳性能点需判断:不是最后一个 epoch 的权重,而是验证误差最低点。

7.5 如何重用验证数据?

有时我们希望最大化数据利用率,避免把数据永久分成训练 / 验证集,可以采取如下策略:

  1. 两阶段训练

    • 第一阶段:正常训练 + Early Stopping;
    • 第二阶段:将训练集与验证集合并,继续训练至前一轮的 early stop 点。
  2. 从 early stop 点继续

    • 保留第一阶段 best model;
    • 加入验证集重新训练,直到验证误差再次低于前一轮的 best training loss。

7.6 Early Stopping 的正则化本质

Early Stopping 实际上相当于在训练轮数 T T T 上施加了一个软约束,防止模型完全拟合训练集。

可以视为在优化过程中提前打断,间接控制模型复杂度,因此它是一种有效的“过程级正则化”技术。

八、Dropout(随机失活)

Dropout 是一种被广泛应用于神经网络训练的正则化技术,由 Hinton 等人提出。其主要思想是在训练过程中随机屏蔽神经元的输出,以此防止神经元之间过度依赖(共适应 co-adaptation)导致的过拟合。

8.1 Dropout 的动机

在标准神经网络中,每个神经元都会对训练数据进行响应。但在小样本或过拟合风险大的情形下:

  • 某些神经元可能“抱团”形成依赖结构;
  • 训练集上表现优异,但泛化能力差;
  • 网络整体变得“脆弱”。

Dropout 通过在训练时随机遮蔽神经元,迫使模型在每个小批次上适应不同的子网络,从而有效提升鲁棒性与泛化能力。

8.2 Dropout 的训练阶段机制

设神经元的输出为 h = [ h 1 , h 2 , . . . , h n ] h = [h_1, h_2, ..., h_n] h=[h1,h2,...,hn],我们在训练阶段生成一个遮罩向量 z ∈ { 0 , 1 } n z \in \{0, 1\}^n z{0,1}n,其中每一位 z i z_i zi 独立采样自伯努利分布:

z i ∼ Bernoulli ( 1 − p ) z_i \sim \text{Bernoulli}(1 - p) ziBernoulli(1p)

Dropout 后的输出为:

h ~ i = h i ⋅ z i \tilde{h}_i = h_i \cdot z_i h~i=hizi

或者记为:

h ~ = h ⊙ z \tilde{h} = h \odot z h~=hz

其中 ⊙ \odot 表示逐元素乘法, p p p 是 Dropout rate,表示神经元被“丢弃”的概率。

【深度学习】5. 正则化方法:从 Weight Decay 到 BatchNorm、GroupNorm, Dropout、DropConnect, Early Stopping 与归一化技术_第1张图片

8.3 测试阶段的输出缩放

由于训练阶段的激活被随机屏蔽,因此在测试阶段,我们需要对神经元的输出进行缩放以保持数学期望不变。

方法一:训练时不缩放,测试时乘 ( 1 − p ) (1 - p) (1p)

训练阶段:

h ~ train = h ⊙ z \tilde{h}^{\text{train}} = h \odot z h~train=hz

h i train = { w , 概率  p 0 , 概率  ( 1 − p ) h_i^{\text{train}} = \begin{cases} w, & \text{概率 } p \\ 0, & \text{概率 } (1 - p) \end{cases} hitrain={w,0,概率 p概率 (1p)

测试阶段:
h ~ test = ( 1 − p ) ⋅ h \tilde{h}^{\text{test}} = (1 - p) \cdot h h~test=(1p)h

方法二(Inverted Dropout现代做法):训练时缩放,测试阶段不变

训练阶段:

h ~ train = h ⊙ z 1 − p \tilde{h}^{\text{train}} = \frac{h \odot z}{1 - p} h~train=1phz

测试阶段:

h ~ test = h \tilde{h}^{\text{test}} = h h~test=h

这种方法称为 Inverted Dropout,在 TensorFlow、PyTorch 等主流框架中为默认实现方式。

8.4 Dropout 的数学解释:期望输出一致性

我们希望无论是否 Dropout,神经元在训练与测试阶段的期望输出保持一致。考虑某个神经元输出 h i h_i hi,在训练时以概率 1 − p 1 - p 1p 保留:

E [ z i ⋅ h i ] = ( 1 − p ) ⋅ h i \mathbb{E}[z_i \cdot h_i] = (1 - p) \cdot h_i E[zihi]=(1p)hi

因此,在测试阶段如果使用全部神经元输出 h i h_i hi,则需乘以 ( 1 − p ) (1 - p) (1p) 才能与训练期望一致。

8.5 Dropout 与模型集成的关系

Dropout 的一个核心观点是:

在训练过程中,Dropout 实际上训练了一个巨大的子网络集合,并且这些网络共享权重

具体来说:

  • 每次训练使用一个子网络(由 Dropout mask 决定);
  • 每次前向传播相当于从 2 n 2^n 2n 个网络结构中随机采样一个;
  • 最终测试时使用“平均网络”来综合这些子模型的预测。

因此,Dropout 可以被视为一种廉价的、参数共享的模型集成方法(Ensemble)。

8.6 Dropout 的隐式正则化行为

Dropout 并不显式添加正则项到损失函数,而是通过噪声干扰机制实现了如下行为:

  • 防止神经元之间互相依赖(共适应);
  • 提升网络对输入扰动与特征缺失的鲁棒性;
  • 相当于引入输入噪声 + 权重正则 + 网络稀疏性。

8.7 Dropout 的实际应用建议

  • 推荐用于全连接层(FC),在 CNN 中效果不如 BatchNorm;
  • Dropout rate 常设为:
    • 输入层: p = 0.1 ∼ 0.2 p = 0.1 \sim 0.2 p=0.10.2
    • 隐藏层: p = 0.3 ∼ 0.5 p = 0.3 \sim 0.5 p=0.30.5
  • 不推荐与 BatchNorm 同时使用(梯度稳定性降低);
  • 在小数据集或模型容易过拟合时效果最好;
  • 推理阶段必须关闭 Dropout,或等价还原其期望值。

8.8 对比weight decay的优势

  • Dropout是无标度的:Dropout不会在需要时惩罚大权重的使用

  • Dropout不受参数缩放的影响:如果某一层的权重按常数增大,而另一层的权重按常数减小,则Dropout不受影响

九、DropConnect(随机连接失活)

DropConnect 是 Dropout 的一种推广,由 Wan et al. 在 2013 年提出。其基本思想是:

不是随机屏蔽神经元的输出,而是随机屏蔽权重连接本身。

换句话说,Dropout 是对激活值 h h h 做随机失活,而 DropConnect 是对权重矩阵 W W W 的每一个元素做随机失活。

【深度学习】5. 正则化方法:从 Weight Decay 到 BatchNorm、GroupNorm, Dropout、DropConnect, Early Stopping 与归一化技术_第2张图片

9.1 DropConnect 的定义

在前向传播中,某一层的计算通常为:

z = W x + b z = W x + b z=Wx+b

在 DropConnect 中,权重矩阵 W W W 被随机遮蔽为 W ~ \tilde{W} W~,即:

W ~ i j = W i j ⋅ m i j , m i j ∼ Bernoulli ( 1 − p ) \tilde{W}_{ij} = W_{ij} \cdot m_{ij}, \quad m_{ij} \sim \text{Bernoulli}(1 - p) W~ij=Wijmij,mijBernoulli(1p)

也可以写为:

z = ( W ⊙ M ) x + b z = (W \odot M) x + b z=(WM)x+b

其中:

  • M M M 是与 W W W 同形状的二值遮罩矩阵;
  • 每个元素独立采样,表示连接是否被保留。

DropConnect 是对网络中**连接级别(weights)**进行随机屏蔽,而非神经元输出级别。

9.2 DropConnect 与 Dropout 的对比

特性 Dropout DropConnect
随机屏蔽目标 激活值 h h h 权重参数 W W W
屏蔽位置 层输出阶段 层输入前,权重矩阵
实现复杂度 较低,易于实现 较高,需构造完整权重遮罩
是否加噪 是,直接对 forward path 加扰动 是,但更细粒度
能否推广 是,DropConnect ⊃ Dropout 是,更通用

Dropout 可视为 DropConnect 的特例:如果一整行或一整列连接全部为 0,就等价于将某个神经元屏蔽掉。

9.3 DropConnect 的训练与推理

训练时,每个连接以概率 p p p 被失活,使用遮罩矩阵 M M M 进行前向与反向传播。

推理阶段不能使用随机遮罩,需对所有连接使用期望权重:

E [ W ~ i j ] = ( 1 − p ) W i j \mathbb{E}[\tilde{W}_{ij}] = (1 - p) W_{ij} E[W~ij]=(1p)Wij

因此,测试阶段通常使用“期望连接”:

z test = ( ( 1 − p ) ⋅ W ) x + b z^{\text{test}} = ((1 - p) \cdot W) x + b ztest=((1p)W)x+b

也可采用 Monte Carlo 采样多个 M M M 得到多个预测再平均(不过计算开销较大,实践中较少使用)。

9.4 DropConnect 的正则化本质

DropConnect 从参数空间引入扰动,具有如下效果:

  • 强制每次迭代使用不同连接组合,避免模型依赖特定权重;
  • 等价于引入权重级别的噪声扰动
  • 隐式鼓励参数稀疏性与泛化性。

DropConnect 类似于在训练过程中构造子网络,但与 Dropout 构造的是不同维度的子结构。

9.5 使用建议与局限

  • DropConnect 在某些网络结构(如线性层、RNN)中表现良好;
  • 由于操作在权重层面,计算代价大于 Dropout;
  • 实际部署中较少单独使用,一般作为研究补充方案;
  • 在 RNN 中可防止长期依赖崩溃(常与 zoneout 结合使用)。

十、Batch Normalization(批归一化)

在机器学习算法中,优化过程中涉及的函数对归一化很敏感

例如:两点之间的距离用欧氏距离表示。如果其中一个特征值的范围很广,则距离将由该特定特征控制。

在归一化之后,每个特征对最终距离的贡献大致成比例。

一般来说,有特征缩放的梯度下降比没有特征缩放的梯度下降收敛得快得多。

数值计算的数值稳定性的良好实践,并避免在求解方程组时出现病态。

Batch Normalization(BN)是一种广泛使用的训练加速和正则化技术。其主要目标是:

缓解“内部协变量偏移”(Internal Covariate Shift)问题,从而加速训练并提升模型泛化性能。

cup game的游戏为例,一群人用杯子传递声音,问题是系统性的,是由有缺陷的杯造成的。

BN 在深度网络中尤其有效,可以稳定训练过程、允许更大的学习率,并具有一定的正则化效果。

10.1 内部协变量偏移(Internal Covariate Shift)

神经网络中的每一层都将输入映射到新的表示空间,后续层的输入分布会随着前一层参数更新而不断变化。

这种输入分布的变化称为 内部协变量偏移

问题在于:

  • 每次前一层参数更新后,后一层需要重新适应新的输入分布;
  • 训练收敛速度慢;
  • 网络不稳定,梯度传播困难。

BN 通过标准化每一层的输入,使其均值为 0,方差为 1,从而保持输入分布稳定。

BN减小协变量移位(Covariate Shift)。这是一个组分激活分布的变化。通过使用BN,每个神经元的激活(s形)(或多或少)成为高斯分布,即它通常不活跃,有时有点活跃,很少非常活跃.

协变量移位是不可取的,因为后面的层必须不断适应分布类型的变化

BN减少了爆炸和消失梯度的影响,因为每个梯度都大致为正态分布。没有BN,一层的低活化度会导致下一层的低活化度,然后下一层的更低活化度,以此类推

10.2 BatchNorm 的训练阶段操作

设某层输入为 x = [ x 1 , x 2 , . . . , x m ] x = [x_1, x_2, ..., x_m] x=[x1,x2,...,xm],表示一个 mini-batch 的同一维度上的激活值,BN 的过程如下:

  1. 计算 mini-batch 的均值与方差

μ B = 1 m ∑ i = 1 m x i , σ B 2 = 1 m ∑ i = 1 m ( x i − μ B ) 2 \mu_B = \frac{1}{m} \sum_{i=1}^{m} x_i, \quad \sigma_B^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_B)^2 μB=m1i=1mxi,σB2=m1i=1m(xiμB)2

  1. 标准化每个样本

x ^ i = x i − μ B σ B 2 + ϵ \hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} x^i=σB2+ϵ xiμB

其中 ϵ \epsilon ϵ 是一个小常数,用于数值稳定。

  1. 线性变换(可学习参数)

BN 并不会直接使用 x ^ i \hat{x}_i x^i,而是引入两个可学习参数 γ \gamma γ β \beta β

y i = γ x ^ i + β y_i = \gamma \hat{x}_i + \beta yi=γx^i+β

γ \gamma γ 控制缩放, β \beta β 控制平移。这样 BN 不会限制网络的表达能力。

10.3 推理阶段(测试阶段)

在测试阶段,不能使用当前 batch 的均值与方差,因为此时是单一样本或数据分布已变。

BN 使用**滑动平均(moving average)**存储的训练阶段统计值:

  • 移动平均的均值 μ EMA \mu_{\text{EMA}} μEMA
  • 移动平均的方差 σ EMA 2 \sigma_{\text{EMA}}^2 σEMA2

推理时使用:

x ^ = x − μ EMA σ EMA 2 + ϵ , y = γ x ^ + β \hat{x} = \frac{x - \mu_{\text{EMA}}}{\sqrt{\sigma_{\text{EMA}}^2 + \epsilon}}, \quad y = \gamma \hat{x} + \beta x^=σEMA2+ϵ xμEMA,y=γx^+β

10.3.1 推理时使用无偏方差估计

训练阶段中,BatchNorm 使用的是 mini-batch 内的均值和方差:

μ B = 1 m ∑ i = 1 m x i , σ B 2 = 1 m ∑ i = 1 m ( x i − μ B ) 2 \mu_{\mathcal{B}} = \frac{1}{m} \sum_{i=1}^m x_i, \quad \sigma_{\mathcal{B}}^2 = \frac{1}{m} \sum_{i=1}^m (x_i - \mu_{\mathcal{B}})^2 μB=m1i=1mxi,σB2=m1i=1m(xiμB)2

但这个 σ B 2 \sigma_{\mathcal{B}}^2 σB2 是一个有偏估计(biased estimator),它的期望值小于整体分布的真实方差 Var [ x ] \text{Var}[x] Var[x]

为了在测试(推理)阶段使用准确的无偏方差,我们要将多个 batch 的方差均值进行修正:

Var [ x ] ← m m − 1 ⋅ E B [ σ B 2 ] \text{Var}[x] \leftarrow \frac{m}{m - 1} \cdot \mathbb{E}_{\mathcal{B}}[\sigma_{\mathcal{B}}^2] Var[x]m1mEB[σB2]

其中 m m m 是 batch size。这个修正因子 m m − 1 \frac{m}{m-1} m1m 可以保证推理时所使用的方差估计是无偏的,从而提升稳定性和数值精度。

10.4 BatchNorm 的优化与正则化作用

BN 带来了两类改进:

1. 加速收敛
  • 由于每层输入分布更稳定,后续层梯度传播更平滑;
  • 可使用更大的学习率;
  • 不容易陷入鞍点或梯度爆炸/消失。
2. 隐式正则化

BN 使用 batch 内部的统计量估计均值与方差,这会引入噪声扰动(batch-to-batch variance),从而具备一定的正则化效果。

尤其在小 batch 情况下,这种方差的估计不稳定性具有正则化特性,防止过拟合。

10.5 BN 与 Dropout 的关系

  • BN 和 Dropout 都具有正则化作用;
  • 两者通常不同时使用(特别是在同一层):
    • BN 引入稳定性;
    • Dropout 引入不稳定性;
  • 实践中:
    • 对于卷积网络,优先使用 BN;
    • 对于小数据场景或全连接层,可尝试 Dropout。

10.6 BN 的适用位置

BN 通常被插入在:

Linear or Conv  →  BatchNorm  →  Activation \text{Linear or Conv} \ \rightarrow \ \text{BatchNorm} \ \rightarrow \ \text{Activation} Linear or Conv  BatchNorm  Activation

即先归一化,再激活。这样可以保证激活函数的输入具有良好的分布特性。

10.7 BN 的限制与变种

  • BN 对 batch size 敏感(小 batch 时效果差);

    由于批统计估计不准确,当批大小变小时,BN的误差迅速增大

  • 对 RNN 结构适应性较弱;

  • 推理阶段行为与训练阶段不同,需正确区分;

  • 衍生方法:

    • Layer Normalization(LN)
    • Instance Normalization(IN)
    • Group Normalization(GN)

十一、其他归一化方法:LayerNorm、InstanceNorm、GroupNorm

除了 BatchNorm(BN)以外,还有许多归一化方法被提出,适用于不同的网络结构或应用场景。它们的共同目标是解决内部协变量偏移的问题,但在归一化的粒度与方式上各有差异。

11.1 Layer Normalization(LN)

LayerNorm 是在 NLP 模型中非常常用的归一化方式,特别适用于 RNN、Transformer 等结构。

与 BN 的区别在于:

  • BN 在 batch 维度归一化,即对每个特征维度在 batch 内求均值和方差
  • LN 在特征维度归一化,即对每一个样本自身的所有维度求均值和方差

假设一个样本的激活为向量 x ∈ R d x \in \mathbb{R}^d xRd,LayerNorm 的计算方式为:

μ = 1 d ∑ i = 1 d x i , σ 2 = 1 d ∑ i = 1 d ( x i − μ ) 2 \mu = \frac{1}{d} \sum_{i=1}^d x_i, \quad \sigma^2 = \frac{1}{d} \sum_{i=1}^d (x_i - \mu)^2 μ=d1i=1dxi,σ2=d1i=1d(xiμ)2

归一化结果为:

x ^ i = x i − μ σ 2 + ϵ , y i = γ x ^ i + β \hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}}, \quad y_i = \gamma \hat{x}_i + \beta x^i=σ2+ϵ xiμ,yi=γx^i+β

其中 γ , β \gamma, \beta γ,β 是可学习的缩放和平移参数, ϵ \epsilon ϵ 是防止除零的小常数。

LayerNorm 具有以下特点:

  • 独立于 batch size,适用于小 batch 或 batch size 为 1 的情况
  • 非常适合 Transformer 等需要位置无关建模的网络结构

11.2 Instance Normalization(IN)

InstanceNorm 最初是为风格迁移任务设计的,主要用于图像生成模型中。

它的归一化维度是:

  • 对每一个样本、每一个通道单独归一化
  • 即每个样本的每个 feature map 单独计算均值和方差

给定张量 x ∈ R B × C × H × W x \in \mathbb{R}^{B \times C \times H \times W} xRB×C×H×W,对第 b b b 个样本,第 c c c 个通道,其均值和方差为:

μ b c = 1 H W ∑ i = 1 H ∑ j = 1 W x b c i j , σ b c 2 = 1 H W ∑ i = 1 H ∑ j = 1 W ( x b c i j − μ b c ) 2 \mu_{bc} = \frac{1}{HW} \sum_{i=1}^H \sum_{j=1}^W x_{bcij}, \quad \sigma^2_{bc} = \frac{1}{HW} \sum_{i=1}^H \sum_{j=1}^W (x_{bcij} - \mu_{bc})^2 μbc=HW1i=1Hj=1Wxbcij,σbc2=HW1i=1Hj=1W(xbcijμbc)2

归一化结果为:

x ^ b c i j = x b c i j − μ b c σ b c 2 + ϵ \hat{x}_{bcij} = \frac{x_{bcij} - \mu_{bc}}{\sqrt{\sigma^2_{bc} + \epsilon}} x^bcij=σbc2+ϵ xbcijμbc

InstanceNorm 的特点:

  • 不考虑 batch 维度,因此推理与训练一致
  • 可用于生成式模型,提升图像风格一致性

11.3 Group Normalization(GN)

GroupNorm 是为了解决 BN 在小 batch 下失效的问题,由 Facebook AI 研究院提出。

它将每个通道分组后,在组内做归一化。比如将 32 个通道分为 4 组,每组 8 个通道,然后在每组中计算均值和方差。

假设张量形状为 x ∈ R B × C × H × W x \in \mathbb{R}^{B \times C \times H \times W} xRB×C×H×W,设有 G G G 个组,则每组大小为 C / G C/G C/G

每一组的归一化操作为:

μ g = 1 m ∑ k = 1 m x k , σ g 2 = 1 m ∑ k = 1 m ( x k − μ g ) 2 \mu_{g} = \frac{1}{m} \sum_{k=1}^{m} x_k, \quad \sigma^2_{g} = \frac{1}{m} \sum_{k=1}^{m} (x_k - \mu_g)^2 μg=m1k=1mxk,σg2=m1k=1m(xkμg)2

其中 m = C G × H × W m = \frac{C}{G} \times H \times W m=GC×H×W 是组内的元素数量。

归一化结果与前述方法一致:

x ^ k = x k − μ g σ g 2 + ϵ \hat{x}_k = \frac{x_k - \mu_g}{\sqrt{\sigma^2_g + \epsilon}} x^k=σg2+ϵ xkμg

GN 的优点:

  • 不依赖 batch size
  • 在语义分割、小 batch 图像训练中性能优于 BN
  • 推理与训练行为一致,适合部署

11.4 各归一化方法对比总结

【深度学习】5. 正则化方法:从 Weight Decay 到 BatchNorm、GroupNorm, Dropout、DropConnect, Early Stopping 与归一化技术_第3张图片

方法 归一化维度 是否依赖 batch size 适用场景
BN Batch 内每个通道 通用 CNN、较大 batch
LN 每个样本的特征维 RNN、Transformer、NLP
IN 每个样本每个通道 风格迁移、图像生成
GN 每个样本的分组通道 小 batch CNN、语义分割等

BatchNorm 在现代深度学习框架中仍是默认的标准化方法,但当 batch size 受限,或模型对顺序建模敏感时,LayerNorm、GroupNorm 等是更好的替代方案。

十二、正则化方法总结与实践建议

本节对前面介绍的所有正则化方法进行系统总结,从三种视角(损失函数级、模型结构级、训练过程级)归纳,并给出实际应用中的建议策略。

12.1 正则化的三种形式

正则化可以按照其作用方式,划分为以下三类:

1. 显式正则化(Explicit Regularization)

直接在损失函数中添加限制项,对模型参数的大小或稀疏性进行惩罚:

  • ℓ 2 \ell_2 2 正则化(Weight Decay)
  • ℓ 1 \ell_1 1 正则化
  • 正则项来自先验假设(如高斯或拉普拉斯)

目标函数形式为:

L total = L + λ R ( θ ) \mathcal{L}_{\text{total}} = \mathcal{L} + \lambda R(\theta) Ltotal=L+λR(θ)

其中 R ( θ ) R(\theta) R(θ) 是参数的范数。

2. 结构正则化(Architectural Regularization)

通过改变网络结构引入归纳偏置,从而控制模型的表达能力或增强模型泛化:

  • Dropout / DropConnect(结构破坏)
  • 数据增强(输入空间扰动)
  • 网络剪枝、参数共享
  • 注意力机制、残差连接等也具备归纳偏置功能

这类正则化不修改损失函数,但通过模型本身行为影响泛化。

3. 训练过程正则化(Optimization Regularization)

通过优化策略对模型学习过程施加限制,避免过拟合或加速收敛:

  • Early Stopping(提前终止)
  • BatchNorm / LayerNorm 等带来梯度平滑
  • Label Smoothing(标签分布扁平化)
  • 数据顺序扰动、梯度裁剪、学习率调度等

这些方法作用于训练过程,改变收敛路径和收敛点。

12.2 各方法汇总表

方法类别 方法 典型代表
损失函数正则 Weight Decay, L1/L2, Label Smoothing 控制参数大小与偏离
模型结构正则 Dropout, DropConnect, 数据增强 引入噪声、结构采样
优化过程正则 Early Stopping, BN, Norm 类方法 控制训练动态,提升稳定性

这些方法可以联合使用,但需注意相互间的兼容性与冗余性。

12.3 实践中的正则化策略建议

以下是根据不同任务与网络结构给出的正则化建议:

  • 图像分类任务:

    • 推荐使用 Data Augmentation(如 random crop, flip)
    • 使用 BatchNorm 替代 Dropout
    • 中等大小网络可加 L2 正则或 Early Stopping
  • 文本任务(如 Transformer):

    • 使用 LayerNorm 替代 BatchNorm
    • Early Stopping 与 Dropout 是常规配置
    • Label Smoothing 常用于分类任务提升稳定性
  • 小样本训练:

    • Dropout 效果更明显
    • GroupNorm 替代 BN 更稳定
    • 强烈建议使用 Early Stopping 与数据增强
  • 大规模模型训练:

    • 权重初始化 + BatchNorm 几乎是必备
    • 正则化项使用较小的 λ \lambda λ 避免欠拟合
    • 通常不依赖 Dropout,而是用结构层设计增强泛化

你可能感兴趣的:(深度学习,机器学习,深度学习,人工智能)