【小白学AI系列】NLP 核心知识点(五)Transformer介绍
Transformer
Transformer 是一种基于自注意力机制(Self-Attention Mechanism)的深度学习模型,首次由 Vaswani 等人于 2017 年在论文《Attention is All You Need》中提出。与 RNN 和 LSTM 不同,Transformer 不需要依靠序列顺序进行递归,而是通过全局注意力机制一次性处理整个输入序列,从而具备了更高的计算效率和更强的并行化能力。
Transformer 的提出彻底改变了自然语言处理(NLP)和其他领域的发展,广泛应用于机器翻译、文本生成、语言理解、图像识别等任务。
Transformer 的结构
Transformer 模型由两部分组成:
- 编码器(Encoder):用于将输入序列转化为上下文相关的表示。
- 解码器(Decoder):用于根据编码器的输出生成新的序列(如翻译成另一种语言)。
Transformer 的基本结构如下:
Transformer
├── 编码器(Encoder)
│ ├── 多头自注意力机制(Multi-Head Attention)
│ ├── 前馈神经网络(Feed-Forward Neural Network)
│ └── 残差连接与层归一化(Residual Connection + Layer Normalization)
│
└── 解码器(Decoder)
├── 多头自注意力机制(Multi-Head Attention)
├── 编码器-解码器注意力机制
├── 前馈神经网络
└── 残差连接与层归一化
核心机制解析
1. 多头自注意力机制(Multi-Head Self-Attention)
自注意力机制的核心是:每个单词能够根据输入序列的上下文信息,动态地分配注意力权重,从而获得上下文相关的表示。
计算步骤:
- 将输入序列 ( X ) 通过线性变换生成查询向量(Query, Q)、键向量(Key, K) 和 值向量(Value, V)。
- 计算每个查询向量 ( Q_i ) 与所有键向量 ( K_j ) 之间的相似度,通过 softmax 函数获得注意力权重。
- 将注意力权重与对应的值向量 ( V ) 相乘,得到加权后的输出。
公式:
Attention
(
Q
,
K
,
V
)
=
softmax
(
Q
K
T
d
k
)
V
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
Attention(Q,K,V)=softmax(dkQKT)V
其中:
- ( Q ):查询矩阵
- ( K ):键矩阵
- ( V ):值矩阵
- ( d_k ):向量的维度(用来进行缩放)
多头注意力机制 是将多个自注意力机制并行计算,捕捉到输入序列中不同层次的信息,然后将多个头的输出拼接成最终结果。
2. 前馈神经网络(Feed-Forward Network, FFN)
在自注意力机制后,每个位置的输出会通过一个前馈神经网络(通常是两层全连接层)进行非线性变换,提高模型的非线性表达能力。
公式:
F
F
N
(
x
)
=
ReLU
(
x
W
1
+
b
1
)
W
2
+
b
2
FFN(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2
FFN(x)=ReLU(xW1+b1)W2+b2
其中 ( W1 ) 和 ( W2 ) 是权重矩阵,( b1 ) 和 ( b2 ) 是偏置项。
3. 残差连接与层归一化(Residual Connection + Layer Normalization)
为了避免梯度消失和梯度爆炸问题,Transformer 在每一层增加了残差连接,并在残差连接之后进行层归一化(Layer Normalization),确保输出保持稳定,提升模型训练的稳定性。
残差连接公式:
Output
=
LayerNorm
(
x
+
SubLayer
(
x
)
)
\text{Output} = \text{LayerNorm}(x + \text{SubLayer}(x))
Output=LayerNorm(x+SubLayer(x))
其中 ( x ) 是输入,( \text{SubLayer}(x) ) 是注意力机制或前馈网络的输出。
4. 位置编码(Positional Encoding)
由于 Transformer 不像 RNN 那样依靠序列的顺序信息,因此需要为输入序列加入位置编码,帮助模型捕获序列的时序特征。
位置编码公式:
P
E
(
p
o
s
,
2
i
)
=
sin
(
p
o
s
1000
0
2
i
/
d
)
PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right)
PE(pos,2i)=sin(100002i/dpos)
P
E
(
p
o
s
,
2
i
+
1
)
=
cos
(
p
o
s
1000
0
2
i
/
d
)
PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right)
PE(pos,2i+1)=cos(100002i/dpos)
其中:
- ( pos ) 是单词在序列中的位置。
- ( i ) 是维度索引。
- ( d ) 是向量的维度。
位置编码将序列的位置信息注入到输入嵌入中,使得模型能够区分“第一个词”和“第二个词”。
Transformer 的应用
1. 机器翻译
Transformer 最初的应用就是机器翻译任务。在机器翻译中:
- 编码器将源语言的句子转化为上下文表示。
- 解码器根据上下文生成目标语言句子。
2. 文本生成
GPT(生成预训练模型)是基于 Transformer 解码器结构的文本生成模型,能够根据输入文本生成合理的续写内容。
3. 语言理解
BERT(双向编码器表示模型)是基于 Transformer 编码器结构的语言理解模型,擅长回答问题、文本分类等任务。
4. 图像识别
Vision Transformer(ViT)将图像切分成小块,并将它们视为序列输入到 Transformer 中,从而实现了图像识别任务。
Transformer 的优点和缺点
优点:
- 高效并行:相比 RNN 和 LSTM,Transformer 不需要逐步递归处理序列,可以并行处理整个序列,大大提高了训练效率。
- 捕获长距离依赖:通过自注意力机制,Transformer 能够轻松捕获长距离的上下文关系。
- 结构灵活:编码器和解码器模块可以根据任务需求自由组合。
缺点:
- 计算量大:多头自注意力机制和全连接层使得模型计算复杂度较高,对硬件资源要求较高。
- 需要大规模数据:Transformer 模型的训练通常需要海量的数据和时间。
经典模型发展
- 2017 年:Transformer 提出,首次应用于机器翻译,性能超越传统 RNN 和 LSTM。
- 2018 年:BERT 推出,将 Transformer 编码器用于双向语言理解,成为 NLP 领域的里程碑。
- 2018 年:GPT(Generative Pretrained Transformer) 推出,将 Transformer 解码器用于文本生成。
- 2020 年:GPT-3 震惊 NLP 领域,通过 1750 亿参数的预训练模型实现了令人惊艳的文本生成效果。