Transformer基础
本文主要介绍了Transformer的原理
引言
Transformer 是深度学习中的一次革命。2017 年,Google 在论文 《Attention is All You Need》 中首次提出该结构,在完全抛弃 RNN/CNN 的前提下,仅利用 注意力机制(Attention) 便刷新多项 NLP 基准任务成绩。此后,GPT、BERT、T5、ViT 等明星模型无一不是 Transformer 的变体或衍生。
为什么要用 Transformer?
传统序列模型痛点 | Transformer 优势 |
---|---|
序列计算串行:RNN/LSTM 依赖前一步输出,无法并行 | 完全并行:自注意力一次性建模所有位置 |
长距离依赖困难:梯度消失 / 爆炸 | 全局依赖:任意两位置直接交互 |
训练效率低:序列越长越慢 | 收敛更快:GPU/TPU 高效并行矩阵乘 |
表达能力有限:难以捕捉复杂模式 | 扩展性强:易于叠加深层、跨模态 |
Transformer 模块结构总览
Transformer 架构可分为以下模块:
- 位置编码(Positional Encoding)
- 多头注意力机制(Multi-Head Attention)
- 残差连接与层归一化(Residual + LayerNorm)
每个 Encoder Block 就是这些模块的组合:
1 | Input Embedding |
位置编码
由于 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 层之后都采用了这个组合。
Transformer基础
1.BP神经网络
2.卷积神经网络(CNN)
3.YOLO原理
4.机器学习一些进阶知识
5.tensorRT基础操作
6.Cuda基础操作
7.MQTT 与 HTTP 通信协议对比及项目应用场景选择
8.机器学习基础知识总结