「AI学习笔记」万恶之源《Attention is all you need》

0 阅读4分钟

从一个小白的角度学习AI,如果有任何问题,欢迎指出

为什么 Transformer 能取代 RNN?

上一篇我们提到过 RNN 常见的三个痛点:

  • 长序列信息容易衰减(长期依赖难)
  • 按时间步串行计算,训练慢
  • 早期RNN 输入输出等长

而Transformer 解决了 RNN 的串行瓶颈,让模型可以并行训练,并且更擅长捕捉长距离依赖。(输入输出前面提过了,通过Encoder-Decoder解决了)


1. RNN 的核心问题:串行计算太慢

RNN 的处理方式是按时间顺序一个词一个词来。

我爱苹果手机 为例:

  1. 先处理 我,得到隐藏状态
  2. 再用“上一步隐藏状态 + 当前词”处理下一个词
  3. 并重复以上步骤

这种方式的问题很明显:

  • 难并行:后一个时间步依赖前一个结果
  • 长依赖难:句子很长时,前面的信息传到后面容易变弱 这也是为什么在长文本任务里,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

![](files.mdnice.com/user/10673/… =50%x) 想必各位经常能刷到大名鼎鼎的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(训练或推理策略不同)。