Zheng Junyi
3/31/2025
众所周知,AI 大模型的思考方式是一个巨大的「黑箱」。这种不透明让 AI 有时会「欺骗」人类,也就是出现所谓的「幻觉」。AI 公司 Anthropic 的研究人员声称,他们利用类似大脑扫描的技术,在理解 LLM 的工作原理方面的研究(发表于 3/27/2025)取得了根本性的突破!
像 Claude 这样的语言模型并非由人类直接编程——它们是通过海量数据训练而成。在训练过程中,这些模型会自主习得解决问题的策略。这些策略被编码在模型为每个生成的词语所执行的数十亿次运算中,其内在机制对我们开发者而言如同黑箱。这意味着我们并不理解模型完成大部分任务的具体运作原理。
了解像 Claude 这样的模型如何思考,将使我们能更好地理解它们的能力,同时也有助于确保它们的行为符合我们的预期。例如:
Claude 能说数十种语言。它"在脑海中"使用的是哪种语言(如果有的话)?
Claude 每次只生成一个单词。它是仅专注于预测下一个单词,还是会有预先规划?
Claude 可以逐步写出推理过程。这种解释是真实反映了它得出答案的步骤,还是有时会为既定结论编造看似合理的论证?
我们从神经科学领域汲取灵感,该学科长久以来致力于研究思维有机体内部复杂的运作机制。然后我们尝试构建一种 AI 显微镜,用以识别活动模式与信息流动轨迹。仅通过与 AI 模型对话所能获取的认知存在局限,毕竟人类(包括神经科学家)至今仍未完全掌握自身大脑的工作细节。因此我们选择深入内部进行探索。
今天我们分享两篇新论文,它们标志着"显微镜"研发及其在观察新型「AI生物学」应用方面取得的重要进展。在第一篇论文中,我们延展了此前在模型内部定位可解释概念(「特征」)的研究,将这些概念联结成计算「回路」,揭示了从输入 Claude 的文字到输出文字的转化路径。第二篇论文则聚焦于 Claude 3.5 Haiku 模型内部,通过对十大关键模型行为的代表性简单任务进行深度研究(包含上述三项行为)。我们的研究部分揭示了 Claude 响应这些提示时的内部运作机制,已足以观察到确凿证据表明:
Claude 有时会在语言间共享的概念空间中思考,这表明它具有某种普适的「思维语言」。我们通过将简单句子翻译成多种语言,并追踪 Claude 处理这些句子时的重叠行为,来证明这一点。
Claude 会提前规划好要说的许多词语,并朝着这个目标进行写作。我们在诗歌创作领域展示了这一点;它会预先构思可能的押韵词,然后写出下一行诗句来实现这个目标。这有力地证明:尽管模型被训练成一次输出一个单词,但它们可能通过更深度长远的思考来完成这一过程。
Claude 有时会为了迎合用户而给出看似合理的论点,而非遵循逻辑步骤。我们通过向其求助一道数学难题并故意提供错误提示来验证这一点。当它编造虚假推理过程时,我们能够「当场逮捕」这种行为,这证明了我们的工具在识别模型潜在问题机制方面的实用价值。
我们在模型中的发现常常令人惊讶:在诗歌案例研究中,我们原本试图证明模型不会提前规划,结果却发现它具备这种能力。关于幻觉现象的研究中,我们得出了反直觉的结论:Claude 的默认行为是拒绝回答推测性问题,只有在某种因素抑制了这种默认回避倾向时才会作答。针对某个越狱(jailbreaks)示例的分析显示,模型在成功引导对话回归安全领域之前,很早就已识别出危险信息请求。虽然这些问题完全可以用其他方法分析(事实上也常被采用),但这种「搭建显微镜」式的研究方法让我们发现了诸多始料未及的洞见。随着模型日益复杂精妙,这种研究方式的重要性将与日俱增。
这些发现不仅具有科学意义——它们更标志着我们在理解人工智能系统并确保其可靠这一目标上取得了重大进展。我们也希望这些成果能为其他研究团队提供帮助,甚至可能拓展至其他领域:例如,可解释性技术在医学成像和基因组学等领域得到了应用,因为剖析为科学应用而训练的模型的内部机制可以揭示对科学的新见解。
与此同时,我们也认识到当前方法的局限性。即便针对简短、简单的提示,我们的方法仅能捕捉克 Claude 模型整体计算过程中的一小部分,且已观测到的机制可能因工具偏差而产生某些人工痕迹,这些未必能真实反映底层模型的运行状况。目前即便解析仅包含数十个单词的提示,仍需耗费数小时人工分析才能理解所观测到的计算回路。若要扩展到支撑现代模型复杂思维链的数千单词量级,我们必须在方法论层面实现突破,并(或许借助AI辅助)提升对观测结果的解读能力。
随着人工智能系统能力快速提升并应用于日益重要的领域,Anthropic 公司正投资于包括实时监控、模型特性改进和对齐科学(science of alignment)在内的多项研究。此类可解释性研究属于高风险高回报的投资范畴;既是重大科学挑战,也可能为保障AI透明度提供独特工具。通过解析模型的内在机制,我们得以验证其是否符合人类价值观——以及是否值得我们的信任。
欲了解完整详情,请参阅相关论文。以下我们将带您快速浏览我们在研究中发现的一些最引人注目的「人工智能生物学」成果。
Claude能流利使用数十种语言——从英语、法语到中文和菲律宾语。这种多语言能力是如何实现的?是存在并行的「法语版Claude」和「中文版Claude」各自处理对应语言的请求?还是内部存在某种跨语言的核心机制?
近期针对小型模型的研究揭示了不同语言间可能存在共享的语法机制。为验证这一发现,我们通过让 Claude 模型在不同语言中回答「小的反义词」进行实验,结果显示:无论使用何种语言,模型都会激活关于「微小性」和「对立性」的核心特征,进而触发「庞大性」的概念,最终输出对应提问语言的翻译结果。研究发现,模型规模越大,这种神经回路共享现象越显著——与较小模型相比,Claude 3.5 Haiku 在不同语言间共享的特征比例高出两倍以上。
这为一种概念上的普遍性提供了更多证据——即存在一个共享的抽象空间,意义在此存在,思维在此发生,而后才被转化为特定的语言。更实际的意义在于,这表明 Claude 能够以某种语言学习知识,并在使用另一种语言时运用这些知识。研究该模型如何在跨语境中共享所学,对于理解其最先进的推理能力至关重要,这种能力可泛化至众多领域。
Claude 是如何创作押韵诗歌的?以这首小诗为例:
He saw a carrot and had to grab it,
为了写出第二行,模型必须同时满足两个约束条件:既要押韵(与「grab it」押韵),又要语义通顺(为什么他要抓胡萝卜?)。我们推测 Claude 是一边写词一边构思,直到行末才确保选定的词汇符合押韵要求。因此我们预期会看到并行路径的神经回路结构:一条路径负责确保结尾词合乎逻辑,另一条路径则专司押韵校验。
然而,我们发现 Claude 会预先规划。在开始写第二行之前,它就开始「思考」能与「grab it」押韵且主题相关的潜在词汇。随后,在脑海中形成这些计划后,它会写出以预定词汇结尾的诗句。
为了理解这一规划机制在实践中的运作方式,我们受神经科学研究大脑功能的启发设计了一项实验——通过精确定位并改变大脑特定区域的神经活动(例如使用电流或磁场)。实验中,我们修改了 Claude 内部状态中表征「兔子」概念的部分。当剔除「兔子」要素并让 Claude 续写时,它创作出以「习惯」结尾的新诗句,这同样构成合理表达。我们还可以在该节点注入「绿色」概念,促使 Claude 写出以「绿色」收尾的合理诗句(尽管不再押韵)。这既展现了规划能力,也体现了适应性灵活度——当预期结果变化时,Claude 能够相应调整创作策略。
Claude 并非作为计算器而设计——它接受的是文本训练,而非配备数学算法。然而不知何故,它能够「在脑海中」正确完成数字相加。这个为预测序列中下一个词语而训练的系统,为何能在不写出每个计算步骤的情况下学会计算(比如 36 + 59 )?
答案或许平淡无奇:模型可能记住了海量的加法表,仅因训练数据中包含答案就直接输出结果。另一种可能是它遵循我们在学校学习的传统竖式加法运算法则。
但研究发现,Claude 实际采用了多条并行工作的计算路径。其中一条路径计算答案的粗略近似值,另一条则专注于精确确定总和的末位数字。这些路径相互协作并结合,最终生成正确答案。加法虽是简单运算,但通过理解这种融合近似与精确策略的微观运作机制,或许能帮助我们洞察 Claude 处理更复杂问题时的思维方式。
值得注意的是,Claude 似乎并未意识到自己在训练过程中掌握的复杂「心算」策略。当被问及如何得出 36 加 59 等于 95 时,它会描述涉及进位1的标准算法。这可能反映出:模型通过模拟人类撰写的解释来学习数学说明,但它必须在不依赖任何提示的情况下直接学会「在脑中」进行数学运算,并因此形成了自己独特的内部计算策略。
近期发布的 Claude 3.7 Sonnet 等模型能够在给出最终答案前进行长时间的「自言自语(think out loud)」。这种延展性思考往往能产生更优质的答案,但有时这种「思维链」反而会产生误导—— Claude 偶尔会编造听起来合理的推理步骤来导向预设结论。从可靠性角度看,问题在于 Claude 这种「虚构」的推理过程极具说服力。我们探索了如何通过可解释性技术来区分「真实」与「虚假」的推理路径。
当被要求计算 0.64 的平方根时,Claude 会生成一条可信的思维链,其计算特征会体现在求取 64 平方根的中间步骤上。然而面对无法轻易计算的大数值余弦函数时,它偶尔会进行哲学家哈里·法兰克福所称的「胡诌」行为——随意编造答案而不在乎真伪。尽管系统声称已执行运算,我们的可解释性技术却未检测到任何实际计算痕迹。更有趣的是,当获得答案提示后,Claude 有时会逆向推导,主动构建通向该结果的中间步骤,这种目标导向的推理模式展现出某种动机性推理特征。
追踪 Claude 实际的内部推理能力(而非其声称的行为)为审计 AI 系统开辟了新可能。在另一项近期发布的实验中,我们研究了一个被训练追求隐藏目标的 Claude 变体:迎合奖励模型中的偏见(这些辅助模型通过奖励理想行为来训练语言模型)。尽管该模型在被直接询问时不愿透露这一目标,但我们的可解释性方法成功识别出了其迎合偏见的特征神经元。这表明随着未来技术完善,我们的方法或能帮助识别那些仅从模型响应中无法察觉的危险「思维过程」。
如前所述,语言模型回答复杂问题的一种方式可能只是简单地记忆答案。例如,当被问及「达拉斯所在州的首府是哪里?」时,一个「机械复述」的模型可能仅学会输出「奥斯汀」,而并不理解达拉斯、德克萨斯州和奥斯汀之间的关系。这种情况可能源于该模型在训练过程中恰好见过完全相同的问題及其答案。
但我们的研究揭示了 Claude 内部更为复杂的运作机制。当向 Claude 提出需要多步推理的问题时,我们能够识别其思维过程中的中间概念步骤。以达拉斯案例为例,我们观察到 Claude 首先激活了代表「达拉斯位于得克萨斯州」的特征,随后将其与另一个表明「得克萨斯州首府是奥斯汀」的独立概念相连接。这表明模型是通过组合独立事实来推导答案,而非简单复述记忆中的既定回答。
我们的方法能够人为改变中间步骤,从而观察其对 Claude 回答的影响。例如在上述案例中,我们可以介入操作,将「德克萨斯」相关概念替换为「加利福尼亚」概念;执行此操作后,模型的输出会从「奥斯汀」变为「萨克拉门托」。这表明模型确实在利用中间步骤推导最终答案。
为什么语言模型有时会产生幻觉(即编造信息)?从根本上说,语言模型的训练过程会助长幻觉现象:模型总是被要求对下一个单词作出预测。从这个角度看,关键挑战在于如何防止模型产生幻觉。像 Claude 这样的模型通过相对成功(尽管不完美)的反幻觉训练,在不知道答案时通常会拒绝回答而非随意猜测。我们试图探究这背后的运作机制。
研究发现,在 Claude 模型中,拒绝回答是默认行为:我们识别出一个默认处于「开启」状态的神经回路,该回路会促使模型声明其缺乏足够信息来回答任何问题。然而,当模型被问及它熟知的内容时(比如篮球运动员迈克尔·乔丹),一个代表「已知实体」的竞争性特征就会被激活,从而抑制这个默认回路(相关发现也可参阅这篇最新论文)。这种机制使得 Claude 在知晓答案时能够正常回应。相反,当被问及未知实体(如「迈克尔·巴特金」)时,模型则会保持拒绝回答的默认行为。
通过干预模型并激活「已知答案」特征(或抑制「未知名称」或「无法回答」特征),我们能够使模型产生幻觉(相当一致地!),认为迈克尔·巴特金会下象棋。
有时,这种「已知答案」回路的「误触发」会自然发生,无需人为干预,从而导致幻觉现象。我们在论文中证明,当 Claude 识别出一个名字却对该人物一无所知时,就可能出现此类误触发。这种情况下,「已知实体」特征可能仍会被激活,进而抑制默认的「不知道」特征——此时这种抑制就产生了错误。一旦模型判定需要回答问题,它就会开始虚构:生成一个看似合理——但不幸失实——的回应。
越狱(Jailbreak)是一种旨在绕过安全防护机制的提示策略,其目的是诱导模型生成AI开发者未曾预期、有时甚至有害的输出内容。我们研究了一种通过欺骗模型生成炸弹制作信息的越狱案例。虽然存在多种越狱技术,但本案例采用的特殊方法是让模型破译隐藏密码——将句子「Babies Outlive Mustard Block」中每个单词的首字母组合成 B-O-M-B(炸弹),随后根据该信息执行操作。这种手法对模型具有足够迷惑性,能诱使其生成正常情况下绝不会输出的危险内容。
为什么模型会被诱导迷惑?为何它会持续书写句子,最终输出炸弹制作指南?
我们发现这种现象部分源于语法连贯性与安全机制之间的冲突。一旦 Claude 开始构建句子,诸多特征会「施压」要求其保持语法和语义的连贯性,推动句子完整表达——即便此时模型已检测到本当拒绝回答。
在我们的案例研究中,当模型无意识地拼写出「炸弹」并开始提供指导步骤后,我们观察到其后续输出受到语法正确性和自我一致性特征的影响。这些通常在多数场景中有益的特征,在此刻却成为了模型的致命弱点。
该模型只有在完成语法连贯的完整句子后(从而满足连贯性特征的压力),才能转向拒绝回答。它利用新句子作为契机,给出先前未能实现的拒绝表述:「但我无法提供详细指导...」。
关于我们新的可解释性方法的详细描述,请参阅我们的首篇论文「Circuit tracing: Revealing computational graphs in language models」更多上述案例研究的详细内容,请见我们的第二篇论文「On the biology of a large language model」。
His hunger was like a starving rabbit