串讲 | 读取式可解释性(Lenses):直接把中间层表征「读」回人类可懂的空间,从零训练的固定投影,一路演化到让模型自己解码自己 | 2026-06
这一段在谱系里的位置
整条 method-genealogy 的第一个问题朴素到近乎天真:模型在中间层「想了什么」,能不能直接看?
能看的前提,是一个常被忽略的架构事实——残差流。decoder-only Transformer 里每个 token 位置持有一个 维向量,从 embedding 开始,每层 attention 和 MLP 都以加法把输出叠回去,而非覆盖:。两个推论让「读取」成为可能:其一,中间层的向量和最终层的向量住在同一个空间,所以可以用同一个 unembedding 去解读;其二,最终表示是各组件贡献之和,而线性映射对加法可分配,于是 logit 也能拆成各组件的贡献之和。
这一段(Lenses)就是把这两个推论用到极致。它的共同 move 是:不动模型、只观察,把不可见的内部状态投影/解码回词表这个人类可读的空间。局限也在这里:读取是相关性的,「某层能读出 Paris」不等于「这层导致了输出 Paris」。这条裂缝把后续工作推向因果干预。
从固定投影到学习式校正
Logit Lens:零训练的层间解码器
起点是 Logit Lens(nostalgebraist 2020)。它的全部 insight 藏在 GPT 的 weight-tied embedding 里:同一个矩阵 既是「词→向量」也是「向量→词」字典。既然首末两端都能用 / 翻译成词表,那中间第 12、33 层呢?于是直接复用末层的 logits 函数:
零训练、几行代码,就能看到「模型在每一层相信的下一个 token 分布」如何逐层成形。标志性现象有三个:(1) top-1 视图里早层是「形似而错」的浅层猜测(猜 oreceptor,收敛到 oregressive),中层起锁定、晚层精化;(2) rank 视图里中段 rank 已降到个位数——「大意已经对了」,只是概率没校准;(3) KL(final‖layer) 视图里输入在第 1 层后就被不连续地甩进输出空间,此后平滑收敛,反直觉地不是 U 形翻转。
为什么这个 trick 能 work?作者给的解释正是上面残差流那两条:残差结构压制换基、让各层共用同一组基;weight decay 鼓励把计算摊薄到多层、故演化平滑。Logit Lens 押的是一个赌注:unembedding 基就是可解释的特征基,这也是 线性表示假设 最朴素的实证。
但赌注有代价。Logit Lens 自带两处局限,直接催生后继:其一,作者取的是「layer norm 之后、point-wise 变换之前」的激活,每层尺度不一致,导致 vanilla lens 在不少模型上不忠实(faithfulness 存疑);其二,copy rare token(plasma)和 extreme repetition 这两个 corner case 里,信息明明被保留着,lens 却读不出来——这是「unembedding 基对齐」假设的失明区。
Direct Logit Attribution:把 logit 拆回组件
顺着「logit = 各组件贡献之和」这条残差流推论,Direct Logit Attribution(DLA) 是 Logit Lens 的孪生工具:不是看「某层整体解码出什么」,而是把最终 logit 直接分解到每个 attention head / MLP 的贡献上,量化「哪个 head 把哪个 token 的 logit 推高/拉低了多少」。它和 Logit Lens 共享同一个数学地基(线性可加 + 固定 ),区别只是分解的粒度从「层」细到「组件」。它仍是纯读取,仍只回答「贡献了多少 logit 方向」,不回答因果。
Tuned Lens:学一个仿射补丁修掉偏置
针对 vanilla Logit Lens「每层尺度/分布漂移、不可比、有偏」的硬伤,Tuned Lens(Belrose 2023)的 delta 很直接:不再硬套固定的 ,而是给每层学一个仿射探针 再 unembed,校正每层的 representation drift 与 bias,让跨层的解码结果更忠实、更可比。代价是引入了训练——从「零拟合」退到「需要少量监督」,也因此把「这个方向是模型用的、还是 probe 学出来的」这个老问题(见 LRH 里 decodability ≠ causality)带了进来。但它没有改变范式:还是 vocabulary projection,还是相关性读取,早层仍然崩溃(前 ~10 层正在做输入 contextualization,投影到词表读不出东西)。Future Lens / Attention Lens 等小变体也都在这条 vocabulary-projection 线上微调,不赘述。
Patchscopes:让模型自己解码自己
到这里,lens 家族积累了三个未解的问题:早层失效、只能输出 token 分布、表达力弱、要么靠固定基(有偏)要么靠训练 probe(需监督)。Patchscopes(Ghandeharioun et al., ICML 2024)的回应是一次范式级 reframing:放弃「把 投影到词表」或「训 probe」,改成把目标 hidden state patch 进一个专门设计的 target prompt,让模型用自身的生成能力,用自然语言把这个表示读出来。
它的统一性来自一个五元组:
target prompt 、target 位置 、映射函数 、target 模型 、target 层 。把源表示 动态替换进 跑 时的 位置,再往后算。这个配置空间把很多旧方法统一起来:Logit Lens 是 、;Tuned Lens 是 取学到的仿射;Future Lens 是 ;甚至下一段要讲的 Causal Tracing( = 加噪 target)、Attention Knockout()也都是它的特例。换言之,「下一个解码方法」从发明 trick 变成了「在配置空间里选一个没人选过的点」。这是 simple & generalizable 的品味。
它实际兑现了 delta:Token Identity Patchscope(用 tok→tok; …; ? 的复述 target prompt、)保留 的完整计算、只丢弃除 patched 表示外的源信息,在第 10 层起 next-token 估计上比 Logit/Tuned Lens 最高提升 98%;zero-shot 属性抽取在 12 个任务里 6 个显著超过 trained probe(免训练、开放词表、能借模型非线性);并第一次让早层 entity resolution 被自然语言 verbalize 出来(Vicuna-13B 把 “Diana, Princess of Wales” 逐层从「Wales」解析到「Diana…1961–1997」)——填补了 vocabulary projection 的早层盲区。
但 Patchscopes 没有逃出「读取式」的限制,反而把 confound 暴露得更清楚:patch 之后的 forward 计算 + target prompt 里的 few-shot demonstrations 都在往里注入信息。所以「解码成功」证明的是「该表示 + 解码计算」联合可读,不是「信息原本就完整存在于 里」。把结果当成「 里存了 X」就是 over-claim(见 faithfulness)。加上 target prompt 要手工 craft、跨模型对齐只在同族成立,它把 probe 的「训练成本」转移成了「prompt engineering 成本」,并没有真正消除成本。
through-line
这一段的主线:读取式可解释性把残差流的加法结构当杠杆,从零训练的固定投影(Logit Lens / DLA)→ 学习式校正(Tuned Lens)→ 让模型自解码的统一框架(Patchscopes),不断提升「读」的忠实度与表达力。
但「读」的天花板始终是同一道:它是相关性的。无论投影还是自解码,都只能说「这层激活解码出来像 X」,永远无法证明 X 因果参与了输出。Logit Lens 读不出 copy 机制、Patchscopes 分不清信息是表示自带还是解码补料,都是这道裂缝的不同切面。要回答「这个表示做了什么」,必须从观察转向动手干预:换掉一个组件、按住其余不变,看输出是否随之改变。这就是下一段 证因果·画电路 的起点:activation patching 把「相关」升级为「因果」,并据此把一个个关键节点拼成电路图。
诚实标注
- 已知:残差流的 additive 可加性是架构事实,几乎无争议;Logit Lens 的逐层现象学(top-1/rank/KL 三视图)可在 GPT-2 上复现、社区已大量验证;Patchscopes 的 Token Identity 增益、zero-shot 属性抽取优势均有多模型曲线 + 统计检验支撑。
- 争议/边界:(1) vanilla Logit Lens 在许多模型上「不忠实/有偏」——这是 Tuned Lens 论文提出的、属经验 claim 而非定论;(2) 「GPT 在预测空间里思考」是从相关性可视化外推的高层叙事,作者本人也承认 intuition 模糊,当 mental model 可以、当 established mechanism 则 over-claim;(3) Logit Lens 关于 rare-token 早层保留的解释,作者自述是 “wild guess” 且有反例(“G”/“PT”)未解释;(4) Patchscopes 的「揭示表示里编码了什么」应读作「可解码性」而非「内容存在性」,早层 entity resolution 的定量曲线还混入了 placeholder 污染。
- 边界:整段 Lenses 的全部威力与全部局限,都来自同一个赌注:unembedding 基(或某个可线性/可解码的基)是可解释的特征基。这个赌注在 LRH 边界处开始失效,也正是后续 superposition / dictionary-learning 线要质疑并替换的东西。