Appearance
阅读文档:https://www.anthropic.com/research/tracing-thoughts-language-model
Anthropic的这篇文章,主要是在做这件事:
- 尽量把模型生成某个结果时,内部哪些部分在起作用,顺着往前捋一遍。 不是把整个模型讲明白,也不是把所有内部过程都摊开,而是围着一个具体输出,去找它的上游路径。
先说问题在哪
平时我们分析大模型,能看到的东西其实很有限,输入是什么,输出是什么,顶多再看一下attention、hidden states,或者让模型自己把reasoning写出来,问题是,这些东西和“它内部到底怎么做出这个结果”之间,还隔了一层,尤其是reasoning这件事,现在很多人都默认一件事:模型把步骤写出来,就说明它大概真是这么想的。Anthropic文章其实说明这个观点不一定正确,给了一些证据
它想问的其实是一个很直接的问题:模型输出的那段推理过程,到底是在描述它内部真实发生的事情,还是只是在输出一个看起来合理的解释。
这个问题对做 Agent 的人尤其现实。因为现在很多 Agent 系统,已经不只是让模型回答问题了,而是让它输出 plan、thought、reflection、self-check。你如果默认这些文本就是模型内部状态,那整个系统就会建立在一个不太稳的地基上。
他们到底用了什么方法
文章里最核心的是 attribution graph。这个词看着有点学术,其实可以先简单理解成一张图:从某个输出往回找,看看中间经过了哪些关键特征,它们之间是什么关系。
这个方法和“找一个重要 neuron”不是一回事。单个 neuron 或单个 attention head,最多只能说明一小块局部现象。但模型做复杂任务时,真正起作用的通常不是某个孤点,而是一串东西在不同层里接力。
所以这篇文章真正想做的,不是给某个神经元贴标签,而是去画一张局部路径图。你可以把它想成一张简化过的电路图:输入里的某些信息先触发一部分内部特征,这些特征再和别的特征组合,最后把某个输出推出来。
这个思路其实挺合理。因为复杂行为本来就不太像“某个元件负责一个能力”,更像是“几个部件一起形成一段工作链路”。以前很多 interpretability 工作容易给人一种感觉:找到一个 neuron,好像就找到了一种能力的开关。Anthropic 这篇文章更像是在说,别老盯着元件了,先看看线路。
这篇文章最有价值的地方,不是“证明模型会想”
我觉得这篇文章最容易被带偏的一点,就是大家会忍不住把它写成哲学命题,比如“模型到底会不会思考”。但它实际更像是一篇工具和方法往前走了一步的文章,不太适合往那种方向硬拔。
如果只看技术上它做成了什么,我觉得有三点比较重要。
1. 模型内部不是只有表层 token 模式
这个其实很多人嘴上都知道,但真写文章时又容易退回到一句很偷懒的话:“大模型本质上就是 next-token prediction。”这句话当然没错,但也经常因为太对而没什么信息量。
关键不在于训练目标是不是 next-token prediction,关键在于模型为了把这个目标做好,内部到底长出了什么结构。
Anthropic 这篇文章至少说明了一点:模型内部确实会形成一些比较抽象的中间特征,不是每一步都死贴着表层 token 在动。也就是说,它虽然训练上是在预测下一个 token,但内部可以学出更高层的东西。这一点不算颠覆性结论,但它的重要性在于,文章试图把这个判断从“大家都这么猜”往“我们能看到一点内部痕迹”推。
2. 有些输出前面,可能真的有某种高层准备动作
现在有一种很流行的说法,说 LLM 根本不会规划,因为它就是一个 token 一个 token 往外吐。这个说法的问题在于,它把“生成形式”直接等同于“内部机制”了。
生成形式确实是逐 token 的,但内部有没有先形成某种中间意图,不一定。Anthropic 这里给人的感觉是,至少在某些案例里,模型内部会先形成比表层输出更高一点的表示,然后再往下展开。你可以把它理解成一种很局部、很有限的“先有个方向,再往下写”。
这个事不能说得太满。它不等于模型像人一样先完整想好再落笔,也不等于所有复杂任务都有稳定规划。但它至少说明,把模型理解成纯粹的“边吐边猜”,已经太粗了。
3. CoT 不一定是内部真实路径
这是这篇文章最值得拿出来写的地方,也是最接近工程问题的地方。
现在大家太习惯看模型写 reasoning 了。久而久之,很容易把 reasoning 当作一种很高可信的东西。尤其在 Agent 场景里,很多系统甚至直接依赖这些文本中间态做控制和调试。
但 Anthropic 这篇文章给出的信号是,模型写出来的推理步骤,和内部真正起作用的那条路径,不一定对得上。
这个结论的分量其实挺重。因为它不是在说“CoT 没用”,而是在说“CoT 的证据等级没那么高”。你可以把它当辅助信息,但不能天然把它当内部执行日志。
这点非常关键。很多时候我们看到模型说“我先分析了 A,再比较了 B,最后得出 C”,会下意识以为它内部真是这么走的。现在更稳妥的看法应该是:这段话可能是在解释结果,也可能只是生成了一段形式上像解释的文本。
其他发散
如果只是做模型研究,这篇文章当然值得看。但它对工程最大的意义,是它会逼你重新看待很多现在很常见的做法。
比如你在调一个 Agent,发现它做错了。你最先看的往往是什么?大概率是它输出的 thought、plan、reflection。因为这些东西最直观,也最像日志。
但如果 Anthropic 这篇文章成立,那这里就有个问题:这些文本到底是在暴露内部状态,还是只是在生成一种“对人类可读的说法”。如果是后者,那你把它当一手证据就会出问题。
所以对 Agent 调试来说,我觉得这篇文章带来的一个很现实的提醒是:别太信模型自己的说法,先看外部轨迹。
什么叫外部轨迹。比如:
- 它到底调了哪个工具
- 检索回来的内容是什么
- 它在哪一步改了路线
- 哪个 observation 真正影响了后续决策
- 是哪里开始偏掉的
这些东西虽然没那么“聪明”,但通常比模型自述更可靠。模型的 explanation 可以看,但它更像参考材料,不像底层事实。
现在说 LLM observability,大多数时候还是在看 prompt、response、tool trace、latency、token usage。再往前一点,也许会加评估分、错误分类、检索命中率。
但如果这种 tracing 方法以后继续发展,可能会出现一种更细的观察方式:不仅看模型说了什么、做了什么,还会去看当前这个输出主要是被哪些内部路径推出来的。
这事现在离产品化还早,我不想写得像明天就能上线一个“模型内部调试面板”一样。那太假了。但方向上,我觉得这是这类研究比较实在的价值。它不是马上替代现有日志,而是在告诉你:现在我们看到的这些东西,可能还只是表层。
Anthropic 不是在证明模型会不会思考,而是在试着把某个输出背后的内部路径捋出来;它最重要的结论不是“模型像人一样想”,而是“模型写出来的推理,不一定等于它内部真实用到的那套东西”。
对研究来说,这意味着 interpretability 的分析对象开始从“点”往“路径”走。对工程来说,这意味着我们在看 reasoning、reflection、self-debugging 这些文本时,最好把信任度往下调一点,把更多注意力放回可验证的外部轨迹上。