当前位置: 首页 > article >正文

深度学习|表示学习|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 β 调整模型表达能力

以上


http://www.kler.cn/a/541368.html

相关文章:

  • 荣耀手机Magic3系列、Magic4系列、Magic5系列、Magic6系列、Magic7系列详情对比以及最新二手价格预测
  • 【OCPP】ocpp1.6J协议框架说明
  • 认识网络安全
  • 【sqlite】python操作sqlite3(含测试)
  • kafka服务端之副本
  • Kafka系列之:定位topic只能保存最新数据的原因
  • CSS入门学习笔记(二)
  • 客户端渲染和服务端渲染
  • bitcoinjs学习笔记0(预备知识)
  • SpringBoot 接口防抖的一些实现方案
  • Unity Dots理论学习-5.与ECS相关的概念
  • R18 2Rx XR devices
  • React 中的 useMemo 和 useCallback 有什么区别?
  • Gaea: 去中心化人工智能平台的未来
  • 智慧机房解决方案(文末联系,领取整套资料,可做论文)
  • 使用Qt+opencv实现游戏辅助点击工具-以阴阳师为例
  • ffmpeg -devices
  • Linux(20)——调度作业
  • java配置api,vue网页调用api从oracle数据库读取数据
  • vscode怎么更新github代码
  • git命令行删除远程分支、删除远程提交日志
  • 【已解决】docker安装、换源及使用 docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
  • ArrayList和LinkedList有什么区别?在什么情况下使用ArrayList更高效?
  • Hive之最新方式MySQL5.7 安装
  • windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)
  • 云计算——AWS Solutions Architect – Associate(saa)4.安全组和NACL