J 空间是(猜想意义上的)速率降维子空间
这篇笔记在 Yi Ma 对 transformer 的稀疏速率降维(sparse rate reduction)推导(CRATE)与 Anthropic 的经验性 J-space 之间搭一座桥。主张:在速率降维的框架下,J-space 并不是一个意外——它就是各层向其压缩的已占用低维子空间的并集。CRATE 那一半是已确立的;桥接部分(第 4 节)是一个猜想。即便对 CRATE 而言,4a 中的论证也只是一个启发式的线性化,而非证明——未解决的引理列在 4b 中。
符号:Z in R^{d x n} 表示一个表征(n 个 token 的 d 维特征),每个 token 对应一列 z_i;eps 是编码精度;U = {U_1..U_K} 是张成 K 个低维子空间的正交基集合,span(U) = sum_k range(U_k);R(.) 是编码速率(coding rate)——参见 maximal-coding-rate-reduction。
1. 编码速率及其梯度
R(Z) = (1/2) log det( I + a Z Z^T ), a = d / (n eps^2)
grad_Z R(Z) = a ( I + a Z Z^T )^{-1} Z
针对子空间的压缩项:R(Z | U) = sum_k R(U_k^T Z)——即把 token 投影到每个子空间之后编码它们所需的比特数。它只看得到投影 U_k^T Z,对 span(U)^perp 分量是盲的;当子空间内的投影被压缩到低体积时(或者当 token 落在补空间里时),它就会变小——而不是"当 token 落在 span(U) 内部时"才变小。(被最大化的)多样性项 R(Z) 防止子空间内的坍缩(给已占用子空间赋予体积)——但 R(Z) 是 U-无关的(它对任何方向的体积都给予奖励,补空间也不例外),所以它本身并不能把 token 定位到 span(U) 内;那种定位来自对 U 与投影算子的联合优化,而不是来自 R(Z)。
2. CRATE:一层 transformer = 一步稀疏速率降维
完整的目标函数(CRATE 式 1)是 min_Z R(Z | U) - R(Z) + lambda ||Z||_1:压缩每个子空间的投影、扩张整体(-R(Z) 这一多样性项是承重的——没有它,min R(Z|U) 就会把一切都坍缩到 0),并做稀疏化。交替最小化给出两个模块:
(a) 压缩 -> 自注意力。 该模块是 Z <- Z + MSSA,其中 MSSA approx -kappa * grad_Z R(Z|U)(这一步降低压缩项——注意符号:+MSSA = -kappa*grad)。对每个头 k,MSSA 携带一项 U_k U_k^T Z * softmax( (U_k^T Z)^T (U_k^T Z) )——多头子空间自注意力(multi-head subspace self-attention, MSSA):token 依据各自子空间内部的相似度进行注意力计算,并被拉向该子空间。Ma 把注意力解读为针对 U 的一个压缩步骤(这一点有争议——见下文的告诫);注意它的输出落在 span(U) 内(4b 中会用到这一点)。
(b) 稀疏化 -> MLP。 min ||Z||_1 + (1/2)||Z - D Z||^2(字典 D 与各子空间对齐)的一个邻近步骤是 ISTA:Z <- ReLU( Z + step*(...) ),即前馈模块。
层: Z^{l+1} = ISTA( Z^l + MSSA( Z^l ) )。残差流就是迭代量 Z^l,而残差连接的形状恰好就是下降步的 Z - kappa*grad(恒等 + 更新)。所以一个训练好的 transformer 近似于一个展开的优化器,把 Z 驱向 span(U)——正交的低维子空间,内部稀疏。(这些公式忠实于 CRATE 论文本身。但"注意力 = 一个压缩步骤"这个解读是有争议的:arXiv:2411.17182 指出,式 4 中的近似——用 softmax 替代 (I+aZZ^T)^{-1}——是推导过程中的产物,并且 MSSA 梯度的这个近似有可能增大编码速率(去压缩)而不是降低它。所以即便"注意力会压缩"这一点也未有定论——这独立地印证了 4b 第 1 条。)
3. 形式化的 J-lens
记 F : h -> future-output logits 为从某个激活 h(Z 在某层/某位置上的一列)经由剩余各层与反嵌入(unembedding)到未来输出 logits 的下游映射。雅可比矩阵 J = dF/dh 是一个 |V| x d 的矩阵;其第 w 行是 grad_h F_w,即最能提升 token w 未来对数概率的方向。定义 J-space = J 的显著右奇异方向——即输出对之敏感的那部分激活子空间;其可读的"内容",就是那些行 grad_h F_w 与当前状态对齐的词 w。
两点告诫——这个形式化是本文自己做的,不是 Anthropic 的(他们对 J-lens 的定义是非形式化的):(一)"未来输出 logits"若不附加一个未言明的构造(自回归、多步、重采样),就不是单个 h 的可微函数——这里默认采用的是 teacher-forcing 式续写或某种期望影响的替代量;(二)J 是 |V| x d,其显著方向理论上可以张成多达 d 维——"J-space 很小"是 Anthropic 的经验发现,并非这个形式化本身能保证的东西。
4. 桥接(猜想 + 推导)
主张。 J-space = span(U):输出敏感方向与各层向其压缩的已占用子空间重合。
4a. 启发式论证(为什么可以预期 J-space = span(U)):
- 在最优解处(或其附近),
Z in span(U);补空间span(U)^perp被压缩到约为 0(没有方差,对编码速率没有贡献)。 - 每一个下游算子都是由
U构建的(MSSA 用U_k做投影;ISTA 用与U对齐的字典)。一个扰动dh in span(U)^perp(一)几乎不会被这些投影读到——U_k^T dh很小——并且(二)会被下一个压缩步骤收缩。所以可以预期dF/dh在span(U)^perp方向上的分量很小。 - 一个扰动
dh in span(U)则是每一层都会读取并传播的信号。所以可以预期dF/dh在span(U)上很大。 - 如果 1-3 严格成立,那么
J的显著方向就会等于span(U):J-space = 已占用子空间。 但它们并不严格成立——见 4b。
4b. 4a 在哪里不严谨(未解决的引理,即便对 CRATE 也是如此):
- 没有任何东西把补空间消灭掉;跳连(skip connection)反而保留了它(这是最尖锐的漏洞)。
MSSA(Z) in span(U),而更新是Z + MSSA,所以恒等/跳连路径会把旧的span(U)^perp分量原封不动地向前传递;ISTA 通过字典D起作用,并不会把span(U)^perp投影掉。没有任何一个 CRATE 算子把补空间驱向 0。 所以 4a 第 1 步("补空间被压缩到约为 0")即便在L -> oo时也不明显成立,而在有限深度下补空间显然是O(非零)。一个真正的论证必须指出补空间究竟在哪一步被压制——从结构上看,它根本没有被压制。 - 非线性雅可比被忽略了(这是主要漏洞)。 第 2、3 步的论证只涉及线性投影
U_k^T。但dF/dh要经过 softmax(把各个 token 耦合在一起)以及 ReLU/ISTA 门控(依赖于状态),它们的雅可比都可能把输出敏感性泄漏到span(U)^perp中去。一个真正的证明必须穿过这些非线性算出复合雅可比dF/dh = prod_l J_l,并对其补空间分量给出界——本文没有做这件事。 - 前向的收缩不等于导数上的消灭。 "补空间的取值被压缩向 0"(前向)和"
dF/dh把补空间抹掉"(导数)是两回事。老实的联系是链式法则式的衰减——每层一个收缩因子c < 1,给出敏感度~ c^{L-l}——但这只是启发式的、有限的(不是零),也没有证明它是均匀的,或者不会被非线性重新放大。 span(U)上没有下界。 第 3 步断言dF/dh在span(U)上"很大",却没有给出任何界;子空间内部的某些方向也可能被冲淡消失。- 学到的
U与理想最优的U。 训练出来的算子所对应的子空间,未必等于理想最优解所占用的子空间。 - 反嵌入不是一个
U-算子。 4a 第 2 步声称"每个下游算子都是由U构建的"——但读出映射W_U in R^{|V| x d}(激活 -> logits)是一个单独学到的映射,没有理由服从span(U)。所以dF/dh中包含W_U的雅可比,这是一条偏离span(U)的泄漏路径,除非整个网络已经先把补空间清零了(这又绕回第 1 条)。这即便对 CRATE 也会破坏第 2 步。 dim span(U)没有被控制。span(U) = sum_k range(U_k)覆盖K个头 xp维,可能占据R^d的很大一部分。要让经验上很小的 J-space 等于span(U),这些子空间必须联合起来是低秩的/大量重叠的——这是一个未言明的假设;本文没有给出dim span(U)的任何界。- 是哪一层的
U? CRATE 的每一层都有自己的U^l。从第l层某个激活出发的J,会把U^l, U^{l+1}, ..., U^L以及W_U全部整合进去;"J-space = span(U)" 从未说清楚到底是哪一个span(U),而是默默假设U^l大致上跨层不变,从而使多层雅可比集中在同一个子空间上。
诚实的状态: 4a 说明的是为什么可以预期 J-space ~ span(U)(一个线性化的启发式),而不是一个定理——即便对 CRATE 也不是;而且如第 2 节的告诫所说,"注意力会压缩"这件事本身也是有争议的(arXiv:2411.17182)。要把它做严格 = 把 1-8 兑现为对复合非线性雅可比(softmax/ReLU + 反嵌入路径、逐层变化的 U)在有限深度下的定量界,并控制 dim span(U)。(第 1、6、7、8 条以及第 2 节的争议点,是由两次独立、去相关的审查发现的,不是作者本人发现的——这正是 certificate-is-the-subagent-boundary 的一个现场例子:生成者是自己证明的最差验证者。)
于是,三个经验性的 J-space 特征就坍缩成了同一个对象:
| J-space(经验性质) | 速率降维框架下的对应 |
|---|---|
| 小的特权子空间 | span(U),低维,处在大部分为空的环境空间 R^d 中 |
| ~100 倍的读/写枢纽 | 在此猜想下: 各算子都是以 U 为参数的,所以每一层都在读/写 span(U)(但跳连会把补空间原样带到下一层——见 4b.1) |
| 与输出相关 / 可报告 | 信号存在于 span(U) 中;稀疏性使其坐标具有轴向意义,因而可读 |
| "深海之上的思维表层" | 已占用的 span(U),之下是被压缩掉的补空间 |
5. 现状、缺口、检验
- 对黑箱 LLM 的猜想: 一个正常训练出来的 transformer 会隐式地学到
U,并落在速率降维解的附近,从而J-space approx span(U)。那么在黑箱模型中找到的 J-space,就是隐式稀疏速率降维的证据。 - 缺口 1 —— 标签。 MCR2 的类内项
R_c需要一个类别划分;而 LLM 是下一词自监督的。但 CRATE 那种针对学到的U做压缩并不需要标签,所以这座桥依赖的是无监督的压缩+稀疏化,而不是有监督的速率降维;"类别"变成了隐式的上下文/下一词结构。 - 缺口 2 —— 切法不同。
U是由特征压缩定义的,J-space 是由输出敏感性定义的。"算子由U构建 => 输出在U之外不敏感"这一步即便对 CRATE 也没有被证明(见 4b.2);对黑箱模型而言就更加悬而未决(算子并没有明显地以U为参数)。 - 缺口 3 —— 未来聚合。 J-lens 衡量的是对未来token 的影响;这个论证需要每一层都保持
U-结构,才能让多步雅可比依然集中在span(U)上。 - 检验。 把 J-lens 应用到一个训练好的 CRATE 模型上;预测 J-space 会等于其显式的
span(U)。在黑箱模型中,预测 J-space 会与速率降维/稀疏字典探针恢复出的主要子空间对齐。
点睛之笔。 在速率降维的视角下,"全局工作空间"被去神秘化了:它就是压缩所保留下来的低维信号子空间 span(U),"自动化的海洋"就是被丢弃的补空间,而 J-lens 读到的正是 span(U),因为输出的敏感性就活在那里——对 CRATE 而言,这很可能就是各层被建来压缩趋向的那个子空间(前提是 4b 中那些未解决的引理成立)。即便对 CRATE,这是否真能成为一个定理——更不用说黑箱 transformer 了——仍是开放且可检验的。
同源: maximal-coding-rate-reduction · 读结构而非读输出: recognizer-not-generator · certificate-is-the-subagent-boundary