跳转至

注意力机制直觉

一句话:注意力就是每个 token 在生成时"回头看"前面所有 token,并决定"谁对我最重要"的机制。本页不含任何公式——按你的边界,我们只建直觉。 🟢 稳定 | 对位 W4 | 最后核实:2026-09-08

为什么要懂

注意力是 Transformer(一切现代 LLM 的架构)的心脏。你不需要会推导它,但需要理解它的两个工程后果——它们直接决定了你 agent 的成本结构和上下文策略:① 注意力随上下文长度平方级增长(长对话为什么变慢变贵);② 注意力会被稀释(塞得越多,每条信息分到的"关注"越少——lost in the middle 的根源)。

核心解释

类比:一场多学科会诊(MDT)。

会议室里每个词都是一位与会者。现在要生成下一个词(比如续写「该受试者因不良事件___」),每个已经在场的词都会对新词"发言影响力"进行投票:

  • Query(查询):当前位置在问——"我接下来需要什么信息?"(像你在会上问:"停药原因最关键的证据是什么?")
  • Key(键):每个词举着牌子自我介绍——"我是什么"(「不良事件」举着"我是医学概念"的牌子,「暂停用药」举着"我是处置"的牌子)
  • Value(值):每个词真正携带的信息内容——一旦被关注,它贡献什么

匹配度高的 Query-Key 对,Value 就被更多地采纳。于是模型在「不良事件」后面更倾向于接「暂停用药」而不是「水果」——因为前面「受试者」「不良事件」这些词的 Value 被高度关注了。

自注意力(self-attention):所有词两两互相打分,而且是并行算的——这就是 Transformer 比老一代 RNN 快得多的原因,也是它烧算力的原因。

多头注意力(multi-head):不是一组 QKV,而是很多组并行——一组可能专注语法搭配,一组专注指代关系(「其」指谁),一组专注数字单位。像会诊里不同科室的医生各看各的角度,最后汇总意见。

KV cache(工程后果 ① 的具体化):每生成一个新 token,都要重新和所有历史 token 算注意力。为了不重复计算,系统把历史 token 的 Key/Value 缓存起来——这就是 KV cache。它解释了:对话越长,每一步生成越慢、显存占用越大。长对话的成本不是线性的,这是你 W3 给 nano-agent 设计历史压缩策略的理论依据。

动手试试

读《The Illustrated Transformer》(图解 Transformer,resources.md 必读表有链接),只看注意力的图解部分,跳过矩阵公式——20 分钟。然后做自检(见下)。

自检(本书「大白话标准」)

能向不懂技术的同事讲明白这两件事就算过关:

  1. 注意力大概在干什么(每个词决定关注谁,多头 = 多角度)
  2. 为什么长对话又慢又贵,而且塞太多东西模型会"看不过来"(KV cache 成本 + 注意力稀释)

常见误解

  • ❌「注意力 = 人类的理解」→ 它是统计相关的加权,不是语义理解。这解释了为什么模型会"看过但没抓住重点"
  • ❌「窗口大 = 都能看见」→ 物理上能装下 ≠ 注意力上被关注。中间位置的内容天然分到更少关注(lost in the middle),详见上下文工程
  • ❌「我应该学一下注意力公式」→ 对造 agent 的人,直觉 + 工程后果就够。公式留给「想转行做模型」的那一天(LLM Atlas 在那等你)

现状与深挖

  • 工程热点是「稀疏注意力 / 线性注意力」等降低长上下文成本的变体——对你而言只需知道:它们在缓解上面的成本问题,但不改变你的使用方式。
  • 深挖:3Blue1Brown 神经网络系列(官方中配)的注意力章节,见 resources.md 大白话专区。整副骨架(embedding、FFN、层堆叠、decoder-only)见 Transformer 架构全景。