从一个小白的角度学习AI,如果有任何问题,欢迎指出
为什么 Transformer 能取代 RNN?
上一篇我们提到过 RNN 常见的三个痛点:
- 长序列信息容易衰减(长期依赖难)
- 按时间步串行计算,训练慢
- 早期RNN 输入输出等长
而Transformer 解决了 RNN 的串行瓶颈,让模型可以并行训练,并且更擅长捕捉长距离依赖。(输入输出前面提过了,通过Encoder-Decoder解决了)
1. RNN 的核心问题:串行计算太慢
RNN 的处理方式是按时间顺序一个词一个词来。
以 我爱苹果手机 为例:
- 先处理 我,得到隐藏状态
- 再用“上一步隐藏状态 + 当前词”处理下一个词
- 并重复以上步骤
这种方式的问题很明显:
- 难并行:后一个时间步依赖前一个结果
- 长依赖难:句子很长时,前面的信息传到后面容易变弱 这也是为什么在长文本任务里,RNN 往往不如 Transformer。
2. Transformer 的关键突破:并行 + 全局关系建模
Transformer 不再按顺序传递隐藏状态,而是让每个 token 在同一层里同时和其他所有 token 交互。
整体流程可理解为:
- token -> 向量(Embedding)
- 用 Attention 计算 token 之间关系
- 同一层内大部分计算可并行完成
这也是 Transformer 能在大规模训练中胜出的关键原因。
细说《Attention is all you need》
1. 输入&输出
以我爱苹果手机 到 I love iphone为例,理解下这张图
- Inputs:就是
我爱苹果手机 - Outputs: 就是
I love iphone - Output Probabilities:就是大模型预测的输出
2. Input Embedding
首先他会将输入切分,切分成一个个词元也就是我们所说的Token,然后通过词表,将一个个Token转化为向量。以论文提到的来说,就是512维度。
这一步我们就得到了6 个 1 x 512维度的数组。
3. Position Encoding
由于需要并行计算,所以位置信息也至关重要。打个比方 你爱我 和 我爱你 都是三个同样的词,但是顺序不一样,导致意思完全不一样。所以位置信息也是很重要的。
然后通过运算,最终也得到6个512维度的数组。
4. QKV
 想必各位经常能刷到大名鼎鼎的QKV,论文中也是体现了,但是非常隐晦,就是这三个箭头>_> 但是这里是比较重要的
输入向量通过三个线性映射 W_Q/W_K/W_V 得到 Q、K、V。
- Q(Query):Q表示这个Token需要查询的信息
- K(Key):K表示这个Token包含什么信息
- V(Value):V表示这个Token背后的真正含义
假设刚刚我们是6个 1 x 512矩阵,那么现在我们就是6x3个1 x 512矩阵
每个Q和所有K做点积之后,通过softmax函数,就得到了权重,这个权重就代表了和其他Token的相关程度。大致和上一篇RNN中提到的类似
然后再乘以V向量,每个Token和其他Token的关系就有了。
这个就是注意力机制。
经过注意力机制后,最终得到6个1 x 512矩阵
5. Muti-Head Attention
单头注意力只有一个“观察视角”。
多头注意力让模型在不同子空间同时看关系,再拼接起来。
这里就涉及到一个降维和升维的过程。(确实还给老师了,没法解释的很明白)
以512 维矩阵举例。那么可以拆分成 8 个 64维的矩阵,最后再拼回512维。这样每个头都可以有不同的侧重点。
6. Add & Norm:让深层训练稳定
每个子层后通常都有:Add(残差)+ LayerNorm(归一化)
6.1 Add(残差连接)
- 保留原始信息,避免深层网络“越算越偏”
- 缓解梯度问题和网络退化
- 让每层更像“修正输入”,而非完全重写
6.2 Norm(归一化)
对每个 token 的特征维进行归一化,作用:
- 稳定数值分布,减少训练震荡
- 对 batch size 不敏感,适合 NLP 序列任务
- 提升收敛稳定性与泛化能力
7. Feed Forward
在每个位置上独立应用同一组前馈网络:
- 给模型提供非线性表达能力
- 对注意力聚合后的信息做进一步语义加工
- 按 token 独立处理(token 间交互主要由 Attention 完成)
8. Musked Muti-Head Attention
解码器预测当前位置时,不能看未来 token。 因此会用 mask 把“未来位置”遮住,防止信息泄漏。
9. 解码器的QKV
解码器可以看到也有3个箭头,这其实也是QKV。
不过和编码器不一样,解码器的KV来自于编码器,Q来自于解码器。
相当于拿着问题,去编码器生成的KV中推测下一个词应该是什么
10. Linear&Softmax
解码器输出先过线性层投影到词表维度,再经 Softmax 得到概率分布。 每一步选出下一个 token(训练或推理策略不同)。