零基础认识大语言模型(LLM)工作原理(4.Attention:模型是怎么看懂上下文的?)

第四章 Attention(注意力机制):模型是如何"看懂上下文"的?


最近正好有空,打算抽时间复盘总结一下这些年零零散散学习的AI知识.

下面是目录

零基础认识大语言模型(LLM)工作原理目录 - GuZhenYin - 博客园

在上一章中,我们知道 Transformer 做了三件事:

  1. 把文字变成 Token(第二章)
  2. 把 Token 变成向量(Embedding)
  3. 让模型在生成每个词时"回头看前文"

但这里有一个关键问题:

模型到底是怎么"回头看"的?

人类阅读一句话时,其实会自动做一件事,把重要信息记住,把不重要信息忽略。

例如:

小明昨天去北京出差,今天他回来了。

我们几乎不会犹豫:

"他" = 小明

因为我们的大脑自动做了"关联"。

Transformer 的 Attention,本质上就是在模拟这件事


4.1 先举个例子~

我们举一个普通生活中的例子


图书馆找书

假设我们在图书馆找一本书:

《Java 并发编程实战》

我们会怎么做?

我们不会把整个图书馆的书都认真读一遍。

我们会:

  • 快速记住标题
  • 找对应技术分类(Java / 并发)
  • 忽略无关书籍(小说、历史)

然后我们会发现,某一排书架上面有相关类别.

于是我们集中注意力,主要从那一排书架上去找这本书。


Attention 其实做的事情完全一样,它不是"平均看所有信息",而是:

给每一段信息分配不同的重要性权重


4.2 在请出我们的小明

我们继续用经典例子:

小明昨天去北京出差,今天他回来了。

现在模型要预测:

"他"到底是谁?


模型会做一件事情:

它会把前面的 Token 全部拿出来:

复制代码
小明
昨天
去
北京
出差
今天

然后问一个问题:

哪些 Token 和"他"最相关?


我们用人类方式模拟一下:

Token 相关性
小明 ⭐⭐⭐⭐⭐
昨天 ⭐⭐
北京 ⭐⭐
出差 ⭐⭐
今天

模型不会"理解",但它会做一件类似的事:

计算相关性分数


4.3 Attention 的核心思想

Attention 本质只有一句话:

当前 Token 会去"查询"前面所有 Token,并决定哪些最重要。

注意这句话:

  • 当前 Token:正在预测的词
  • 前面 Token:上下文
  • 查询:比较相关性
  • 最重要:权重更高

核心就是下面这张图:


4.4 Q、K、V 按角色理解

现在我们终于可以引入 QKV,但是我们不从数学角度去理解。


我们用一个简单的"会议室发言"理解 QKV

我们想象一个会议.每个人都有三种属性:


① Key(身份标签)

每个人都会说:

我是谁,我做什么的

例如:

  • 小明:后端工程师
  • 小红:产品经理
  • 小李:数据库专家

② Query(提问者)

现在你问一句话:

谁懂 Redis?

这个问题就是 Query。


③ Value(真正的信息)

如果匹配成功:

数据库专家站起来回答

他说的内容就是 Value。


所以Attention 的计算流程可以简单理解为:

Query 去匹配 Key,匹配成功后拿 Value


4.5 回到 Transformer

现在我们回到刚才那句话:

小明昨天去北京出差,今天他回来了。


模型内部其实在做如下步骤:

步骤1:每个 Token 生成 Q/K/V

例如:

Token Q K V
小明 查询能力 身份标签 信息内容
北京 查询能力 身份标签 信息内容

(不用管具体维度)


步骤2:计算匹配度

"他"会去问:

谁最像我在指代的人?

于是:

Token 匹配分数
小明 0.92
北京 0.31
昨天 0.10

步骤 3:加权汇总信息

模型不会只选一个,而是:

把所有信息按权重混合

结果:

复制代码
0.92 × 小明
0.31 × 北京
0.10 × 昨天

最终得到:

"他"的语义 = 小明


4.6 Attention 的本质总结

如果只记一句话:

Attention = 给所有历史信息打分 + 加权融合


4.7 为什么 Attention 这么重要?

在 Transformer 出现之前,主流模型是:

  • RNN
  • LSTM

它们的问题是:

信息会"越传越弱"

例如:

一句很长的话:

我昨天在北京的一家咖啡店看到一个穿红衣服的程序员,他......

模型容易忘掉:

"我昨天"


Attention 解决了这个问题:

它每一步都可以直接回看全部历史信息


4.8 Attention 革命性的变化

Attention 做了一件革命性的事情:

❌ 不再"顺序记忆"

✅ 变成"全局检索"


你可以这样理解:

以前模型是:

纯用脑子记(容易忘)

现在模型是:

记下了小本本,可以随时翻整本书(随时查)


4.9 多头 Attention(多头注意力)

你可以把它理解成:

一个问题,有多个"专家同时看"

例如下面这句话:

我在银行存钱

不同头会关注:

  • 金融语义
  • 语法结构
  • 指代关系
  • 时间信息

所以模型不是一个人在思考,而是:

多个"注意力专家"在并行工作


4.10 本章核心总结

这一章最重要的内容只有四点:


① Attention 在做什么?

给每个 Token 分配"重要性权重"


② QKV 是什么?

  • Q:我在问什么
  • K:你是什么
  • V:你提供什么信息

③ Attention 的本质

当前 Token 会去"查询"前面所有 Token,并决定哪些最重要。


④ 为什么它重要?

因为它让模型可以"随时回看所有上下文",而不是逐步遗忘**。**


下一章预告

下一章我们会讲Transformer另外一个非常核心的模块:

既然 Attention 已经这么强了,为什么还需要 Transformer 的FFN"前馈神经网络"?