残差连接的作用
Transformer中的残差连接(Residual Connection)是其深层架构能稳定训练的核心设计之一,主要通过以下机制发挥作用:
1. 缓解梯度消失,支持深层训练
-
梯度保护机制:在反向传播时,残差连接提供了一条“短路路径”,使梯度能直接回传到浅层。数学表示为:若某层输出为:H(x) = F(x) + x,则梯度为:∂H/∂x = ∂F/∂x + 1,即使变换层梯度∂F/∂x趋近于0(梯度消失),常数项1仍能保持梯度有效传递,避免深层网络(如12层以上的Transformer)无法更新浅层参数的问题。
-
深层堆叠基础:GPT-3等百层模型依赖此机制保障训练稳定性。
2. 保留原始信息,增强特征表达
-
信息融合:残差连接将输入x(如词嵌入)与子层输出(如自注意力结果)相加,即x + SubLayer(x)。原始输入包含基础语义(如词的字面含义),子层输出则捕捉高级特征(如上下文关联),融合后既保留基础信息,又融入深层特征,避免信息丢失。
-
类比理解:如同修改论文时保留初稿并添加批注,而非重写——确保迭代优化不破坏初始信息。
3. 协同层归一化,稳定训练分布
-
与层归一化(LayerNorm)配合:残差连接后紧接层归一化(LayerNorm(x + SubLayer(x))),归一化操作修正相加后的数据分布(调整为均值0、方差1),解决“内部协变量偏移”问题(即网络输入分布随训练动态变化)。这一组合显著提升训练稳定性和收敛速度。
-
对比实验:若移除残差连接,Transformer在6层以上时训练损失难以收敛。
4. 提升模型表达能力与收敛效率
-
恒等映射学习:残差连接使网络更容易学习恒等变换(即F(x) ≈ 0),当深层无额外增益时可退化回浅层效果,避免性能退化(Network Degradation)。
-
加速收敛:跳跃连接减少参数更新次数,实验表明残差结构能缩短训练周期约30%。
5.残差连接有无对比
场景 | 有残差连接 | 无残差连接 |
---|---|---|
梯度传播 | 梯度稳定,深层可训练 | 梯度消失,浅层参数无法更新 |
信息保留 | 融合基础与高级特征 | 高级特征覆盖原始信息 |
训练稳定性 | 配合LayerNorm,分布稳定 | 输入分布漂移,收敛困难 |
深层扩展性 | 支持百层模型(如GPT-3) | 通常限于6层以内 |
6.总结
残差连接是Transformer应对深度与性能矛盾的关键:通过梯度保护机制解决深层训练难题,借助信息融合提升特征丰富性,并与层归一化协同抑制分布漂移。这一设计使Transformer成为可堆叠数十层的强大架构,奠定了BERT、GPT等大模型的基础。
归一化的作用
在Transformer架构中,归一化(通常指层归一化,Layer Normalization)是确保模型训练稳定性、加速收敛并提升性能的核心机制。其作用主要体现在以下几个方面:
1. 解决内部协变量偏移(Internal Covariate Shift)
-
问题背景:神经网络训练过程中,每一层的输入分布会因前一层参数更新而动态变化,导致后续层需不断适应新分布,延缓收敛速度。
-
归一化机制:层归一化对当前层的输入进行标准化处理,将其调整为均值0、方差1的分布,公式如下:LayerNorm(z)=γσ2+ϵz−μ+β,其中z为输入特征,μ和σ2是特征向量的均值和方差,γ缩放参数)和β(平移参数)是可学习的参数。
-
效果:通过稳定每层输入的分布,减少训练震荡,使模型更快收敛。
2. 加速训练收敛与提升稳定性
-
梯度优化:归一化后的数据分布更平滑,缓解梯度消失或爆炸问题,使反向传播更高效。
-
实验支持:Transformer中若无层归一化,深层结构(如6层以上)难以收敛;添加后训练速度可提升30%以上。
-
与残差连接的协同:层归一化通常在残差连接(Add)后执行(即LayerNorm(x + SubLayer(x))),两者结合既保留原始信息,又稳定分布,形成深度模型的训练支柱。
3. 增强模型表达能力
-
可学习参数的作用:
-
缩放参数(γ):调整归一化后数据的方差,控制特征幅度,使模型适应不同抽象层次的信息。
-
平移参数(β):调整数据分布的中心位置,保留原始数据的偏移特性,避免过度归一化导致信息损失。
-
-
效果:模型在稳定分布基础上仍能学习复杂特征,提升泛化能力。
4. 适配序列数据的特殊性
-
对比其他归一化方法:
-
批归一化(BatchNorm):依赖批次内样本的统计量,对批次大小敏感,不适用于变长序列(如文本)。
-
层归一化(LayerNorm):基于单个样本的所有特征计算统计量,不受批次大小影响,天然适合序列模型。
-
-
Transformer中的应用:每个时间步独立归一化,避免序列长度差异导致的训练不稳定。
5.总结:归一化在Transformer中的核心价值
作用维度 | 关键技术点 | 影响 |
---|---|---|
训练稳定性 | 解决内部协变量偏移,稳定层输入分布 | 深层模型可训练,收敛速度提升 |
特征表达 | 可学习的γ、β参数调整分布形态 | 保留信息灵活性,增强泛化能力 |
架构适配性 | 独立处理样本/时间步,适应变长序列 | 支撑Transformer处理文本等序列数据 |
归一化与残差连接的组合(Add & Norm)是Transformer能堆叠数十层的关键设计,不仅保障了BERT、GPT等大模型的可行性,也为长序列建模提供了基础支撑。
N个编码器之间如何堆叠
Transformer 编码器的堆叠机制是其核心设计之一,通过多层结构逐步提炼输入序列的上下文表示。以下是 N 个编码器的堆叠方式及第 N-1 层与第 N 层的连接细节的详细说明:
一、编码器堆叠的核心原理
-
同构重复堆叠 Transformer 的编码器由 N 个(通常 N=6)结构完全相同的层堆叠而成。每一层包含两个子模块:
-
多头自注意力机制(Multi-Head Self-Attention):捕捉序列内全局依赖关系。
-
前馈神经网络(Feed-Forward Network, FFN):对每个位置的表示进行非线性变换。
-
每个子模块后接残差连接(Residual Connection)和 层归一化(Layer Normalization)。
-
-
信息传递路径 每层编码器的输出直接作为下一层编码器的输入,中间无额外操作。这种设计使得:
-
底层编码器学习局部特征(如词法)。
-
高层编码器学习全局语义(如句法、语义关系)。
-
二、第 N-1 层与第 N 层的连接细节
1. 输入与输出关系
-
第 N-1 层的输出:经过其内部的子层处理(自注意力 → 残差连接 → 层归一化 → FFN → 残差连接 → 层归一化),生成一个维度为
(seq_len, d_model)
的矩阵(d_model
通常为 512)。 -
第 N 层的输入:直接接收第 N-1 层的输出矩阵,不经过任何线性变换或投影。
2. 残差连接的作用
-
每个子模块的输出会与原始输入相加:Output=LayerNorm(x+Sublayer(x))
其中:
-
x是第 N-1 层输入(即第 N-2 层的输出)。
-
Sublayer(x)是当前子层(自注意力或 FFN)的输出。
-
-
目的:缓解梯度消失,确保深层网络稳定训练。
3. 层归一化的位置
在残差加法后立即执行:
-
公式:LayerNorm(x+Sublayer(x))
-
作用:稳定数值分布,加速收敛。
4. 层间数据流示例
以第 N-1 层到第 N 层为例:
第 N-1 层输出 → 第 N 层输入 → 多头自注意力 → Add & Norm → FFN → Add & Norm → 第 N 层输出
所有操作均在相同维度空间(d_model
)中进行,确保信息无损传递。
三、堆叠结构的数学表达
设第 k
层编码器的输出为 H_k
,则堆叠过程可描述为:
Hk=EncoderLayer(Hk−1)
其中:
H_0 是嵌入层 + 位置编码的输出。
-
EncoderLayer函数包含自注意力、FFN 及对应的残差与归一化操作。
四、关键设计意义
-
梯度稳定:残差连接使梯度可直接回传至底层,避免深层网络退化。
-
表示深化:每层编码器逐步融合更复杂的上下文信息,最终输出包含全局语义的表示。
-
并行计算:所有层结构相同,支持全序列并行处理,提升训练效率。
五、总结
Transformer 编码器的堆叠本质是 “同构层 + 直连通路”:
-
第 N-1 层输出直接作为 第 N 层输入。
-
每层内部通过 残差连接 + 层归一化 维持信息稳定性。
-
最终输出是输入序列的深层语义表示,用于解码器或下游任务(如分类)。
此架构通过重复堆叠简单模块实现复杂语义建模,是 Transformer 成功的关键之一 。
六、注意
在Transformer架构中,位置编码(Positional Encoding)仅在输入层与词嵌入(Token Embedding)相加一次,后续的编码器层(包括第二层及之后的层)不再重复添加位置编码。以下是详细解释:
1. 位置编码的应用层级
-
仅作用于输入层:位置编码在输入嵌入阶段被添加到词嵌入向量中,生成包含位置信息的初始输入表示。公式如下:
Input=TokenEmbedding+PositionalEncoding
这一操作在模型的最前端完成,后续所有层均直接使用该融合后的向量。
-
后续层无位置编码添加:从第一层编码器开始,每一层的输入是上一层的输出(即已包含位置信息的向量),不再额外叠加位置编码。
2. 设计原因
-
信息传播机制:位置信息在输入层注入后,会通过编码器的自注意力机制和前馈网络逐层传递。每个编码器层通过以下操作进一步提炼位置和语义信息:
-
自注意力机制:计算不同位置之间的依赖关系,隐含利用位置信息(例如,相对位置影响注意力权重)。
-
残差连接:保留输入层的原始位置信息,防止深层网络中的信息丢失。
-
-
避免冗余与干扰:若每层都添加位置编码,会导致位置信息被反复叠加,可能破坏语义特征的稳定性,并增加模型训练的复杂度。
3. 位置编码的数学特性**
位置编码采用三角函数生成(如正弦/余弦函数),其设计具备以下关键性质:
-
相对位置可学习性:通过三角函数的线性组合,模型能隐式学习相对位置关系(例如,
PEpos+k可表示为 PEpos 的线性变换)。
-
外推能力:固定编码(非可学习)使模型能处理训练时未见过的序列长度。
4. 编码器层间的信息传递流程**
以第 N−1 层到第 N 层为例:
-
输入:第 N−1 层的输出(已包含位置和语义信息)。
-
处理:
-
通过多头自注意力机制,计算位置间的依赖关系。
-
通过前馈网络进行非线性变换。
-
每一步均包含残差连接(Add)和层归一化(Norm),确保位置信息稳定传递。
-
-
输出:传递至第 N层继续处理,无需重新添加位置编码。
A[输入嵌入] --> B[+位置编码] --> C[第一层编码器]C --> D[Add & Norm + 自注意力] --> E[Add & Norm + FFN]E --> F[第二层编码器] --> G[...] --> H[第N层输出]
5. 总结
-
位置编码仅在输入层添加一次,后续层通过自注意力和残差连接自然传播位置信息。
-
若在第二层重复添加位置编码,会破坏原始设计的简洁性与高效性,并可能导致训练不稳定。Transformer通过单次注入和逐层提炼的机制,实现了位置与语义信息的平衡融合 。
N个解码器之间如何堆叠,第N-1个解码器的输入来自于什么?
Transformer解码器由N个结构相同的解码器层垂直堆叠而成,每个层的输出作为下一层的输入,通过这种层级传递逐步优化目标序列的表示。以下是其堆叠机制和数据来源的详细解析:
一、解码器的堆叠结构
-
层间数据流动
-
垂直传递:第k层解码器的输出直接作为第k+1层的输入(1 ≤ k ≤ N-1),形成链式依赖。
-
输入初始化:
-
第一层输入:目标序列的词嵌入(训练时)或起始符<sos>推理时) + 位置编码 + 编码器输出(称为memory)。
-
后续层输入:依赖前一层的输出,例如第N-1层的输入来自第N-2层的输出。
-
-
-
残差连接与层归一化 每个子层(自注意力、交叉注意力、前馈网络)的输出会与输入进行残差连接(Add),再通过层归一化(Norm),确保梯度稳定传输,避免深层堆叠导致的退化问题。
二、第N-1层解码器的数据来源
第N-1层解码器的输入包含两部分:
-
来自第N-2层的输出
-
第N-2层输出的上下文向量(已融合局部语法和部分语义),作为第N-1层的初始输入。
-
例如:浅层(第1-2层)可能关注词序搭配(如动词与宾语),而深层(如第N-1层)负责建模长距离依赖(如篇章指代)。
-
-
编码器的输出(memory)
-
所有解码器层共享同一份编码器输出,通过
编码器-解码器注意力层(Cross-Attention)交互:
-
查询(Query):第
N-1
层的当前表示。 -
键/值(Key/Value):编码器的最终输出。
-
-
此机制使第N-1层能动态筛选源序列信息(例如翻译任务中聚焦关键源语词)。
-
三、堆叠的核心目的与效果
-
逐层抽象特征
-
浅层:捕捉局部依赖(如相邻词关系)。
-
深层:建模全局语义(如跨句逻辑、复杂指代)。
-
-
增强非线性表达能力 每层的前馈网络(FFN) 通过非线性激活(如ReLU)转换特征,堆叠后模型能拟合更复杂的映射关系。
-
注意力多视角细化 不同层的注意力头聚焦不同模式(例如一层关注词义,另一层关注句法结构),提升生成质量。
四、训练与推理的差异
-
训练时:所有解码器层并行计算,通过掩码确保当前位置仅看到历史信息。
-
推理时:自回归生成,第N-1层需等待第N-2层输出完成再计算,形成串行依赖。
五、结构示意图
输入序列 → [编码器] → memory(上下文向量)↓ 目标序列 → [嵌入层] → [位置编码] → 解码器层1 → Add/Norm → 解码器层2 → ... → 解码器层N → 输出概率 ↑__________ 残差连接 __________↑
箭头方向:第
k
层输出 → 第k+1
层输入 + 共享memory
。
此堆叠设计通过多层渐进式特征优化,使Transformer在生成任务中兼顾局部准确性与全局一致性,成为当前大语言模型(如GPT、LLaMA)的核心架构。
尾声
自然语言处理专栏就到此结束啦,下一阶段将开启大模型的专栏,感兴趣的友友们可以多多关注一波,这里贴上系列前几篇文章的链接。
NLP文本预处理
RNN及其变体的概念和案例
Transformer的概念和案例
迁移学习的概念和案例
BERT模型和GPT模型的介绍