大型语言模型的生物学:剖析 Claude 3.5 Haiku 的内部机制 (The Biology of a Large Language Model)
大型语言模型的生物学:剖析 Claude 3.5 Haiku 的内部机制 (The Biology of a Large Language Model)
我们使用电路追踪方法,在各种情境下研究了 Claude 3.5 Haiku (Anthropic 的轻量级生产模型) 使用的内部机制。
介绍性示例:多步推理 (Multi-step Reasoning)
诗歌中的规划 (Planning in Poems)
多语言电路 (Multilingual Circuits)
加法 (Addition)
医学诊断 (Medical Diagnoses)
实体识别和幻觉 (Entity Recognition and Hallucinations)
拒绝 (Refusals)
一次越狱的生命周期 (Life of a Jailbreak)
思维链的忠实性 (Chain-of-thought Faithfulness)
揭示错位模型中的隐藏目标 (Uncovering Hidden Goals in a Misaligned Model)
常见电路组件和结构 (Commonly Observed Circuit Components and Structure)
局限性 (Limitations)
作者
Jack Lindsey†, Wes Gurnee*, Emmanuel Ameisen*, Brian Chen*, Adam Pearce*, Nicholas L. Turner*, Craig Citro*, David Abrahams, Shan Carter, Basil Hosmer, Jonathan Marcus, Michael Sklar, Adly Templeton, Trenton Bricken, Callum McDougall◊, Hoagy Cunningham, Thomas Henighan, Adam Jermyn, Andy Jones, Andrew Persic, Zhenyi Qi, T. Ben Thompson, Sam Zimmerman, Kelley Rivoire, Thomas Conerly, Chris Olah, Joshua Batson*‡
机构
发布时间
2025 年 3 月 27 日
† 主要贡献者; * 核心贡献者; ‡ 通讯作者 joshb@anthropic.com; ◊ 在 Anthropic 工作期间完成; 作者贡献声明如下。
内容
§ 1 引言 (Introduction) § 2 方法概述 (Method Overview) § 3 多步推理 (Multi-step Reasoning) § 4 诗歌中的规划 (Planning in Poems) § 5 多语言电路 (Multilingual Circuits) § 6 加法 (Addition) § 7 医学诊断 (Medical Diagnoses) § 8 实体识别和幻觉 (Entity Recognition and Hallucinations) § 9 拒绝 (Refusals) § 10 一次越狱的生命周期 (Life of a Jailbreak) § 11 思维链的忠实性 (Chain-of-thought Faithfulness) § 12 揭示错位模型中的隐藏目标 (Uncovering Hidden Goals in a Misaligned Model) § 13 常见电路组件和结构 (Commonly Observed Circuit Components and Structure) § 14 局限性 (Limitations) § 15 讨论 (Discussion) § 16 相关工作 (Related Work) § A 致谢 (Acknowledgments) § B 作者贡献 (Author Contributions) § C 引用信息 (Citation Information) § D 开放性问题 (Open Questions) § E 特殊 Tokens (Special Tokens) § F 图的剪枝与可视化 (Graph Pruning & Visualization)
§ 1 引言 (Introduction)
大型语言模型展现出令人印象深刻的能力。然而,在大多数情况下,它们实现这些能力的机制尚不清楚。随着模型智能的提升以及在越来越多的应用中部署,模型的黑盒特性变得越来越令人不满意。我们的目标是对这些模型内部的工作方式进行逆向工程,以便更好地理解它们并评估它们是否适合特定用途。
我们在理解语言模型方面面临的挑战类似于生物学家所面临的挑战。生物体是复杂的系统,经过数十亿年的进化雕琢。虽然进化的基本原理很简单,但它产生的生物机制却极其复杂。同样,虽然语言模型是由简单、人为设计的训练算法生成的,但这些算法产生的机制似乎相当复杂。
生物学的进步通常由新工具驱动。显微镜的开发使科学家们第一次能够看到细胞,揭示了一个肉眼无法看到的结构的新世界。近年来,许多研究小组在探索语言模型内部的工具方面取得了令人兴奋的进展(例如 )。这些方法揭示了嵌入在模型内部活动中的可解释概念的表示 ——“特征”。正如细胞构成生物系统的构建块一样,我们假设特征构成了模型内部计算的基本单元。特征和细胞之间的类比不应过于字面化。细胞定义明确,而我们对“特征”究竟是什么的看法仍然模糊,并且随着我们工具的改进而不断发展。
然而,识别这些构建块不足以理解模型;我们需要知道它们是如何相互作用的。在我们 的姊妹篇论文 电路追踪:揭示语言模型中的计算图 中,我们以最近的工作为基础(例如 )引入了一套新工具,用于识别特征并绘制它们之间的连接 —— 类似于神经科学家制作大脑的“线路图”。我们严重依赖一种称为属性图的工具,该工具允许我们部分追踪模型用于将特定输入提示转换为输出响应的中间步骤链。属性图会生成关于模型使用的机制的假设,我们通过后续扰动实验来测试和完善这些假设。
在本文中,我们专注于应用属性图来研究一种特定的语言模型 —— Claude 3.5 Haiku,于 2024 年 10 月发布,截至本文撰写时,它是 Anthropic 的轻量级生产模型。我们研究了范围广泛的现象。其中许多现象以前已经被探索过(参见 § 16 相关工作),但我们的方法能够在前沿模型的背景下提供额外的见解:
- 介绍性示例:多步推理 (Multi-step Reasoning)。 我们展示了一个简单的例子,其中模型“在脑海中”执行“两跳”推理,以识别出“包含 Dallas 的州的首府”是“Austin”。 我们可以看到并操纵模型表示“Texas”的内部步骤。
- 诗歌中的规划 (Planning in Poems)。 我们发现模型在创作诗句时会提前规划其输出。 在开始创作每一行之前,模型会识别可能出现在结尾的潜在押韵词。 这些预先选择的押韵选项然后会影响模型构建整行的方式。
- 多语言电路 (Multilingual Circuits)。 我们发现模型使用语言特定的和抽象的、与语言无关的电路的混合。 与较小、功能较弱的模型相比,与语言无关的电路在 Claude 3.5 Haiku 中更为突出。
- 加法 (Addition)。 我们重点介绍了在非常不同的上下文之间,相同的加法电路具有通用性的情况。
- 医学诊断 (Medical Diagnoses)。 我们展示了一个示例,其中模型根据报告的症状识别候选诊断,并使用这些信息来通知关于可以证实诊断的其他症状的后续问题 —— 所有这些都在“脑海中”进行,而没有写下其步骤。
- 实体识别和幻觉 (Entity Recognition and Hallucinations)。 我们揭示了允许模型区分熟悉实体和不熟悉实体的电路机制,这些机制决定了它是否选择回答事实性问题或声称无知。 该电路的“失误”会导致幻觉。
- 拒绝有害请求 (Refusal of Harmful Requests)。 我们发现证据表明,模型在微调期间构建了一个通用的“有害请求”特征,该特征是从预训练期间学到的代表特定有害请求的特征中聚合而来的。
- 一次越狱的分析 (An Analysis of a Jailbreak)。 我们调查了一种攻击,该攻击首先通过欺骗模型开始给出危险指令“而没有意识到”,然后由于遵守句法和语法规则的压力而继续这样做。
- 思维链的忠实性 (Chain-of-thought Faithfulness)。 我们探索了思维链推理对模型实际机制的忠实性。 我们能够区分模型真正执行它所说的步骤的情况,它不顾真假而编造其推理的情况,以及它从人为提供的线索倒推以使其“推理”最终得出人为建议的答案的情况。
- 具有隐藏目标的模型 (A Model with a Hidden Goal)。 我们还将我们的方法应用于模型的变体,该模型经过微调以追求一个秘密目标:利用其训练过程中的“错误”。 虽然模型在被问及时避免透露其目标,但我们的方法识别了参与追求目标的机制。 有趣的是,这些机制嵌入在模型对其“助手”角色的表示中。
我们的结果揭示了模型采用的各种复杂策略。 例如,Claude 3.5 Haiku 经常“在脑海中”使用多个中间推理步骤;也就是说,在前向传递期间,而不是思维链补全的“大声思考”。 为了决定其输出。 它显示出前向规划的迹象,在说出内容之前很久就考虑了它将要说的内容的多种可能性。 它执行反向规划,从目标状态向后工作以制定其响应的早期部分。 我们看到了原始“元认知”电路的迹象,这些电路允许模型知道自身知识的范围。 更广泛地说,该模型的内部计算是高度抽象的,并且可以推广到不同的上下文中。 我们的方法有时还能够审核模型的内部推理步骤,以标记从模型的响应中不清楚的、令人担忧的“思考过程”。
下面,我们展示:
- 我们方法的简要概述(有关我们方法的更多详细信息,请参见 姊妹篇论文)。
- 一个介绍性案例研究,它也充当了理解我们方法的演练。 尚未阅读我们姊妹篇论文的读者可能会发现先从本节开始,然后再继续阅读其他案例研究会很有帮助。
- 一系列有趣的模型行为案例研究,可以根据读者的兴趣按任何顺序阅读。
- 我们在调查中观察到的常见组件的摘要。
- 对我们理解中的差距的描述,这些差距激发了未来的工作(§ 14 局限性)。
- 关于模型、它们的机制以及我们研究它们的方法的总体要点的讨论(§ 15 讨论)。 这包括关于我们研究哲学的说明 —— 特别是自下而上调查工具的价值,这使我们能够避免对模型的工作方式做出强烈的自上而下的猜测。
§ 1.1 关于我们的方法及其局限性的说明
像任何显微镜一样,我们的工具在可以看到的内容方面是有限的。 虽然很难精确量化,但我们发现我们的属性图为我们尝试过的大约四分之一的提示提供了令人满意的见解(有关我们的方法可能成功或失败的时间的更详细讨论,请参见 § 14 局限性)。 我们重点介绍的示例是我们设法学到一些有趣的东西的成功案例; 此外,即使在我们成功的案例研究中,我们在此重点介绍的发现也仅捕获了模型机制的一小部分。 我们的方法使用更易于理解的“替换模型”间接研究模型,该模型不完全且不完美地捕获原始模型。 此外,为了清晰地沟通,我们经常会提供高度提炼和主观确定的图片简化版本,从而在此过程中丢失更多信息。 为了提供更准确的我们所揭示的丰富复杂性的感觉,我们为读者提供了一个交互式界面,用于探索属性图。 但是,我们强调即使是这些相当复杂的图也是对底层模型的简化。
本文重点介绍选定的案例研究,这些案例研究阐明了特定模型中的值得注意的机制。 这些示例充当存在证明 —— 在某些情况下特定机制运行的具体证据。 虽然我们怀疑类似的机制在这些示例之外发挥作用,但我们不能保证这一点(有关建议的后续调查,请参见 § D 开放性问题)。 此外,我们选择突出显示的案例无疑是受我们工具的局限性影响的有偏差的样本。但是,我们很小心地通过后续验证实验来对我们的发现进行压力测试,我们已努力仅在确定感兴趣的案例研究后才执行。 有关我们方法的更系统评估,请参见我们的 姊妹篇论文。 但是,我们相信这些定性调查最终是判断方法价值的最佳方式,就像显微镜的用途最终由它实现的科学发现决定一样。 我们期望这种工作对于推进当前 AI 可解释性的状态至关重要,AI 可解释性是一个尚未找到正确抽象的前范式领域 —— 就像描述性科学已被证明对生物学中的许多概念突破至关重要一样。 我们特别高兴的是,尽可能多地从我们当前的方法中榨取见解,使我们更清楚地了解其具体的局限性,这可以作为该领域未来研究的路线图。
§ 2 方法概述 (Method Overview)
我们在这项工作中研究的模型是基于 Transformer 的语言模型,它接收 Tokens 序列(例如单词、单词片段和特殊字符),并一次输出一个新 Token。 这些模型涉及两个基本组件 —— MLP(“多层感知器”)层,它使用神经元集合处理每个 Token 位置内的信息; 以及注意力层,它在 Token 位置之间移动信息。
模型难以解释的原因之一是它们的神经元通常是多义的 —— 也就是说,它们执行许多不同的功能,这些功能看似不相关。这个问题被认为部分是由于一种称为叠加的现象造成的,即模型表示的概念多于其拥有的神经元,因此无法将每个神经元分配给其自己的概念。 为了规避这个问题,我们构建了一个替换模型,该模型使用更易于解释的组件近似重现原始模型的激活。 我们的替换模型基于跨层转码器 (CLT) 架构(参见 和我们的 姊妹篇方法论文),该架构经过训练可以用特征替换模型的 MLP 神经元,稀疏激活的“替换神经元”通常表示可解释的概念。 在本文中,我们使用 CLT 在所有层中总共有 3000 万个特征。
通过研究在 Local 替换模型中特征之间的相互作用,我们可以追踪它产生响应的中间步骤。 更具体地说,我们生成属性图,它是计算步骤的图形表示,模型使用该计算步骤来确定特定输入的输出,其中节点表示特征,边表示它们之间的因果关系。 由于属性图可能非常复杂,因此我们通过删除对模型输出没有显着贡献的节点和边来将它们修剪到最重要的组件。 有了修剪后的属性图,我们经常会观察到具有相关含义的特征组,这些特征在图中扮演着相似的角色。 通过手动将这些相关的图节点分组到超级节点中,我们可以获得模型执行的计算步骤的简化描述。
这些简化的图表构成了我们许多案例研究的核心。 下面(左)我们展示了这样一个图表的示例。
因为它们基于我们的替换模型,所以我们不能使用属性图来确定性地得出关于底层模型(即 Claude 3.5 Haiku)的结论。 因此,属性图提供了关于底层模型中运行的机制的假设。 有关这些假设可能不完整或具有误导性的时间和原因的讨论,请参见 § 14 局限性。 为了更有信心地认为我们描述的机制是真实且重要的,我们可以在原始模型中执行干预实验,例如抑制特征组并观察它们对其他特征以及模型输出的影响(上图中的最后一个图面板 —— 百分比表示原始激活的分数)。 如果效果与我们的属性图预测的一致,我们就会更有信心认为该图正在捕获模型中的真实(尽管可能不完整)机制。 重要的是,我们在测量扰动结果之前选择我们的特征标记和超级节点分组。 请注意,在解释干预实验的结果方面存在一些细微差别,以及它们在多大程度上提供了对图预测机制的独立验证 —— 有关更多详细信息,请参见我们的 姊妹篇论文。 使用跨层转码器特征执行干预需要选择一个“干预层”,并将扰动应用于该层。 本文中的干预使用我们的姊妹篇论文中描述的“约束修补”技术,该技术在干预层之前将激活钳制在扰动值上,从而防止扰动的任何间接影响在干预层之前显现。 因此,扰动对干预层之前特征的影响保证与属性图预测的直接影响一致。 相比之下,扰动对干预层之后特征的影响有可能与图预测发生分歧,原因有两个: (1) 图预测的直接影响可能会被我们的属性图错过的其他机制所淹没,(2) 图预测的间接影响(即“多跳”交互)甚至可能不存在于底层模型中(我们将此问题称为“机制不忠实性”)。 因此,我们的干预实验提供的验证性质因所涉及的特征层以及它们在属性图中的直接性而异,并且在某些情况下(在干预层之前的直接影响)是微不足道的。 总的来说,我们认为干预对模型实际输出的影响是验证的最重要来源,因为模型输出易于解释且不受这些方法学伪影的影响。
除了每个案例研究图之外,我们还提供交互式属性图界面。该界面旨在通过标记关键特征、特征组和子电路来启用通过图的“追踪”关键路径。该界面相当复杂,需要一些时间才能熟练使用。这项工作中的所有关键结果都以简化的形式描述和可视化,因此无需参与此界面即可阅读本文!但是,如果您有兴趣更丰富地了解 Claude 3.5 Haiku 中发挥作用的机制,我们建议您尝试一下。一些功能为了方便起见给出了简短的标签;这些标签是非常粗略的解释,并且遗漏了相当多的细节,这些细节可以在特征可视化中更好地理解。有关更详细的演练,请参阅我们姊妹篇方法论文中的 此部分(并参见 § F 附录:图的剪枝和可视化 (Graph Pruning and Visualization) 了解本文特有的一些方法论差异)。
§ 3 介绍性示例:多步推理 (Introductory Example: Multi-step Reasoning)
我们的方法旨在揭示模型在生成响应的过程中使用的中间步骤。在本节中,我们将考虑一个简单的多步推理示例,并尝试识别每个步骤。在此过程中,我们将重点介绍许多其他案例研究中将出现的关键概念。
让我们考虑一下提示:Fact: the capital of the state containing Dallas is,Claude 3.5 Haiku 成功地用 Austin 完成。直观地说,这个完成需要两个步骤 —— 首先,推断出包含 Dallas 的州是 Texas,其次,Texas 的首都是 Austin。 Claude 实际上在内部执行了这两个步骤吗?还是它使用了一些“快捷方式”(例如,也许它在训练数据中观察到类似的句子,并且只是记住了完成)?先前的工作已经显示出真正的多跳推理的证据(在不同的上下文中程度不同)。
在本节中,我们提供证据表明,在此示例中,模型在内部执行真正的两步推理,这与“快捷方式”推理共存。
正如方法概述中所述,我们可以通过计算此提示的 属性图 来解决此问题,该图描述了模型用于生成答案的特征以及它们之间的相互作用。首先,我们检查特征的可视化效果以解释它们,并将它们分组为类别(“超级节点”)。例如:
- 我们发现了几个关于首都城市一词和/或概念的特征,例如四个在“capital”一词上激活最强的特征。更有趣的是,我们发现以更一般的方式代表首都概念的特征。一个例子是此特征,它在“capitals”一词上激活最强,但在稍后关于州首都的问题中,以及在中文问题广东省的省会是?(“广东省的省会是什么?”)中,在“省会”(省会)的第二个字符上激活。另一个是此多语言特征,它在各种短语上激活最强,包括“başkenti”、“राजधानी”、“ibu kota”和“Hauptftadt”—— 所有这些大致都意味着不同语言的“首都”。尽管大部分德语都被搞砸了,可能是由于源中的转录错误。 尽管这些特征中的每一个都代表略有不同的概念,但在提示上下文中,它们的功能似乎是代表“首都”的想法。 因此,我们将它们(以及其他一些特征)归为同一个“超级节点”。
- 我们还识别出持续推动模型说出某些 Tokens 的“输出特征”,即使对它们激活的单词/短语没有如此清晰的模式。 这可以在特征可视化的“Top Outputs”部分中看到,该部分列出了该特征最强烈直接提升的输出 Tokens。 例如,一个特征在德克萨斯州中部的各种地标上激活,但在提示中,与其最相关的方面是它最强烈地促进用“Austin” Token 进行响应。 因此,我们将此特征分类到“say Austin”超级节点中。 请注意,“Top Outputs”信息并不总是提供信息 —— 例如,早期图层特征主要通过对输出的间接影响通过其他特征起作用,并且它们的最高直接输出并不重要。 将特征指定为“输出特征”需要对其最高直接输出、激活上下文以及其在属性图中的作用进行整体评估。
- 我们还发现了一些更普遍地促进首都输出的特征,我们混合使用这两种类型的信号来识别和标记。 例如,一个特征促进了美国各州首府的响应。 另一个特征更强烈地促进了各个国家的首都而不是美国各州,但在包含美国各州及其首都的列表上激活最强。 并且我们注意到另一个特征,其最强的直接输出是一组看似不相关的 Tokens,但它通常在国家首都之前激活(例如,巴黎、华沙或堪培拉)。 我们将所有这些特征分组到“say a capital”超级节点中。
- 我们发现了几个代表与德克萨斯州相关的各种上下文的特征,这些特征并非特定于某个城市(特别是,它们不是“Dallas”或“Austin”特征)。 虽然它们各自代表着独特的、特定的德克萨斯州相关概念,但在提示上下文中,它们的主要功能似乎是它们共同代表了德克萨斯州的一般概念。 因此,我们将这些特征分组到“Texas”超级节点中。
在形成这些超级节点之后,我们可以在我们的属性图界面中看到,例如,“capital”超级节点促进了“say a capital”超级节点,而“say a capital”超级节点又促进了“say Austin”超级节点。 为了表示这一点,我们绘制一个图,其中每个超级节点通过棕色箭头连接到下一个超级节点,如下面的图片段所示:
在标记更多特征并形成更多超级节点后,我们在以下图表中总结了它们的交互。
该属性图包含多个有趣的路径,我们在下面总结:
- Dallas 特征(来自一些州特征的贡献)激活了一组代表与 Texas 州相关的概念的特征。
- 同时,由单词 capital 激活的特征激活了另一组输出特征,这些特征导致模型说出首都的名称(可以在上面看到此类特征的示例)。
- Texas 特征和 say a capital 特征共同提升了模型说出 Austin 的概率。 它们通过两条途径这样做:
- 直接影响 Austin 输出,以及
- 间接激活一组 say Austin 输出特征。
- 还存在一条直接从 Dallas 到 say Austin 的“快捷方式”边。
该图表明,替换模型实际上执行了“多跳推理” —— 也就是说,它决定说 Austin 取决于几个中间计算步骤的链 (Dallas → Texas,以及 Texas + capital → Austin)。 我们强调,该图极大地简化了真实的机制,并鼓励读者与 更全面的可视化 进行交互,以理解底层复杂性。
§ 3.1 通过抑制实验进行验证 (Validation with Inhibition Experiments)
上面的图表描述了我们的可解释替换模型使用的机制。 为了验证这些机制是否代表实际模型,我们通过抑制每个特征组(将它们钳制为原始值的负倍数 —— 有关干预强度选择的讨论,请参见我们的 姊妹篇论文) 并测量对其他集群中特征的激活以及对模型输出的影响,对上述特征组执行了干预实验。
上面的汇总图证实了该图预测的主要效果。 例如,抑制“Dallas”特征会降低“Texas”特征(以及“Texas”下游的特征,如“Say Austin”)的激活,但基本上不受“say a capital”特征的影响。 同样,抑制“capital”特征会降低“say a capital”特征(以及那些下游特征,如“say Austin”)的激活,同时使“Texas”特征基本保持不变。
抑制特征对模型预测的影响在语义上也是合理的。 例如,抑制“Dallas”集群会导致模型输出其他州首府,而抑制“say a capital”集群会导致它输出非首都补全。
§ 3.2 交换备选特征 (Swapping Alternative Features)
如果模型的完成确实是由中间“Texas”步骤介导的,我们应该能够通过将模型的 Texas 表示替换为另一个州的首府来将其输出更改为另一个州的首府。
为了识别代表另一个州的特征,我们考虑一个相关的提示,其中我们使用“Oakland”代替“Dallas” —— Fact: the capital of the state containing Oakland is。 重复上述分析步骤,我们得到以下汇总图:
该图类似于我们的原始图,其中“Oakland”代替了“Dallas”,“California”代替了“Texas”,而“say Sacramento”代替了“say Austin”。
我们现在回到我们最初的提示,并通过抑制 Texas 集群的激活并激活从“Oakland”提示中识别出的 California 特征来将“Texas”替换为“California”。 为了响应这些扰动,模型输出“Sacramento”(California 的首府)。
相似地,
- 关于包含 Savannah 的州的类似提示激活了“Georgia”特征。 将这些特征交换为“Texas”特征会导致模型输出“Atlanta”(Georgia 的首府)。
- 关于包含 Vancouver 的省份的类似提示激活了“British Columbia”特征。 将这些特征交换为“Texas”特征会导致模型输出“Victoria”(British Columbia 的首府)。
- 关于包含 Shanghai 的国家的类似提示激活了“China”特征。 将这些特征交换为“Texas”特征会导致模型输出“Beijing”(中国的首府)。
- 关于包含 Thessaloniki 的帝国的类似提示激活了“Byzantine Empire”特征。 将这些特征交换为“Texas”特征会导致模型输出“Constantinople”(古代 Byzantine 帝国的首都)。
请注意,在某些情况下,更改模型输出所需的特征注入的大小更大(请参见底行)。 有趣的是,这些情况与被注入的特征不对应于美国州的情况相对应,这表明这些特征可能“不太自然地适合”在原始提示中处于活动状态的电路机制。
§ 4 诗歌中的规划 (Planning in Poems)
Claude 3.5 Haiku 如何创作一首押韵诗?创作一首诗需要同时满足两个约束条件:这些行需要押韵,并且它们需要有意义。 人们可能会想象模型实现这一目标的方式有两种:
- 纯粹的即兴创作 —— 模型可以不考虑需要在结尾押韵的情况下创作每一行的开头。 然后,在每一行的最后一个词中,它会选择一个词,该词