把模型中间某一层的激活,跳过后面所有层,直接接到最后的输出词表上——它此刻最想说的词是什么,一目了然。
一句话定义
Logit Lens(可理解为“输出分数透镜”)是一种免训练的可解释性方法:取 Transformer(变换器)某一中间层的残差流向量,跳过剩余层,直接套用模型末尾的归一化与反嵌入矩阵(unembedding),得到一份“如果现在就出答案,会是什么”的词表概率分布。名字里的 logit 指模型输出的原始分数,lens 指它只是一种“看”的方式,不改变模型本身。
它是怎么工作的
解码器 Transformer 内部有一条贯穿所有层的“传送带”,叫残差流(residual stream)。每个注意力层和前馈层都从传送带上取走当前向量,算完再把结果加回去。到最后一层,模型对传送带上的向量做一次归一化,乘上反嵌入矩阵,得到词表上每个 token 的分数(logits),softmax 之后就是下一个词的概率。
关键在于:最后这一步只是对传送带向量做一次线性投影。既然中间层和最后一层用的是同一条传送带,就可以提前在任意一层做同一件事,看当时词表排名前列的是哪些词。这就是它不需要训练、也不需要额外参数的原因。
打个比方:平时你只能在出餐口尝到成品,Logit Lens 相当于炖到一半掀开锅盖尝一口。第 5 层尝出“嗯,是红烧肉的方向”;第 10 层糖和酱油已经到位;第 20 层才真正装盘。很多情况下,模型很早就在候选词里把正确答案放到了第一名,后面十几层主要在做确认和微调。
和相邻概念的区别
| 方法 | 要不要训练 | 看的是什么 | 回答什么问题 |
|---|---|---|---|
| Logit Lens | 不需要 | 中间激活经模型自带输出头后的词表分布 | 模型在第几层已经“想说出”这个答案 |
| 线性探针(linear probe) | 需要,每层单独训一个分类器 | 激活中是否存在可线性读出的信息 | 某类信息编码在哪一层 |
| 注意力可视化 | 不需要 | token 之间的注意力权重 | 模型在看哪些位置 |
| 激活干预(activation patching) | 不训练,但要改动激活 | 替换某处激活后输出的变化 | 哪部分对结果有因果关系 |
要留意:Logit Lens 是描述性的,不是因果性的。它说明“此刻按最终读法会得到这个词”,不等于模型真的沿着这条路得出答案。早期层的读出通常比较嘈杂,因为残差向量的尺度和方向还在变化,实践中往往要配合归一化或其他修正,后来也出现了若干改良变体。
对从业者和普通人的意义
调试推理过程:如果正确答案在第 8 层已经排到第一,后面又掉了下去,问题多半出在之后的某一层,而不是“模型根本不会”。这比只看最终输出更有定位价值。
观察能力差异:事实性回忆往往很早就浮现,多步计算则要在较后的层才逐渐成形。这也解释了为什么让模型把步骤写出来(思维链)常常有效——它相当于给后面几层多留了几道加工工序。
工程上的想象空间:如果多数样本在中间层就已经稳定,理论上可以提前输出、省下后面的算力,前提是能可靠判断“真的稳定了”。
对普通职场人来说,它带来一个直观认识:大模型不是先想好整句话再吐出来,而是在每个位置逐层把候选词往前推。所谓“模型知道但没说出口”,在这把透镜下是一个可以观察的现象。
