Token Lab搜索

← 论文资料库
注意力与高效推理 / 2017

Transformer:把 token 匹配程度变成信息流

跟踪 Q、K、V,解释因果注意力的一行,并区分并行训练与自回归生成。

Attention Is All You Need · Vaswani et al. · arXiv:1706.03762

Token Lab 原创学习解读 · 来源核对 2026-10-25 · 区分论文主张与合成教学例子。

01 · 论文提出了什么

Transformer 以基于注意力的编码器和解码器模块替代循环结构,论文评估了翻译和句法分析。缩放点积注意力、多头及位置信号是核心组件;原始模型并不等同于今天的 decoder-only LLM。

一手来源:论文摘要 ↗
学习指南与本课目录LEARNING CONTRACT

理解 → 实现 → 研究

目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。

  • 理解层:写明假设、形状/单位和一个反例。
  • 实现层:复算数值例子并检查边界。
  • 研究层:在匹配预算下比较一个替代方法。

02 · 核心机制

Text / 原始公式
Q=XW_Q, K=XW_K, V=XW_V
S=QKᵀ/√dₖ + M
A=softmax(S) row-wise
O=AV; Mᵢⱼ=−∞ when j>i (causal case)

query 与 key 比较,再决定如何混合 value。N 个 token 对应 Q、K 的 N 行,乘积形成 N×N 个匹配分数。softmax 对每个 query 的一行计算,允许位置的权重和为 1。√dₖ 缩放可由独立坐标的方差论证理解。纯内容匹配不编码顺序,因此需要位置信息。

符号与直觉为教学解释,完整假设及实现细节请对照原论文方法。

机制图与逐步推导

输入 token 向量 X → 投影 Q、K、V → 分数 → 掩码 → softmax → 混合 V → 输出向量
原创机制示意图,按从上到下顺序阅读。 SVG ↓
符号与假设
符号含义
Q, K ∈ R^(N × d_k)查询与键,每个 token 一行
V ∈ R^(N × d_v)被混合的值
A ∈ ℝᴺˣᴺ逐行归一化混合权重
  1. 先检查形状:QKᵀ 为 N×N,乘 V 后得到 N×dᵥ。形状测试能抓住许多转置错误。
  2. [2,1,0] 减最大值得到 [0,−1,−2];指数为 [1,0.367879,0.135335],和为 1.503214。相除得到 [0.665241,0.244728,0.090031]。
  3. 对 [1,3,5] 加权得到 0.665241+0.734185+0.450153≈1.849579。禁止位置应在归一化前掩码;归一化后直接置零却不重新归一,会改变运算。
实验检查点

不仅查行和,也查因果零值及未来 token 扰动不变性。全掩码行需显式处理,避免 NaN。

LOCAL / SYNTHETIC / INTERACTIVE

改变一个变量,解释结果为什么变。

原创教学计算,并非论文 benchmark 复现。条形在面板内相对缩放,具体数值与单位以标注为准。

04 · 手算一个例子

原创算例:第三个 token 的允许分数为 [2,1,0]、value 为 [1,3,5]。softmax 约为 [0.665,0.245,0.090],输出约 1.850。因果实现中,第四个未来 value 的权重必须为零。改变第一个分数,观察连续混合,而不是将注意力当成硬查表。

05 · 设计实验

实现四 token、单头基准版本,断言行和与因果零值。扰动未来 token,验证早先输出不变;在小输入上用有限差分检查梯度。通过这些检查后再加多头,比较批量计算与逐头实现。

研究交付物

写出一个假设,保存配置与原始结果,提出替代解释,只报告证据支持的结论。关联实验是本地起点,不是完整论文复现。

打开关联课程/实验 →

06 · 局限与审稿式追问

分析提醒:注意力权重是混合系数,本身不是模型决策的因果解释。完整序列训练可并行计算各位置,自回归生成仍依赖已生成 token。稠密注意力还带来序列长度扩展问题。

每行权重和都是 1,为什么仍可能泄漏未来信息?

归一化只检查概率质量。一行可以和为 1,同时给禁止列分配质量。必须分别测试允许位置及扰动不变性。

07 · 阅读原文

第 3 节,重点是缩放点积、多头注意力和位置编码。

年份采用首次 arXiv 投稿年份。未锁定版本的链接随修订变化,复现报告请记录准确版本。此处 DeepSeek-R1 明确固定为 v1。

继续学习本主题

MATHEMATICAL REVIEW · 2026-10-26

假设、参考实现与验收

自注意力:X 为 N×d_model;W_Q、W_K 为 d_model×d_k;W_V 为 d_model×d_v。分数 N×N,输出 N×d_v。方差推导假设坐标独立、零均值、单位方差;交叉注意力可有不同查询和键长度。

复核所示公式、中英解释及声明滑块范围。代码复现标量教学计算,不是论文训练系统。

运行前:预测一个边界情况

实现四 token、单头基准版本,断言行和与因果零值。扰动未来 token,验证早先输出不变;在小输入上用有限差分检查梯度。通过这些检查后再加多头,比较批量计算与逐头实现。

提示:隔离假设

固定基线输入,只改变一个参数或边界;同时比较数值与声明单位。单例通过仅验证该样例。

最小可运行算例

将算例及所链接模块保存在同一目录。使用 Node.js 22 或更高版本,然后运行 node transformer-attention.mjs. 无需第三方运行依赖。

import {paperCalc} from './paper-core.mjs';
const result=paperCalc("attention",2);
console.log(result);
参考输出——先预测再展开
{
  "labels": [
    "Token 1",
    "Token 2",
    "Token 3",
    "Future token (masked)"
  ],
  "values": [
    0.6652409557748218,
    0.24472847105479764,
    0.09003057317038046,
    0
  ],
  "unit": "weight",
  "extra": 1.849579234791117,
  "extraLabel": "Weighted value"
}

测试与迁移

实现四 token、单头基准版本,断言行和与因果零值。扰动未来 token,验证早先输出不变;在小输入上用有限差分检查梯度。通过这些检查后再加多头,比较批量计算与逐头实现。

在下方笔记记录输入、代码版本、期望值和实测值;再构造违反上述假设的反例,解释原结论为何不再成立。

下载完整代码包(.tar.gz) · 完整参考代码与回归检查

预测、检验与证据记录

展开答案前先预测一个结果;练习后记录差异和迁移测试。记录仅存本地,在不同语言版本间共用。

打开记录/导出/清除 →

数学复核范围逐篇记录,不代表完成论文实证复现;可在笔记中记录疑似错误。 复核范围