注意力觉醒
你以为注意力不过是加权平均。可在注意力殿堂,每个位置都要和所有位置算一次关系——Q/K/V 三把钥匙背后,藏着 n×n 的代价。注意力之渊在暗处立赌:你以为注意力无所不能,却不知 O(n²) 是它永恒的影子。
注意力之门
结丹期的殿堂浮在虚空里,门楣上刻着一行字——Attention Is All You Need——金漆剥落了一半。门内没有路,只有一张巨大的、空白的矩阵网格——n 行 n 列,每个格子都空着。高斯老祖站在网格下,手里握着三把发光的钥匙。
「你在时序之河里证明过一件事——递推链上梯度会死。注意力绕过了那条链。但它有自己的代价。先告诉我——四种架构里,哪一种最适合处理长序列依赖?」
「又来了一个觉得注意力免费的。打个赌——你选什么?RNN?CNN?我赌你低估了代价。你的每一次错误判断,我都会记进深渊账。」
架构之赌 · 长序列依赖预测挑战器
反直觉下注(四选一,可连错)→ 矩阵网格逐行点亮 → 注意力机制全景图
注意力机制全景 · 全局视野的代价
自注意力殿 · Q/K/V
殿中央悬浮着三块发光的变换矩阵碑——W_Q、W_K、W_V,旁边躺着一串输入向量 X。高斯老祖把三把钥匙递给你:「让每个位置自己决定'我要问什么'(Q)、'我能回答什么'(K)、'我手里有什么'(V)。然后让 Q 和 K 互相点乘——看看会发生什么。」
「RNN 靠递推传信息,CNN 靠卷积扫局部。注意力靠什么?靠让每个位置自己决定问什么、答什么、给什么。把 X 分别乘上这三块碑——然后让 Q 和 K 互相点乘。你算算那是多少次运算。」
「点乘?好。n 个位置,每个都和其他 n 个点一次——你管这叫加权平均?我管这叫 n²。第一笔账,我先记着。」
自注意力计算器 · Q/K/V 矩阵推导 + 注意力热力图
输入3个词 → 可视化 Q/K/V 矩阵乘法 → softmax 归一化注意力权重热力图
输入序列 · 3 个词
Q / K / V 矩阵 · XW_Q / XW_K / XW_V
注意力权重热力图 · softmax(QK^T/√d_k)
缩放点积 · √d_k
缩放台上摆着一组滑块:d_k 维度旋钮。高斯老祖指着原始论文里的公式:「你写的是 softmax(QK^T)V,但论文写的是 softmax(QK^T/√d_k)V——多了个 √d_k。你觉得它多余?拧一下 d_k 试试,看你的 softmax 会变成什么。」
「假设 q、k 各分量独立、均值 0、方差 1,则 q·k=Σq_i·k_i 的方差是 d_k。d_k=64 时标准差 8,d_k=512 时标准差约 22.6。点积一大,softmax 就饱和——输出变成 one-hot,梯度归零。1/√d_k 不是装饰品。」
缩放因子实验台 · d_k 维度 + 不缩放vs缩放
滑动 d_k(16/64/128/512)→ 切换缩放/不缩放 → 看 softmax 分布与梯度热力图
d_k 维度旋钮 · 方差面板
缩放模式 · 不缩放 vs 缩放
softmax 分布可视化
梯度热力图 · 饱和即归零
维度爆炸 · O(n²)之壁
缩放台之后是一条狭长的回廊,回廊尽头是一面巨大的空白矩阵墙。高斯老祖把序列长度旋钮从 512 拧到 8192——墙上瞬间浮现出无数格子,显存计数器从 1GB 跳到 128GB。注意力之渊的声音从墙后传来:「翻倍序列,翻四倍计算。你亲手拧的。」
「自注意力的代价不在线性增长——在平方增长。注意力矩阵本身有 n² 个元素,n=4096 时就是 1600 万个。序列翻倍,注意力矩阵翻四倍。这不是工程问题,是数学问题。」
「你以为注意力是免费的?在山门你说过'全部'。每一个'全部'都是我的一块砖。第一笔深渊账,我正式开立——n=8192,显存 128GB。你的 GPU 炸了。」
O(n²)之壁 · 序列长度旋钮 + 显存/计算双曲线
拖序列长度 512→8192 → 看显存指数增长 → 看注意力矩阵 n×n 膨胀
序列长度旋钮 · n
512显存 / 计算量双曲线 · 平方增长
注意力矩阵尺寸 · n×n
多头注意力 · 子空间
多头殿中央悬浮着一面棱镜——一束白光射入,被拆成 8 道不同颜色的光。高斯老祖:「一个注意力头,是一种'看'的方式。但一句话里,'看'的方式不止一种——有的头看语法结构,有的看语义关联,有的看指代消解。把 d_model 拆成 8 份,每份跑一个独立的注意力。」
「多头不是'算更多',是'看更多角度'。同一个 d_model,单头是一个 512 维视角,多头是 8 个 64 维视角的并行——总参数不变(h×d_k=d_model),但子空间的多样性让模型同时捕获不同类型的关系。」
多头注意力可视化器 · 8 头热力图 + 模式归类
点击 8 个头 → 看各自的注意力模式 → 归类句法/语义/位置/共指
8 个注意力头 · 点击查看模式
注意力热力图 · 当前头
参数对比 · 单头 vs 多头
位置编码 · 顺序之锚
位置钟楼里悬着一口大钟,钟面刻着 sin 和 cos 的纹路。高斯老祖让你把输入序列打乱——注意力输出竟然完全不变。「你的注意力能看见所有位置。但它——分不清位置。注意力是排列不变的,它不知道谁在前谁在后。」
「打乱顺序,输出不变——多公平,公平到它根本不知道'第一个'和'最后一个'有什么区别。位置编码是把'顺序'这层信息重新缝回去。正弦用不同频率的波覆盖不同尺度,RoPE 把旋转缝进 Q/K 点积让相对位置自然涌现。」
「不知道顺序?那它就是瞎子。你以为架构完整了?少了一半。第二笔账,记下——你以为注意力自带时序,它却没有。」
位置编码实验台 · 三方案对比 + 距离衰减
切换正弦/RoPE/ALiBi → 看位置编码矩阵 → 看距离衰减特性
位置编码方案 · 三选
位置编码矩阵 · 可视化
距离衰减特性 · 相对位置感知
排列不变性验证 · 打乱顺序输出不变
编码器 · 解码器 · 完整架构
编码殿的墙上刻着一行字:"Self-Attention + FFN + Residual + LayerNorm = One Encoder Layer"。解码殿的墙上有两扇窗——左窗"Masked Self-Attention",右窗"Cross-Attention"。高斯老祖:「编码器看输入,解码器生成输出。但生成时第 t 个词只能看到第 1 到 t 个词——这就是掩码。而交叉注意力,是解码器向编码器提问的唯一通道。」
「注意力负责'看见全局',FFN 负责'消化信息',残差负责'梯度活路',LayerNorm 负责'尺度稳定'。解码器还多两把钥匙——掩码自注意力保证因果性,交叉注意力让信息从编码器流向解码器。去掉任何一个,Transformer 都不是 Transformer。」
Transformer 架构组装器 · 拖拽拼装 + 编解码对比
拖拽组件拼装编码器层 → 对比解码器差异 → 掩码下三角可视化
组件碎片池 · 拖入装配区
编码器层装配区 · 按序拼装
解码器差异 · 掩码 + 交叉注意力
长序列之壁 · 位置外推
你拼出了完整的 Transformer,正准备处理超长文本。高斯老祖把测试序列长度从 512 拉到 4096——性能曲线像被人从中间折断。注意力之渊完整现身,化作一面刻满公式的水晶之壁:「你以为拼出来就是终点?序列超过训练长度,你的位置编码就失效了。」
「你训练时只见过 512。现在你要处理 4096——位置编码的外推性,你考虑过吗?学习式位置编码见过最大的位置就是 511,第 512 个位置它是瞎的。这就是位置外推问题。第三笔账,记下。」
「正弦位置编码理论上可外推(连续函数),但效果一般;学习式不可外推(超出训练范围即失效);RoPE 兼顾外推与效果;ALiBi 极简外推。位置外推是长序列的第二道墙——第一道是 O(n²) 计算量,第二道是位置外推。」
长序列之壁 · 训练长度 vs 测试长度 + 性能曲线
拖测试长度超过训练长度 → 看性能骤降 → 对比四种位置编码外推性
训练长度 / 测试长度 旋钮
性能曲线 · 超出训练长度即骤降
四种位置编码外推性对比
高效注意力 · 破壁之路
水晶之壁前,高斯老祖递给你四把新钥匙:「壁不会消失。但你可以穿过它。标准注意力 O(n²),Linformer 用低秩近似把 K/V 投影到低维,Performer 用核函数近似 softmax,FlashAttention 不减少计算而减少 GPU 读写显存的浪费——同样的注意力,O(n) 内存而非 O(n²)。」
「FlashAttention 是精确的——它不近似注意力,它优化的是 IO。把分块计算留在 SRAM 里,HBM 读写从 O(n²) 降到 O(n²/M)。Linformer 和 Performer 是近似——用低秩或核函数换线性复杂度,但牺牲精度。精确 vs 近似,是破壁的两条路。」
高效注意力对比器 · 四方案复杂度 + 性能
切换标准/Linformer/Performer/FlashAttention → 看时间空间复杂度 → 看精度
注意力方案 · 四选
时间 / 空间复杂度对比
方案详情 · 原理与权衡
Boss 战 · 注意力之渊
水晶壁从地面升起,遮蔽了整个视野——冰冷、透明,壁面上刻满了公式:n²、n²d、2n²dL。注意力之渊完整现身,它的声音没有情绪,像在陈述一条物理定律:「我是 O(n²)之壁。我不住在你的无知里。我住在你的注意力里。你每让一个位置看向另一个位置,我就长一块砖。三问。答错一题,我就厚一分。」
「你说你的注意力无所不能——它不是。它有代价。证明给我看:你真的理解了注意力的代价,还是只会背一句'Attention Is All You Need'?你的刻痕不是耻辱,是你的排除法——每一条'此路不通',都在告诉你正确的路在哪里。」
深渊账累计 0 笔 · 三问全对后清零
顿悟 · 注意力即一切
壁散尽后,全景图重新亮起——但比之前更广阔。你看见 Transformer 的种子落入了无数领域,长成你未曾想象的形状。高斯老祖指着远方的地平线:「机器翻译、BERT、ViT、DETR、MoE——每一扇门背后,都是 Transformer 的一个变体。你穿过了壁。现在看看——你手里这把钥匙,打开了多少扇门。」
「你从加权平均的误解开始,推出 Q/K/V,发现 n×n,推导缩放因子,拆出多头子空间,补上位置编码,组装编码器与解码器,撞见 O(n²)之壁,又以 FlashAttention 破壁而出。注意力即一切——但'一切'背后是 n² 的代价。结丹一层·注意觉醒,你已圆满。但下一座山,是预训练与规模化——为什么 Transformer 越大就越强?」
顿悟 · 知识图谱点亮 + 应用全景 + 境界突破
点亮知识图谱碎片 → 展开应用全景 → 境界突破动画(结丹一层圆满)