Transformer基础

本文主要介绍了Transformer的原理

引言

Transformer 是深度学习中的一次革命。2017 年,Google 在论文 《Attention is All You Need》 中首次提出该结构,在完全抛弃 RNN/CNN 的前提下,仅利用 注意力机制(Attention) 便刷新多项 NLP 基准任务成绩。此后,GPT、BERT、T5、ViT 等明星模型无一不是 Transformer 的变体或衍生。


一文读懂Transformer(CSDN转载)


为什么要用 Transformer?

传统序列模型痛点 Transformer 优势
序列计算串行:RNN/LSTM 依赖前一步输出,无法并行 完全并行:自注意力一次性建模所有位置
长距离依赖困难:梯度消失 / 爆炸 全局依赖:任意两位置直接交互
训练效率低:序列越长越慢 收敛更快:GPU/TPU 高效并行矩阵乘
表达能力有限:难以捕捉复杂模式 扩展性强:易于叠加深层、跨模态

Transformer 模块结构总览

Transformer 架构可分为以下模块:

  1. 位置编码(Positional Encoding)
  2. 多头注意力机制(Multi-Head Attention)
  3. 残差连接与层归一化(Residual + LayerNorm)

每个 Encoder Block 就是这些模块的组合:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Input Embedding

Positional Encoding

Multi-Head Self-Attention

Residual + LayerNorm

Feed Forward Network

Residual + LayerNorm

Output

位置编码

由于 Transformer 没有像 RNN 那样的时间结构,它无法天然获取词语的顺序信息。因此,需要通过位置编码(Positional Encoding)来引入序列的位置信息。

原论文提出了基于三角函数的固定位置编码,数学表达如下:

$$
\begin{aligned}
PE_{(pos, 2i)} &= \sin\left( \frac{pos}{10000^{2i / d_{\text{model}}}} \right) \
PE_{(pos, 2i+1)} &= \cos\left( \frac{pos}{10000^{2i / d_{\text{model}}}} \right)
\end{aligned}
$$

  • ( pos ):词在序列中的位置
  • ( i ):维度索引
  • $$( d_{\text{model}} )$$ 词向量的维度大小

特点:

  • 可推广到任意序列长度
  • 不增加训练参数
  • 不同维度周期不同,可表示位置相对关系

现代 Transformer 也常使用可学习的位置编码,或如 RoPE、ALiBi 等改进形式。


多头注意力机制

注意力机制的目标是:让每个词动态关注输入序列中的其他词,捕捉上下文依赖关系。

基本注意力机制(Scaled Dot-Product Attention)如下:

$$
\text{Attention}(Q, K, V) = \text{softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right)V
$$

  • ( Q )(Query):当前词向量
  • ( K )、( V ):输入序列中所有词作为键和值
  • $$( d_k )$$ 缩放因子,防止梯度过小

多头注意力(Multi-Head Attention)

将输入拆分成多个子空间并行执行注意力,再拼接输出:

$$
\text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1, …, \text{head}_h)W^O
$$

每个 head 可以学习不同类型的依赖,比如:

  • 局部 vs 全局语义
  • 位置对齐 vs 语法关系

残差连接与层归一化

Transformer 堆叠多个子模块,为了避免梯度消失并保持信息流通,引入了残差连接(Residual Connection)层归一化(LayerNorm)

残差连接的表达式如下:

$$
\text{Output} = \text{LayerNorm}(x + \text{Sublayer}(x))
$$

  • ( x ):子层的输入
  • $$( \text{Sublayer}(x) )$$ 如 Self-Attention 或 FFN 的输出

作用:

  • Residual:信息跳跃传播,缓解深层退化
  • LayerNorm:标准化每个样本的通道,提升训练稳定性(不同于 BatchNorm)

在每个 Attention 层和 FFN 层之后都采用了这个组合。


作者

Gary

发布于

2025-05-25

更新于

2025-05-28

许可协议

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...