【RMSNorm】Root Mean Square Layer Normalization
- 论文信息
- 阅读评价
- Abstract
- Introduction
- Related Work
- Background
- RMSNorm
- Experiments
论文信息
名称 | 内容 |
---|---|
论文标题 | Root Mean Square Layer Normalization |
论文地址 | https://arxiv.org/abs/1910.07467 |
发表时间 | 2019-10-16 |
研究领域 | NLP, LayerNorm |
提出方法 | RMSNorm |
阅读评价
论文改进了大模型领域常用的LayerNorm
,提出RMSNorm
(均方差层归一化)。相比于LayerNorm
,RMSNorm
开销更小,训练更快,性能与LayerNorm
基本相当。
论文在LayerNorm
的基础上,提出更简单的RMSNorm
,并从公式推导与实验对比上证明了RMSNorm
的有效性。
个人感受:RMSNorm
已经是目前通用的归一化了,看了一下T5、Llama、Qwen的源码,用的都是RMSNorm
。
以下是对论文每个部分的简单介绍。
Abstract
层归一化(LayerNorm)在各种深度神经网络的应用比较成功,可以稳定模型训练、促进模型收敛。但LN的缺点是计算开销较大。
LN有两个特性:重新居中(re-centering)不变性和重新缩放(re-scaling)不变性。本篇论文假设 LayerNorm 中的重新居中不变性是可有可无的,并提出均方根层归一化(RMSNorm)。
【注】重新居中(re-centering)不变性和重新缩放(re-scaling)不变性就是名字听起来唬人一点,其实很简单。在后文“background”中讲到LN的计算公式的时候我会进行介绍。
RMSNorm 计算更简单,因此比 LayerNorm 更高效。 使用不同网络架构对多个任务进行的大量实验表明,RMSNorm 的性能与 LayerNorm 相当,但在不同模型上的运行时间减少了 7%∼64%。
Introduction
LN目前也在深度神经网络领域广泛使用,并且效果良好。
但是LN的缺点就是计算开销大,模型一旦比较大,LN的缺点就更加突出。所以在某些时候,LN给模型带来的计算开销甚至抵消了LN给模型带来的加速收敛效果。
【注】这句话的意思是,假设引入LN可以让模型训练快100分钟,但是引入LN增加了计算量,LN计算本身就要花120分钟,这样是得不偿失。
LN有两个特性:重新居中(re-centering)不变性和重新缩放(re-scaling)不变性。作者认为重新居中(re-centering)不变性并不是LN有效的原因,所以他把这个特性删去,提出了RMSNorm。
Related Work
先简单介绍了三种归一化:BatchNorm、WeightNorm、LayerNorm。
随后介绍了一些对LN改进效率的工作,但是这些工作都没有删去重新居中(re-centering)不变性。
Background
这部分介绍了LayerNorm的公式。原论文里面的公式略微有点冗余,为了方便大家理解,此处我用通用的变量来表示LayerNorm:
给定一个网络的某一层的激活 H = h 1 , h 2 , . . . , h N {H = {h_1, h_2, ..., h_N}} H=h1,h2,...,hN,其中 h i h_i hi 是该层中第 i i i 个神经元或特征的激活值。
【注】正常使用大模型情况下,batch=32,seq=512, dim=768。此处的 H H H就是一个batch中的一个token的向量,即 H H H维度为768。
计算该层激活的均值 μ \mu μ 和标准差 σ \sigma σ:
μ = 1 N ∑ i = 1 N h i σ = 1 N ∑ i = 1 N ( h i − μ ) 2 + ϵ \mu = \frac{1}{N} \sum_{i=1}^{N} h_i \\ \sigma = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (h_i - \mu)^2 + \epsilon} μ=N1i=1∑Nhiσ=N1i=1∑N(hi−μ)2+ϵ
其中 ϵ \epsilon ϵ是一个非常小的数,以避免除以零。
对每个激活
h
i
h_i
hi 进行归一化:
h
^
i
=
h
i
−
μ
σ
\hat{h}_i = \frac{h_i - \mu}{\sigma}
h^i=σhi−μ
应用增益
γ
\gamma
γ和偏置
β
\beta
β参数进行缩放和平移:
y
i
=
γ
h
^
i
+
β
y_i = \gamma \hat{h}_i + \beta
yi=γh^i+β
其中增益
γ
\gamma
γ和偏置
β
\beta
β是可学习的参数,它们分别初始化为 1 和 0。
【注】LN的重新居中(re-centering)不变性和重新缩放(re-scaling)不变性是指在 LN 过程中引入的可学习参数增益 γ \gamma γ和偏置 β \beta β所带来的特性。
——————————————————
重新居中(Re-centering)不变性:
LN 通过偏置参数 β \beta β实现重新居中。在 LN 的归一化过程中,每个激活值 h i h_i hi都会被减去同一层激活的均值 μ \mu μ,然后乘以增益 γ \gamma γ并加上偏置 β \beta β。偏置 β \beta β的存在允许模型学习到激活值的最佳居中位置,这就是重新居中不变性。即使输入数据发生了变化,模型也可以通过调整偏置 β \beta β来保持激活值的分布相对稳定。
——————————————————
重新缩放(Re-scaling)不变性:
LN 通过增益参数 γ \gamma γ实现重新缩放。在归一化后,每个激活值 h i h_i hi会被乘以 γ \gamma γ。增益 γ \gamma γ的存在允许模型学习到激活值的最佳缩放因子,这就是重新缩放不变性。模型可以通过调整 γ \gamma γ来控制激活值的尺度,从而适应不同的数据分布和任务需求。
RMSNorm
在LayerNorm的基础上,RMSNorm不再求均值 μ \mu μ 和标准差 σ \sigma σ,而是直接计算均方根 R M S RMS RMS:
R M S = 1 N ∑ i = 1 N ( h i ) 2 + ϵ RMS=\sqrt{\frac{1}{N} \sum_{i=1}^{N} (h_i)^2 + \epsilon} RMS=N1i=1∑N(hi)2+ϵ
对每个激活
h
i
h_i
hi 进行归一化:
h
^
i
=
h
i
R
M
S
\hat{h}_i = \frac{h_i}{RMS}
h^i=RMShi
RMSNorm也可以应用增益
γ
\gamma
γ和偏置
β
\beta
β参数进行缩放和平移:
y
i
=
γ
h
^
i
(
+
β
)
y_i = \gamma \hat{h}_i (+ \beta)
yi=γh^i(+β)
但是实际上,此时偏置
β
\beta
β已经不再有意义,通常不再使用偏置。
Experiments
简单截了4张实验结果图,其中“Testxx”栏表示数据集的评价指标,越大越好,“Time”栏表示运行了k个Step所花的时间,越少越好。
主要还是比较RMSNorm是否比LN的时间短,并且效果不相上下?根据上述4张图,可以看到RMSNorm确实比LN要好一点。