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

从一个小白的角度学习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(训练或推理策略不同)。

相关推荐
chaors1 小时前
DeepResearchSystem 0x01:Agent 基础
langchain·aigc·ai编程
sweet丶1 小时前
移动端轻量级AI Agent自动化UI验证:sim-use
ai编程
东小西2 小时前
第7篇:《工具的USB接口:我把Function Calling升级成了MCP》
openai·ai编程
MemoleCard2 小时前
深度解析Java当中的锁机制
后端
wear工程师3 小时前
ThreadLocal 在线程池里为什么会串数据:别只会答内存泄漏
java·后端
腻害兔3 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程
whyfail3 小时前
前端学 Spring Boot(2):一次点击,如何穿过整个后端?
前端·spring boot·后端
大数据点灯人3 小时前
【AI编程】Vibe Coding 模型选型:越贵越好吗?效果/速度/成本平衡指南
编程·ai编程·claude·codex·vibe coding
oort1233 小时前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程