在Transformer架构于2017年通过论文《Attention Is All You Need》横空出世之前,自然语言处理(NLP)领域一直由循环神经网络(RNN)及其变体(如LSTM、GRU)所主导。RNN通过其顺序处理的特性来捕捉序列中的依赖关系,但这既带来了并行计算的瓶颈,也使得模型难以捕捉长距离的依赖(长期遗忘问题)。
Transformer架构彻底改变了这一切。它完全摒弃了循环结构,引入了一种名为 自注意力(Self-Attention) 的机制,允许模型在处理一个词时,同时“关注”到输入序列中的所有其他词,并计算它们之间的相关性权重。这种并行化的、全局的视野,不仅极大地提升了训练效率,也从根本上解决了长距离依赖问题,为后来如BERT、GPT等一系列革命性的语言模型奠定了基础。
从宏观上看,原始的Transformer模型遵循了一个经典的 编码器-解码器(Encoder-Decoder) 架构,这在机器翻译等序列到序列(Seq2Seq)任务中非常常见。
- 编码器(Encoder):负责接收并处理整个输入序列(例如,一句待翻译的德语),并将其转换为一组富含上下文信息的连续表示(向量)。
- 解码器(Decoder):接收编码器的输出,并结合已经生成的部分输出,逐词地生成目标序列(例如,翻译后的英语句子)。
在原始论文中,编码器和解码器都是由6个相同的层堆叠而成。
要理解Transformer,就必须理解自注意力。它的核心思想是:一个词的含义并非孤立的,而是由它所处的上下文共同决定的。 自注意力机制就是计算序列中每个词对于其他所有词的“重要性”或“关注度”得分。
为了实现这一点,对于输入序列中的每一个词的词向量(embedding),自注意力层会生成三个新的、维度更低的向量:
- 查询向量 (Query, Q):代表当前词,用于去“查询”序列中的其他词。
- 键向量 (Key, K):代表序列中的其他词,用于被查询,与Query向量进行匹配。
- 值向量 (Value, V):代表序列中其他词的实际信息。
注意力分数的计算过程可以简化为以下四步:
- 打分(Score):将当前词的Query向量与序列中所有词的Key向量进行点积运算,得到一个相似度分数。这个分数衡量了两个词之间的相关性。
- 缩放(Scale):将得到的分数除以一个缩放因子(通常是Key向量维度的平方根),以防止梯度在训练中过小或过大,保持训练稳定。
- 加权(Weights):将缩放后的分数通过一个SoftMax函数,将其转换为一组总和为1的概率权重。这个权重代表了当前词应该对序列中其他每个词“投入多少注意力”。
- 求和(Sum):将得到的权重分别与每个词的Value向量相乘,然后将所有结果加权求和,得到最终的自注意力输出。这个输出向量就是当前词的、融合了全局上下文信息的新表示。
这个过程对序列中的每个词都并行地进行,最终生成一组全新的、富含上下文信息的向量。
与其只进行一次自注意力计算,Transformer选择将Q、K、V向量进一步拆分成多个“头”(Heads),并对每个头独立进行自注意力计算。这就像让模型从不同的“子空间”或“角度”去理解句子。例如,一个头可能关注语法结构,另一个头可能关注语义关系。最后,将所有头的输出拼接起来,通过一个线性层进行整合。
由于Transformer完全抛弃了RNN的循环结构,它本身无法感知到词在句子中的顺序。为了解决这个问题,模型在词向量输入时,会额外加入一个 位置编码(Positional Encoding) 向量。这个向量由特定频率的正弦和余弦函数生成,能够为模型提供每个词的绝对和相对位置信息。
在每个编码器和解码器的注意力层之后,都有一个独立的前馈神经网络。它对每个位置的向量进行非线性变换,进一步处理和丰富注意力层提取出的信息。
每个子层(如自注意力层、前馈网络层)的周围都包裹着一个 残差连接(Residual Connection) 和一个 层归一化(Layer Normalization)。残差连接(即将子层的输入直接加到其输出上)有助于避免在深度网络中出现梯度消失问题,而层归一化则有助于稳定训练过程。
Transformer架构不仅仅是一个单一的模型,它是一种强大的设计范式。基于其核心组件,业界衍生出了多种成功的变体:
- 编码器-解码器模型(Encoder-Decoder):如原始Transformer、BART、T5,非常适合翻译、摘要等Seq2Seq任务。
- 仅编码器模型(Encoder-only):如BERT、RoBERTa,擅长理解文本,非常适合文本分类、情感分析、命名实体识别等任务。
- 仅解码器模型(Decoder-only):如GPT系列,是自回归的文本生成大师,引领了大型语言模型的浪潮。
通过自注意力机制,Transformer模型能够以前所未有的效率和深度捕捉语言的复杂性,为现代NLP乃至整个AI领域的发展奠定了坚实的基础。
