在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

注意力机制

注意力让每个 token 的向量依赖其他 token。每个输入投影为 Query、Key、Value;缩放点积比较 Query 与各 Key,softmax 将分数转为权重,再按比例混合 Value,得到上下文相关的输出。

它类似软查找:不只返回一个匹配值,而是按匹配程度返回多个值的加权和。bank 邻近 river 可表示河岸,邻近 savings 可表示银行。本课 bank 初始向量相同,但可查询的 Key 变了,所以取回的内容不同。

三个角色与三个步骤

从 token 向量矩阵 X,经三套投影得到:

  • Query q:当前 token 用什么特征查询?
  • Key k:各 token 用什么特征供匹配?
  • Value v:被关注时提供什么内容?

对一个 Query,先与每个 Key 点积,再除以 √dₖ;点积较大表示在这套投影下较匹配,不是语义正确性保证。除数在常见尺度假设下控制维数增长带来的分数方差,减轻 softmax 饱和风险,不保证永不饱和。

softmax 沿 Key 轴生成总和为一的权重,按权重求 Value 加权和。对所有 Query 一起计算:

Attention(Q,K,V) = softmax(QKᵀ/√dₖ)V

注意力矩阵第 i 行是第 i 个 Query 对各 Key 的分配。加权输出是子层输出;完整 Transformer 还会做输出投影、残差等,不一定直接替换原 token 向量。

逐步演示

默认文本 by the river bank,完整展开 bank 的查询。向量四维,√dₖ = 2。

  1. 输入:四个 token,各有嵌入。
  2. 投影:各自产生 Q、K、V。bank 的 Query 是 [2.3,2.3,0,0],在教材设定中会响应两种含义的内容词。
  3. 分数:对 by 为 0.92/2 = 0.46,the 为 0,river 为 4.6/2 = 2.3,自己为 1.38/2 = 0.69。
  4. softmax:[0.46,0,2.3,0.69] 变为约 [0.11,0.07,0.69,0.14]。显示舍入后不必恰好加为一;实际分布约 69% 给 river、14% 给自己,其余给功能词。
  5. 混合:各 Value 乘权重求和,river 占主导,bank 输出约 [1.43,0.06,0.14,0],教材定义的地理维度增强。
  6. 并行:四个 Query 同样计算,填满 4×4 矩阵。

换成 at the savings bank,同一 bank 嵌入更多混入 savings 的金融 Value。画布中 bank 行先显示原分数,再显示 softmax 热度;粗紫线强调主要关注对象,但输出仍是混合,不是只选择一个词。

软查找与对照

硬 argmax 查找只选择一行,未选中的近似匹配不贡献;其离散选择通常不可用普通导数学习分数。选中 Value 自身仍可有梯度,不能说硬选择的所有位置都无梯度。软查找的分数、归一化、加权和均可微,使投影可从误差中学习。

归一化选择器提供三种计算:

  • Scaled:本课标准缩放点积。
  • No √dₖ:直接用原点积,当前例分布更尖。尺度大时 softmax 雅可比可能很小,改变学习信号;不是删除除数就必然停止训练。
  • Uniform:忽略分数,四权重各 1/4。输出为固定 Value 均值,失去根据 Query 选择上下文的能力;均值仍包含输入内容,不代表零信息。

后两者是标明的诊断对照,未缩放点积本身也是一种注意力形式,不能只因不用标准缩放就叫它非注意力。

n 个 token、每头维数 d 时,显式计算分数矩阵的时间为 O(n²d),矩阵存储 O(n²);Value 混合还需相应乘法。长上下文的两两交互很贵,优化实现可减少中间存储,但这里展示直接形式。

边界情况

  • 自关注:对角参与计算,本例 bank 给自己约 14%,正常。
  • 逐行归一化:每个 Query 对 Key 的权重和为一,浮点与显示舍入除外。
  • 矩阵不对称:bank→river 与 river→bank 的 Query/Key 不同,权重无须相等。
  • 顺序:本课没有位置机制和掩码,把 token 及其向量一起排列,输出也对应排列,是置换等变,不是识别了词序。真实模型可加位置嵌入、相对位置项或旋转 Q/K 等。

常见错误

  • 把 Q、K、V 当同一个向量;三个角色来自不同投影,自 Query 也不必与自 Key 最匹配。
  • softmax 用错轴,必须沿每个 Query 的 Key 轴。
  • 把 √dₖ 当舍入细节,或反过来声称它保证不饱和;效果取决于分数尺度。
  • 倒读矩阵:行是发起查询的 token,列是被查询的 Key。

模型范围

真实缩放点积公式,四维、单头、手设嵌入与投影,便于读出 bank→river/savings。没有训练和位置机制。生产模型的模型维数、每头维数、头数、层数各异,通常学习投影并结合位置与掩码;本课命名的语义维度不代表所有真实嵌入坐标都有这种含义。