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%。解析事实与学习行为之间隔着”容量是否诱使模型死记”这道坎。
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. 练习
- 验证 R(\theta) 的列向量互相垂直且都是单位长度(正交性的列视角);再算 \det R(\theta) = \cos^2\theta + \sin^2\theta——练习 1 的恒等式在这里二次上岗。
- 把同一个向量连转 4 次 90°(R(90°)^4),结果是什么?用 A3 的复合规则心算,再用矩阵验证。
- 时针模型的 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。)