摘要:推出“电路追踪”(circuit tracing)工具,可以帮大伙儿读懂大模型的“脑回路”,追踪其思维过程。
西风 发自 凹非寺
Claude团队来搞开源了——
推出“电路追踪”(circuit tracing)工具,可以帮大伙儿读懂大模型的“脑回路”,追踪其思维过程。
该工具的核心在于生成归因图(attribution graphs),其作用类似于大脑的神经网络示意图,通过可视化模型内部超节点及其连接关系,呈现LLM处理信息的路径。
研究人员通过干预节点激活值,观察模型行为变化,从而验证各节点的功能分工,解码LLM的“决策逻辑”。
官方表示,此次发布的开源库支持在主流开源权重模型上快速生成归因图,而Neuronpedia托管的前端界面则进一步允许用户交互式探索。
总之,研究人员能够:
通过生成自有归因图,在支持的模型上进行电路追踪;在交互式前端中可视化、注释和分享图表;通过修改特征值并观察模型输出变化来验证假设。Anthropic CEO Dario Amodei表示:
目前,我们对AI内部运作的理解远远落后于其能力的发展。通过开源这些工具,我们希望让更广泛的社区更容易研究语言模型的内部机制。我们期待看到这些工具在理解模型行为方面的应用,以及对工具本身的改进拓展。
目前,该项目开源不到24小时,在GitHub就已揽获400+Star。
在Reddit、X上都有不少网友点赞&讨论。
有网友直呼“DeepSeek肯定喜欢这个”。
还有网友认为“归因图可能成为LLM研究的显微镜”。
除了宣布开源外,Anthropic依据介绍电路追踪方法的原始论文《On the Biology of a Large Language Model》中多步推理和多语言电路示例,利用该工具深入探究了几个涉及Gemma-2-2b的归因图。
一起来看看具体示例和分析。
如果想生成自己的图,可以在Neuronpedia上进行操作,也可以直接在Colab中使用这个起始notebook进行操作。
先来看一个两阶推理示例。
问题:包含达拉斯的州的首府是?(Fact: The capital of the state containing Dallas is → Austin)
模型必须首先推断出包含达拉斯的州是得克萨斯州;然后,回答得克萨斯州首府是奥斯汀。
介绍电路追踪方法的原始论文中表明,模型Claude 3.5 Haiku使用以下电路解决了该问题,计算了“包含达拉斯的州”这一中间步骤。
而对Gemma 2(2B)进行归因分析表明,它使用以下电路成功完成了prompt任务:
该电路结构与Claude 3.5 Haiku的类似,存在一个对应“得克萨斯州”的节点,并同时显示从“达拉斯”到“奥斯汀”的直接路径以及经过“得克萨斯州”的间接路径。
归因图基于使用transcoders来近似多层感知机(MLP)的行为,提出了关于模型行为的假设。
Anthropic表示,可以通过直接对底层模型进行干预,来验证他们对模型行为的理解是否正确。
对图中所示的每个超节点(supernodes)进行干预,首先需要从该图中获取超节点。
Anthropic提供了一个便捷函数,可将电路URL(及其中存储的超节点)映射到Feature对象列表。每个Feature对象是一个(layer, position, feature_index)元组。
然后,创建用于解决此任务的电路表示。
首先需定义一些超节点对象(Supernode objects),这些对象将存储底层Feature列表,以及受其因果影响的子超节点。
再初始化一个干预图(InterventionGraph),用于存储所有超节点并跟踪它们的状态。
另外,还需要获取模型在此提示下的logits和激活值。
设置每个节点的默认激活值(即未进行干预时,原始提示下的激活值),并设定其激活分数,激活分数为节点当前激活值与默认激活值的比值。
由于当前激活值与默认激活值相同,因此每个节点的激活分数均为100%。
另外还将记录top-5的logits,然后对图表进行可视化。
结果显示电路与在可视化完整图表时创建的超节点吻合。
现在,通过干预验证每个超节点是否如假设般发挥作用,每次干预会将节点值设定为原始值的特定倍数。
在介绍电路追踪方法的原始论文中,关闭“说出一个首府”(Say a capital)Feature会导致“说出奥斯汀”(Say Austin)超节点关闭,且模型的最高logits变为得克萨斯州(Texas)。
若接下来对Gemma 2(2B)归因图进行相同操作,会发生什么?
结果观察到了完全相同的现象。强行关闭“说出一个首府”超节点后,“说出奥斯汀”节点也随之关闭,模型的最高logit变为了得克萨斯州。
那如果关闭“首府”(capital)超节点会怎样?
与之前的干预行为类似:关闭“说出一个首府” 超节点,但没有像之前那样强烈,也部分关闭了“说出奥斯汀”节点。
如果我们关闭“得克萨斯州”超节点会怎样?
关闭“得克萨斯州”超节点同样会使“说出奥斯汀”节点失效,导致模型输出其它州的首府。
如果关闭“州”(state)超节点会怎样?
关闭“州”超节点效果并不明显,它对其它超节点的激活状态几乎没有影响,模型的logits也几乎没有变化。
现在已经通过剔除节点验证了其行为。
那么,能否注入完全不同的节点并验证其是否产生预期效果?
以prompt“包含奥克兰的州的首府是( Fact: The capital of the state containing Oakland is → Sacramento)”中的电路为例,从该图中提取两个超节点“加利福尼亚州”(California)和 “说出萨克拉门托”(Say Sacramento),并将其添加到干预图中。
然后,进行干预操作:关闭“得克萨斯州”超节点,并激活“加利福尼亚州”超节点。
这样做导致“说出奥斯汀”节点完全关闭,而“说出萨克拉门托”节点开始激活,模型最高输出现在也变为萨克拉门托。
还可以将州替换为国家进行类似实验。以Prompt“包含上海的国家的首都是(Fact: The capital of the country containing Shanghai is → Beijing)”的电路为例,执行与之前完全相同的操作:
禁用“得克萨斯州”超节点,并激活“中国”超节点。这次虽然没有“说出北京”节点,但这种干预的效果应该会在logits中显现。
结果同样有效,北京现在成为模型最可能的输出。
那总是会有效吗?
再用Prompt“包含温哥华的地区的首府是(Fact: the capital of the territory containing Vancouver is → Victoria)”的电路来试试。
在这种情况下,干预效果并不显著。
接下来Anthropic还探讨了原论文中研究的多语言电路。
具体而言,将考察三个电路,分别对应三种语言的同一句子:
关于Claude 3.5 Haiku的研究展示了一个共享的多语言电路:
与Haiku的电路不同,Gemma 2(2B)的电路从本质上完全具备多语言特性。
模型中并不存在独立的“Say big”或“Say grand”超节点来驱动其用特定语言输出对应答案。相反,所有电路均采用 “Say big”Feature,若答案为非英语,则会结合“French”或“Chinese”Feature共同作用。
接下来,通过对这些电路进行干预实验来展开研究。
首先,如前所述创建超节点对象(Supernode objects):
然后,获取这些节点的激活值,对其进行初始化,并生成可视化图表。
现在进行第一次干预操作:关闭“French”超节点。
在关闭“French”超节点后,模型输出变成了英文。
值得注意的是,这对“Say big”超节点仅产生轻微影响,二者的作用似乎相互独立。
再尝试将语言切换为另一种:关闭“French”超节点,并激活“Chinese”超节点。
正如预期,干预后的模型输出与中文示例的原始输出一致。
那如果将“small”Feature替换为“big”会怎样?
将“small”超节点替换为“big”超节点后,导致“说出big”超节点关闭,同时一个新的“Say small”超节点被激活。
模型的输出在法语中变为“petit”(即 “small”)。
接下来是最后一项干预,能否将“opposite”(反义词)超节点替换为 “synonym”(同义词),以获取同义输出?
虽然该模型并不擅长处理同义词:当输入“Un synonyme de ‘petit’ est ‘”(“petit”的同义词是“”)时,模型会重复输出“petit”,而非其它同义词。
但是,仍可观察此干预是否会复现该行为。
不过最终这项干预并未奏效。尽管“Say small”超节点被激活,但“Say big”也保持激活状态,模型的输出并未改变。
Anthropic团队认为这并不意外,如果观察该任务的原始电路,会发现“opposite”(反义词)超节点与输出端仅存在弱连接。因此,尽管它本应发挥作用,但其因果效应相当有限。
更多细节大伙儿可自行查阅。
另外作为启发,Anthropic在demo notebook和Neuronpedia上提供了尚未分析的额外归因图,感兴趣的童鞋可以亲自上手研究研究。
GitHub链接:https://github.com/safety-research/circuit-tracer?tab=readme-ov-file
参考链接:
[1]https://x.com/anthropicai/status/1928119229384970244?s=46
[2]https://www.anthropic.com/research/open-source-circuit-tracing
— 完 —
来源:量子位一点号