深度学习|表示学习|Layer Normalization 全面总结|24

如是我闻:

1. 什么是 Layer Normalization?

Layer Normalization(层归一化)是一种用于深度学习的归一化方法,它的核心思想是在单个样本的所有神经元上计算均值和标准差,然后进行归一化,使得不同神经元的输出分布更稳定,从而加速训练,提高泛化能力。

与 Batch Normalization(批归一化)不同,Layer Normalization 不依赖 batch 维度,它适用于 RNN、Transformer、小 batch 训练、强化学习等场景

在这里插入图片描述


2. Batch Normalization vs. Layer Normalization

Batch Normalization (BN)Layer Normalization (LN)
归一化维度mini-batch 维度 计算均值和标准差单个样本的所有神经元 计算均值和标准差
适用于CNN(计算机视觉任务)RNN(自然语言处理)、Transformer、小 batch 训练
依赖 batch size✅ 依赖 batch size,batch size 太小时效果不稳定❌ 不依赖 batch size,适用于变长输入
计算方式对 batch 里相同神经元的不同样本进行归一化对单个样本的所有神经元归一化
计算代价需要在 batch 维度统计均值和方差计算量较小,对小 batch 友好

3. Batch Normalization 和 Layer Normalization 计算举例

(1) Batch Normalization 示例

假设:

  • batch size = 3(有 3 个样本)
  • 隐藏层有 4 个神经元
  • 下面是 mini-batch 中 3 个样本的隐藏层输出:

X = [ 1.3 0.9 2.0 2.6 1.5 1.0 2.1 2.8 1.1 0.7 1.8 2.4 ] X = \begin{bmatrix} 1.3 & 0.9 & 2.0 & 2.6 \\ 1.5 & 1.0 & 2.1 & 2.8 \\ 1.1 & 0.7 & 1.8 & 2.4 \end{bmatrix} X= 1.31.51.10.91.00.72.02.11.82.62.82.4

计算 Batch Normalization

  1. 计算每个神经元的均值(按列计算):
    μ = [ 1.3 + 1.5 + 1.1 3 , 0.9 + 1.0 + 0.7 3 , 2.0 + 2.1 + 1.8 3 , 2.6 + 2.8 + 2.4 3 ] = [ 1.3 , 0.87 , 1.97 , 2.6 ] \mu = \begin{bmatrix} \frac{1.3+1.5+1.1}{3}, \quad \frac{0.9+1.0+0.7}{3}, \quad \frac{2.0+2.1+1.8}{3}, \quad \frac{2.6+2.8+2.4}{3} \end{bmatrix} = \begin{bmatrix} 1.3, 0.87, 1.97, 2.6 \end{bmatrix} μ=[31.3+1.5+1.1,30.9+1.0+0.7,32.0+2.1+1.8,32.6+2.8+2.4]=[1.3,0.87,1.97,2.6]

  2. 计算标准差(按列计算):
    σ = [ ( 1.3 − 1.3 ) 2 + ( 1.5 − 1.3 ) 2 + ( 1.1 − 1.3 ) 2 3 , ( 0.9 − 0.87 ) 2 + ( 1.0 − 0.87 ) 2 + ( 0.7 − 0.87 ) 2 3 , . . . ] \sigma = \begin{bmatrix} \sqrt{\frac{(1.3-1.3)^2 + (1.5-1.3)^2 + (1.1-1.3)^2}{3}}, \quad \sqrt{\frac{(0.9-0.87)^2 + (1.0-0.87)^2 + (0.7-0.87)^2}{3}}, \quad ... \end{bmatrix} σ=[3(1.31.3)2+(1.51.3)2+(1.11.3)2 ,3(0.90.87)2+(1.00.87)2+(0.70.87)2 ,...]

  3. 归一化
    x ^ i , j = x i , j − μ j σ j \hat{x}_{i,j} = \frac{x_{i,j} - \mu_j}{\sigma_j} x^i,j=σjxi,jμj
    对 batch 里所有样本按列归一化。


(2) Layer Normalization 示例

假设:

  • 单个样本的隐藏层输出有 4 个神经元
    x = [ 1.3 , 0.9 , 2.0 , 2.6 ] x = [1.3, 0.9, 2.0, 2.6] x=[1.3,0.9,2.0,2.6]
  1. 计算均值(对该样本的 4 个神经元计算均值)
    μ = 1.3 + 0.9 + 2.0 + 2.6 4 = 1.7 \mu = \frac{1.3 + 0.9 + 2.0 + 2.6}{4} = 1.7 μ=41.3+0.9+2.0+2.6=1.7

  2. 计算标准差
    σ = ( 1.3 − 1.7 ) 2 + ( 0.9 − 1.7 ) 2 + ( 2.0 − 1.7 ) 2 + ( 2.6 − 1.7 ) 2 4 \sigma = \sqrt{\frac{(1.3 - 1.7)^2 + (0.9 - 1.7)^2 + (2.0 - 1.7)^2 + (2.6 - 1.7)^2}{4}} σ=4(1.31.7)2+(0.91.7)2+(2.01.7)2+(2.61.7)2
    = 0.16 + 0.64 + 0.09 + 0.81 4 = 0.425 ≈ 0.65 = \sqrt{\frac{0.16 + 0.64 + 0.09 + 0.81}{4}} = \sqrt{0.425} \approx 0.65 =40.16+0.64+0.09+0.81 =0.425 0.65

  3. 归一化
    x ^ i = x i − μ σ \hat{x}_i = \frac{x_i - \mu}{\sigma} x^i=σxiμ
    x ^ = [ 1.3 − 1.7 0.65 , 0.9 − 1.7 0.65 , 2.0 − 1.7 0.65 , 2.6 − 1.7 0.65 ] \hat{x} = \left[ \frac{1.3 - 1.7}{0.65}, \quad \frac{0.9 - 1.7}{0.65}, \quad \frac{2.0 - 1.7}{0.65}, \quad \frac{2.6 - 1.7}{0.65} \right] x^=[0.651.31.7,0.650.91.7,0.652.01.7,0.652.61.7]

= [ − 0.615 , − 1.231 , 0.462 , 1.385 ] = [-0.615, -1.231, 0.462, 1.385] =[0.615,1.231,0.462,1.385]


4. 归一化之后数据的去向

归一化后的数据会继续通过神经网络的后续层进行计算,比如:

  1. 全连接层(MLP)
    • 归一化后的值会作为输入,经过权重变换和非线性激活函数(ReLU、Sigmoid)。
  2. 卷积层(CNN)
    • 归一化后的特征会继续经过卷积运算,提取更高层次的特征。
  3. RNN/Transformer
    • 归一化后的数据可以作为输入到 LSTM 或 Transformer,防止梯度消失/爆炸。
  4. 自适应缩放((\gamma) 和 (\beta))
    • 归一化后会乘以可学习参数 γ \gamma γ 并加上 β \beta β,以恢复模型的表达能力:
      y i = γ x ^ i + β y_i = \gamma \hat{x}_i + \beta yi=γx^i+β

5. 什么时候用 Layer Normalization?

✅ 适合:

  • RNN/Transformer(序列模型):BatchNorm 依赖 batch size,而 LayerNorm 适用于变长输入。
  • 强化学习(RL):状态输入通常是独立的,LN 适用于对个体样本进行归一化。
  • 小 batch 训练:当 batch size 很小时,BatchNorm 可能无法估计稳定的均值和方差,而 LayerNorm 仍然可以稳定工作。
  • 个别 CNN 任务:虽然 CNN 主要使用 BatchNorm,但在某些小 batch 任务或非图像任务中,也可以用 LayerNorm。

不适合

  • 大 batch 训练的 CNN:BatchNorm 通常比 LayerNorm 计算更高效,并且对 CNN 训练更有效。

6. 总的来说

  • Layer Normalization 归一化的是单个样本的所有神经元,不依赖 batch size,适用于 NLP(RNN、Transformer)、强化学习等任务。
  • Batch Normalization 归一化的是 batch 内所有样本的相同神经元,主要用于 CNN 和大 batch 训练。
  • 归一化后数据会继续传递到神经网络的下一层,并通过可学习参数 γ \gamma γ β \beta β 调整模型表达能力

以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值