核心思想:词与词的对话
想象你在读这句话:"猫坐在垫子上,它很舒适。"
当你理解"它"指的是"猫"时,你的大脑其实在做一件事:把当前词和句子里所有其他词建立联系,判断哪些最相关。这就是 Transformer 的核心机制——注意力(Attention)。
三个核心组件
1. 注意力机制(Self-Attention)
每个词生成三个向量:
- Q(Query):我想找什么?
- K(Key):我能提供什么信息?
- V(Value):我实际携带的内容
每个词的 Q 和所有词的 K 做点积,算出相关度分数,经过 Softmax 归一化后,再对所有词的 V 做加权求和,得到这个词更新后的表示。
2. 多头注意力(Multi-Head Attention)
模型不只跑一次注意力,而是同时跑 8 个、16 个甚至更多"头",每个头捕捉不同的语言关系,比如语法结构、指代关系、语义相关性等,最后把所有头的结果拼接起来,融合成更丰富的表示。
3. 前馈网络(FFN)
注意力完成"词间交流"之后,每个词的向量会独立通过一个两层神经网络,做非线性变换,进一步增强模型的表达能力。这一步是逐词进行的,词与词之间不再交互。
这三步组成一个完整的 Transformer 层:Self-Attention → 残差连接 → Layer Norm → FFN → 残差连接 → Layer Norm。实际模型会把这样的层叠加 12、32、甚至 96 次,层数越深,捕捉到的语义就越抽象。
动手试一试:注意力是如何分配的
下面以"猫坐在垫子上,它很舒适"为例,点击任意一个词,观察它在不同层会把"注意力"投向哪些词——连线越粗、颜色越深,代表关联越强。
完整流程:从输入到输出
① 词嵌入 + 位置编码
每个词先被转换成一个向量(比如 512 维),再加入位置信息(这个词是句子中第几个)。因为 Transformer 本身不感知顺序,必须手动把位置信息编码进去。
② N 个 Transformer 层叠加
输入向量依次通过多个 Transformer 层,每一层都让词与词之间充分"交流",并不断提炼出更高层次的语义特征。
③ 输出
最后一层输出的向量,经过一个线性层加 Softmax,转换成对下一个词的概率分布,从而完成预测。
注意力机制的数学表达
整个机制的核心公式其实只有一行:
其中除以 $\sqrt{d_k}$ 是为了防止点积数值过大,导致 Softmax 后梯度过小、训练不稳定。就是这样一个看似简单的公式,支撑起了 GPT、BERT、Claude 等模型的整个核心运算。
为什么 Transformer 这么强?
| 问题 | RNN 的做法 | Transformer 的做法 |
|---|---|---|
| 处理长文本 | 顺序逐词读取,早期信息容易丢失 | 所有词直接互相注意,距离无障碍 |
| 训练速度 | 必须串行计算,无法并行 | 全部并行,GPU 利用率极高 |
| 捕捉关系 | 难以处理长距离依赖 | 任意两词之间一步直达 |
正是这种"全词并行 + 任意距离直接关联"的设计,让 Transformer 在长文本理解、训练效率和可扩展性上全面超越了此前的循环神经网络架构,也成为了如今几乎所有大语言模型的基石。