×

Transformer 模型介绍(五)—归一化 Add & Norm

hqy hqy 发表于2025-07-10 05:25:37 浏览8 评论0百度已收录

抢沙发发表评论

Transformer模型的编码器和解码器都由6层神经网络堆叠而成。随着网络深度的增加,梯度消失和梯度爆炸问题的风险也会增加,尤其是在深度网络的训练过程中,梯度的传播可能变得非常不稳定。为了解决这些问题,归一化(Normalization)被广泛应用于深度学习模型中,尤其是层归一化(Layer Normalization),它能够有效地稳定训练过程,确保模型顺利收敛。

1 定义

归一化(或标准化)是一种对输入数据进行变换的过程,目的是将输入数据的分布转换为一个标准的、统一的范围,使得数据在传递至神经网络的每个神经元之前,能够保持稳定的分布。通常情况下,标准化的目标是使得数据符合标准正态分布(均值为0,方差为1)

标准化的过程通常包括以下步骤:

平移:将输入数据的均值调整为0。缩放:将数据的方差调整为1,确保其标准化。

具体来说,标准化过程可以通过以下公式来描述:

其中:

x 是原始输入数据μ 是输入数据的均值(平移参数)σ 是输入数据的标准差(缩放参数)

通过这种变换后,数据的分布将符合均值为0、方差为1的标准正态分布。

2 再平移和再缩放 Affine Transformation

为了让标准化后的数据能够适应不同的任务需求,通常会引入两个可学习的参数:再平移(b)和再缩放(g)。这两个参数允许模型对标准化后的数据进行进一步调整,从而使其更适合特定任务。再平移和再缩放的公式为:

其中:

是标准化后的数据g 是再缩放参数b 是再平移参数

通过这种变换,标准化后的数据将具有均值为 b、方差为的分布。

3 主要作用

1. 解决内部协变量偏移 Internal Covariate Shift,ICS

在深度神经网络中,每一层都可以看作是一个相对独立的分类器,它对上一层的输出数据进行处理。然而,由于每一层输出的数据分布可能不同,这就引发了一个问题,称为内部协变量偏移(Internal Covariate Shift,ICS)。

ICS指的是在训练过程中,随着网络深度的增加,每一层的输入数据分布会随着前一层的更新而发生变化,这会导致网络的训练不稳定,并且训练速度变慢。

随着网络层数的增加,ICS的影响可能会逐渐累积,最终导致网络性能下降。归一化通过将数据的分布调整为固定的范围(如均值为0、方差为1的正态分布),有效地缓解了ICS问题,确保了每一层的输入数据分布保持稳定。这有助于加速训练过程,提高模型的性能。

2. 防止梯度消失和梯度爆炸

神经网络的主要运算是矩阵乘法。在深层网络中,一个向量经过多个矩阵运算后,其值可能会变得越来越大,导致梯度爆炸。相反,梯度也可能因为多次乘积而趋近于零,导致梯度消失。为了防止这种情况发生,归一化通过确保每一层的输入数据分布稳定,避免了数值的急剧变化。通过控制数据的分布,归一化有助于保持神经网络的稳定性,防止梯度消失或爆炸的发生。

4 分类

据归一化操作的维度不同,归一化可以分为多种类型,其中最常见的有批归一化(Batch Normalization)、层归一化(Layer Normalization)、实例归一化(Instance Normalization)、组归一化(Group Normalization)等。虽然它们在操作上有所不同,但本质上都是通过对数据进行缩放和平移来确保数据分布的稳定性,从而避免训练过程中可能出现的梯度爆炸或梯度消失问题。

4.1 批归一化(Batch Normalization)

批归一化(Batch Normalization,BN)是最常见的标准化方式之一,通常用于卷积神经网络(CNN)或全连接神经网络(FCN)。批标准化的操作是基于批量大小(batch size)这个维度进行的,即对于一个训练批次(batch),我们计算该批次所有样本在每个特征维度上的均值和方差,然后根据这些统计量对数据进行标准化。批标准化的过程通常如下:

对每一层的输出进行标准化,使其均值为0,方差为1。然后对标准化后的数据进行再平移和再缩放,即引入可学习的参数 γ 和 β,调整数据的分布。

批标准化的优势在于它能够有效缓解梯度消失和梯度爆炸问题,加速模型的训练过程,特别是在深层网络中。

4.2 层归一化(Layer Normalization)

在 Transformer 模型中,归一化的关键技术是层归一化(Layer Normalization)。与批归一化不同,它是通过对隐藏层大小(hidden size)这个维度进行标准化来稳定数据的分布。

在层标准化中,对于每个样本(例如,句子中的每个单词),我们计算该样本的均值和方差,而不依赖于批次的大小。每个样本的标准化过程是独立进行的,保证了样本间的相互独立。这对于 Transformer 来说尤其重要,因为 Transformer 通常处理的是变长序列,在批量归一化中可能会受到批次大小变化的影响,而层归一化则能保持稳定性。

层归一化的过程如下:

其中,μ 和 σ 分别是该层输入特征的均值和标准差,xi 是该层中的第 i 个输入特征。

层标准化的优势在于它不依赖于批次大小,因此对于NLP任务中常见的变长输入序列尤其适用。在处理NLP任务时,输入的每个样本(例如句子)可能包含不同数量的单词,且句子长度差异较大。如果使用批标准化,可能会受到长度不一致的影响,导致模型训练不稳定。相比之下,层标准化不依赖批次的大小和输入序列的长度,因此能够在处理变长文本时保持稳定性和高效性。

4.3 实例归一化(Instance Normalization)与组归一化(Group Normalization)

实例归一化(Instance Normalization)和组归一化(Group Normalization)通常用于图像处理任务,尤其是在生成对抗网络(GAN)中应用广泛。实例归一化是基于每个样本进行标准化,即对于每个样本(例如一张图像),在每个特征通道上进行独立的归一化。组归一化则是将多个通道组合在一起进行标准化,适用于图像的处理。

在NLP任务中,通常不使用实例标准化和组标准化,而是采用层标准化来保证处理变长序列的稳定性。

5 层标准化的计算与变种

在Transformer模型中,层归一化(Layer Normalization)通过归一化每一层的输入数据来改善训练过程的稳定性。其主要作用是避免梯度消失和梯度爆炸问题,确保每一层的输出分布稳定。

5.1 层标准化的基本计算

对于给定的样本 x,假设 N 为批量大小,D 为特征维度,层归一化首先会计算每个样本的均值(μ)和方差()。计算过程如下:

然后,输入 x 会通过以下公式进行标准化:

这里,ϵ 是一个非常小的正数,用来防止除以零的错误。通过这种标准化,数据的均值会变为0,方差变为1,从而确保数据的分布保持稳定

在此基础上,我们进行再平移和再缩放操作,得到最终的标准化输出:

其中,γ 和 β 是可学习的参数,用于对标准化后的数据进行线性变换,从而调整数据的分布,允许模型更灵活地适应不同的任务。

5.2 层标准化的不同应用方式

层标准化在Transformer模型中的应用并不仅仅局限于一种方式。根据标准化的位置不同,可以分为以下几种变体:Pre-LN、Post-LN和Sandwich-LN。这些不同的方式在训练稳定性和效果上有不同的影响。

5.2.1 Pre-LN(标准化放在残差连接之前)

Pre-LN 是最早采用的一种标准化方式。它的优势在于能够稳定训练过程,防止深层网络中的梯度消失或梯度爆炸问题。具体而言,在每一层的输入通过自注意力机制或前馈神经网络进行处理之前,首先对输入进行层标准化,再进行后续计算。然而,尽管Pre-LN在训练过程中较为稳定,它可能导致模型效果略逊色于Post-LN,因为其正则化效果较弱。因此,虽然Pre-LN能提高训练稳定性,但它可能不能充分发挥网络的表达能力

5.2.2. Post-LN(标准化放在残差连接之后)

Post-LN 是另一种常见的层标准化方式。在这种方法中,首先进行计算,然后再进行标准化。这种方式的优势在于其正则化效果更强,有助于提高模型的表达能力和泛化性能。然而,Post-LN 的一个缺点是,在网络层数增加时,可能会导致训练不稳定。这是因为深层网络中的梯度范数可能会逐渐增大,导致梯度爆炸或梯度消失

5.2.3 Sandwich-LN(标准化同时放在残差连接之前和之后)

Sandwich-LN 结合了 Pre-LN 和 Post-LN 的优点。它在每一层的残差连接前后都进行层标准化,从而充分利用两者的优势。尽管这种方法能够防止爆炸,并稳定训练过程(相较而言的),但仍然可能导致训练不稳定,尤其是在非常深的网络中,可能会导致训练崩溃。Cogview(清华大学与阿里巴巴共同研究的文生图模型)就使用了Sandwich-LN,以防止出现值爆炸问题,尽管如此,这种方法仍然可能在某些情况下导致训练不稳定。

5.2.4 DeepNorm:改进的标准化方法

随着 Transformer 模型层数的增加,Pre-LN 和 Post-LN 的传统标准化方法在非常深的网络中开始遇到训练不稳定的问题。为了解决这一问题,论文《DeepNet: Scaling Transformers to 1000 Layers》DeepNet: Scaling Transformers to 1000 Layers提出了 DeepNorm 方法。从论文名字就可以看出,研究者将 Transformer 模型扩展到了1000层,这是一个非常深的网络。

Pre-LN 之所以会让模型训练更稳定,是因为标准化的输出可以缓解子层(注意力机制和前馈神经网络)中梯度消失和梯度爆炸的问题。DeepNorm 是 Post-LN 的一种改进方法,其核心思想是在层标准化之前对残差连接进行放大操作,即在进行标准化之前,通过一个可学习的参数 α 对残差连接进行放大(α>1)。这可以有效防止模型在训练过程中出现过大范围的参数更新,从而使训练过程更加稳定。

具体来说,DeepNorm的计算过程如下:

通过这种方式,DeepNorm能够限制参数更新的范围,避免了过大的梯度波动,从而提高了深层Transformer模型的训练稳定性。

举一个不是很恰当的栗子,对比:

Post-LN:每次往上放新积木时,直接叠上去。如果某块积木形状不规则(子层输出不稳定),塔容易歪倒。

DeepNorm:先在下面垫一个放大版的底座(α * 残差),再放一个缩小版的新积木(子层输出 / α)。这样塔的重心更稳,不容易塌。

5.2.5 RMSNorm:进一步简化的标准化方法

RMSNorm 是层标准化的一种改进版本,主要用于优化神经网络的训练稳定性和收敛性。该技术在论文《Root Mean Square Layer Normalization》中首次提出。研究者发现重新居中(即减去均值的部分)并不是必需的,因此 RMSNorm 仅保留了重新缩放的部分

RMSNorm 的计算方式是基于均方根(Root Mean Square, RMS)进行标准化,而不是计算均值和方差。具体的计算过程如下:

其中,ϵ 是为了防止除以零的平滑项。

RMSNorm 的优势在于其计算上更加高效,因为它不需要计算均值,只需要计算输入的均方根。这种简化操作减少了计算开销,提升了训练效率,并且在实际应用中能够降低噪声的影响。

原文链接:

https://blog.csdn.net/qq_28912651/article/details/145659403