机器学习:LayerNorm和BatchNorm的区别

LayerNorm(Layer Normalization)和BatchNorm(Batch Normalization)是深度学习中常用的正则化技术,它们的作用是在神经网络训练过程中提升模型的收敛速度和稳定性,从而加快训练并提高模型的泛化能力。它们的区别主要体现在应用的层级和计算方式上:

  1. 作用层级不同:
  • BatchNorm: Batch Normalization 是对每个批次中的每一层进行归一化处理。具体来说,对于每个批次(mini-batch)中的每个特征通道,BatchNorm 都会计算其均值和方差,并对该批次中的每个样本进行归一化。这样做可以减少内部协变量偏移(Internal Covariate Shift),从而加速网络的训练收敛速度。
  • LayerNorm: Layer Normalization 则是对每个样本的每一层进行归一化处理。具体来说,对于每个样本,在每一层中的特征通道上计算均值和方差,并对该样本在每一层中的所有特征进行归一化。这种归一化方式更适合应对循环神经网络(RNN)等结构,因为它不依赖于批次中的其他样本,更加稳定。
  1. 计算方式不同:
  • BatchNorm: 在 BatchNorm 中,均值和方差是在每个批次上计算的,因此它依赖于批次中的所有样本。BatchNorm 会维护每个特征通道的均值和方差,然后用来归一化每个样本中的每个特征。
  • LayerNorm: 在 LayerNorm 中,均值和方差是在每个样本上计算的,因此它独立于批次。LayerNorm 计算每个样本的每个特征通道的均值和方差,并用这些统计量来归一化该样本在每一层上的所有特征。
    综上所述,BatchNorm 和 LayerNorm 在归一化的层级和计算方式上有所不同,这使它们在应用场景和效果上也有所区别。通常来说,BatchNorm 更适用于卷积神经网络(CNN)等结构,而 LayerNorm 更适用于循环神经网络(RNN)等结构。

Batch Normalization (BatchNorm)

BatchNorm 是在每个批次中对每一层进行归一化处理的技术。

公式

对于一个特征通道 k k k,BatchNorm 的计算如下:

  1. 计算批次中所有样本的均值 μ B \mu_B μB 和方差 σ B 2 \sigma_B^2 σB2 μ B = 1 m ∑ i = 1 m x i ( k ) \mu_B = \frac{1}{m} \sum_{i=1}^{m} x_i^{(k)} μB=m1i=1mxi(k)
    σ B 2 = 1 m ∑ i = 1 m ( x i ( k ) − μ B ) 2 \sigma_B^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i^{(k)} - \mu_B)^2 σB2=m1i=1m(xi(k)μB)2
  2. 归一化每个特征 x i ( k ) x_i^{(k)} xi(k) x ^ i ( k ) = x i ( k ) − μ B σ B 2 + ϵ \hat{x}_i^{(k)} = \frac{x_i^{(k)} - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} x^i(k)=σB2+ϵ xi(k)μB
  3. 应用缩放和偏移(Scale and Shift)变换: y i ( k ) = γ ( k ) x ^ i ( k ) + β ( k ) y_i^{(k)} = \gamma^{(k)} \hat{x}_i^{(k)} + \beta^{(k)} yi(k)=γ(k)x^i(k)+β(k)其中, γ ( k ) \gamma^{(k)} γ(k) β ( k ) \beta^{(k)} β(k) 是可学习的参数, ϵ \epsilon ϵ 是一个很小的数,避免除以零。
    举例说明

假设有一个批次(mini-batch)包含 4 个样本,每个样本的特征向量 x i x_i xi 是一个长度为 3 的向量(3个特征通道)。则对于第一个特征通道 k = 1 k = 1 k=1,BatchNorm 的计算步骤如下:

  • 计算均值 μ B \mu_B μB 和方差 σ B 2 \sigma_B^2 σB2 μ B = 1 4 ∑ i = 1 4 x i ( 1 ) \mu_B = \frac{1}{4} \sum_{i=1}^{4} x_i^{(1)} μB=41i=14xi(1)
    σ B 2 = 1 4 ∑ i = 1 4 ( x i ( 1 ) − μ B ) 2 \sigma_B^2 = \frac{1}{4} \sum_{i=1}^{4} (x_i^{(1)} - \mu_B)^2 σB2=41i=14(xi(1)μB)2
  • 归一化每个特征 x i ( 1 ) x_i^{(1)} xi(1) x ^ i ( 1 ) = x i ( 1 ) − μ B σ B 2 + ϵ \hat{x}_i^{(1)} = \frac{x_i^{(1)} - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} x^i(1)=σB2+ϵ xi(1)μB
  • 缩放和偏移: y i ( 1 ) = γ ( 1 ) x ^ i ( 1 ) + β ( 1 ) y_i^{(1)} = \gamma^{(1)} \hat{x}_i^{(1)} + \beta^{(1)} yi(1)=γ(1)x^i(1)+β(1)
    这样,对于每个特征通道 k k k,都会进行类似的计算。

Layer Normalization (LayerNorm)

LayerNorm 是在每个样本的每一层进行归一化处理的技术。

公式

对于一个样本 x i x_i xi,LayerNorm 的计算如下:

  1. 计算该样本的均值 μ L \mu_L μL 和方差 σ L 2 \sigma_L^2 σL2 μ L = 1 d ∑ k = 1 d x i ( k ) \mu_L = \frac{1}{d} \sum_{k=1}^{d} x_i^{(k)} μL=d1k=1dxi(k)
    σ L 2 = 1 d ∑ k = 1 d ( x i ( k ) − μ L ) 2 \sigma_L^2 = \frac{1}{d} \sum_{k=1}^{d} (x_i^{(k)} - \mu_L)^2 σL2=d1k=1d(xi(k)μL)2
  2. 归一化每个特征通道 x i ( k ) x_i^{(k)} xi(k) x ^ i ( k ) = x i ( k ) − μ L σ L 2 + ϵ \hat{x}_i^{(k)} = \frac{x_i^{(k)} - \mu_L}{\sqrt{\sigma_L^2 + \epsilon}} x^i(k)=σL2+ϵ xi(k)μL
  3. 应用缩放和偏移(Scale and Shift)变换: y i ( k ) = γ ( k ) x ^ i ( k ) + β ( k ) y_i^{(k)} = \gamma^{(k)} \hat{x}_i^{(k)} + \beta^{(k)} yi(k)=γ(k)x^i(k)+β(k)其中, γ ( k ) \gamma^{(k)} γ(k) β ( k ) \beta^{(k)} β(k) 是可学习的参数, ϵ \epsilon ϵ 是一个很小的数,避免除以零。
    举例说明

假设一个样本 x i x_i xi 是一个长度为 3 的向量(3个特征通道),则 LayerNorm 的计算步骤如下:

  • 计算均值 μ L \mu_L μL 和方差 σ L 2 \sigma_L^2 σL2 μ L = 1 3 ∑ k = 1 3 x i ( k ) \mu_L = \frac{1}{3} \sum_{k=1}^{3} x_i^{(k)} μL=31k=13xi(k)
    σ L 2 = 1 3 ∑ k = 1 3 ( x i ( k ) − μ L ) 2 \sigma_L^2 = \frac{1}{3} \sum_{k=1}^{3} (x_i^{(k)} - \mu_L)^2 σL2=31k=13(xi(k)μL)2
  • 归一化每个特征通道 x i ( k ) x_i^{(k)} xi(k) x ^ i ( k ) = x i ( k ) − μ L σ L 2 + ϵ \hat{x}_i^{(k)} = \frac{x_i^{(k)} - \mu_L}{\sqrt{\sigma_L^2 + \epsilon}} x^i(k)=σL2+ϵ xi(k)μL
  • 缩放和偏移: y i ( k ) = γ ( k ) x ^ i ( k ) + β ( k ) y_i^{(k)} = \gamma^{(k)} \hat{x}_i^{(k)} + \beta^{(k)} yi(k)=γ(k)x^i(k)+β(k)
    LayerNorm 对每个样本在每一层上进行归一化,不依赖于批次中其他样本,这是与 BatchNorm 不同的关键点。
  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值