← Close Critical Reading
LLM Linear Algebra · 第 4 课

旋转与正交矩阵:词序从哪进来

时针模型与 M_k:座位号不碰内容
面向 LLM 的线性代数 · 汇编自 T1/T3 实测 · 5 断言机器验证
🗓 2026-09-09线代教程 · 汇编课

0. 承接与规矩

L1 造出打分器(内积),L2 给了记号(矩阵的两种读法),L3 驯服了波动(方差与 \sqrt{d_k})。会议室还剩最后一个缺陷,而且是被机器证明过的:把句子的词序全部打乱,注意力毫无感觉(T1 置换等变验证到 10^{-17})——它看得见”谁在场”,看不见”谁在谁前面”。本课发明的工具是旋转矩阵:给每个词盖一座位号的”时针”。规矩不变:概念被毛病逼出、结论机器验证(随课脚本 5 断言全过)、公式给唯一性演绎。前置:L1、L2。

1. 起点问题:词序从哪里进来

先重演缺陷(这决定了本课工具的入选资格):注意力只做”两两内积 + 逐行归一”,两种运算都不看行的次序——所以 “the dog bites the man” 和 “the man bites the dog” 在它眼里是同一句话。修法只有两个入口:数据端(给每个词的向量加上位置信息)或结构端(让计算按顺序排队,即递归——已被现代模型废除)。

数据端加什么?直觉候选:加一个位置编号(0, 1, 2, …)。死于两点:编号无界(第 10 万个词的编号会把向量撑爆),且编号的”大小”会污染内容语义(位置 50 的”猫”和位置 5 的”猫”,内容应该一样)。

需要的是一种只转不缩的信号——这正好是旋转的定义。

2. 旋转矩阵登场:定义与两条保真性质

把一个 2 维向量看作平面上的箭头,旋转 \theta 角的机器是:

R(\theta)=\begin{bmatrix}\cos\theta & -\sin\theta\\ \sin\theta & \cos\theta\end{bmatrix}

它有两条保真性质,机器验证(P1/P2,360 角度 + 1000 随机对):

正交性:R^\top R = I(转置乘回自己是单位阵,偏差 2.2\times10^{-16})且 \det R = +1(保定向:不把手性翻成镜像)。正交的几何读法:旋转是纯转动,不缩放、不剪切。

保长保内积:|Rx| = |x| 且 (Rx)\cdot(Ry) = x\cdot y(实测 4.4\times10^{-16})。第二条是本课的承重墙:旋转不改变任何两个向量的合拍度——它改变的是”朝向”(位置读数),完全不碰”内容”与”内容之间的关系”。这正是座位号该有的品格:盖了座位号,词义本身纹丝不动。

3. 复合 = 角度相加:拨两下等于拨一下

机器验证(P3):R(\alpha)\cdot R(\beta) = R(\alpha+\beta)(全角度扫描偏差 1.4\times10^{-15}),且 R(360°) = I——转满一圈回到原地。旋转的复合就是角度的加法,这条”乘法变加法”的性质是整个位置编码设计的引擎:位置差(减法)可以通过旋转复合(乘法)被读出来。

4. M_k:把时针拨快 k 步的机器

现在回答起点问题。给每个位置 n 配一排时针——L1 内积的极坐标装束:p(n) 的每对分量是 (\cos w_i n,\ \sin w_i n),即第 i 根以频率 w_i 匀速旋转的针;位置 n 就是”转过了 w_i n 角度”。多根不同频率的时针(波长从 2\pi 到 62832 几何级数)互相错开混叠点。

拨快 k 步的机器是分块旋转阵:

M_k = \mathrm{blockdiag}\big(R(w_1 k),\ R(w_2 k),\ \dots\big),\qquad PE(n+k) = M_k\cdot PE(n)

时针模型下”位置 +k”不是加一个数,是每根针多转一个已知角——解析给出、无需学习。机器验证(P4,d = 8 微缩版):k \in \{1,3\} 全位置逐位差 2.2\times10^{-16}。附赠一条行列约定的教训(T3 实测踩坑):PE 矩阵每行是一个位置,行向量右乘 M_k 时实际作用的是 M_k^\top = M_{-k}——倒拨 k 步。行/列约定是线性代数实践里的头号 bug 源,机器验证是唯一的保险。

5. 条纹与衰减:相对位置的矩阵形态

时针模型立刻送出一张可检验的图:任意两个位置的合拍

PE(m)\cdot PE(n) = \sum_i \cos\big(w_i(n-m)\big)

只依赖距离 n - m。矩阵形态上,Gram 表 G = PE\cdot PE^\top 的等值线全是平行于对角线的条纹(P5,微缩版 19 个平移逐位差 8.9\times10^{-16})。衰减带振荡:g(0) = 16(全同相)在 k = 16 处减半,之后被低频慢针拖回——快针分辨相邻、慢针分辨长程(图 70)。

外推的诚实教训(T3 实测,本课只带走结论):旋转结构在解析上对一切位置精确成立,但让学习器真用上它不是免费的——训练窗口内全对的模型,未见位置只有 32% 正确,扩窗后升到 79%。解析事实与学习行为之间隔着”容量是否诱使模型死记”这道坎。

图 70 · 时针模型的成绩单:Gram 条纹(平移不变)与衰减曲线(复现 P1/P2)

6. 机器验证汇总

随课脚本 repro_lesson_l4.py(纯 numpy,确定性随机源),5 项断言 5 过:

断言 主张 结果
A1 正交性 R^\top R = I,\det = +1 通过(2.2\times 10^{-16})
A2 保长保内积 通过(1.8\times10^{-15})
A3 复合=角度相加,R(360^\circ) = I 通过(1.4\times 10^{-15})
A4 M_k 时针位移精确 通过(2.2\times 10^{-16})
A5 Gram 条纹(相对距离) 通过(8.9\times10^{-16})

7. 练习

  1. 验证 R(\theta) 的列向量互相垂直且都是单位长度(正交性的列视角);再算 \det R(\theta) = \cos^2\theta + \sin^2\theta——练习 1 的恒等式在这里二次上岗。
  2. 把同一个向量连转 4 次 90°(R(90°)^4),结果是什么?用 A3 的复合规则心算,再用矩阵验证。
  3. 时针模型的 PE(n) 长度恒为 \sqrt{d/2}(每根针 \sin^2+\cos^2=1)。这说明”加位置编码”挤占了多少内容信息的量级?(答案:不挤占——范数恒定,位置信息全部编码在”方向”里。这也是本课标题”座位号不碰内容”的精确含义。)

8. 下一课预告

低秩与子空间(L5):多头注意力说”8 个头各管一个 64 维子空间”,可 W^Q W^{K\top} 的秩最多是 d_k——低秩是浪费还是本事?等研究轨 T8 落地后汇编。

(汇编说明:本课素材汇编自研究轨 T1/T3 实验日,随课脚本 repro_lesson_l4.py 独立重跑,完整输出同目录 txt。)

research_track · 精读方法论:场景切入 · 数学推导 · 最小复现 · 横向核实 引用皆可回原文 · 数据皆可复现