放弃循环,拥抱注意力:Transformer 架构深度详解
2017年,谷歌在论文《Attention Is All You Need》中提出了 Transformer 架构。它彻底改变了自然语言处理(NLP)的游戏规则,并为后来的 GPT、BERT、Claude 等大模型的爆发奠定了物理基础。
在 Transformer 出现之前,我们处理文字(序列数据)主要靠 RNN(循环神经网络)。但 RNN 有两个致命弱点:
- 无法并行计算(必须一个词一个词往后传,速度慢)。
- 长距离记忆差(句子太长,开头的词到结尾就忘了)。
Transformer 通过一种全新的"全景式扫描"机制,完美解决了这些问题。
一、 整体结构:编码器-解码器(Encoder-Decoder)
从宏观上看,Transformer 像一个精密的"翻译机器",由左右两大部分组成:
- 左侧:编码器(Encoder)
- 作用:负责"理解"输入。它将输入的文字转化成包含丰富语义信息的向量(特征)。
- 在 BERT 等模型中,只使用了这一部分。
- 右侧:解码器(Decoder)
- 作用:负责"生成"输出。它参考编码器提供的上下文,一个词一个词地生成结果。
- 在 GPT 等生成式模型中,主要使用的是这一部分的变体。
二、 核心组件:Transformer 的四块基石
1. 自注意力机制(Self-Attention)------ 灵魂
这是 Transformer 最天才的地方。它不再像 RNN 那样按顺序读,而是让句子里的每个词都与所有词发生"关系"。
- Q (Query)、K (Key)、V (Value): 每个词都会生成这三个分身。
- Q:我想找什么样的信息?
- K:我能提供什么样的信息?
- V:我具体的内容是什么?
- 计算过程: 系统计算每一个 Q 与所有 K 的相似度(点积),得出权重。然后根据这个权重,把所有 V 汇总起来。
- 结果: 比如句子"银行 门口的河干涸了",当处理"银行"这个词时,它会重点关注到"河",从而判断这里的"银行"是 Bank(河岸)而不是金融机构。
2. 多头注意力(Multi-Head Attention)
"多头"意味着让模型同时以不同的"视角"去看句子。
- 一个头负责看句法结构(主谓宾)。
- 一个头负责看代词指代(他到底是谁)。
- 一个头负责看词义关联。 最后将这些头的结论合并,增强了模型理解复杂逻辑的能力。
3. 位置编码(Positional Encoding)
因为 Transformer 取消了 RNN 的顺序读取,它把句子看成一个"词袋"。为了让模型知道词的先后顺序(比如"我不吃你"和"你不吃我"的区别),研究人员在输入的词向量中强行加入了位置编码(正弦/余弦函数),让模型"感知"到每个词所在的物理坐标。
4. 前馈神经网络(Feed-Forward Network)
在注意力机制处理完上下文关系后,每个位置的词还会独立经过一个两层的全连接网络。这相当于对提取到的特征进行一次"非线性变换",进一步深化语义。
三、 工作流程:它是如何运行的?
- 输入阶段: 单词被转化为向量(Embedding),加上位置编码,送入编码器。
- 编码阶段: N 个编码器块堆叠,通过自注意力,把每个词及其周围的环境理解得透透彻彻。
- 解码阶段(重点):
- 解码器首先接收自己已经生成的词(初始是一个起始符
<SOS>)。 - 掩码注意力(Masked Attention): 防止解码器"偷看"未来的答案。
- 交叉注意力(Encoder-Decoder Attention): 解码器会去编码器那里"查表",寻找输入信息中最重要的部分。
- 解码器首先接收自己已经生成的词(初始是一个起始符
- 输出阶段: 通过线性层和 Softmax 层,算出下一个词概率最高的是哪一个。
四、 为什么 Transformer 这么强?
- 真正的并行: 编码器处理 10 个词和处理 1000 个词在时间上是几乎同步的(只要显存够),训练效率比 RNN 提升了几个数量级。
- 长程依赖: 无论两个词离得有多远,注意力机制都能一步到位直接连接,不会出现"健忘"。
- 扩展性极强: 只要增加层数(Layer)和头数(Head),模型的能力就会随着算力和数据的增加而持续增长,这直接催生了现在的 LLM(大语言模型)。