1. 什么是 Transformer
-
背景:
在自然语言处理领域,早期常使用循环神经网络(RNN)及其变体(如 LSTM、GRU)来处理序列数据,如机器翻译、文本生成等任务。然而,RNN 结构存在以下问题:- 随着序列长度增加,模型难以捕捉远距离词汇之间的关联,且训练会出现梯度消失或梯度爆炸等现象。
- 训练时难以进行大规模并行计算,速度较慢。
-
Transformer 的诞生:
2017 年,论文《Attention is All You Need》提出了 Transformer 模型。Transformer 彻底摒弃了循环结构,转而依赖 Attention 机制 来处理序列中的依赖关系,大幅提升了训练效率,并能更好地捕捉长距离依赖。 -
主要结构:
Transformer 的整体结构可以概括为编码器(Encoder)和解码器(Decoder)两大部分:- Encoder:由多个相同的编码器层(Encoder Layer)堆叠而成,每一层主要包含 多头自注意力(Multi-Head Self-Attention) 和 前馈网络(Feed-Forward Network)。
- Decoder:与编码器类似,也堆叠了多层的解码器层(Decoder Layer)。解码器层包含三个主要部分:掩码多头自注意力(Masked Multi-Head Self-Attention)、**与编码器交互的多头注意力(Encoder-Decoder Attention)**以及 前馈网络。
-
优势:
- 能更高效地并行训练:由于不需要按时间步逐个地处理序列。
- 能更好地捕捉句子中远距离的依赖关系。
- 在 NLP 多个任务(翻译、问答、文本生成等)上有显著的效果提升。
2. 什么是 Attention
-
Attention 机制的动机:
在处理一句话时,通常并不是句子中所有词对当前输出预测都同等重要。例如,“我喜欢吃苹果”这句话中,如果要预测“吃”的后面那个词,就需要更多关注“苹果”,而不必太在意“我”。Attention 机制通过加权的方式,让模型自动学习“关注”句子中最相关的部分。 -
计算过程概览:
在 Transformer 中,一个 Attention 模块通常包含以下步骤:- 将输入向量分别映射为 Query (Q)、Key (K)、Value (V)。
- 通过 Q 和 K 的点积(或其他度量)计算相似度,得到注意力分布(即每个单词对于当前 Query 的重要程度)。
- 将注意力分数与 V 相乘以加权输出,得到最终的注意力结果。
-
Self-Attention(自注意力):
在 Transformer 的 Encoder 或 Decoder 内部,每个单词都将自己当作 Query,与整句话中的所有单词(包含自己)进行 Key、Value 计算,从而捕捉全局上下文信息。- 具体来说,句子中每个位置都会输出自己的 Q、K、V,然后进行点积计算。这样,网络能够了解一个词与其他所有词(甚至包括它自己)之间的关系。
-
Multi-Head Attention(多头注意力):
自注意力 只是 Attention 机制的一个核心操作。Transformer 并不只做一次自注意力计算,而是把 Q、K、V 分成多个子空间(即多个“头”,Heads),在每个子空间分别进行注意力计算,然后再将各子空间的结果拼接起来。这样做的好处是模型可以学习到不同角度的语义关系,提升表达能力。 -
Encoder-Decoder Attention:
- 解码器在生成输出时,除了需要关注解码器本身已有的输出序列(自注意力)外,还需要关注编码器输出的上下文表示(Encoder 输出),这就是 Encoder-Decoder Attention。
- 模型在生成下一个词时,通过这个注意力模块能够“查看”输入句子的每个词与当前要生成的目标词之间的关联。
3. 重点总结
-
Transformer 的核心特点:
- 不再依赖传统 RNN 或 CNN 结构,而是使用 Attention 完成序列到序列的映射。
- 通过自注意力(Self-Attention)模块能够同时关注序列中所有位置的依赖关系,让模型可以高效并行并捕捉长距离依赖。
- 模型结构由堆叠的编码器层和解码器层组成,形成高度模块化的设计。
-
Attention 的核心作用:
- 通过 Q-K-V 机制计算每个词对目标词的相关性,将最重要的上下文信息赋予更高的权重。
- 多头注意力能够从不同的投影空间提取信息,提高模型对语义的捕捉能力。
总之,Transformer 是一种彻底基于 Attention 机制的神经网络结构,克服了 RNN 难以并行以及捕捉长距离依赖不足的缺点。Attention(尤其是自注意力)在其中扮演了最重要的角色,通过对不同词之间关联度的计算和加权,不仅显著提升了模型的性能,还极大加速了训练与推理过程。
接下来我会在我的这个专栏里详细解读一下Transformer的原理,以及常见的LLM是如何使用Transformer这个历史转折点一样的结构的。希望大家多多关注!
参考: jalammar