Transformer 架构及其变体(如 GPT、BERT 等)已经成为许多 NLP 任务的基石。它们不仅在学术界取得了巨大成功,也被广泛应用于工业界,改善了搜索引擎、语音识别、推荐系统等技术的性能。理解 Transformer 架构对于从事深度学习和 NLP 研究的人来说至关重要。它的提出标志着 NLP 领域的一个重要转折点,开启了处理语言数据的新篇章。
一、Transformer 的核心概念
1. 自注意力机制(Self-Attention)
自注意力机制是 Transformer 的核心,它使模型能够处理输入序列中的每个元素,并计算元素之间的关系。简而言之,自注意力机制允许模型在处理一个元素(如一个单词)时,考虑到序列中的所有其他元素,从而捕获它们之间的上下文关系。这种机制特别适用于处理序列数据,如文本或时间序列数据。
在数学上,Scaled Dot-Product Attention 定义为:
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
其中 $Q$(Query)、$K$(Key)、$V$(Value)分别是查询矩阵、键矩阵和值矩阵,$d_k$ 是键向量的维度。通过缩放因子 $\sqrt{d_k}$ 防止点积过大导致 softmax 梯度消失。
2. 编码器 - 解码器结构
Transformer 原始架构包含两部分:编码器和解码器。编码器负责处理输入数据,解码器负责生成输出数据。在 NLP 任务中,例如机器翻译,编码器处理源语言文本,解码器生成目标语言文本。每个编码器或解码器由多个相同的层堆叠而成,每层都包含自注意力机制和前馈神经网络。
3. 位置编码
由于 Transformer 完全基于注意力机制,不使用循环(RNN)或卷积(CNN)结构,因此无法直接处理序列中的位置信息。为了解决这个问题,Transformer 引入了位置编码,将位置信息添加到输入序列的每个元素中。这使模型能够利用元素的顺序信息。
位置编码通常使用正弦和余弦函数生成,公式如下:
$$PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d_{model}})$$ $$PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d_{model}})$$
4. Transformer 的优点
- 并行计算能力:相比于 RNN 需要按顺序处理序列的元素,Transformer 可以同时处理整个序列,显著提高了计算效率。
- 长距离依赖处理:自注意力机制使得模型能够直接计算序列中任意两个元素之间的关系,有效地捕获长距离依赖信息。
- 灵活性和通用性:Transformer 架构可以应用于多种 NLP 任务,如文本分类、机器翻译、问答系统等,只需少量修改即可适应不同的应用场景。
二、Transformer 整体架构详解
1. 背景知识铺垫
1.1 生成式模型基础
在自然语言处理中,生成式模型旨在预测下一个词的概率分布。早期的方法如 N-gram 统计了前 N 个词出现的频率来预测下一个词,但存在数据稀疏和过拟合问题。现代深度学习模型则通过神经网络学习词的向量表示,从而更好地捕捉语义信息。
1.2 神经网络基础
Transformer 使用多层神经网络进行预测。输入的词经过编码后向后传递,经过神经元传播和权重更新。输出层根据任务类型不同,可以是二分类(如情感分析)、多分类(如文本分类)或词汇表概率分布(如文本生成)。
2. 整体框架流程
2.1 Tokenization(分词)
在自然语言处理 (NLP) 中,tokenization 是将文本分解为更小的单元的过程,这些单元通常被称为 tokens。英文一般按照空格进行切分,而中文则需要建立分词词典或使用开源工具(如 Jieba、spaCy)。此外,停用词过滤也是预处理的重要步骤,可减少模型噪声。
2.2 Embedding(词嵌入)
Embedding 建立了自然语言和计算机识别语言的桥梁,主要目的是让相似性的词给予更加相近的向量表示。词嵌入可以通过随机初始化训练得到,也可以预训练(如 Word2Vec、GloVe)后加载。
2.3 位置编码
我们知道 RNN 和 LSTM 是一种循环的序列模型,本身训练的过程中就会有位置的训练;但是 Transformer 中,到现在为止我们没有讲到与序列或者排序相关的内容。在自然语言中,字词的顺序是会影响语义的,比如'我爱你'和'你爱我'。


