归一化原来这么重要!深入浅出详解Transformer中的Normalization

本文深入探讨了Transformer中的归一化技术,从函数的等高线理论出发,解释了为什么特征归一化是重要的。讨论了等高线与梯度下降的关系,指出输入特征尺度不一可能导致训练收敛速度变慢。常见的特征归一化方法,如min-max normalization、mean normalization、standard normalization和unit length scaling被介绍,并提供了实现细节。在深度神经网络中,Batch Normalization和Layer Normalization被用来缓解内部协变量偏移问题,提高训练效率。最后,文章对比了Batch Normalization与Layer Normalization的优缺点,以及在Transformer中为何选择Layer Normalization。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fdf1e272ca97a177f548dd1601f30920.gif

©PaperWeekly 原创 · 作者 | 李国趸

单位 | 浙江大学

研究方向 | 少样本学习

为了讲清楚 Transformer 中的归一化细节,我们首先需要了解下,什么是归一化,以及为什么要归一化。本文主要解决这两个问题:

  • 什么是归一化?

  • 为什要归一化?

4d1586ccb53215907553fe90dbf24ff0.png


从函数的等高线说起

1.1 函数的等高线是什么

讨论一个二元损失函数的情况,即损失函数只有两个参数: 。

  • 下图就是这个损失函数的图像,等高线就是函数 在参数平面 上的投影。

  • 等高的理解:在投影面上的任意一个环中,所有点的函数值都一样。

  • 等高的理解:在函数曲面上存在一个环,环上所有点的函数值一样,即距离投影平面的距离都一样。

f3e9c68793f8dd12097a8dccefb129b9.png

具体看这个参数平面的话,绘制等高线图是:

  • 任意一个环上的不同参数取值 ,其函数值都一样。

  • 可以看到,当 时,函数值 = 5,即全局最小点。

46d5bf08e81ca4e3ff6fad656b10264c.png

1.2 梯度与等高线的关系

假设存在一个损失函数 ,在空间中是一个曲面,当其被一个平面 ,c 为常数所截后,得到的曲线方程是:

41fca8ff537e5eace3e3afb4652ba41b.png

曲线在 xoy 平面上的投影是一个平面曲线,即 ,即损失函数在 xoy 平面的某一条等高线,在这条等高线上,所有函数值均为 。

在这条等高线上,任意一点的切线斜率为 。

由隐函数存在定理:

28ffc183903eb81423867149f1db01a6.png

可知: 

965c8930b1ff49d710e402d57ff4fc2f.png

任意一点的法线由于和切线垂直,所以斜率相乘为 -1,则法线斜率为:

a2317040b62acc281baa50c345d505cd.png

又由梯度的定义:

f5010e830b3852d719dbaedaf48b5433.png

梯度向量的斜率,即正切值= ,可以看到恰好等于法线的斜率,因此:

梯度的方向和等高线上的切线时时垂直。

1.3 从等高线看为什么特征归一化

采用梯度下降算法时,因为梯度的方向和等高线的切线是垂直的,所以沿着梯度反方向迭代时,实际就是垂直于等高线一步步迭代。如下图所示,这是两种不同的等高线采用梯度下降算法时的迭代情况。很明显,左图也就是等高线呈现正圆形时能够有最少的迭代步数,因此收敛速度更快。然而在有些情况下,等高线是椭圆形的,会有更多的迭代步数才能到达函数最低点,收敛变慢。

136c5dbbe87a951959e5d95f290d751b.png

那么,什么时候会出现这种椭圆形的等高线情况呢?我们对线性回归和逻辑回归分别进行分析。

以线性回归为例,假设某线性回归模型为:

6ab1998f8258a9ffe7ab52fae105ff4a.png

目标函数为(忽略偏置):

a403a8003de23957b8f91e7c7f22894b.png

从上式可以看出,由于 ,那么当 产生相同的增量时,后者能产生更大的函数变化值,从而产生椭圆形的环状等高线。本质上,这是因为输入的特征的尺度(即取值范围)不一样!

因此,在线性回归中若各个特征变量之间的取值范围差异较大,则会导致目标函数收敛速度慢等问题,需要对输入特征进行归一化,尽量避免形成椭圆形的等高线。

以逻辑回归为例,由于逻辑回归中特征组合的加权和还会作用上 sigmoid 函数,影响收敛的因素,除了梯度下降算法的效率外,更重要的是最后的输出 z 的大小的影响。

7f52c7dc38765c5000670d3268e2e1d4.png

从上图可以看出,当z的值小于 -5 左右时,函数值约等于 0,当 z 的值大于 5 左右时,函数值约等于 1。这两种情况下面,梯度趋近于 0,使得参数无法得到更新。因此,对于逻辑回归来说,主要影响的是特征组合加权和后的 sigmoid 输出,而特征的输入范围又会影响最终的 sigmoid 输出,影响模型的收敛性,所以要对输入特征进行归一化,避免最后的输出处于梯度饱和区。

1.4 总结

总结来说,输入特征的尺度会影响梯度下降算法的迭代步数以及梯度更新的难度,从而影响训练的收敛性。

因此,我们需要对特征进行归一化,即使得各个特征有相似的尺度。

7a0a5c27a7176f86727ac1dca8dcd18b.png


常见的特征归一化

上文我们讲了特征归一化,就是要让各个特征有相似的尺度。相似的尺度一般是讲要有相似的取值范围。因此我们可以通过一些方法把特征的取值范围约束到一个相同的区间。另一方面,这个尺度也可以理解为这些特征都是从一个相似的分布中采样得来。因此我们还可以通过一些方法使得不同特征的取值均符合相似的分布

这里我们介绍一些常见的特征归一化方法的细节,原理和实现。

2.1 细节

rescaling (min-max normalization, range scaling)

a2fbc48a03b219389fa2e81a2dd6d29c.png

这里是把每一维的值都映射到目标区间 。一般常用的目标区间是 。特别的,映射到 0 和 1 区间的的计算方式为:

402 Payment Required

mean normalization

。这里 指的向量的均值。与上面不同的是,这里减去的是均值。这样能够保证向量中所有元素的均值为 0。

standard normalization (z-score normalization)

。这里 指的是向量的标准差。更常见的是这种,使得所有元素的均值为 0,方差为 1。

scaling to unit length

。这里是把向量除以其长度,即对向量的长度进行归一化。长度度量一般采用 L1 范数或者 L2 范数。

范数(英语:Norm),是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,是一个函数,其为向量空间内的所有向量赋予非零的正长度或大小。Lp(p=1..n) 范数:

645d00676d769cf193e528edc3498b87.png

2.2 原理

总结来看,前三种特征归一化方法的计算方式是减一个统计量再除以一个统计量,最后一种为除以向量自身的长度

减去一个统计量可以看做选哪个值作为原点(是最小值或者均值),然后将整个数据集都平移到这个新的原点位置。如果特征之间的偏置不同会对后续过程产生负面影响,则该操作是有益的,可以看做某种偏置无关操作。如果原始特征值是有特殊意义的,则该操作可能会有害。

如何理解:对于一堆二维数据,计算均值得到 (a,b),减去这个均值点,就相当于把整个平面直角坐标系平移到这个点上,为什么呢?因为 (a,b)-(a,b)=(0,0) 就是原点,其他的点在 x 轴和 y 轴上做相应移动。

除以一个统计量可以看做在坐标轴方向上对特征进行缩放,用于降低特征尺度的影响,可以看做某种特征无关操作。缩放可以采用最大值和最小值之间的跨度,也可以用标准差(到中心点的平均距离)。

如何理解:(a,b)/3=(a/3, b/3),就相当于这些点在 x 轴上的值缩小三倍,在 y 轴上缩小三倍。

除以长度相当于把长度归一化,把所有特征都映射到单位球上,可以看作某种长度无关操作。比如词频特征要移除文章长度的影响,图像处理中某些特征要移除光照强度的影响,以及方便计算向量余弦相似度等。

如何理解:除以向量的模,实际就是让向量的长度为 1,这样子,若干个 n 维向量就分布在一个单位球上,只是方向不同。

更直观地,可以从下图(来自于 CS231n 课程)观察上述方法的作用。下图是一堆二维数据点的可视化,可以看到,减去了每个维度的均值 以后,数据点的中心移动到了原点位置,进一步的,每个维度用标准差缩放以后,在每个维度上,数据点的取值范围均保持相同。

fe0f48aa0d55aad9798c88d8addbbce6.png

2.3 实现

上面我们讲了 4 种不同的归一化方式,

### Transformer 架构详解 #### 一、背景介绍 传统的序列处理模型如RNN及其变体(LSTM、GRU),虽然能够捕捉序列中的长期依赖关系,但在实际应用中存在诸多局限性。例如,在处理长距离依赖时效果不佳;由于串行执行特性导致难以并行化训练等问题[^1]。 #### 二、Transformer架构概述 为了克服上述挑战,Vaswani等人提出了全新的网络框架——Transformer。该模型摒弃了以往基于循环或卷积的方式,转而采用纯自注意力机制作为主要组件之一。这种设计不仅提高了模型对于不同位置间关联性的理解能力,还极大地促进了高效并行计算的可能性,显著缩短了训练所需时间[^3]。 #### 三、核心组成部分解析 ##### (一)自注意力模块(Self-Attention) 这是整个体系中最关键的部分,通过引入查询(Query)、键(Keys) 和 值(Values),实现了在同一句话内部各个单词之间的相互作用评估。具体来说: 1. 对于给定的一个词xi,会与其他所有词语分别形成一对(query-key)组合; 2. 计算每对query-key对应的相似度得分,并经过softmax归一化得到权重分布wi; 3. 使用这些权重加权求和对应的位置上的value向量vi,最终获得当前节点的新表达形式zi; 以上过程可以用矩阵运算简洁描述如下所示: \[Z= \text{Softmax}(\frac{QK^{T}}{\sqrt{d_k}}) V\] 其中\(Q\)代表Query矩阵,\(K\)为Key矩阵,\(V\)则是Value矩阵;\(d_k\)表示特征维度大小用于缩放因子防止梯度过大影响收敛速度. ```python import torch.nn.functional as F def scaled_dot_product_attention(q, k, v): attn_weights = q @ k.transpose(-2,-1)/torch.sqrt(k.size(-1)) attn_dist = F.softmax(attn_weights,dim=-1) output = attn_dist @ v return output ``` ##### (二)多头注意力(Multi-head Attention) 考虑到单一视角下的自关注可能无法全面刻画复杂语义信息,因此进一步扩展成多个独立子空间内的平行操作即所谓的“multi-head”。这样做的好处是可以让模型从不同的表征角度去学习输入数据间的联系,增强表达力的同时也增加了灵活性: \[MultiHead(Q,K,V)=Concat(head_1,...head_h)\cdot W^O\] \[where~ head_i=\text{Attention}(QW_{i}^Q ,KW_{i}^K,VW_{i}^V )\] 这里\(h\)指代头部数量,每个分支都有一组参数矩阵\(W_q,W_k,w_v\)以及最后用来融合各路输出的线性变换\(WO\). ##### (三)前馈神经网络(Feed Forward Networks) 除了自注意层外,每一编码单元还包括了一个全连接两层感知机FFN。它接收来自上一层的结果做非线性映射后再传递下去。值得注意的是这里的激活函数通常选用ReLU而非Sigmoid/Tanh类饱和型函数以加速反传更新效率。 \[FFN(x)=Max(0,xW_1+b_1)W_2+b_2\] ```python class PositionwiseFeedForward(nn.Module): def __init__(self,d_model,hid_dim,dropout_rate=.1): super().__init__() self.fc1 = nn.Linear(d_model,hid_dim) self.relu = nn.ReLU() self.dropout = nn.Dropout(dropout_rate) self.fc2 = nn.Linear(hid_dim,d_model) def forward(self,x): out=self.fc2(self.dropout(self.relu(self.fc1(x)))) return out ``` #### 四、残差链接与规范化 为了避免深层网络带来的退化问题,采用了跳跃连接(Skip Connection)+Layer Normalization策略来稳定训练过程。前者允许梯度直接回溯至较浅层次而不必经过过多中间状态;后者则通过对批次样本均值方差调整使得各通道数值范围趋于一致利于优化器工作。 \[Y=\text{Norm}(X+\text{Sublayer}(X))\] 综上所述,Transformers凭借独特的结构优势成为自然语言处理领域不可或缺的重要工具。其强大的模式识别能力和高效的硬件利用率正推动着越来越多的实际应用场景落地开花。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值