Summary
interpreting GPT: the logit lens
- 核心: 把 GPT 任意中间层的残差流激活,用 weight-tied 的 unembedding 矩阵 直接投影回词表 + softmax,观察「模型在每一层 相信 的下一个 token 分布」如何逐层成形。
- 方法: 复用最终层那个 logits 投影函数 ,施加到第 层 block 输出(layer norm 之后)上,无需任何训练;用 top-1 token / rank / KL 三种视图可视化逐层演化。
- 结果: 第 1 层后输入 token 表示就被「丢弃」,激活几乎立刻落入「输出空间」并平滑精化到最终分布,中层往往已锁定答案的大致 rank;rare token(如 “plasma”)在 copy 任务里被保留到最后才取回。
- Sources: website
- Rating: 3 - Foundation —— 残差流「读取式」可解释性谱系的事实起点,催生 Tuned Lens / Patchscopes 等一整条 decoding 线,被社区反复引用与扩展。
Key Takeaways:
- logit lens = 零训练的层间解码器: 只要模型 input/output embedding 权重共享(weight-tied),就能用同一个 把任意中层激活读成词表分布,得到「模型此刻的信念」。这是「residual stream 上的方向天然带语义」这一线性表示假设的最朴素实证。
- 输入被「不连续地」丢弃: 作者最反直觉的观察——激活并非 U 形(早层像输入、晚层像输出、中间翻转),而是第 1 层后就跳进输出空间,之后平滑收敛。
KL(final‖layer)在 input→layer1 处有一次巨大跳变,其余层平滑。 - 「GPT 在预测空间里思考」: 模型把输入立刻转成「对下一个 token 的猜测」,后续层是在互相精化这些猜测,而非保留输入慢慢加工——呼应 Universal Transformer 的 iterative-refinement 视角,但 GPT 只有 decoder,面临「保留输入 vs 吐出下一个 token」的深度预算权衡。
- 它只是一个 lens,不是全部: 作者自己强调这只是一种「从激活中提取信息」的方式,logits 视角看不到的信息仍大量存在——这条 caveat 后来成为整条「读取式 vs 干预式」方法论分歧的源头。
Teaser. logit lens 的标志性视图:对 GPT-3 摘要片段做预测时,GPT-2 (1558M) 每一层 block 输出经 投影后的 top-1 token(纵轴自下而上为第 0→47 层,颜色为该猜测的 logit)。可见早层是「形似但错」的浅层猜测,中层起逐渐锁定、晚层精化;(*) 标注模型 top-1 与真值一致的列。
背景与设定
GPT 的结构(作者明确以 GPT-2 1558M 为例,、)可抽象为三步:用 的 embedding 矩阵 把输入 token 投到 embedding 空间 → 经多个 block 反复修改这个 1600 维向量 → 末层向量乘 投回词表得 logits,softmax 出分布。关键在于 GPT input/output 投影权重共享(weight-tied):同一个 既是「词→向量」字典,也是「向量→词」字典。
logit lens 的全部 insight 就藏在这一点里:既然首末两端的向量都能用 / 翻译成词表,那中间第 12、33 层的向量呢?
Equation 1. logit lens 投影
符号说明: 为第 层 block 的输出激活(对 transformer 熟手:是 layer norm 之后、学习的 point-wise 变换之前 的那个量); 即 unembedding 矩阵。 含义:把末层才用的 logits 函数原封不动施加到任意中层。 时它就是模型真实输出,(input embedding)时它近似一个「概率几乎全压在输入 token 上」的分布(因 不可逆故只是近似)。无需任何额外训练或拟合——这是它和后继 Tuned Lens(学一个 per-layer 仿射精化)的根本差异。
❓ 作者取的是「layer norm 之后、point-wise 变换之前」的激活,而非干净的 residual stream 读出点。这个选择会影响每层的尺度,也是后来 Tuned Lens 论文指出 vanilla logit lens 在很多模型上「不忠实/有偏」的技术诱因之一。
logits 视图:早层猜测「形似而错」
把 Equation 1 施加到 GPT-2 预测 GPT-3 摘要片段的各层(见上方 Teaser 图),能读到一连串「错得有道理」的早期猜测:
- “We train GPT-3, an aut…” → 早层猜
oreceptor,后收敛到正确的oregressive; - “model with 175…” → 早层猜
million,最终收敛到逗号(而非真值billion); - “GPT-3, an…” → 早层
enormous/massive(语义不离谱但非真值)。
作者总结的总体趋势是:「nonsense / 不可解释」(极早层偶发)→「浅层猜测(词性/register 对)」→「更好的猜测」,部分阶段有时缺席。换言之,分布「在网络中段就形成了相当不错的猜测,后面的层是在互相参照中精化」。
这条经验后来被反复复用:例如把 logit lens 沿层画出来,就能粗看一个 fact / token 大约在「第几层」被决定——成为 ROME 等定位事实存储层、以及 induction / IOI 等 circuit 工作的廉价探针。
ranks 视图:中层早已「抓住要点」
只看 top-1 太粗。第二种视图保留「最终 top-1 token」,去看它在各中层分布里的 rank(注意:是最终预测的 rank,不是真值的 rank)。
Figure 2. 各层 top-1 token 在 ~50K 词表中的 rank(颜色对数标度,rank 1→100)。可见多数列在网络中段 rank 就已降到个位/十位数:即便 top-1 顺序未定、概率未校准,「大意已经对了」。作者结论:「network’s uncertainty has drastically reduced by the middle layers」。
KL 视图与「输入丢弃」
第三种视图用 KL(final ‖ layer) 给出更连续的收敛图景,也是作者论证「没有任何一层看起来像输入」的首选度量。关键操作是把之前刻意略去的 input layer(输入 token 的 embedding)也画进来:
Figure 3. KL(final ‖ layer) 热图(最底一行 h_in 为输入层)。现象极鲜明:
“Immediately, after the very first layer, the input has been transformed into something that looks more like the final output (47 layers later) than it does like the input. After this one discontinuous jump, the distribution progresses in a much more smooth way to the final output distribution.”
即一次不连续跳变把表示从输入空间甩进输出空间,此后平滑收敛。作者由此提出「GPT 主要在预测空间里思考」的解读,并坦承这违背他原本预期的 U 形翻转。
copy rare token / extreme repetition:反直觉的两个 corner case
- copy rare token:输入
…when people say plasma, … Other times, when people say——下一个 token 显然该 copyplasma。模型确实预测对了,但只在最后几层才取回plasma(rank 视图里它一直很低直到末端)。「重复模式在输入里直接可见,模型却把它打散,再通过另一条计算路径在后面恢复。」 - extreme repetition:采样陷入逐字循环时,这个模式在网络上半部才被「注意到」,下半部即便重复了几轮仍看不见。
这两例直接挑战了「input never kept around」的简单图景:信息确实被以某种非「输出形式」的编码保留着,只是 logit lens 读不出。这正是 lens 局限性的实证。
why? 为什么这个 trick 能 work
作者给出两条「为什么各层共用同一组基、且变化平滑」的解释:
- Transformer 是残差网络:每个连接形如 ,identity 极易学,倾向于跨层保持同一组基(除非有理由换基)。若每层先做任意旋转换基,信息不丢但 解码就会失效——而残差结构压制了这种换基。
- weight decay(≈L2 正则):鼓励小 L2 范数,于是模型偏好把一次计算「摊薄到尽可能多的层」(平方和 < 和的平方),即一点点地改输入——故收敛是平滑的。
但作者诚实指出:1+2 能解释「平滑」,却解释不了输入为何被如此不连续地丢弃——他原本预期 U 形渐变。
addendum:KL 不是距离 + 输入其实被「部分保留」
评论者(Gurkenglas / algon33)指出 KL(final‖layer) 不对称、不满足三角不等式,「跳变→平滑收敛」的路径直觉有误导性。改画 KL(input ‖ layer)(≈「各层给输入 token 多大概率」):
Figure 4. KL(input ‖ layer) 热图(色标与 Fig 3 同,可比)。结论被部分修正:输入后仍有一次快速跳变,但远小于 KL(final‖layer) 处的跳变;输入 token 的 rank 跳升后常停在 ~100s–1000s 的中高位而非彻底沉底。即输入信息被保留的程度因 token 而异、且与上下文相关(同一段里第一、二、三个逗号的 rank 轨迹截然不同)。作者推测 rare / 「surprising」token 被早层更强保留,作为后续层 copy 的原始通道——但承认这套故事解释不了 “G”/“PT” 为何保留得不好,degree-of-preservation 的标尺只是「wild guess」。
关联工作
谱系定位(读取式可解释性的起点)
- 它是什么: residual-stream「读取式」可解释性谱系的事实起点——用固定的 unembedding 把任意中层投回词表,把不可见的内部计算变成可读的逐层 token 分布。零训练、零拟合是它的招牌。
- 直接后继: Tuned Lens(Belrose et al., 2023)给每层学一个仿射变换来精化 lens,修正 vanilla logit lens 在许多模型上的偏差与不忠实;Patchscopes 把「投影/解码中层激活」统一成一个用模型自身生成来询问激活的通用框架,logit lens 是其一个特例。二者都在「读取激活语义」这条线上。
- 同期对照: 主流 transformer 可解释性当时聚焦「attention 在看哪里」;logit lens 反过来问「每一步之后 GPT 相信 什么」,关注 belief 而非 update,开辟了正交的读取维度。
方法相关 / 被它启发或与之互补
- Residual Stream / Circuits:logit lens 的成立前提(残差结构保持同一组基)正是 circuits 框架里「residual stream 是各组件读写的公共总线」这一图景的早期实证。
- 线性表示假设 / Representation Engineering:lens 能 work 说明「方向 = 概念」在 unembedding 基下相当成立,是线性表示与 steering 类工作的直觉来源。
- Induction Head / In-context Learning & Induction Heads / IOI Circuit:post 里 copy / repetition 两例本质是 induction-style copying,logit lens 给出了它「在哪一层被取回」的现象学画像。
- Superposition / Polysemanticity / Toy Models of Superposition / Dictionary Learning / SAE Monosemanticity:这条线是对 logit lens 的根本性补充与反驳——若特征以 superposition 叠加、且真实 feature 基不对齐 unembedding 基,则「直接乘 读 token」必然丢信息(正是 lens 读不出 copy 机制的可能原因)。
对比 / 互为补集(相关性 vs 因果)
- Causal Mediation / Activation Patching / ROME / ACDC / Attribution Graphs:logit lens 是纯相关性观察——它只说「这一层的激活解码出来像 X」,不能证明 X 因果参与了输出。这一痛点正是 patching / causal-mediation 系(ROME 改写、ACDC 自动找 circuit、attribution graph 归因)的动机所在。
- DAS / Parameter Decomposition:在「找到与 unembedding 基对齐的可解释子空间/参数」方向上,比 logit lens 的固定基读取更进一步、更可因果干预。
论文点评
Strengths
- 极致的 simple & general: 一个零训练、几行代码的投影就揭示了「逐层信念演化」这一普遍现象,且只依赖 weight-tied embedding 这一弱假设。它至今仍是研究者打开一个新模型时的第一个探针。
- 现象学诚实: 三种视图(top-1 / rank / KL)层层递进,且作者主动接受评论者的反驳(KL 非距离)、补做
KL(input‖layer)修正自己的「输入完全丢弃」结论。negative/反直觉结果(输入不连续丢弃、rare token 末层才取回)被如实保留而非粉饰。 - 开了一条谱系: 「读取中层激活的语义」这个 formulation 直接孵化 Tuned Lens、Patchscopes 等一整条线,影响力远超一篇 blog 的体量。
Weaknesses
- 纯相关、不能证因果: lens 只回答「像什么」,不回答「这个表示是否、如何参与了最终输出」。把「某层解码出 token X」当成「模型在该层计算了 X」是常见误用——这正是后来 patching 系存在的理由。
- 依赖 unembedding 基对齐的强隐含假设: 一旦特征处于 superposition、或真实 feature 基与 不对齐,lens 就系统性失明——post 里 copy/repetition 读不出、rare-token 保留机制说不清,都是这个盲区的征兆。Tuned Lens 后来实证 vanilla logit lens 在不少模型上不忠实(faithfulness 存疑)。
- 样本与模型范围有限: 结论基于 GPT-2 1558M 上少数手挑文本片段的定性观察,无定量、无跨模型系统验证(作者 2021 addendum 才扩到 125M–2.7B / GPT-Neo / CTRL,并发现需要「变体 decoder」才解释得动某些模型——暗示 vanilla 版的普适性有边界)。
- 「GPT 在预测空间思考」是过度解读风险点: 这是从相关性可视化推出的高层叙事,作者自己也说 intuition 「写不清楚」。把它当 mental model 可以,当 established mechanism 则 overclaim。
可信评估
Artifact 可获取性
- 代码: post 附一个可交互的 Colab notebook(inference-only,探针性质);无正式 GitHub 仓库。2021 年 addendum 另附一个扩展版 Colab。
- 模型权重: 用公开的 GPT-2 1558M(及后续 GPT-Neo / CTRL 等公开 checkpoint),非作者发布。
- 训练细节: 不适用(无训练,纯 inference 探针)。
- 数据集: 无;分析文本为手挑片段(GPT-3 摘要、自造 “plasma” 句等)。
Claim 可验证性
- 可信:「中层激活经 解码得到可解释的逐层 token 分布」: 有完整热图、可交互 Colab,任何人可在 GPT-2 上复现,社区已大量重复验证。
- 可信:「输入表示在第 1 层后即被甩入输出空间(不连续跳变)」:
KL(final‖layer)/KL(input‖layer)双图支撑,且作者在 addendum 自我修正后结论依然成立(跳变存在,只是输入被部分保留)。 - 存疑:「rare/surprising token 被早层保留以供后续 copy」: 仅 “plasma” 单例 + 作者自述「wild guess」的标尺,且 “G”/“PT” 反例未解释——属合理推测而非已证机制。
- 存疑:「GPT 主要在预测空间里思考 / 面临深度预算权衡」: 从相关性可视化外推的叙事,作者承认 intuition 模糊,无因果证据。
- ❌(无明显营销话术——blog 体裁,作者通篇克制,反复强调这只是「partial lens」。)
Notes
- 对我们这条 method-genealogy survey:logit lens 是「读取式(correlational decoding)」分支的根。叙事主线可写成——logit lens(固定基读取)→ Tuned Lens(学习式精化读取)→ Patchscopes(统一解码框架);其「不能证因果」的痛点横向催生「干预式」分支:activation patching / ROME / ACDC / attribution graphs。两分支的张力(看得见 vs 改得动)是 survey 的一条核心 axis。
- 一个值得在 survey 里强调的 meta-point:logit lens 的全部威力与全部局限,都来自同一个赌注——unembedding 基是可解释的特征基。SAE/dictionary-learning 线本质是在质疑并替换这个基。
Rating
Metrics (as of 2026-06-27): citation=N/A (S2 IP throttled); influential=N/A; velocity=N/A; HF upvotes=N/A (无 arXiv id); github N/A (无官方仓库,仅 Colab)。
分数:3 - Foundation 理由:尽管是一篇 2020 年的 LessWrong blog、无 citation 数可查(S2 今日被限流),它是 residual-stream「读取式」可解释性谱系事实上的起点——「logit lens」已成通用术语,并被 Tuned Lens、Patchscopes 等直接继承扩展(followed-by-many,post 内 “what links here” 亦列出大量后续 mech-interp 工作)。对本 survey 而言它是理解整条读取式分支不可绕过的奠基节点,符合「只读 rating=3 就能理解方向脉络」的准入门槛,故定 3 而非 2(2 更适合其某个具体后继 SOTA)。