基于本文回答

播面 播面

文图音视,全方位拆解八股文
0
评论

讲讲Transformer的整体Encoder-Decoder架构流程

知识点图片

Transformer 的 Encoder-Decoder(编码器-解码器)架构是现代大语言模型(如 GPT、BERT、T5)的基石。要理解它的流程,我们可以把它想象成一个“阅读理解并翻译”的过程:Encoder 负责通读全文、深度理解并提取上下文特征;Decoder 负责根据 Encoder 提取的特征,结合已经生成的内容,逐字逐句地写出目标输出。

下面我将以机器翻译(例如:中文“我爱你”翻译成英文“I love you”)为例,拆解 Transformer 整体架构的数据流转流程。


第一阶段:输入处理阶段(Input Processing)

在数据真正进入 Encoder 或 Decoder 之前,必须先经过两步处理:

  1. 词嵌入(Word Embedding):
    计算机看不懂文字,所以要把“我”、“爱”、“你”转化成固定维度的数学向量(比如 512 维)。
  2. 位置编码(Positional Encoding):
    RNN 是按顺序一个词一个词处理的,天然知道先后顺序。但 Transformer 是“一眼看全句”(并行处理)的,这就导致它不知道词的先后顺序。为了解决这个问题,加入了位置编码(通常基于正弦/余弦函数),加到词向量上,告诉模型“这个词在句子中的什么位置”。

此时的数据: 带有位置信息的词向量矩阵。


第二阶段:Encoder 编码阶段(“深入理解”源语言)

Encoder 的任务是提取输入句子的全部上下文信息。Transformer 中通常有 NN 个(原论文为 6 个)完全相同的 Encoder 层堆叠而成。每个 Encoder 层内部有两个主要子层:

  1. 多头自注意力层(Multi-Head Self-Attention):
    • 作用: 让句子中的每个词都去“看”句子中的其他词,寻找关联。
    • 原理: 计算每个词的 Query(Q)、Key(K)、Value(V)。在处理“爱”这个词时,模型会计算它和“我”、“你”的关联度(Attention Score),从而知道这里的“爱”是一个动词,且主语是“我”,宾语是“你”。
  2. 残差连接与层归一化(Add & Norm):
    • 将注意力层的输入和输出相加(防止网络太深导致梯度消失),然后进行标准化(让数据分布更稳定,加速训练)。
  3. 前馈神经网络层(Feed Forward Network, FFN):
    • 对自注意力层提取到的特征进行非线性变换,进一步增强模型的表达能力。同样,之后也会接一个 Add & Norm

Encoder 的最终输出: 经过 NN 层处理后,我们得到了一组包含全局上下文信息的特征向量矩阵(我们通常称之为 Memory 或 Context)。这个矩阵将作为后续 Decoder 的重要输入。


第三阶段:Decoder 解码阶段(“逐字生成”目标语言)

Decoder 的任务是根据 Encoder 的输出和当前已经生成的词,预测下一个词。它也是由 NN 层堆叠而成,但比 Encoder 多了一个关键模块。每个 Decoder 层有三个子层:

解码过程是“自回归(Auto-regressive)”的,即预测第 tt 个词时,只能看到前 t1t-1 个词。

  1. 掩码多头自注意力层(Masked Multi-Head Self-Attention):

    • 作用: 结合已经生成的词,理解当前生成句子的语法和语义。
    • “掩码(Masked)”的作用: 因为在训练时,我们会把整个目标句子(如 "I love you")一次性喂给 Decoder,但为了防止模型“偷看”未来的标准答案,我们用一个矩阵把未来的词遮挡住(Mask)。比如在预测 "love" 时,模型只能看到 <起始符> 和 "I",看不到 "you"。
    • 之后接 Add & Norm
  2. 交叉注意力层(Cross-Attention / Encoder-Decoder Attention):

    • 作用: 这是 Encoder 和 Decoder 沟通的唯一桥梁。Decoder 在这里“回头看”源语言句子,寻找翻译当前词需要的关键信息。
    • 原理: 此时的 Query (Q) 来自于前一个 Decoder 子层(代表“我现在正在生成的词的特征”);而 Key (K) 和 Value (V) 来自于 Encoder 的最终输出(代表“整个源句子的上下文信息”)。
    • 例子: 当 Decoder 准备生成 "love" 时,它的 Q 会去和 Encoder 里的 K 匹配,发现源句子中“爱”这个词的权重最高,于是把“爱”的 V 提取过来。
    • 之后接 Add & Norm
  3. 前馈神经网络层(Feed Forward Network):

    • 与 Encoder 中一样,进行特征转换。
    • 之后接 Add & Norm

第四阶段:输出预测阶段(Output)

当 Decoder 处理完上述流程后,会输出一个向量,但这还不是最终的词。

  1. 线性映射层(Linear Layer):
    将 Decoder 最后一层的输出向量映射到“词表大小”的维度(比如你的词表有 50,000 个英文单词,就会映射成一个 50,000 维的向量)。
  2. Softmax 层:
    将这个 50,000 维的向量转化为概率分布(所有数值相加等于 1)。
  3. 选择词语:
    概率最高的那个维度对应的单词,就是模型预测的下一个词(比如 "love" 这个词的概率是 0.95,就输出 "love")。

整体动态流程串联(以推理阶段为例)

  1. 输入源句: 把 "我 爱 你" 喂给 Encoder
  2. 提取特征: Encoder 并行计算,输出包含中文完整含义的特征矩阵 MM
  3. 开始解码:
    • Step 1: 给 Decoder 输入特殊的起始符号 <SOS> (Start of Sentence)。Decoder 结合 MM,输出第一个单词 "I"
    • Step 2: 给 Decoder 输入 <SOS> I。Decoder 结合 MM,输出第二个单词 "love"
    • Step 3: 给 Decoder 输入 <SOS> I love。Decoder 结合 MM,输出第三个单词 "you"
    • Step 4: 给 Decoder 输入 <SOS> I love you。Decoder 结合 MM,输出结束符号 <EOS> (End of Sentence)。
  4. 生成结束: 流程停止,最终输出 "I love you"。

总结

  • Encoder = 阅读全文 -> 提取关键特征 (自注意力)
  • Decoder = 看着已写的内容 (掩码自注意力) + 回顾原文特征 (交叉注意力) -> 预测下一个词。

这种架构巧妙地利用了并行计算(训练速度快)注意力机制(解决长距离依赖问题),彻底淘汰了过去的 RNN 模型,开启了大模型时代。

00:00
00:00