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

为什么 Transformer 使用 LayerNorm 而不是 BatchNorm?

在深度学习的发展历程中,Normalization(标准化)技术几乎贯穿了所有高性能模型的训练过程。从最初的卷积神经网络(CNN)到后来的 Transformer,每一代架构都离不开它。
然而,一个有趣的现象是:CNN 更常用 BatchNorm,而 Transformer 却几乎清一色使用 LayerNorm。
为什么会这样?本文将带你从原理出发,彻底弄懂其中的差异与设计逻辑。


请添加图片描述


一、Normalization:从概念入手

在正式讨论 BatchNorm 和 LayerNorm 之前,我们先厘清一个长期被混淆的概念–Normalization

1.1 Normalization ≠ 归一化到 [0,1]

在统计学与机器学习中,“Normalization” 一词通常有两种不同语义:

名称英文数学表达式
归一化Min-Max Normalization将数据映射到 [0,1] 区间,保持比例关系
标准化Standardization使数据均值为 0、方差为 1,统一分布尺度

"归一化"关注数据范围一致;
"标准化"关注数据分布一致。

1.2 深度学习中的 Normalization 实际上是"标准化"

在深度学习语境中,Normalization 几乎都指代"零均值、单位方差的标准化操作",
也就是对输入特征或激活值进行中心化与尺度调整。

这种操作的目的并不是压缩数值范围,而是为了:

  • 降低各层输入分布的漂移(即 Internal Covariate Shift),
  • 加速模型收敛,
  • 提升梯度稳定性。

因此,无论是 BatchNorm 还是 LayerNorm,它们名字里的 “Norm” 都应该理解为标准化(Standardization),而非单纯的归一化。


二、BatchNorm:通过批次统计稳定训练

Batch Normalization(批标准化)Ioffe & Szegedy (2015) 提出,是深度学习中的一个重要里程碑。
它显著改善了网络训练中的梯度不稳定问题,并成为 CNN 模型的标配模块。

2.1 问题背景:内部协变量偏移(Internal Covariate Shift)

随着神经网络层数增加,每一层的输入分布会随着前层参数的更新而不断变化,这会导致训练过程不稳定、收敛变慢,甚至出现梯度爆炸或消失。

BatchNorm 的目标,就是让每一层的输入分布更加稳定。

2.2 工作原理

BatchNorm 的执行过程可分为三步:

  • 计算批次统计量
    对 mini-batch 中的每个特征维度,计算均值与方差:
  • 标准化处理
    使用该批次统计量将输入数据标准化:
  • 线性变换(可学习参数)
    引入缩放因子 γ 与偏移因子 β:
    这样模型仍可学习最优的分布。

2.3 应用与局限

BatchNorm 通常放在卷积层或全连接层之后、激活函数之前。

它极大地提升了 CNN 训练的稳定性与收敛速度。

然而,BatchNorm 的核心依赖是 “批次统计量”。这意味着:

  • 它需要较大的 batch 才能计算稳定的均值与方差;
  • 推理阶段还需使用移动平均(running mean/var);
  • 当 batch 太小或样本差异太大时,效果会显著下降。

三、LayerNorm:样本级标准化的出现

Layer Normalization(层标准化)Ba, Kiros & Hinton (2016) 提出,最初用于循环神经网络(RNN)以提升序列建模的稳定性,后来成为 Transformer 的核心组件。

3.1 核心思想

BatchNormBatchNormBatchNorm 在 “样本之间” 计算统计量不同,LayerNormLayerNormLayerNorm 是在 “样本内部” 进行标准化。

也就是说,它对每个样本的所有特征维度计算均值与方差,而不依赖于 batch。

数学形式如下:

其中 ( HHH ) 是特征维度的长度。

3.2 优点

  • 不依赖 batch 统计量 → 可在小 batch 或 batch size=1 的场景稳定工作;
  • 对序列任务友好 → 不同样本长度、不同 token 分布都可独立处理;
  • 推理阶段一致性高 → 训练与推理完全一致,无需额外均值/方差缓冲。

因此,在自然语言处理(NLP)和自注意力(Self-Attention)结构中,LayerNorm 成为更合理的选择。


四、Transformer 为什么必须用 LayerNorm?

要回答这个问题,关键在于理解一条原则:

Normalization 的前提是:被标准化的对象必须在统计意义上可比。

4.1 BatchNorm 的适用场景:跨样本特征可比

在卷积网络中,同一通道的激活值在不同样本之间具有一致的语义含义(例如"边缘强度"或"纹理模式"),因此可以安全地使用 batch 统计量进行标准化。

这就像比较"不同学生在同一科目(如数学)上的成绩"–可比性强。

4.2 LayerNorm 的适用场景:样本内部特征可比

而在 Transformer 中,不同位置(token)代表了完全不同的语义单元,跨样本统计均值或方差并不具有可比性。

例如,一个句子的第 3 个 token 和另一个句子的第 3 个 token 含义可能完全不同。

此时再使用 BatchNorm 只会引入无意义的噪声。

LayerNorm 则不同–它对每个样本内部所有特征独立标准化,这就像"评估一个学生在所有科目上的综合表现",更贴合 Transformer 的特征结构。

4.3 实际工程上的考虑

  • Transformer 常采用动态 batch size 或变长序列;
  • 推理阶段往往是逐 token 自回归生成;
  • 这些都使 BatchNorm 难以保持统计一致性。

因此,LayerNorm 成为 Transformer 中既合理又稳定的选择


五、总结对比

对比维度BatchNormLayerNorm
标准化维度跨样本(batch)样本内部(feature)
是否依赖 batch size✅ 是❌ 否
适用模型类型CNN、图像任务RNN、Transformer、语言模型
推理阶段一致性依赖移动平均训练与推理完全一致
对小 batch 敏感性
可比性假设样本间特征可比样本内特征可比

一句话总结

CNN 中,同一通道在不同样本间是可比的 → 用 BatchNorm。
Transformer 中,每个 token 特征语义不同 → 用 LayerNorm。


六、参考文献

[1] Ioffe, S., & Szegedy, C. (2015). Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift.
[2] Ba, J. L., Kiros, J. R., & Hinton, G. E. (2016). Layer Normalization.
[3] Do Standardization and Normalization Transform Data into Normal Distribution?
[4] Build Better Deep Learning Models with Batch and Layer Normalization - Pinecone.io


七、后记:实战中的经验与警示

  • 不要混淆"Normalization"与"归一化到 [0,1]",在神经网络中它几乎总指"标准化";
  • BatchNorm 不适合小 batch 或动态序列任务,使用会导致训练波动或推理偏差;
  • LayerNorm 在 Transformer 中几乎是默认标配,但在 CNN 结构中可能导致训练变慢;
  • 实践中还可尝试 RMSNorm、GroupNorm、ScaleNorm 等改进方案,它们在小模型或多模态任务中表现更优。

八、快问快答

Q:
为什么 Transformer 使用 LayerNorm 而不是 BatchNorm?

A:
“标准化和归一化都是数据预处理的常用方法,但它们的目的和应用场景不同。归一化主要是把数据缩放到一个固定区间,比如 [0,1],常用于特征量纲差异较大、且对距离敏感的算法,如 KNN 或神经网络。而标准化是让数据符合零均值、单位方差的分布,即去均值再除以标准差,更适合假设数据服从正态分布的模型,比如线性回归或 PCA。简单来说,归一化关心’范围’,标准化关心’分布’。”

http://www.dtcms.com/a/564916.html

相关文章:

  • 昇腾 NPU 实战:Gemma 2 模型部署、多维度评测与性能优化全流程解析
  • 使用Visual Studio中的数据断点快速定位内存越界问题的实战案例分享
  • 做网站的大创结项项目建设表态发言稿
  • 家政类网站开发成本青岛最新疫苗接种
  • B站点击埋点数据分析
  • 用 PyTorch 训练 NestedUNet 分割细胞核
  • [7-01-02].第10节:开发应用 - 配置Kafka中消费消息策略
  • 学算法不再卡壳,Hello-Algo 让学习有画面感,cpolar远程访问更添便利
  • openEuler安装docker及其配置
  • 重组蛋白纯化标签:高效获取高质量蛋白的关键技术
  • agent智能体
  • 网站制作珠海公司asp 网站管理工具
  • html网站地图怎么做企业网站建设主要考虑哪些
  • 深入昇腾NPU:从架构到算子开发的全栈探索
  • Rust编程学习 - 内存分配机制,如何动态大小类型和 `Sized` trait
  • JavaSe—List集合系列
  • 1.1 大语言模型调用方式与函数调用(Function Calling):从基础到实战
  • 在Windows系统上部署 CosyVoice 2
  • kafka kraft 模式简介
  • 【Html模板】赛博朋克风格数据分析大屏(已上线-可预览)
  • 怎么查网站备案号济南市章丘区建设局网站
  • 颠覆编码范式:Cursor 2.0五大新特性深度解析与AI编程未来洞察
  • 科技引领,档案管理更高效之智慧档案馆三维立体恒温恒湿消毒净化系统
  • MySQL的SUBSTRING函数详解与应用
  • 微企点建站效果付费合肥网络推广外包
  • 企业级管理平台项目设计、架构、业务全解之平台篇
  • android TAB切换
  • 免费试用网站源码上海网站建设穹拓
  • Linux的df和du
  • 【保姆级教程】Debian 服务器 MariaDB/Mysql 配置 Windows 远程连接全流程