真正要盯的是“无需训练”这四个字。我第一次看到,也差点松一口气——没有优化器、没有梯度更新,听起来就像把两截水管拧上就能通水。但既然它叫 StateBridge,不叫 CopyState。
它做的事其实很窄:把发送方最后一层那个 hidden state,做一个闭式正交变换,对齐到接收方的输入空间,再做范数校准,再锚定到词汇表上,当连续前缀喂进去。两个模型家族、四个模型、数学推理、代码生成、问答,26 个组合里 22 个最优或并列。COLM 2026 接收,18 页。数字干净得让我警惕。
先停一下,问个问题:不训练,躲掉的是什么,补上的又是什么?
躲掉的当然爽,没有微调数据需求,没有遗忘曲线。但“闭式”这个事儿,没听起来那么白拿。闭式解意味着它不迭代不搜索,直接按某个准则把解算出来。这要成立,你得先把那层假设写死:源空间和目标空间之间,真的只差一个正交变换。这层写进去之后,后面每一步都是在给它打工。
再往下呢?正交变换是个刚体运动——能转、能翻,但不会拉伸。发送方最后那个 hidden state 的模长,不会因为旋转就自己适配接收方。于是就看到范数校准。我一开始以为这就是个归一化小操作,后来才觉得它才是这件事的命门。满残差流末端那个向量,模长可以比 embedding 表里最长的词还长几倍。你不把它缩回来,接收方第一层注意力全会扑上去,把它当成全场最亮的信号。
但缩到多少算对?这问题听着像调参,其实是先验。你可以缩到目标 embedding 某个标量均值,也可以缩到前 k 个主成分的尺度。选哪个,决定了 A 那段状态里多少东西能活下来,多少被抹成背景。
我还没看到官方实现。下面这段是我照论文描述反推的,错了算我蠢:
R = orthogonal_procrustes(H_anchor, E_anchor)
h_aligned = norm_scale(R @ h)
关键不在这个矩阵怎么解,在于 H_anchor 和 E_anchor 这几百个锚从哪来。你选 512 个高频词,跟选 512 个抽象语义词,算出来的旋转矩阵不是一回事。差别可能不大,但足够把某些低方差方向转到一个微妙的角度。我拆到这儿最想问作者的就是这个:锚是固定的,还是每个任务重新选?如果固定,那他们其实是在假设这几百个词的几何结构足以代表两个模型共有的语义坐标系。这假设要是不成立,对齐从起跑线就开始偏。
写到这我又觉得,刚才那个“命门”的判断可能下重了。锚定词也许在多数情况下就是稳住数值用的。但数值稳定本身也是先验——它默认两个 embedding 流形在锚定词周围那一小块邻域里没有大的扭曲。没有扭曲自然最好,有也不至于直接翻车。它不会救你,只保证不炸。你可能会说这算什么代价,加个 anchor 不就行了。我也试过跨语言或者跨代码训练的模型,某些 high-level token 上,所谓公共坐标轴真的不成立。
不过真正让我觉得这篇狡猾的,是“连续前缀”这一步。它没把 A 的输出解码成文本再喂给 B,而是把 A 的内部状态当成一段没有任何 token 的提示,直接压进 B 的因果注意力。这个做法机制上很接近给 B 装了一个软提示——不从词表过,但从第一层开始,对后续所有位置持续改注意力分布。
为什么是前缀,不是中间,也不是末尾?因果注意力的便宜:前缀对所有后面位置单向有效,不破坏 B 的自回归结构。放在中间,等于让 B 生成到一半突然被拽回去,时序就裂了。所以“前缀”这个选择几乎是被架构逼出来的,不是灵光一闪。
我一开始也以为这篇最大的贡献是“不用训练”。后来才发现,它真正值钱的地方是敢在完全无梯度的情况下,把结构假设做足,还顶着“这些假设只是大部分时候对”的风险拿到 22/26。它最诚实也最冒险的地方,是把“我们并不知道两个模型之间真实映射是什么”这件事,用一个漂亮但脆弱的线性刚体假设盖住了。
这个假设在数学推理里大概率能撑住——hidden state 主要绕少数几个主题方向转,方差集中在少数轴上。代码生成也类似,结构轴很突出。可一旦任务里的 hidden 分布不是个低秩椭球,“不用训练”就从优点变成硬伤。他们没跑那种任务。那 4 个没到最优的组合,我猜里面就有分布比较刁钻的模型。错掉的那几个,可能比赢得漂亮的 22 个更值得看。
说回那晚我干的那件蠢事。我连正交变换都没做,直接把 A 的残差流尾塞给 B。结果 B 用了三大段替 A 写纪要。StateBridge 至少替我把这层账算清了:两个模型之间没有天然管道,你想不训练地接,就得把结构假设写得足够贵,贵到能在多数正常任务里赢下来。至于这套假设在什么形状的分布上会散架,是它没展开的那部分。
我还没想明白的是,如果把锚定词粒度从词降到子词甚至 codebook 层,会不会把非椭球场景救回来一点。这个先放着,下次拿两个代码模型本地跑一遍。
