LLMForEverybody

10分钟搞清楚为什么Transformer中使用LayerNorm而不是BatchNorm

1. Norm(Normalization)

首先,LayerNorm和BatchNorm的Norm是Normalization的缩写,不是Norm-范数。

Normalization在统计学中一般翻译为归一化,还有类似的是Standardization,一般翻译成标准化。这两个概念有什么区别呢?

归一化是将数据缩放到0-1之间,标准化是将数据缩放到均值为0,方差为1的正态分布。

alt text

有时候Normalization和Standardization会混淆,注意看清楚即可,不纠结细节。

2. BatchNorm

BatchNorm,(Batch Normalization),批归一化,旨在提高神经网络的训练速度、稳定性和性能。它由 Sergey Ioffe 和 Christian Szegedy 于 2015 年提出。BatchNorm 主要解决的问题是在训练深度神经网络时出现的内部协变量偏移(Internal Covariate Shift),即网络中各层输入数据分布的变化。

内部协变量偏移是指,随着网络层次的加深,每一层的输入数据(即前一层的输出)的分布可能会发生变化,这可能会导致训练过程中的梯度问题,比如梯度消失或梯度爆炸,从而影响网络的收敛速度和稳定性。

alt text

BatchNorm 的工作原理如下:

在传统机器学习中,我们也经常会用到类似的方法:将某一个特征(batch维度)的数据归一化或者标准化来提高模型的泛化能力

3. LayerNorm

Layer Normalization(层归一化,简称LayerNorm)是一种在深度学习中用于稳定神经网络训练和提高性能的技术。它是由 Jimmy Lei Ba、Jamie Ryan Kiros、Geoffrey E. Hinton 在 2016 年提出的。LayerNorm 与 Batch Normalization 类似,都旨在减少内部协变量偏移,但它们在归一化的具体实现上有所不同。

LayerNorm 的主要思想是对神经网络的每一层(而不是每一个小批量)进行归一化处理。具体来说,LayerNorm 会计算单个样本在其所在层的所有激活值的均值和方差,并使用这些统计量来归一化该样本的激活值。这种方法不依赖于小批量统计量,因此可以减少 BatchNorm 中的噪声问题,并允许网络使用更小的小批量大小进行训练。

alt text

LayerNorm 的工作原理如下:

4. 为什么Transformer中使用LayerNorm而不是BatchNorm

Normalization技术旨在应对内部协变量偏移问题,它的核心在于将数据调整到一个统一的标准,以便进行有效的比较和处理。

为了实现这一目标,我们需要确保参与归一化的数据点在本质上是可比的。(记住这句话就可以了)

alt text

参考

[1] Do Standardization and normalization transform the data into normal distribution?

[2] Build Better Deep Learning Models with Batch and Layer Normalization

欢迎关注我的GitHub和微信公众号,来不及解释了,快上船!

GitHub: LLMForEverybody

仓库上有原始的Markdown文件,完全开源,欢迎大家Star和Fork!