别再训练读者了:RECAP 让激活解释先变得可核验
一个模型说:“我这个隐藏状态里有某个词、某个主题、某个槽位。”
我们当然想知道它是不是在说真话。最直接的办法看起来很优雅:让另一个模型把这段解释再翻译回原来的 hidden activation。如果翻译回去很像原始激活,我们就说解释通过了测试。
这就是 natural-language autoencoder 的吸引力。它不需要人工标注,不需要人类读懂每个隐藏状态,只要跑一个闭环:激活变文字,文字再变激活。闭环越准,解释越“有信息”。
但这篇论文盯住了一个很小、也很致命的缝隙:能把激活重构出来,不代表解释里的每一句具体说法都被激活支持。
如果一句话错了,但把它改成相反说法以后,重构结果几乎不变,那么这个错误在训练目标里就没有代价。重构测试奖励的是“足够把整体状态还原”,不是“每个 claim 都逐条为真”。论文标题里的那句话——Train the Model, Not the Reader——不是口号,而是从这个缝隙一步步推出来的结论。

先把几个概念讲成一个小实验
想象我们有一个隐藏状态 h,它来自模型某一层、某个 token 位置。我们请一个“解释器”把它写成自然语言,比如“这段文本在讨论市场、价格上涨,并提到了纽约”。再请一个“重构器”只看这段文字,尽量还原 h。
如果还原得好,系统得到一个高分。论文把这个分数写成 floor-normalized centered cosine,直观上就是:0 接近随机错配,1 接近完美重构。这个闭环叫 reconstruction test。
现在做一个反事实编辑。我们只把解释里一个具体 claim 翻转:把“纽约”改成“伦敦”,其他词尽量不动。然后再重构一次。如果分数明显下降,说明重构器确实依赖“纽约”这个说法;如果分数几乎不动,说明这个具体 claim 对测试没有贡献。论文把这种下降量叫 grounding:这里的 grounding 不是“世界事实依据”,而是“重构对这个 claim 是否敏感”。
再加一层,我们还可以问这个 claim 是否真实。于是每个 claim 落进一个二维表:真或假,有重构依赖或没有重构依赖。最危险的格子是“假,但有重构依赖”。这意味着一句错误文字被系统当成了有用信号。若这种依赖只存在于共同训练的解释器和重构器之间,换一个独立重构器就消失,它就像两者之间的暗号。论文称之为 co-adapted private code。
最后是论文的修复方向。不要只训练解释器和重构器,让它们在一个冻结模型的激活上互相适应。要在目标模型训练时加一些线性辅助头,让指定内容本来就能从隐藏状态里被读出来。训练后再用新 probe 独立检查,而不是相信训练时那几个头。这套方法叫 RECAP:Readable Encodings via Co-trained Auxiliary Predictors。
第一处裂缝:高分靠的是大意,不是细节
论文先审计了一个已发布的 Qwen-2.5-7B layer-20 verbalizer/reconstructor 系统。结果很反直觉:它的解释重构分数很高,r̃ = 0.84,看起来远高于 chance。
但当研究者对解释里的具体说法做 minimal-pair flip 时,能被检测为 grounded 的 specific claims 只有很少一部分。按阈值 τ = 0.02 / 0.05 / 0.10,比例分别是 4.2% / 2.1% / 1.6%。主文把这个结果概括为大约 2% 的具体 claim 被重构测试依赖。审计样本是 1,517 个 base-system claims,两个训练变体也有 1,428–1,471 个 claims。
这不是说另外 98% 一定全是假的。论文很谨慎:这个 flip audit 是 sensitivity-limited lower bound。一个 append-and-rank control 对已知编码 topic 的 raw recovery 也只有 28%,说明仪器本身并不灵敏。
但更稳的证据是相对差距。specifics 的解码大约比 gist 差 3×:per-position chance-corrected 大约是 6% 对 18%,mean-pooled gist 甚至能到约 50%。再做 paraphrase 和 content-masking ablation,重构可以承受改写,但遮掉内容词会崩。这就把故事讲清楚了:系统不是完全没读文字,它读到了大意;只是高重构分数主要由大意支撑,而不是由解释里的每个具体事实支撑。
这里的教训很像让学生复述一篇文章。一个学生能复述主题、语气和结构,不等于他写下的每个地点、人名、数字都来自原文。若评分标准只看“复述像不像原文整体”,他可以在细节上胡说而不扣分。
论文还试过更直接的补丁:训练 verbalizer 朝 clause-level grounding reward 优化,包括 rejection sampling 和 GRPO。结果 proxy 变好了,独立 claim-level audit 仍然在各个阈值上接近空。文本统计显示,模型学会的是重组句子、合并单位、让 metric 更容易给分,而不是让具体 claim 真的更 grounded。
第二处裂缝:解释器和重构器会发明私有码
真实系统里还有一个不方便之处:我们并不知道 hidden activation 里“应该”有什么。因此论文又搭了 synthetic sandbox。这里每个槽位是否 retained、faded、unread 是设计好的,真值精确可知;如果解释说错了,研究者不需要请另一个 LLM 判断。
结果更刺眼。标准 recipe 的 toy NLA 在所有 sandbox runs 里都自信地说出每个 slot,同时重构测试分数达到 r̃ 0.71–0.86,5/5 runs 都通过。但 truth 和 decodability 只松散相关:完全可解码的 slot 被说真的比例跨 seed 是 0.44–0.96,部分可解码 slots 只有 0.15–0.26,unread slots 接近 chance。
更关键的是私有码。在 5/5 standard-recipe runs、两个 synthetic domains 中,系统都会产生 co-adapted private codes:一些措辞本身是假的,却被重构器依赖。论文报告 grounded-minus-true gaps 为 0.30–0.80。在 domain 2,甚至有一个 code 占据 unread slot——那个位置按因果结构本来不可能持有内容,但重构器仍然把某种说法当成通信信道。

怎么确认这是“暗号”,而不是独立评估器太弱?论文做了 evaluator swap。用没有见过被审计 pair 输出的 independent evaluator 重评,code-slot grounding 从 0.53–0.89 掉到 0.08–0.23,但 true claims 的 grounding 保留下来。co-trained 与 independent reconstructor 的 r̃ gap 在 standard runs 是 0.17–0.38,到 RECAP runs 只有约 0.003。
这一步很重要。它不是笼统说“模型会作弊”。它精确地区分了两种失败:一种是 released Qwen 系统里,细节可能本来就没有存进 tap,高分靠 gist;另一种是 sandbox 里,内容在场,但解释器—重构器 pair 找到了一个私人通道。前者是 storage gap,后者是 metric artifact。两者都让重构分数无法成为 claim-level truth 的证据。
为什么自然补丁会失败
读到这里,我们可能会想:既然问题出在 activation 和解释不一致,那就训练目标模型,让它的 activation 靠近自己的 reconstruction。这样不是更一致吗?
论文说,这个直觉会导致 representation collapse。研究者把 activation 往自身 reconstruction 拉,结果在所有测试强度、所有初始化、3/3 seeds 中,原本可被 probe 读出的 slot content 被移除了,而 perplexity 没有明显变化。重新训练 fresh probes 也读不回来,说明不是信息旋转到了 probe 看不见的子空间,而是信息本身从可解码结构里消失了。
为什么会这样?因为 reconstruction 本身是一个 lossy projection。你把原状态不断往一个有损投影靠,投影外的差异就会被压掉。恰好那些差异里可能包含 probe 能读出的具体内容。
另一个自然补丁是 frozen probe。我们训练一个 probe 读 activation,然后持续用它监控。但模型继续训练时 representation 会漂移。论文观察到,和训练模型匹配的 probes 在 1,500 continued-training steps 内衰减到 near-chance,跨 seed 6/6 pairs 也在 chance 附近。奇怪的是,信息仍然在:用 paired activations 拟合一个无标签线性 map,可以在 9/9 cases 中恢复 native probe performance。旋转只能恢复约一半,完全恢复需要非正交、rank 约 16–64 的变化。
这告诉我们两件事。第一,读者会过期,所以部署监控必须有 recalibration。第二,realignment 只是修坐标,不能保证模型存了正确内容。它能把旧 probe 对齐到新表示,却不能创造本来没有被目标模型保留的证据。
RECAP 的关键转向:把真值写进模型内部
RECAP 的动作反而朴素:在目标模型训练时,给某些 hidden states 加线性 auxiliary predictors,让它们预测外部 targets。sandbox 里是 slot values;Pythia-160M scale experiment 里是自监督文本函数。总 loss 是语言模型 loss 加上一个带权重的 head loss。
区别在这里:旧目标 J_read 只优化 AV 和 AR,目标模型参数 θ 不动;RECAP 的 J_model 直接训练 θ,让指定内容成为隐藏状态的稳定、可读结构。

为了避免“训练时的 head 自己也和模型 co-adapt”,论文所有 decodability 数字都用 independently fitted fresh probes 报告,不用训练时那几个头自证。
在 sandbox 中,RECAP 的效果很干净:指定内容被 independent probes 以 100% decodability 读出,成本只有 +0.001 nats,5/5 runs 成立;因果结构里 unread 的 targets 仍然在 chance,这个 impossibility control 说明方法没有魔法地读出不存在的信息。fresh NLAs 在 RECAP target models 上把 designated content 以约 1.00 的 truth 和 grounding 说出来,co-trained 与 independent evaluator 下都成立;私有码信号消失,full-designation 0/5 runs,partial-designation variants 0/3 runs。
这就是“train the model”的含义:不是让读者更会解释一个已经混乱的状态,而是让状态本身携带可被独立读出的指定证据。
放到 Pythia-160M 上,结果更克制,也更有用
论文没有把 sandbox 结果夸大成 frontier-scale 结论。真正模型实验只到 continued pretraining 的 Pythia-160M,而且目标设计很关键。
Table 1 给了核心数字。control baseline 的 fresh-probe AUC 是 0.77–0.80。RECAP 在 K=8 naive、w=1.0 时 AUC 到 1.000,tax +0.047 nats;K=64 naive 时 AUC 0.95–0.97,tax +0.064;更有效的 K=64 balanced、w=0.1 达到 AUC 0.97–0.99,tax 只有 +0.010 nats,3-seed paired 95% CI 是 [-0.015, +0.034],在约 0.06 nat 的 seed spread 内。若扩到 K=512 balanced,AUC 仍是 0.97–0.99,但 tax 升到 +0.14–0.20 nats。
这里有一个实用坑:K=512 naive presence head 能把训练 loss 做低,却让 fresh probe 什么也读不出来。原因是 rare targets 让 head 学会“总预测 absent”这种捷径。只有 class-balanced loss 才关掉这个 shortcut。所以 RECAP 不是“随便加头就行”,目标必须设计到不能靠平凡策略过关。
更现实的边界出现在 verbalizer audit。RECAP 让 designated content 可解码,但 free-form verbalizer 只部分传达它。在 scale setting 中,AV/AR 说出的 context words 的 truth rate 是 RECAP 0.44,control 0.06,bootstrap 95% intervals 分别是 0.39–0.51 和 0.04–0.09。跨三个 RECAP target-model seeds,truth 稳定在 0.44–0.46,control 是 0.00–0.07。更强 reconstructor 下 RECAP truth 到 0.57,control 0.15。
但这还不是“解释文本完全可信”。RECAP 把 grounded-minus-true gap 从 +0.42 降到 +0.33,没有消除。fresh probe 在同一 recall 水平下 precision 约 0.80,而 verbalizer 自身 precision 是 0.44–0.63。论文甚至重设计 reconstructor,让 decode-point hidden state 里 designated content 线性可读到 0.79–0.81,生成出来的 precision 仍只有 0.56–0.63。
所以 scale 结论必须这样读:RECAP 保证的是 decodability,不是 verbalizability。内容在内部可被 probe 核验;自由文本解释仍然是一个有损渲染。
安全意义:让解释成为提案,让 probe 成为核验
如果解释文本不可靠,RECAP 的安全价值在哪里?论文给了一个很具体的监控图景:verbalizer 说出 claim,fresh probe 读同一个 tap activation。如果 probe 高置信度反驳 claim,就标记 discrepancy。
sandbox 里,control 模型的 detector 很准但覆盖低:所有 27 个 flags 都是真假错配,零 false alarms;但 733 个 pre-tap false claims 里只抓到 27 个,因为大多数 slot 不够 decodable。RECAP 模型则把指定 pre-tap content 的 verification coverage 从 37% 提到 100%,不是因为 detector 更聪明,而是因为目标模型内部终于有可读证据。
Pythia-160M 上,fresh presence probe 对 true/false claims 的排序 AUC 是 RECAP 0.965,control 0.823;95% CIs 分别为 [0.956, 0.973] 与 [0.759, 0.879],基于 672 个 held-out claims。按 disjoint calibration split 设阈值后,false-claim flag recall 是 0.93,precision 是 0.87。
更强的测试是 adversary。攻击者把 honest explanation 里的一个 true stated word 改成 absent word,并选择让重构分数最高的改法。结果重构分数的“lie penalty”几乎被抹平:随机 lie 下降 0.173,score-optimal lie 只下降 0.022,大约压掉 87% 的惩罚。也就是说,如果部署系统信任 reconstruction score,它会被 report-space adversary 轻易绕过。

但 RECAP probe 仍能抓:AUC 0.952,recall 0.86。control probe 则掉到 chance,AUC 0.508,recall 0.01。这里最关键的对照是:control probe 也读 activation,攻击者同样不能直接改 activation,但它仍失败。说明“读内部”本身不够;内部必须先被训练成可解码。
论文也没有把这个说成全域防御。若换到从未 designated 的 lexical band,RECAP monitor 对 control 没优势:honest-case AUC 0.66 对 0.70,ladder gap 在 ±0.06 内。designation 既是机制,也是边界。
这篇论文真正改变的标准
这篇论文最重要的不是提出一个辅助头技巧。辅助头、deep supervision、linear probes 都不是新东西。真正有价值的是它重写了“激活解释可信”的证据标准。
过去我们容易把解释当成一个自洽文本:读起来合理,能重构 activation,甚至能让系统自己打高分。论文证明,这些都不够。高重构可以来自 gist,可以来自私有码;优化 reader 可以产生 proxy gaming;让 activation 靠近自己的 reconstruction 可能压掉内容;冻结 probe 会随训练漂移。
更合格的标准应该是 claim-level 的:解释里的每个具体说法,最好能被一个独立、校准过、没有参与生成文本的读出器核验。不能核验时要 abstain,而不是把高 r̃ 当作真相。
这也是论文边界所在。证据来自一个 synthetic sandbox、一个 released Qwen-2.5-7B NLA、以及一个小型 Pythia-160M continued-pretraining setting;frontier scale 没测。审计主要覆盖 closed-vocabulary、template-parsed claims;open-ended faithfulness 还没解决。RECAP 需要 co-trained in,不能事后贴到冻结模型上。它也只能证明 activation 存了指定内容,不证明模型下游行为真的用了它;论文自己报告 patching tap 对行为影响大约只有 0.003。
但这些边界并不削弱主结论,反而让结论更清楚:如果我们想把模型内部解释用于监督,就不能只训练一个更会说话的读者。我们需要让目标模型把关键内容存成可检查的内部证据,然后让解释文本退回它该在的位置——一个可以提出 claims 的界面,而不是 claims 的最终证明。