Transformer、Seq2Seq、Encoder-Decoder、Attention由这四者之间的关系可以从模型架构的发展脉络来理解:
-
Seq2Seq 与 Encoder–Decoder 模型
“Seq2Seq”(sequence‐to‐sequence)是一类用于将一个变长序列映射为另一个变长序列的任务(例如机器翻译、对话生成等)。为了解决这类任务,人们提出了Encoder–Decoder 模型:- 编码器(Encoder):读取输入序列,将其转换为一个(或一系列)隐藏表示(通常是固定长度的向量或者一个隐藏状态序列)。
- 解码器(Decoder):根据编码器输出的表示,逐步生成目标序列。
在早期的实现中,编码器和解码器常用的是循环神经网络(RNN、LSTM或GRU)。
-
Attention 机制的引入
传统的 Encoder–Decoder 模型将整个输入序列压缩成一个固定的向量,这在处理长序列时往往会丢失关键信息(即所谓的信息瓶颈问题)。为了解决这一问题,Attention 机制被引入到 Seq2Seq 模型中:- 在每个解码步骤中,解码器不再仅依赖那个固定的上下文向量,而是根据当前的解码状态计算与输入各时刻隐藏状态的“相关性”(或“对齐”分数),然后用这些分数作为权重,对所有编码器输出进行加权求和,形成一个动态的上下文向量。
这样,模型能够“关注”输入中与当前输出最相关的部分,从而大大提高了长序列翻译等任务的效果。
- 在每个解码步骤中,解码器不再仅依赖那个固定的上下文向量,而是根据当前的解码状态计算与输入各时刻隐藏状态的“相关性”(或“对齐”分数),然后用这些分数作为权重,对所有编码器输出进行加权求和,形成一个动态的上下文向量。
-
Transformer 架构
Transformer 是在 2017 年提出的一种全新的 Encoder–Decoder 架构,其核心思想是完全依赖注意力机制:- 自注意力(Self-Attention):在编码器内部,每个词的表示可以直接和同一序列中其他词的表示进行交互,不依赖传统的序列化的递归结构;解码器内部也使用了带有因果掩码(Causal Masking)的自注意力,确保生成时只能利用“过去”的信息。
- 交叉注意力(Cross-Attention):解码器的每一步会“关注”编码器输出的各个位置,从而获得与当前生成内容相关的输入信息。
- Transformer 通过多头注意力机制(Multi-Head Attention)允许模型从不同的“角度”捕捉信息,同时利用并行化计算,大大提高了训练效率和建模能力。
总结来说:
- Seq2Seq 是一个任务范式,Encoder–Decoder 是实现这种任务的基本架构;
- Attention 机制是为了解决传统 Encoder–Decoder 模型固定向量传递信息不足的问题而提出的增强方法,使得解码器可以动态地选择输入信息;
- Transformer 则是在此基础上发展出的全新架构,它完全依赖注意力机制(包括自注意力和交叉注意力),取代了传统的递归或卷积结构,因而具备更强的并行计算能力和更好的长距离依赖建模能力。
这种发展脉络体现了从最初的序列映射(Seq2Seq、Encoder–Decoder),再到利用 Attention 改进信息传递,最终到用 Transformer 架构构建大规模、并行高效的模型的过程。