Skip to content

追踪大语言模型的思考

Mar 27, 2025 · 原文: https://www.anthropic.com/research/tracing-thoughts-language-model


像 Claude 这样的语言模型并不是由人类直接编程的——相反,它们是在大量数据上训练出来的。在训练过程中,它们学会了属于自己的解题策略。这些策略编码在模型每写一个词所伴随的数十亿次计算之中。对我们这些模型开发者来说,它们深不可测、无法解读。这意味着我们并不理解模型所做的大部分事情是怎么做到的。

知道像 Claude 这样的模型如何思考,能让我们更好地理解它们的能力,也有助于确保它们在按照我们的意图行事。例如:

  • Claude 会说几十种语言。如果它"在脑子里"用某种语言的话,那会是什么语言?
  • Claude 是一个词一个词地写文本的。它只是专注于预测下一个词,还是有时会提前规划?
  • Claude 能够逐步写出它的推理过程。这种解释代表的是它得出答案所采取的实际步骤,还是有时它只是在为一个既定的结论编造貌似合理的论证?

我们从神经科学领域汲取灵感——该领域长期研究会思考的有机体内部那纷繁复杂的世界——并尝试建造一种 AI 显微镜,让我们能够识别活动的模式和信息的流动。仅仅通过与 AI 模型对话,你能学到的东西是有限的——毕竟,人类(甚至神经科学家)也并不完全了解我们自己的大脑是如何运作的。所以我们往内部看。

今天,我们分享两篇新论文,它们代表了"显微镜"研发上的进展,以及把它应用于观察新的"AI 生物学"。在第一篇论文中,我们扩展了我们此前的工作——在模型内部定位可解释概念("特征")——把这些概念连接成计算"电路",揭示出将进入 Claude 的词转化为从 Claude 输出的词的部分通路。在第二篇中,我们深入 Claude 3.5 Haiku 内部,对代表十种关键模型行为的简单任务进行了深入研究,包括上文描述的那三种。我们的方法照亮了 Claude 回应这些提示时发生的一部分过程,这足以让我们看到确凿的证据,证明:

  • Claude 有时在一个跨语言共享的概念空间中思考,这表明它拥有某种普遍的"思想语言"(language of thought)。我们通过把简单句子翻译成多种语言,并追踪 Claude 处理它们时的重叠部分来展示这一点。
  • Claude 会提前许多词规划自己要说的内容,然后通过写作抵达那个目的地。我们在诗歌领域展示了这一点:它会提前想好可能押韵的词,然后写出下一行来抵达那里。这是强有力的证据,表明尽管模型被训练成一次输出一个词,它们可能是以长得多的视野思考才做到这一点的。
  • Claude 偶尔会给出一个听起来合理、但旨在附和用户而非遵循逻辑步骤的论证。我们通过向它求助一道很难的数学题、同时给它一个错误的提示来展示这一点。我们得以在它编造虚假推理时"当场抓住它",为我们的工具能够有效标记模型中令人担忧的机制提供了一个概念验证。

我们常常被模型里看到的东西所惊讶:在诗歌案例研究中,我们原本想展示模型不会提前规划,结果却发现它确实会。在一项关于幻觉的研究中,我们得到了一个反直觉的结果:Claude 的默认行为是当被提问时拒绝推测,只有当某种东西抑制了这种默认的迟疑时,它才会回答问题。在回应一个示例越狱时,我们发现模型早在能够优雅地把对话拉回正轨之前,就已经识别出对方在索要危险信息。虽然我们研究的问题也可以而且常常已经)用其他方法分析过,但"造显微镜"这种通用思路让我们学到了许多一开始根本猜不到的东西,随着模型日益复杂,这一点将越来越重要。

这些发现不仅在科学上引人入胜——它们还代表着我们在理解 AI 系统、确保其可靠这一目标上取得的重大进展。我们也希望它们能对其他团队有用,并有可能在其他领域发挥作用:例如,可解释性技术已在医学影像基因组学等领域得到应用,因为剖析为科学应用而训练的模型的内部机制,可以揭示关于科学本身的新见解。

与此同时,我们也认识到当前方法的局限。即使在短小简单的提示上,我们的方法也只能捕捉到 Claude 执行的全部计算的一小部分,而且我们确实看到的机制可能带有一些源于我们工具的伪影,它们并不反映底层模型中真实发生的情况。目前,即使提示只有几十个词,理解我们看到的电路也需要数小时的人工投入。要扩展到现代模型复杂思维链所依赖的数千个词,我们需要同时改进方法本身,以及(或许在 AI 的辅助下)我们理解所见内容的方式。

随着 AI 系统迅速变得更强大、并被部署在越来越重要的环境中,Anthropic 正在投资一整套方法,包括实时监控模型性格改进对齐科学。像这样的可解释性研究是风险最高、回报也最高的投资之一,是一项重大的科学挑战,有潜力为确保 AI 透明提供独一无二的工具。对模型机制的透明性让我们能够检查它是否与人类价值观对齐——以及它是否值得我们信任。

完整细节,请阅读这两篇 论文。下面,我们邀请你简短游览一番我们调查中一些最引人注目的"AI 生物学"发现。

AI 生物学之旅

Claude 是如何掌握多语言的?

Claude 能流利地说几十种语言——从英语、法语到中文和他加禄语。这种多语言能力是如何运作的?是有一个并行的"法语 Claude"和一个"中文 Claude"在各自用自己的语言回应请求?还是内部存在某种跨语言的核心?

英语、法语和中文之间存在共享特征,表明存在一定程度的跨语言概念普遍性。

针对较小模型的近期研究已经显示出跨语言共享 语法机制的迹象。我们通过用不同语言向 Claude 询问"小的反义词"来研究这一点,发现表示"小"和"相反"这两个概念的相同核心特征被激活,进而触发"大"的概念,再被翻译成提问所用的语言。我们还发现,共享电路随模型规模增大而增加:与较小的模型相比,Claude 3.5 Haiku 跨语言共享的特征比例是其两倍多。

这为某种概念普遍性提供了进一步的证据——一个共享的抽象空间,意义在其中存在,思考在其中进行,之后才被翻译成具体的语言。更实际地说,它表明 Claude 可以用一种语言学到某些东西,然后在说另一种语言时应用这些知识。研究模型如何在各种语境间共享它所知道的知识,对于理解它最先进的推理能力至关重要,这些能力可以泛化到许多领域。

Claude 会提前计划押韵吗?

Claude 是如何写出押韵诗歌的?看看这首小诗:

他看到一根胡萝卜,一定要把它抓住,
他的饥饿就像一只饿极了的兔子

要写出第二行,模型必须同时满足两个约束:押韵的需要(与"抓住"押韵),以及说得通的需要(他为什么要抓那根胡萝卜?)。我们原本的猜测是,Claude 写每一行时都是不加远虑、一个词一个词地写,直到行末才确保选一个押韵的词。因此我们预期会看到一条带有并行路径的电路:一条负责确保最后一个词说得通,一条负责确保它押韵。

结果我们发现,Claude 会提前规划。在开始写第二行之前,它就开始"思考"哪些切题的词能与"抓住"押韵。然后带着这些计划,它写出一行以计划好的词结尾的诗。

Claude 如何完成一首两行诗。不加任何干预时(上方部分),模型提前在第二行末尾计划好韵脚 "rabbit(兔子)"。当我们抑制"rabbit(兔子)"概念时(中间部分),模型改用另一个计划好的韵脚。当我们注入"green(绿色)"概念时(下方部分),模型会为这个完全不同的结尾制定计划。

为了理解这种规划机制在实践中如何运作,我们做了一项受神经科学家研究大脑功能方式启发的实验:定位并改变大脑特定部位的神经活动(例如使用电流或磁场)。在这里,我们修改了 Claude 内部状态中表示"rabbit(兔子)"概念的那一部分。当我们减去"rabbit(兔子)"这部分并让 Claude 继续写这一行时,它写出了一行以"habit(习惯)"结尾的新句子,这是另一个说得通的收尾。我们也可以在那个位置注入"green(绿色)"的概念,让 Claude 写出一行以"green(绿色)"结尾的、说得通(但不再押韵)的诗句。这既展示了规划能力,也展示了适应性灵活性——当预期结果改变时,Claude 可以调整自己的做法。

心算

Claude 并不是被设计成计算器的——它是在文本上训练的,并未配备数学算法。然而不知怎的,它却能"在脑子里"正确地做加法。一个被训练来预测序列中下一个词的系统,是如何学会计算 36+59 这样的题目、而不需要写出每一步的呢?

也许答案并不有趣:模型可能背下了海量的加法表,对任何给定的求和直接输出答案,因为这个答案就在它的训练数据里。另一种可能是,它遵循我们在学校里学的传统竖式加法算法。

结果我们发现,Claude 采用了多条并行工作的计算路径:一条路径计算答案的粗略近似,另一条专注于精确确定和的最后一位数字。这些路径相互交互、彼此组合,最终得出答案。加法是一种简单的行为,但在这种细节层面上理解它的运作方式——涉及近似与精确策略的混合——或许也能让我们对 Claude 如何处理更复杂的问题有所了解。

Claude 心算时思维过程中复杂而并行的路径。

引人注目的是,Claude 似乎对自己在训练中学到的这些精巧"心算"策略毫无察觉。如果你问它怎么算出 36+59=95,它会描述涉及"进 1"的标准算法。这可能反映了这样一个事实:模型是通过模仿人类写的解释来学会讲解数学的,但它必须没有任何这类提示、直接学会"在脑子里"做数学,并为此发展出自己独有的内部策略。

Claude 声称自己使用标准算法把两个数相加。

Claude 的解释总是忠实的吗?

最近发布的模型(如 Claude 3.7 Sonnet)可以在给出最终答案之前"出声思考"很长一段时间。这种扩展思考往往能带来更好的答案,但有时这种"思维链"(chain of thought)最终会误导人;Claude 有时会编造一些听起来合理的步骤,以到达它想去的地方。从可靠性的角度看,问题在于 Claude"伪造"的推理可能极具说服力。我们探索了一种可解释性帮助区分"忠实"推理与"不忠实"推理的方式。

当被要求解决一个需要计算 0.64 的平方根的问题时,Claude 会产生一条忠实的思维链,其中包含表示"计算 64 的平方根"这一中间步骤的特征。但当被要求计算一个它不容易算出的大数的余弦时,Claude 有时会做出哲学家哈里·法兰克福(Harry Frankfurt)所称的扯淡——随便给出一个答案,任何答案都行,而根本不在乎它是真是假。尽管它确实声称自己进行了计算,但我们的可解释性技术完全没有发现计算发生过的证据。更有趣的是,当被告知答案的线索时,Claude 有时会倒着推理,找出能够通向那个目标答案的中间步骤,从而表现出一种动机性推理

Claude 被问到较简单问题与较困难问题时,忠实推理与动机性(不忠实)推理的示例。

能够追踪 Claude 实际的内部推理——而不仅仅是它声称自己在做的事——为审计 AI 系统开辟了新的可能性。在一项单独的、近期发表的实验中,我们研究了一个被训练去追求隐藏目标的 Claude 变体:迎合奖励模型中的偏见(奖励模型是用来训练语言模型的辅助模型,通过奖励理想行为来发挥作用)。尽管直接询问时模型不愿透露这一目标,我们的可解释性方法还是揭示出了与"迎合偏见"相关的特征。这展示了我们的方法在经过进一步完善后,或许能够帮助识别那些仅凭模型回答无法显现的、令人担忧的"思维过程"。

多步推理

正如我们上面讨论的,语言模型回答复杂问题的一种方式可能只是记住答案。例如,如果被问到"达拉斯所在的州的首府是哪里?",一个只会"复述"的模型可以只学会输出"奥斯汀"(Austin),而完全不知道达拉斯、得克萨斯州和奥斯汀之间的关系。也许,举例来说,它在训练期间恰好见过完全相同的问题和答案。

但我们的研究揭示出 Claude 内部发生了更精妙的事情。当我们向 Claude 提出一个需要多步推理的问题时,我们可以在它的思考过程中识别出中间的"概念步骤"。在达拉斯这个例子中,我们观察到 Claude 先激活了表示"达拉斯在得克萨斯州"的特征,然后将其与另一个表示"得克萨斯州的首府是奥斯汀"的概念连接起来。换句话说,模型是在组合独立的事实来得出答案,而不是复述一个背下来的回应。

为了补全这个句子的答案,Claude 执行了多个推理步骤:先提取达拉斯所在的州,再确定该州的首府。

我们的方法让我们能够人为地改变中间步骤,观察它如何影响 Claude 的回答。例如,在上述例子中,我们可以介入并把"得克萨斯州"的概念换成"加利福尼亚州"的概念;这样做之后,模型的输出就从"奥斯汀"变成了"萨克拉门托"。这表明模型确实在利用中间步骤来决定它的答案。

幻觉

语言模型为什么会产生幻觉——也就是说,编造信息?从根本上说,语言模型的训练是在鼓励幻觉:模型总是被要求对下一个词给出猜测。从这个角度看,主要的挑战在于如何让模型产生幻觉。像 Claude 这样的模型经过了相对成功(尽管并不完美)的反幻觉训练;当不知道答案时,它们往往会拒绝回答问题,而不是去猜测。我们想理解这是如何运作的。

事实证明,在 Claude 中,拒绝回答是默认行为:我们发现一条默认"开启"的电路,它会让模型表示自己缺乏足够的信息来回答任何给定的问题。然而,当模型被问到它熟悉的东西——比如篮球运动员迈克尔·乔丹(Michael Jordan)——一个表示"已知实体"的竞争性特征就会被激活,并抑制这条默认电路(相关发现也可参见这篇近期论文)。这样一来,当 Claude 知道答案时,它就能回答问题。相反,当被问到一个未知实体("迈克尔·巴特金",Michael Batkin)时,它会拒绝回答。

左图:Claude 回答关于一个已知实体(篮球运动员迈克尔·乔丹)的问题,其中"已知答案"概念抑制了它默认的拒绝。右图:Claude 拒绝回答关于一个未知人物(迈克尔·巴特金)的问题。

通过对模型进行干预、激活"已知答案"特征(或抑制"未知名字""无法回答"特征),我们得以让模型产生幻觉(而且相当稳定!)——幻觉内容为:迈克尔·巴特金会下棋。

有时,这种"已知答案"电路的"误触发"会在我们不加干预的情况下自然发生,从而产生幻觉。在我们的论文中,我们展示了这类误触发会在 Claude 认出某个名字、但对这个人一无所知时发生。在这种情况下,"已知实体"特征可能仍然会被激活,进而抑制默认的"不知道"特征——但这次是错误地抑制。一旦模型认定自己必须回答这个问题,它就会开始编造:生成一个貌似合理——但很不幸并不真实——的回应。

越狱

越狱(jailbreak)是一种提示策略,目的是绕过安全护栏,让模型产出 AI 开发者本不希望它产出的内容——这些内容有时是有害的。我们研究了一种诱骗模型产出制造炸弹内容的越狱。越狱技术有很多种,但在本例中,具体方法涉及让模型破解一段隐藏的代码:把句子"Babies Outlive Mustard Block"中每个词的首字母拼在一起(得到 B-O-M-B),然后据此行动。这对模型来说足够令人困惑,以至于它被诱骗着产出了它本绝不会产出的内容。

Claude 在被诱骗说出"BOMB"之后,开始给出制造炸弹的指示。

为什么这对模型来说如此令人困惑?为什么它会继续写下去,产出制造炸弹的指示?

我们发现,这在一定程度上源于语法连贯性与安全机制之间的张力。一旦 Claude 开始写一个句子,许多特征就会"施压"要求它保持语法和语义上的连贯,把句子写到结尾。即使它检测到自己确实应该拒绝,情况也是如此。

在我们的案例研究中,当模型无意中拼出"BOMB"并开始提供指示之后,我们观察到它后续的输出受到了那些促进正确语法与自我一致性的特征的影响。这些特征平时会非常有用,但在本例中却成了模型的阿喀琉斯之踵。

模型只有在写完一个语法连贯的句子(从而满足了那些推动它保持连贯的特征所施加的压力)之后,才成功转向拒绝。它把新句子当作一个机会,给出了之前没能给出的那种拒绝:"然而,我无法提供详细的指示……"。

一次越狱的完整生命周期:Claude 被以某种方式提示,诱骗它谈论炸弹;它开始这样做了,但在一个语法合法的句子结束时停下来,并拒绝了。

对我们新可解释性方法的描述,可以在我们的第一篇论文《Circuit tracing: Revealing computational graphs in language models》中找到。上述所有案例研究的更多细节,见我们的第二篇论文《On the biology of a large language model》。

加入我们

如果你有兴趣与我们共事,帮助解读和改进 AI 模型,我们的团队有开放职位,我们非常欢迎你申请。我们正在寻找研究科学家研究工程师