【NLP】 21. Transformer整体流程概述 Encoder 与 Decoder架构对比

1. Transformer 整体流程概述

Transformer 模型的整个处理流程可以概括为从自注意力(Self-Attention)到多头注意力,再加上残差连接、层归一化、堆叠多层的结构。其核心思想是利用注意力机制对输入进行并行计算,从而避免传统 RNN 逐步依赖导致的并行化困难问题。

在 Transformer 模型中,编码器(Encoder)解码器(Decoder) 均由若干相同的层堆叠而成。模型的基本构成单元如下:

  • 自注意力层(Self-Attention Layer):计算输入中各个 token 之间的相关性,为每个 token 提供上下文表示。
  • 多头注意力机制(Multi-Head Attention):并行计算多个注意力头,每个头学习不同的特征(例如,有的关注实体信息,有的关注语法信息)。
  • 前馈神经网络层(Feed-Forward Layer):在每个注意力模块后面添加一个全连接的前馈网络,引入非线性变换。
  • 残差连接和层归一化(Residual Connection & Layer Normalization):通过加法将输入与输出相加,保证梯度能够高效传回,并利用层归一化稳定训练过程。

2. 多头注意力机制

2.1 为什么使用多头注意力

多头注意力机制将单一注意力分成多个"头",每个头在不同的线性子空间中并行计算注意力,有以下优势:

  • 捕获多种语义信息:例如,某一个注意力头可能专注于实体信息(entity focused),而另一个头可能捕捉句法结构(syntax focused)。
  • 提高模型表达能力:通过并行多个注意力头,模型能够同时从多个角度学习输入数据的特征。

2.2 多头注意力公式

假设输入为查询 Q、键 K和值 V,单个注意力头的计算如下:

Attention ( Q , K , V ) = softmax ( Q K ⊤ d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) V Attention(Q,K,V)=softmax(dk QK⊤)V

其中:

  • dk 为键的维度,做缩放是为了缓解点积随维度增加过大带来的数值不稳定性;
  • softmax 后得到的注意力权重用于对 V 进行加权平均。

多头注意力的计算为对多个独立注意力头计算后,将它们拼接,再通过一个输出矩阵 WO 得到最终的输出:

MultiHead ( Q , K , V ) = Concat ( head 1 , ... , head h ) W O \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)W^O MultiHead(Q,K,V)=Concat(head1,...,headh)WO head i = Attention ( Q W i Q , K W i K , V W i V ) \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) headi=Attention(QWiQ,KWiK,VWiV)

其中 WiQ, WiK, WiV 为各头的线性变换矩阵。


3. 缩放点积注意力

3.1 为什么使用缩放

在高维空间下,如果直接用点积 计算注意力得分,因向量维度增加,点积值通常会变得很大,导致 softmax 函数会输出极端分布,进而使得梯度变小,不利于训练。因此,引入缩放因子,即除以 d k \sqrt{d_k} dk 来缓解这种情况。

3.2 缩放点积注意力公式

完整公式如下:

e x p ⁡ ( e i j ′ ) α i j = exp ⁡ ( e i j ) ∑ j ′ exp ⁡ ( e i j ′ ) α i j = ∑ j ′ e x p ( e i j ′ ) exp⁡(eij′)\alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{j'} \exp(e_{ij'})}αij=∑j′exp(eij′) exp⁡(eij′)αij=∑j′exp(eij′)exp(eij)αij=∑j′exp(eij′)

其中:

  • eij 是未归一化的注意力得分;
  • αij 是归一化后的权重;
  • zi 是输出的向量表示。

4. 残差连接与层归一化

4.1 残差连接(Residual Connection)

残差连接用于缓解深层网络中的梯度消失问题,同时鼓励模型捕捉接近恒等映射的信息。其作用在于让输入信息能够直接流传至后续层,从而"学习"在原始表示上做出小的修改(即"学习小编辑")。

公式表示为:

y = LayerNorm ( x + F ( x ) ) y = \text{LayerNorm}(x + F(x)) y=LayerNorm(x+F(x))

其中:

  • x 为输入向量,
  • F(x) 为经过注意力或前馈网络后的输出,
  • LayerNorm 表示层归一化操作。

4.2 层归一化(Layer Normalization)

层归一化通过计算输入向量的均值和标准差,对向量进行归一化处理,从而稳定训练。具体步骤如下:

给定向量 x=[x1,x2,...,xd]

  1. 计算均值

μ = 1 d ∑ i = 1 d x i \mu = \frac{1}{d} \sum_{i=1}^{d} x_i μ=d1i=1∑dxi

  1. 计算标准差(加上一个很小的 ϵ\epsilonϵ 防止除零):

σ = 1 d ∑ i = 1 d ( x i − μ ) 2 + ϵ \sigma = \sqrt{\frac{1}{d} \sum_{i=1}^{d} (x_i - \mu)^2 + \epsilon} σ=d1i=1∑d(xi−μ)2+ϵ

  1. 归一化和线性变换

LayerNorm ( x ) i = γ i x i − μ σ + e + β i \text{LayerNorm}(x)_i = \gamma_i \frac{x_i - \mu}{\sigma+e} + \beta_i LayerNorm(x)i=γiσ+exi−μ+βi

其中 γ 和 β 是可学习的参数,分别用于重新缩放和平移归一化后的输出。e是一个小的值,以防止被零除


5. Transformer 中的解码器(Decoder)

5.1 解码器与编码器的相似性

解码器与编码器的基本构建块相似,都包含自注意力、多头注意力、前馈网络、残差连接与层归一化。然而,解码器有两个关键的区别:

  1. 因果(Masked)自注意力

    为防止未来信息泄露,解码器中计算自注意力时对未来的位置做屏蔽。

    e i j = { q i ⊤ k j d k , j ≤ i − ∞ , j > i e_{ij} = \begin{cases} \frac{q_i^\top k_j}{\sqrt{d_k}}, & j \leq i \\ -\infty, & j > i \end{cases} eij={dk qi⊤kj,−∞,j≤ij>i

    然后软化为:

    α i j = exp ⁡ ( e i j ) ∑ j ′ = 1 i exp ⁡ ( e i j ′ ) \alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{j'=1}^{i} \exp(e_{ij'})} αij=∑j′=1iexp(eij′)exp(eij)

  2. 跨注意力(Cross-Attention)

    除了自注意力外,解码器还包含跨注意力层,用于结合编码器的输出信息。在跨注意力中:

    • 查询(Query, Q) 来自解码器当前的隐藏状态;
    • 键(Key, K)值(Value, V) 来自编码器的隐藏状态;

    相应公式与前述缩放点积注意力类似:

CrossAttention ( Q , K , V ) = softmax ( Q K ⊤ d k ) V \text{CrossAttention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V CrossAttention(Q,K,V)=softmax(dk QK⊤)V

5.2 解码器的结构总结

解码器的一个典型层可以总结为:

  1. Masked Self-Attention:计算当前解码器输入的自注意力并屏蔽未来信息;
  2. 跨注意力(Encoder-Decoder Attention):利用编码器输出为解码器生成当前输出提供上下文信息;
  3. 前馈网络(Feed-Forward Network):对注意力输出进行非线性变换;
  4. 残差连接与层归一化:确保训练中梯度稳定并促进模型学习细微调整。

6. Transformer 总结及残差视角

从整体角度看,Transformer 模型的核心操作可以概括为:

  1. 多次并行注意力计算:通过多头注意力,模型同时关注不同角度的信息。
  2. 添加残差连接:让每一层学习输入上的小修正("编辑"),从而保留原始信息。
  3. 加入层归一化:使各层输入分布保持稳定,提高训练效率。
  4. 堆叠多层结构:重复上述模块,多层堆叠能捕捉到更加抽象的特征。

从残差视角来观察,Transformer 的核心是词嵌入,随后每一层做的是在原始表示上学习微小的调整,从而"编辑"出更符合任务需求的表示。

核心区别总结表:

模块 Encoder Layer Decoder Layer
Attention 1 Multi-Head Self-Attention Masked Multi-Head Self-Attention
Attention 2 Cross-Attention(Query 来自 Decoder,Key/Value 来自 Encoder)
FFN 有(相同) 有(相同)
残差&归一化

📌 为什么 Decoder 需要 Masked Self-Attention?

为了保证**自回归(Autoregressive)**生成,只能看到前面的词,不能偷看将来的词。

举例:

  • 当前生成到位置 3,不能让 Decoder 看到位置 4 的词。
  • 所以在 Attention 的 softmax 权重矩阵中,强行 mask 掉未来位置。

🤯 记忆小技巧:

Encoder Decoder
自我理解 自我生成 + 看懂输入
"我看整句,理解上下文" "我边生成边回看 Encoder 给的提示"
相关推荐
King.6245 分钟前
行业深度:金融数据治理中的 SQL2API 应用创新
大数据·开发语言·数据库·人工智能·sql·金融
云卓SKYDROID14 分钟前
无人机3S与4S电池技术对比!
人工智能·科技·无人机·科普·云卓科技
2303_Alpha15 分钟前
深度学习入门:神经网络的学习
人工智能·python·深度学习·神经网络·学习·机器学习
Blossom.11821 分钟前
边缘计算与隐私计算的融合:构建数据经济的“隐形护盾“
人工智能·深度学习·神经网络·目标检测·计算机视觉·数据挖掘·边缘计算
Clocky726 分钟前
图像预处理-色彩空间补充,灰度化与二值化
人工智能·计算机视觉
_一条咸鱼_40 分钟前
大厂AI 大模型面试:监督微调(SFT)与强化微调(RFT)原理
人工智能·深度学习·面试
云卓SKYDROID1 小时前
无人机自主导航与路径规划技术要点!
人工智能·科技·无人机·科普·云卓科技
Lx3521 小时前
🌱 《能源消耗悖论:当AI开发遇上碳中和》
人工智能
黑心萝卜三条杠1 小时前
FineLIP:突破 CLIP 文本长度限制,解锁长文本与图像的细粒度对齐
人工智能
道可云1 小时前
道可云人工智能每日资讯|首届世界人工智能电影节在法国尼斯举行
大数据·人工智能·3d·ar·vr