【一、基础篇】Transformer 模型主要由哪两部分组成?
Transformer模型主要由编码器(Encoder) 和解码器(Decoder) 两大部分组成。这是一个经典的序列到序列(Seq2Seq)架构,最初是为机器翻译等任务设计的,其中编码器负责理解输入序列,而解码器负责生成输出序列。
下面这个表格清晰地展示了两部分的核心构成与职能。
| 组件 | 核心职能 | 主要子层 | 关键特性 |
|---|---|---|---|
| 编码器 (Encoder) | 理解与分析输入:将输入序列(如源语言句子)转换为一个富含上下文信息的隐藏表示(语义特征)。 | 1. 多头自注意力层 (Multi-Head Self-Attention) 2. 前馈神经网络层 (Position-wise Feed-Forward Network) | 双向上下文感知:每个词元可以同时关注输入序列中的所有其他词元,从而全面捕捉上下文关系。 |
| 解码器 (Decoder) | 生成输出序列:基于编码器提供的上下文和已生成的输出词元,自回归地生成目标序列(如目标语言句子)。 | 1. 掩码多头自注意力层 (Masked Multi-Head Self-Attention) 2. 编码器-解码器注意力层 (Encoder-Decoder Attention) 3. 前馈神经网络层 (Position-wise Feed-Forward Network) | 序列生成与聚焦:1. 防止看到“未来”信息,确保生成过程自回归。2. 允许解码器在生成时聚焦于输入序列的相关部分。 |
💡 核心子层详解
-
编码器的自注意力:这使得编码器在处理序列时,每个位置都能直接与序列中所有其他位置建立联系,从而有效捕捉长距离依赖关系。例如,在理解句子“The animal didn’t cross the street because it was too tired”中“it”所指代的对象时,自注意力机制能帮助模型将“it”与“animal”关联起来。
-
解码器的掩码自注意力与交互注意力:
- 掩码自注意力:确保在生成每个词元时,只能关注到该词元之前已生成的词元,防止信息泄露,这是实现自回归生成的关键。
- 编码器-解码器注意力(又称交叉注意力):在此层面,解码器将编码器输出的完整序列信息(Key和Value)与自身当前已生成的内容(Query)进行交互,从而决定在生成下一个词时需要重点关注输入序列的哪些部分。
🔄 协同工作流程
两部分通过堆叠(原始论文中N=6)和协作,完成复杂任务。以一个简单的机器翻译过程(英译中)为例:
- 编码:输入英文句子“Hello world”首先被转换为词向量并加入位置信息,然后送入编码器。经过多层编码器处理后,整个句子被编码成一个蕴含丰富语义的上下文张量C。
- 解码:解码器开始工作。首先,给定起始符
<sos>,通过掩码自注意力层聚焦自身起始状态。接着,在编码器-解码器注意力层,起始符产生的Query与编码器输出C(Key/Value)进行计算,找到源句中应关注的部分(“Hello”),结合自身状态生成第一个目标词“你好”。 - 迭代生成:将“
<sos>你好”作为新的输入送入解码器,重复上述过程。掩码确保生成“世界”时只能看到“<sos>”和“你好”。编码器-解码器注意力则可能提示模型此时应关注源句中的“world”。此过程持续直至生成结束符<eos>。
简而言之,编码器是理解者,负责深度解析输入;解码器是生成者,负责基于理解创作输出。两者协同,完成了从源序列到目标序列的转换。
希望以上解释能帮助您清晰地理解Transformer的核心架构。如果您对其中某个组件(如注意力机制的具体计算)感兴趣,我们可以继续深入探讨。
