一次更新,为什么会放大记忆?
从一个二维例子理解线性注意力的稳定性
数学写作平台 · 演示样稿
一次看起来很小的状态更新,为什么仍可能放大旧记忆?我们从二维平面出发,把“稳定”变成可以观察的几何问题,再回到一个可检验的充分条件。
这是数学写作平台的公开演示样稿,展示公式、推导、交互图与 PDF。文中只讨论二维矩阵的一次更新,尚未进行模型训练。
先把问题画出来
设旧记忆是一支向量。一次更新相当于左乘一个矩阵 \(A\)。如果单位圆上的某支向量经过更新后跑到了圆外,这个方向就被放大了。
选择两个单位向量 \(k=(1,0)^\top\)、\(j=(\cos\theta,\sin\theta)^\top\),并定义
\[ A=I-\eta kj^\top= \begin{pmatrix} 1-\eta\cos\theta & -\eta\sin\theta\\ 0 & 1 \end{pmatrix}. \tag{1}\]
当 \(\theta=60^\circ\)、\(\eta=0.5\) 时,\(A\) 的最大拉伸倍数约为 \(1.1514\)。即使再乘一个 \(d=0.95\) 的遗忘系数,最大拉伸倍数仍约为 \(1.0938\)。“遗忘系数小于 1”本身,还不够回答整个更新是否收缩。
让更新矩阵作用在单位圆上
拖动滑块,看同一个圆如何被拉伸,以及限制遗忘系数之后的变化。
只展示二维矩阵的一次更新;不代表模型训练或性能实验。
用范数描述“放大”
矩阵的谱范数 \(\|A\|_2\),就是它能把单位向量拉长的最大倍数。对 式 1 中的二维矩阵,可以得到
\[ \rho=\|A\|_2 =\frac{\eta+\sqrt{\eta^2-4\eta\cos\theta+4}}{2}. \tag{2}\]
这给了我们一个具体的判断标准:\(\rho\leq 1\) 时,任何向量都不会在这一步被拉长;\(\rho>1\) 时,至少存在一个被拉长的方向。1
展开推导:为什么是这个倍数?
记 \(c=\cos\theta\)。\(A^\top A\) 的迹为 \(T=2-2\eta c+\eta^2\),行列式为 \(\Delta=(1-\eta c)^2\)。最大特征值为
\[ \lambda_{\max}=\frac{T+\sqrt{T^2-4\Delta}}{2}. \]
因为 \(\|A\|_2=\sqrt{\lambda_{\max}}\),整理后得到 式 2。在交互图中,把夹角调到零,还可以核对两个向量相同时的特殊情形。
给遗忘系数一个上限
命题 1 (一个充分条件) 设 \(\rho=\|A\|_2\),并令
\[ d'=\min\{d,1/\rho\}. \tag{3}\]
那么 \(\|d'A\|_2=d'\rho\leq 1\),这一步对旧状态的作用不会放大其欧氏范数。
命题 1 来自谱范数的齐次性。若遗忘是一个对角矩阵 \(D'\),也可以利用 \(\|D'A\|_2\leq\|D'\|_2\|A\|_2\),要求各对角元素的绝对值不超过 \(1/\rho\)。
这个条件只回答了旧状态如何传播。模型还有新信息的写入、非线性、梯度与数值精度等问题。它是分析训练稳定性的一个入口,不能直接当作训练稳定的保证。
从阅读走向自己的验证
这份手记由阅读苏剑林老师的 GDN2 稳定性分析 [1] 引出;原模型请参阅 Gated DeltaNet-2 论文 [2]。
我希望形成的写作方式是:先把问题说清楚,再自己推导一个小例子,最后给出可以检查的结果与尚未验证的部分。下一步可以先核对解析范数与数值奇异值是否一致,再测试多步状态传播,最后设计模型训练实验。
修订记录
2026-10-10:公开发布数学写作平台演示样稿。公式使用固定标签交叉引用;网页与 PDF 从同一份原稿生成。
参考文献
脚注
这里的“最大”是对所有单位向量而言。某一步的范数超过 1,不等于已经证明固定矩阵的连续乘积会指数增长,更不等于已经验证模型训练失败。↩︎