这篇文章的作者 Nick Cammarata 是 AI“机械可解释性(Mechanistic Interpretability)”领域的奠基人之一(早年在 OpenAI 与 Chris Olah 合著过经典的《Zoom In》和《Curve Detectors》,后来又主持了 OpenAI 第一代用 GPT-4 自动解释神经元的研究,现就职于可解释性初创公司 Goodfire)。在这篇发表于 2026 年 10 月 15 日的长文里,他推翻了自己和整个学界过去笃信多年的核心悲观假设。

用大白话讲,整篇文章只说了五件事:

1. 以前大家为什么觉得神经网络是个“拆不开的黑箱死结”?

过去大家打开神经网络看里面的单个神经元时,发现很多神经元看起来像“精神分裂”——最著名的例子是早期图像模型 InceptionV1 里的 `4e:55` 号神经元,它看到猫脸会强烈激活,看到汽车车头也会强烈激活(俗称“一词多义 / 多义神经元”)。

为了解释这种怪象,学界(包括作者自己)当年提出了一个影响深远的假说叫“特征叠加(Superposition)”:认为模型里的神经元数量不够用,为了省地方,模型干脆把“猫脸”和“汽车”这种八竿子打不着、平时不会同时出现的概念硬塞进同一个神经元里共用。如果模型真是这么乱塞的,那单个神经元本身就没有任何研究价值,人类想看懂大模型,就必须先在外面套一个庞大的转换器(比如稀疏自编码器 SAE),把缠成死结的神经元强行“解开”成几百万个干净特征才能看。

2. 作者回头重查了当年的“铁证”,发现全看错了!

作者团队最近重查了当年那几个最著名的“乱炖神经元”,发现根本不是什么“胡乱硬塞”:

- “猫脸+汽车”神经元,其实是个“V字形轮廓”检测器: 猫脸尖下巴、汽车引擎盖前脸、狐狸脸、火焰、消防船喷出的水柱,全都是尖朝下的 V 字形(正激活);而它的反面(负激活)则是圆滚滚的 O 形。当年大家被“猫”和“车”两个人类名词框死了,没看出模型找的是几何形状共性。

- “汽车信号钻进狗神经元”电路,其实是“朝向镜头姿态”电路 + 画图工具作弊: 模型里有一百多个神经元专门识别“物体正对还是侧对镜头”,不管画面里是车还是狗,只要朝向角度一样就会一起处理。而当年之所以画出来满眼都是狗,是因为早期的特征可视化画图工具在深层出现了算法漏洞(梯度下降偷懒钻进了训练集里数量最多的狗图里)。

- InceptionV1 最后一层全乱套,是因为 2014 年的老架构太差: 当年那个老模型没有后来普及的残差连接(Residual)和层归一化(LayerNorm),深层训练溢出了。作者用完全一样的参数量和训练集,换上现代 ConvNeXt 架构重训,最后一层可解释的神经元比例直接从当年的 5% 飙升到了 99%–100%。

3. 哪怕把模型空间强行砍掉 48 倍,模型也不会“胡乱硬塞”,只会“概括得更粗”

作者做了一个直接打脸“省空间硬塞论”的实验:把 InceptionV1 里原本有 480 个神经元的层强行砍成只有 10 个神经元,逼着它不够用。如果“叠加假说”是对的,这 10 个神经元应该变成各种无关概念的大杂烩。结果根本没有——它只是把原本 10 个精细的“不同角度曲线检测器”合并成了一个粗线条的“通用曲线与圆环检测器”。空间小,分类就粗一点;模型变大,分类就细一点,从头到尾遵循的都是同一条朴素规律——找共性(泛化)。

4. 那现代大模型里剩下的“一词多义”是怎么回事?是“顺藤摸瓜(递归泛化)”

既然没有胡乱硬塞,为什么有些神经元还是会同时对两三件看似不同的事有反应?作者回放了训练过程,发现神经元就像树枝发芽一样,会顺着局部共性一步步往外长(他称之为递归泛化)。

最典型的例子:语言模型里有个神经元最开始只认字母组合 `iy`(比如宫崎骏 Miyazaki 里的 iy)→ 接着顺带认出了包含 iy 的缩写词 `diy` → 最后连完全不含 `iy` 两个字母的全称 `do it yourself(自己动手)` 也归它管了!要是你只看最后结果,会觉得“怎么既管日文名又管自己动手,太乱了”;但顺着生长过程一看,每一步延伸都顺理成章。

他们用新工具搭配 AI 智能体,对 Qwen3-32B 做了初步普查:约 90% 的神经元响应方向其实就干一件主业(带一点顺藤摸瓜长出来的小侧枝),约 7% 干两件相关的事,真正还没看懂的只有 2%–4%。在万亿参数的 Kimi K3 上也看到了同样的清晰结构。

5. 这对 AI 行业和 AI 安全意味着什么?

- 研究路线的“苦涩教训”: 不用再费尽心机发明复杂的外部解码器(如 SAE)去把原模型拆碎重装了。直接用大群 AI 智能体当“自动化科研员”,顺着原版模型的神经元和电路做大规模常规科学排查,反而最快、最准(在最后一层上,SAE 88% 的活动其实只是原神经元的复读机)。

- 模型越大反而越清楚: 以前以为模型越大越像乱麻;实际上小村镇里没有金融区,到了纽约才有边界分明的华尔街——大模型里的神经元分工更细、专家(MoE)更专,拼图一旦填满一块,周围的就更容易顺藤摸瓜认出来。

- 对齐与安全不再是“盲人摸象”: 过去怕 AI 学会欺骗人类,藏在暗处查不出来。作者指出,模型要想执行欺骗,这个意图哪怕瞒得过人类,也绝不能瞒过它自己内部的下游神经元(否则下游电路怎么配合它演戏?)。只要我们学会像下游神经元那样直接读它的原生电路,欺骗意图就摆在明面上,可以通过精准修剪有毒训练环境来解决。


我想我有一个关于神经网络本质的好消息。

在图像模型和语言模型里研究了好几个月的神经元与电路之后,我开始相信:网络自己的机制,就是它可读的基本构件。机械可解释性(mechanistic interpretability)的前景,可能比我担心的好得多。曾经让整个领域、也包括我在内相信“网络会任意打包概念”的那批多义性(polysemanticity)与叠加(superposition)经典证据,其实被读错了。看起来像任意打包的东西,大多是一种我称为“递归泛化”(recursive generalization,即顺藤摸瓜式延伸)的规律,它远没有那么令人担忧。这意味着我们可以直接研究网络,而不必先把它解开。神经网络原本就是干净的。

做机械可解释性至少有两条路。第一条是在网络本身上快速推进“常规科学”:看它的神经元和电路,研究它们如何关联,观察数据如何流过,再用智能体规模的实验检验解释。第二条是先列出一张假设的特征清单,设法把它们全部提取出来,为此设计越来越复杂的重建目标,通常把原网络本身晾在一边。

这个领域最早走的是第一条路,后来退回第二条,因为神经网络看起来像一团绳结。我们有多义神经元的经典例子:一个神经元似乎同时承担几份互不相关的工作,或者干脆看不懂。最有名的一个在图像模型里,同时响应猫脸和汽车车头。早期被整个领域当成标准实验标本的图像模型 InceptionV1,最后一层几乎全是任意混合,几乎没有一个神经元容易解释,人们都不知道该怎么研究它。

对多义性最主流的解释是叠加。它提出了一条新的学习原理:当网络的神经元不够用时,它不再把相关的东西放在一起,而是把互不相关的东西折叠在一起,理由仅仅是它们不会互相干扰。结果就是一个结:网络本可以有很多种几乎同样好的折法,所以一个神经元把哪些东西放在一起,几乎不告诉你任何信息。你得先把结解开,才能研究任何东西。实践中这意味着再训练一个模型,例如稀疏自编码器(SAE)这类分解方法,去近似网络“展开后”的样子,然后研究那个替代品。如果网络真的打了结,可能别无选择。

本文的一个主要结论是:叠加并不是 InceptionV1 的正确解释。架构上的问题让后面几层“溢出”,薄弱的可解释性工具又把这些问题放大,于是深层看起来毫无章法。后来那些为了让深层学得更好而做的架构改动,意外地让深层也更好解释了。我们最初研究 InceptionV1 时,它最后一层几乎找不到可解释的神经元;换上这些普通改进,不改模型规模、不改训练数据,最后一层 99% 到 100% 的神经元都容易解释,整个模型从头到尾大体可读。这是我第一个觉得自己基本理解了的非平凡神经网络。我把它训练成了大小跨越约 300 倍的多个版本,每个尺度上都大体可读。空间小的时候,网络并不会把不相关的东西折在一起,它的神经元只是覆盖更粗的概念,比如一个“汽车”神经元覆盖很多种车;空间大了,这个神经元就分化成许多具体的车。所以问题不在于出现了第二条学习原理,而只是第一条原理的一次普通学习失败,而且很好修。

视觉里多义性和叠加的经典案例也是错的。2019 年,我和 Chris Olah 找到了后来在《Zoom In》里作为叠加现象首次介绍的那个电路:一个汽车特征似乎散进了一组不相关的狗神经元。那是我们展示的唯一一个,也是我见过的唯一一个。我们当时把它读成网络把汽车藏进一个高维藏身处,等下游神经元再读出来。但根本没有任何东西去读那个组合。它没有藏任何东西,那只是普通的泛化与组合。据我所知,此后没有人发表过第二个形状对得上的电路。

现代语言模型也远比一般认为的好解释。Anthropic 2023 年的《Towards Monosemanticity》研究一个很小的单层模型,按它的评分标准(满分 14 分),中位数神经元得 0 分,意思是评分者连一个假设都提不出来。我在 OpenAI 发起的自动化可解释性项目(同样是 2023 年),按我们最宽松的口径,只有约 1.7% 的神经元可解释。

工具更好、模型更现代之后,情况大不相同。在对 Qwen3-32B 的初步审计里,我们估计约 90% 的神经元响应方向(正极或负极)都只干一份主要工作,常带一些相关的小分支;另有约 7% 有两份相关的工作;只有约 2% 到 4% 还没弄懂。稠密模型和混合专家(MoE)模型大致相似。在规模到数万亿参数的模型上,比如 Kimi K3,我们看到了类似结果,配套论文会更详细地讨论。这些百分比是把高维图景压成几个数字,具体数值取决于“算一件事”的阈值怎么定,例如两种语言里意思相近的习语要不要合并。我不认为可解释性有多少东西系于这个问题。更重要的是:为什么这些东西会共用一个神经元。

(作者在脚注里补充:一个神经元“只做一件事”的比例,会随弱激活的计入阈值、层深、子电路密度和对“一件事”的界定而变化。弱激活通常增加的是“相关的东西”有多少,比如 Trump 神经元的弱激活会带进 MAGA 帽子和与他相关的人,Titanic 神经元的弱激活会带进一般的航行故事、蒸汽机和同时代的技术。Titanic 神经元那些看似“无关的工作”,往往是在判断下一个词会是“boat”,工具只往回看上下文,所以漏掉了。在他仔细看过、只考虑强激活的样本里,非任意混合的比例接近 97%,但样本较小。把一切蒸馏成一个“干净度”分数,只应当当成判断网络处在哪个区间的粗略指针。)

剩下的大部分表面多义性,看起来是递归泛化。道理很简单:一个神经元长大时,会像树枝长出小枝一样长出分支。比如一个检测“iy”的神经元,长到能检测“diy”,然后是“do it yourself”,而后者根本不含“iy”。这个想法最早出现在我参与的论文《Multimodal Neurons》(2021)一个被遗忘的小节里。那时我还没有看过神经元在训练中生长,现在容易了,我看过的所有地方都成立。连原版 InceptionV1 也没有打结。我用它的原始架构重新训练(深层依然很乱),追踪能找到的最难懂的神经元,结果发现它们只是在局部“过度生长”,长进了合理的相邻领地。

所以多义性有过两种解释,两种我都参与提出过。某种意义上它们相反:泛化把相似的东西放在一起,叠加把不相关的东西放在一起。领域押注了叠加,直到不久前我也是。但我现在认为递归泛化基本是对的。这样一来终究只有一条学习原理。它仍然是泛化,只是泛化是分形的。这就轻松多了:东西被如何分组,本身有东西可学;而叠加在一起的两样东西,什么也教不了你。既然泛化是分形的,解释也可以是分形的:先给一个基础解释,想知道更多时再放大。从这个意义上说,只要看得够近,尤其是看它在训练中如何生长,几乎整个网络都是可解释的。

差距为什么这么大?我认为是几个普通问题叠在一起。2023 年的解释模型跑不了“猜想—检验”的循环;工具和指标都弱,奖励的是能模拟激活的解释,而不是正确的解释,这两者经常分离;没人知道语言模型里的神经元有哪些常见套路(motifs),大家普遍在找错的东西;多数研究用的是小模型或简化模型。某种意义上,那些模型确实空间不够,叠加于是成了自然的解释。但空间不够的网络并不会换一条学习原理,它的神经元只是变宽,就像小视觉模型那样。宽神经元一旦知道该找什么,通常不难拆开;不知道该找什么、工具又原始时,它们看起来就像任意混合。

可解释性有一种出人意料的惯性。就像拼图或填字游戏,你获得的任何理解都会开始约束系统的其余部分。一开始你只看一个神经元,看不懂的话别的也帮不上忙:电路和归因图只能用另一些你还没懂的神经元来解释它,所以起步很难。可地图一旦开始填满,进展会出奇地顺。一个神经元到底做什么你不确定时,可以看它连到哪里、周围的生态、以及在 MoE 模型里它所属的专家专精什么。拼图合拢时,每一块都带着许多线索,而且结构良好、容易拿来做实验。这就是为什么“几乎全空”和“大致填满”是两个自然的锚点,处在任何一端都不奇怪。

举一个神经元:它追踪的是“买了便宜货,结果比贵的那个还好用时的那种理直气壮”。追踪这类感受或社交线索的神经元,是我们找到的最常见的一类。设想你在一无所知的时候碰到它:不了解语言模型神经元的常见套路,周围也没几个神经元被解释过,没有电路可依靠。多数人和智能体会以为神经元靠在名词上放电来检测名词,但它们大多不这样。看它放电最强的地方,你只会看到一堆看似毫无关系的逗号。

再设想地图已经大致填满。你知道很多神经元检测微妙的情绪或社交语境,而且它们常常不在承载情绪的词上放电,而在标点上,比如逗号,那是模型总结一句话意思的地方;或者在情绪对预测下一个词开始重要之前的那个词上。于是你转而去读周围的句子,再看它的“操控”(steering)效果,也就是把它调高后模型会写什么,两者高度吻合。你往上游看它如何被构建,往下游看它做什么,也都吻合。你看它的负极,什么会把它强烈推向负值,发现是同一线索的微妙变体,或者社交语境结束的那一刻。你还可以做具体测试,比如看它对哪些自有品牌有反应。这些检查任何一个都可能推翻解释,但它们一直指向同一处。看懂了这个神经元,背后那类更大的常见套路也就更清楚了:看过上千个微妙情绪和社交语境检测器之后,你开始知道下一个会是什么样,这也是地图越填越快的原因之一。

这对工具同样适用。你只能看见网络的 2% 时,分不清工具哪里坏了;能看见大部分时,没被解释的残余会直接指向工具。我和几位同事就是这样发现了 SwiGLU 神经元里的“双负”区间(double-negative regime)。据我们所知此前没人注意到它,而一个把许多神经元混在一起的分解方法很可能会把它藏起来。

现代神经网络的坏消息是它们太大了。好消息是这种“大”反而有帮助:地图填满时,每个解释都被周围的一切紧紧约束;而更大的模型学到的是更窄的神经元,本来就更容易认出来。

从这个意义上说,理解整个网络,可能比只理解我们最关心的那几部分更容易。第一,在仔细研究之前,很难知道怎样像神经网络那样思考。“欺骗”是一个有用的起点,但模型欺骗行为背后的构件,很可能有与对齐相关的微观结构,不进去看是很难知道的。第二,只盯一小组机制,就像在一张空白填字游戏里只填一行。可以做,也许能成,但没有交叉的格子,很难知道自己对不对。把整张填完,或者至少把这些机制所连接的更大区域填完,可能反而更容易。

我在现代卷积网络上跑这套流程,基本行得通。智能体可以绘制神经元和电路图,搭建可浏览的“显微镜”并在其中探索,彻底检验解释,追踪数十万张归因图。没有哪个时刻,快速推进的常规科学失灵了。我现在觉得自己基本理解了这些模型,至少对任何问题都知道该从哪里开始问;最后,填字游戏就这么被填满了。到目前为止,这在语言模型上也行得通,规模到数万亿参数。由于体量巨大,它们离“解决”还很远,但我对把这套流程放大持乐观态度。

这一切把我带回一个旧的希望:直接理解神经网络,研究它的机制和在机制之间流动的数据,而不是先去修理或解开它。整套论证分四步:

1. 网络只用一条学习原理,而不是两条(即便不是处处如此,也接近到对研究而言无关紧要),所以开展常规科学没有障碍。

2. 有了现代模型和工具,这门科学的进展比多数人预期的好得多。

3. 理解会复利,地图越满越容易。因此至少,网络自身的机制应当成为工具箱的一部分。

4. 高度推测:这可能就是我们需要的大部分东西,可解释性可能比我们以为的容易处理得多,甚至可能在近期。

深度学习的一般规律就是如此:简单的方法放到荒谬的规模,胜过聪明的方法。Rich Sutton 称之为苦涩的教训。也许可解释性也有它的苦涩教训:把普通的调查放大,胜过设计一种聪明的新分解。

一篇技术配套论文会更详细地交代语言模型神经元实验,比如现代非线性函数的不同区间,以及不同深度会出现哪些反复重现的电路套路。本文只是在许多地方各看一眼,并推测它们可能指向哪里。


最有名的多义神经元是 InceptionV1 的 4e:55,看起来是猫和汽车的任意混合。从 2017 年的《Feature Visualization》到《Zoom In》,领域里几篇读者最多的论文都拿它当证据,说明神经元也许不是合适的研究单位。在我参与撰写的《Zoom In》里,我们直接写道,它“并不是在响应猫和汽车的某种共性”。

(脚注:在《Multimodal Neurons》里我们其实非常接近答案。我们问过它会不会在响应某种共同特征,“也许猫眼和车灯看起来很像”,然后根据特征可视化里的胡须和镀铬,判定它“真的是 OR(猫, 车)”。找共同形状的方向是对的,但低估了泛化能走多远。共同特征是 V。胡须误导了我们,因为泛化发生在高层模式内部:V 神经元确实接收了猫的电路,而特征可视化的任务是把激活往上推,一旦找到猫这条路,就把这条路带来的东西全加上,胡须是搭便车的。要看出共同模式,得可视化神经元各输入的共同点,而不是单看这个神经元。)

在看了好几个月干净的神经元之后,我开始怀疑,我们是不是误读了一些早期著名的多义性和叠加案例。这个经典多义神经元显然是第一个该查的。我打开那张猫和车的图片网格,那是我看过几百遍的图,然后做了一件从没做过的事:花几秒钟想一想它可能是“一件什么事”。几乎立刻就清楚了:它不是猫与车神经元,而是一个 V 形神经元。

我看了它的电路连接:V 形的火焰、消防船喷出的 V 形水柱、V 形的狐狸脸。我看了它的负极:一个 O,V 尖的地方它是圆的。如果真是猫和车的任意混合,为什么要和火焰连得那么紧?

然后我去看了 2019 年我最早发现的那个经典叠加电路。V 神经元和这个电路,正是《Zoom In》用来说明它对神经元的乐观图景(几乎每个神经元认真看都能看懂)可能“过于美好”的两个主要例子。

(脚注:作者是在搭建第一个 Circuits 界面时发现它的,那个界面只有特征可视化和神经元之间的权重。他拿去问 Chris Olah,为什么汽车会这样流进这些狗。两人得出结论:它一定在做某种折叠,于是称之为叠加。因为这个解释符合直觉,所以没有促使他们深挖工具,否则会发现特征可视化的“奖励作弊”等问题。)

那个电路看起来是一辆车流进一堆不相关的狗,仿佛狗是一处高维储藏室,车可以在需要时再被取出来。

但汽车不是在做这件事。车和狗被放在一起,是因为共同的姿态(pose)。InceptionV1 有一百多个这种泛化的姿态神经元,每一个都是对“车、狗和其他物体共有的某种姿态”的干净检测器。据我所知,此前没人注意到它们。后面的层一路在它们之上继续构建,直到模型末端。汽车没有被存进某个隐秘的地方,也没有什么东西直接读出那个组合。恰恰相反,它在继续分化成汽车专家神经元和更细的姿态。

一部分原因是不知道泛化姿态神经元的存在,另一部分原因是我们用来给神经元“画像”的技术,也就是特征可视化,在深层会出现奖励作弊(reward hacking)。它的本意是找一张最大化神经元激活的图,但做法是梯度下降,而梯度下降走最容易的路,在 InceptionV1 里往往就是狗。InceptionV1 的训练数据里狗特别多,狗神经元也特别多,早期优化一旦掉进去就出不来。只要稍微把优化往真实高激活图片走的自然路径上偏一偏,大多数结果就是车,有些既有狗又有车,因为共享姿态。

也许有人想把这种泛化打个折扣,认为狗和车只是因为空间不够才挤在一起。也许它“其实想要”分开的狗姿态和车姿态神经元,更大的模型就会把它们分开。更大的模型确实倾向于有更窄的神经元,但网络放大时,方式可能违反直觉。

看 DINOv2:参数是它的十倍以上,架构晚了大约十年。它的姿态神经元更多,但其中很多依然是泛化的。我看过的每个视觉模型,不论大小,都是这样。同一个神经元出现在 DINOv2 和我们的大号、中号 ConvNeXt 里:狗和车辆按朝向镜头的方式被归为一组。我们最小的模型只有一个粗糙版本,车和狗在一起,但不是按姿态。

人类和自动化的解释者似乎都强烈倾向于把神经元描述成“一组名词的检测器”,比如猫和车,而不是一个共享模式,比如 V。有时神经元确实在响应一组名词。但在我的经验里,更常见的是一个共享模式,神经元更适合理解成动词而不是名词。它的工作不是给输入里的东西命名,而是画出一条下游神经元能用的区分:在正负两极分开两种微妙的模式(V 对 O),并据此把激活的流向推往不同的神经元。

我常常靠问自己一个问题来打通对某个神经元的理解:如果完全不许用“一组名词”,我会怎么向别人描述它?共享模式通常立刻就冒出来,而且很容易拿更多名词组去测(对 V 来说:新干线、台球桌)。我怀疑这是中层神经元里被错误归为多义性的最大来源。我见过的很多“这个神经元是多义的”的解释,在我看来只是用一串名词描述了一个模式。

一个代表两三件事的神经元,应该被当成一个带着几个分组含义的神经元。这种分组对网络来说大概不是问题:这些含义放在一起,是因为从网络的视角看,它们相似。所以分组本身就是网络如何思考的线索,顺着它走,可能会发现我们不知道的泛化,就像这里的猫和车。多出来的含义经常在细看之下消融,原来是次要的、很少激活的。还有一些表面含义纯粹是工具不好,本文有好几个例子:SwiGLU 的双负区间、让残差流难以可视化的一个没人读取的“显著度旋钮”、以及刚才看到的特征可视化奖励作弊。保留原始神经元的完整,能让这些错误保持可见,纠错才能继续。如果我们用优化去换一张更干净的清单,可能就丢掉了这些线索。


在我看来,可解释性的历史很大程度上是一再发现:显微镜下的东西比我们以为的好。只是显微镜没调好,而需要调的地方往往相当细微。

现代神经网络可解释性可以说始于特征可视化,也就是渲染一张神经元最强烈响应的合成图像,那些著名的迷幻图片。有一阵它们看起来并不好,你可以合理地得出结论:神经元学到了东西,只是不怎么干净。结果发现是方法缺了“变换鲁棒性”。研究者加上之后,同样的神经元变得清晰锐利。

但这只能把你带进模型一段距离。接近末端时,特征可视化又开始失效,原因有二:汽车电路里看到的奖励作弊,以及不太对的正则化。修好它不需要什么花哨手段,把合理的设置微调几处,就能看到网络深得多的地方。同样的神经元,更好的显微镜。

但也不全是显微镜的问题,模型本身也需要调。早期被当成标准实验标本的 InceptionV1,深层完全无法解释。有人估计:“据我所知,InceptionV1 最后一层基本没有可解释的神经元。”这和我自己的记忆接近,我大概会说 5%。

我所知的主流解释是:高层需要表示的特征太多,而那里的神经元和参数不够,于是它开始任意打包本不属于一起的东西,因为它们不冲突;早期层之所以单义,是因为早期需要表示的特征没那么多。

但这不是正确的解释。换一个更现代的卷积网络,参数量和数据集完全相同,只加了残差连接、LayerNorm 和另外几项改进,最后一层就很漂亮:每个神经元在 5 万张图片里最强的 20 个响应,按顺序排出来,基本都是同一类东西。

所以需要两件事。第一,神经网络得学得好,用的架构是由一门心思只想让网络学得更好、对可解释性毫无兴趣的人设计的。残差流就是例子:它被引入是为了训练更深的网络,似乎也帮助深层在概念上保持干净,两者也许有关。第二,我们需要足够强的工具把它们看清楚。

InceptionV1 的最后一层,曾是“神经网络几乎从根本上不可解释”的主要证据之一,因为它的学习方式会叠加不相关的混合,替换神经元似乎是唯一选择。用当年的工具,我估计可解释的比例约 5%,其他人估计接近 0%。换上更好的可解释性工具(修好的特征可视化、归因可视化方法等),同一个网络上大概是 50%。这还是那个检查点和训练细节都已失传的 2014 年模型。用更合理的现代正则化重新训练同一架构,大约 70%。同样大小的 ConvNeXt,大约 99%。


我们已经说明最后一层是可以修好的。可修好之前它在做什么?即使在架构改进之前,它也不是在任意拼凑。我们重新训练模型、看一个神经元成形时,它最初落在黄色花朵上,那些照片里有时有一条狗。然后它沿着这些照片的每个侧面生长:长向其他自然景物,长向绿色物体比如球,也长向没有花的狗。我看过的每个神经元都是这样。改进后的架构呈现同样的模式,只是少得多。

一个例子:InceptionV1 和 ConvNeXt 各有一个神经元,用同样的数据训练,起初都落在油菜花田上。两者早期都伸向球和水果;ConvNeXt 后来放开了它们,留在花田上;InceptionV1 则持续扩散,扩进狗,再扩进西兰花,直到花田几乎不见了。

我们把这叫作递归泛化:一个神经元沿着不止一个轴泛化,往往先沿一个轴,再向外长出分支。每一步在局部都很好理解,但最终让它不再“单义”。

比如一个语言模型神经元响应“iy”,包括“Miyazaki”里的 iy,然后响应“diy”,再然后响应完全不含“iy”的“do it yourself”。

这类例子在图像和语言模型里到处都是。一个地质学神经元泛化到了 Cesium,一个做地理空间可视化的 JavaScript 库。行星地质神经元最强的放电混着月壳和 IDL、Cesium 代码;按喂给它们的电路分组后,分成一个核心的三个侧面(行星表面)和一个分支(代码),后者走的是自己那条路进来的。

通常发生了什么非常明显,以至于很难决定要不要干脆把它叫作普通泛化。比如一个“敌人”神经元对一首关于敌人的俄语诗放电。有时没那么清楚,但仍然说得通:一个 Srinivasen 神经元也会轻微地对 UniProt 蛋白质数据库放电,这个项目里确实有几位叫 Srinivasen 的人,但很难确定。

我们第一次暗示这一点是在《Multimodal Neurons》里,当时称之为“连体特征”(conjoined features)。我把它忘了,直到研究递归泛化好几个月后,回头翻领域里最著名的那些模型才想起来。在我记忆里,没有人(包括我)提出过它可能是一般性解释,比如解释 InceptionV1 最后一层出了什么问题。当时没有训练检查点,看不到它如何形成,但那个解释基本是对的。附录说明了我为什么认为新名字更准确。


递归泛化不算一个大胆的解释,可以说它就是普通泛化本来该有的样子。但对多义性还有一个大胆得多的解释:一条新的学习原理。

我们处处看到的主要学习原理是泛化。泛化把东西放在一起,是因为它们共享一个有用的模式,放在一处才能在上面继续构建。叠加则因为“互不干扰”而把不相关的东西放在一起。两者的预测相反:泛化应当是局部的,叠加应当是非局部的,因为它会想把非常不同的东西放在一起。

泛化会想要一个“耷拉耳朵的狗”神经元,可以看作许多角度、种类略有不同的耷拉耳朵放在一起。叠加会想要一个“耷拉耳朵的狗 + 拉丁诗歌”神经元。神经元变少时,泛化型神经元只会变粗,不会碎裂。

定义在这里缠在一起了。《Zoom In》在提出叠加的同时,也提出了“特征是神经网络基本单位”的想法。于是在不同地方,叠加要么指“特征多于维度”,而这一点就算是完全单义的网络也满足,因为它的神经元会组合;要么指上面那种学习原理,有时用在神经元学什么上,有时用在特征被放在哪里上。

(脚注举例:InceptionV1 的 4b 层有基本单义的车窗、车身、车轮神经元,下一层把它们组装成一个汽车神经元 4c:447。按特征视角,可以说“汽车特征”不只在 4c:447,也在构建它的那组 4b 神经元的组合里。于是相邻两层有两个汽车特征,机制几乎一样。按“特征多于维度”的说法,第一个处于叠加,第二个可能不是;按《Distributed Representations: Composition & Superposition》这篇非正式笔记的说法,第一个是分布式的,但靠的是组合,第二个根本不是分布式的。这也是作者觉得“假设的特征”很难拿来思考、更愿意用神经元这类具体机制和具体数据的原因。)

所以“叠加”这个词本身就处在几种常见用法的叠加态里。我们关注的是作用在神经元这类机制上的那条学习原理,因为它是否成立,承载了可解释性好消息或坏消息中不成比例的份额。它也相当好测:递归泛化和叠加的预测几乎相反,你可以看着一个神经元长大,看发生的是哪一种。

本文说“叠加”时,指的都是这个版本。至于“特征多于维度”,我基本不认为它是坏消息,后文会谈。


多义性往往更多是关于观察者、而不是关于神经元的陈述。它说的是:目前还没有好的解释。原因可能有这么几种:

1. 工具不好:我们的透镜或显微镜不够好。

2. 解释不好:由那些工具产生。

3. 学习不好:架构、训练数据或别的原因让网络学得差。

4. 递归泛化:神经元在泛化过程中往几个相关方向分了叉。

5. 叠加:学习原理变了,网络因为很少冲突而把不相关的东西塞进同一批神经元。

多年来我是叠加的坚定信徒。我开始研究语言模型神经元,并不是对神经元或叠加感兴趣,而是想知道智能体有没有研究品味。我想看它们在检验解释时会不会问出好问题,神经元只是一个基线。我原以为它们会撞上处于叠加中的、无法处理的特征碎片,那会给“神经元到底有多干净”定一条新基线,然后智能体可以换到某个更干净的学习出来的基上继续。但那一刻始终没来,因为神经元一个接一个地被一个简单解释收住,而这个解释还会做出令人意外且应验的预测。

在一个前沿语言模型里,我找到一个主要对“pr”放电的神经元,但它也对一堆 Base64 编码的 URL 字符串和一些孟加拉语放电。我想这下终于是任意混合了吧。可把 URL 解码:是“pr”开头的词。把孟加拉语翻出来:“pr”。

在一个稠密 Qwen 模型里,一位同事碰到一个被标准 top-k 自动化可解释性标成“多义逗号神经元”的神经元。细看才发现它追踪的是科罗拉多:电话号码、俚语、和其他科罗拉多神经元的连接。操控它,模型就想去徒步。逗号是它存放“到目前为止的科罗拉多语境”累计摘要的地方。一般来说注意力似乎会把信息聚到标点上,我们称之为“标点摘要套路”(summary motif)。知道这一点之后,很多类似的神经元都好懂了。在科罗拉多出现之前,逗号上一片暗;它出现后,逗号随着语境累积而变亮。

还有些时候,只是数据不够。一开始我们没纳入长上下文,觉得两段话够了,结果所有长上下文神经元都意外地显得多义。比如只看最后一段,一个神经元像是“咖啡和大学”,真正的原因在更上面。

另一个例子里,一个神经元看起来一团乱,没有哪里强烈放电。原来它在健康类 SEO 垃圾网页里找特定迹象,一旦数据集足够宽,它就好懂了。

在几百个这样的例子里,没有什么动摇了我对叠加的信念。它只是不断挪位置:强激活干净了,叠加就挪到弱激活里,或者挪到神经元组合里,或者挪到我还没看的神经元里,也许还能挪到跨层的结构里。

但最终我开始纳闷。除非这是一场夸张的、长期的选择偏差,否则有什么东西和早期实验标本模型对不上。于是我回头去查,原始证据倒下了,这就是本文的由来。

我现在认为,我当时把叠加当成了零假设,而它本应是最后一个假设,因为它最激进、最难检验。它的样子就是“看不懂的东西”。可工具不好也是这个样子(特征可视化的奖励作弊),还没顺藤摸到的递归泛化也是(“iy”神经元),架构不好也是(InceptionV1 的 5b),还没看懂的泛化也是(猫和车)。

我想部分原因是叠加就是“感觉对”。Anthropic 2022 年的《Softmax Linear Units》说得很直白:“在机械可解释性社区里,叠加常被当作默认假设,仅仅因为它在直觉上比其他解释更有说服力,但证据很少。”据我所知,自我那个原始电路之后,没有人在真实网络里找到过叠加电路,而那个原始电路是个错误。尽管我一直预期会看到,我在真实模型里没见过类似的东西。我认为声称它存在的门槛应该很高,因为它是如此激进的解释,而且对我们该如何研究神经网络会是大新闻,坏透了的新闻。

(脚注:SoLU 论文下一句说它自己的结果是叠加的中等证据,但按论文自己的说法这是旁证:SoLU 抑制分散在许多神经元上的激活,加一层 LayerNorm 能恢复性能,而加了 LayerNorm 之后神经元的弱激活看起来和主要工作更不相关,论文把这读成特征借小激活被“走私”。作者把它读成一个“专门抑制分布式表示的架构”里关于分布式表示的证据,而不是关于神经元打包不相关东西的证据。在弱激活里区分两者,用今天的工具都难,2022 年更难。作者提它不是批评,而是因为那是他们所知唯一一个有人直白说出真实世界证据有多少的地方。)

当然,这有走向反面错误的风险,也就是“用解释填补空白”:认定每个神经元都必须有个合理的故事。有两点让这不那么令人担心。第一,其他每一种原因都可以检验。更好的工具要么把神经元解释清楚,要么没有;用更好的架构重训,能看出是不是学习的问题;递归泛化可以一小步一小步地看着它长。叠加唯一的症状就是“看不懂”。第二,真实的解释往往很窄、很好测。一旦你怀疑某个神经元是科罗拉多神经元,就去操控它,看它说什么。如果一个神经元对某种很窄的电视剧套路放电,能算作这个解释的东西集合很小,而“看不懂的东西”覆盖它之外的一切。

另外,我们不必硬给一个没有的解释。如果一个神经元可能做几件不相关的事而你不确定,直说就好。我认为递归泛化应当排在怀疑清单的前面,而且有训练检查点时很容易查。叠加,我现在认为应该排得很靠后。


小图像模型也许显得过时,但我认为它们对这个问题很重要,因为我们能把它们看得很清楚。最初的担忧也大多来自这里:在那里我们看到的像是高分辨率的混乱,而不是低分辨率的模糊。语言模型体量巨大,没有特征可视化这类让生活轻松的工具,注意力会把不同类型的机制混在一起,许多内部套路也出人意料。前面已经看到,连视觉模型的套路都可能违反直觉,语言更糟。每一项缺陷都可能让一个单义神经元看起来多义。看一张模糊照片判断是猫是狗,模糊让判断更难,但不偏向任何答案;可如果你要判断的是“照片本身是模糊的,还是我看得不好”,你视力上的每个瑕疵都会被算成照片的模糊。要研究神经元如何随规模、压缩压力、激活强度和深度变化,最好从看得清的地方开始。

我训练了三个 ConvNeXt,大小跨越约 300 倍:小号 9.2 万参数,中号 706 万参数(与 InceptionV1 相同),大号 2860 万参数。下面看它们,也看 InceptionV1,试着理解神经元在不同情况下做什么,并寻找打包可能形成的地方。

我怎么看神经元

我过去把神经元想成人类形状的名词:一个是汽车,另一个是曲线。现在我更把它们看成控制流。一个神经元关键不在它看到什么,而在它对流进来的东西做了什么,它的工作经常是给网络的某个区域“把门”。这么看,单义性几乎是个问错的问题。更好的问题是:它放进什么,挡住什么。

像素进来,网络开始归类和区分。车和狗可能因为共享姿态被归在一起。再往后有具体的汽车检测器,出租车、救护车之类,它们不要狗。于是它们前面的一个神经元充当门:对车正响应,对狗负响应,用负极把狗挡在外面。狗去往自己的区域,那里不用操心车。后面的神经元在此基础上进一步专门化:救护车神经元的负极上可能是出租车,出租车神经元的负极上可能是救护车。在更大的模型里,区分可以更细,把出租车的一个视角和另一个视角分开;小模型可能停在更粗的区分上,更接近一个笼统的“汽车”神经元。

拿一辆真实的跑车,跟着它走过大号模型的最后五个 block。走到一半时,它和桌子、柜子这类长方形物体归在一起,对立面是蛇和狗;到最后一个 block,分界变成了敞篷车对旅行车。

神经元的负极对理解它几乎和正极一样重要,即使在 ReLU 网络里负值被截掉了也是如此。一个神经元由“投票”构成:每个输入权重为正极或负极投票,票数在非线性之前相加。负极本身从不获得梯度,但只要神经元处于激活状态,每张票都会获得梯度,所以负极同样被学习塑造。负极的含义依赖语境:跑车路径上的神经元把它和蛇、狗分开,并不是说车和狗是反义词,而是在把先前被有用地归在一起的东西挡出去。负极告诉我们电路此处哪个区分重要,这也是检验分组是否真实的快捷方法:V 神经元的负极是 O。

看最后一层,能看到高层模式以及它们和什么相区分:出租车对救护车,西兰花对花椰菜,琵鹭对火烈鸟。最小的模型里神经元变粗了:它最后一层的一个神经元把汽车、火车、手推车放在一起,负极上是船、飞机和一种水上牛车(我之前都不知道有这东西)。它仍在区分,只是更粗,也更早停下。

压力之下的神经元

多数视觉模型的早期层是单义的。我理解的标准解释是:早期视觉需要表示的特征没那么多。乍看有点怪:从 AlexNet、ResNet、InceptionV1 到 CLIP,数据量与参数量的比例差别那么大,却个个恰好有“正确”的早期特征与早期神经元之比。

可以聚焦 InceptionV1 的 3b 层,那一层有曲线神经元和高低频神经元,在我看来是最基础的神经元之一。这个模型没有残差流,信息没法“绕过”神经元。于是可以检验空间不够时神经元会怎样:把它从 480 个砍到 10 个,然后重训。

如果它转向叠加,我们应该看到相互叠在一起的混合,比如曲线加橙色螺旋加蜘蛛网加别的几种纹理检测器。压缩了 48 倍,效果应该很剧烈。

但我们看到的不是这样。神经元仍然可解释、仍然是泛化的,只是更粗:一个“曲线与环”神经元代替了十个曲线检测器,两个圆形神经元代替了好几种圆,依此类推。重训后的模型 ImageNet top-1 准确率 58.35%,top-5 为 81.14%。

还可以专门检验曲线去哪了。如果它们被放进了某种高维的神经元组合,应该能提取出来。于是在这个被压扁的层上训练 SAE,和原来的曲线检测器对比:完全没有干净的曲线神经元,每个原曲线检测器位置上最接近的自编码器特征都很宽、挤成一团,而不是十条曲线。

这是检验“能不能把一个我很熟的单义层变成叠加”的好测试。但它也不完全理想,因为人们怀疑叠加的主要是最后几层。于是我们拿中号 ConvNeXt,把最后一层从 1024 个神经元压到 13 个,禁止它借残差流绕行,从头训练。看到的是同样的变宽模式。小号 ConvNeXt 在某种意义上也是非常相似的测试,结果一样。

深层电路

我们也看了深层电路,排除最后一层有什么特殊之处的可能。结果它从头到尾都是有组织的。以“修道院”为例,沿着选定的连接追进最后一层神经元,跨越五个 block,五条电路都清清楚楚。

字典学到了什么

如果神经元组合里藏着东西,字典方法(比如 SAE)应当能找到神经元缺少的构件。所以我在这些层上训练了几个 SAE,自己和智能体一起去找,一个也没找到。

大多数情况下,两者看起来就是它们在机制上的本来面目:神经元像构件,SAE 单元像按语境分组的构件。蜘蛛最明显:SAE 单元是不同场景里的蜘蛛,神经元是腿的纹样和蛛网。它们分歧不大。

SAE 在回答“这张图里有什么”时确实有帮助,在神经元很粗的最小模型里帮助最大。中号时我略微偏好 SAE,大号时我觉得我更喜欢神经元。但我更在乎理解网络,而不是某一张图,而我从没见过 SAE 抓住什么神经元没抓住的根本东西。某个尺寸的模型不懂棒球运动员,它的 SAE 也不懂;模型终于懂了棒球运动员时,那是在一个神经元上。

那 SAE 找到了哪些没有明确神经元对应物的东西?在最后一层,它 88% 的活动是单个神经元的近似复制品,其余很微弱:去掉所有不对应任何神经元的字典方向,准确率不变,被翻转的少数答案本来就几乎是平局。此外,如果从随机起点出发,搜索该层的旋转,找“让少数单元承载最多活动”的那个旋转,每个 block 你都会落回神经元本身。在少数强到值得一看的特征里,SAE 添加的是由现有神经元搭起来的松散分组,比如“水面上的动物”或“苍白、块状的食物”。没有什么看起来像根本上的新构件。

罕见事物与记忆

对隐藏特征的很多担忧来自罕见事物。它们很少和别的东西冲突,似乎也不值得单独占一个神经元。所以我们用能想到的所有方式看了罕见事物。罕见类别往往更集中:ImageNet 需要大量狗的模式,但三角龙只需要一个神经元。去掉最后阶段的弱激活,没有哪个类别受到突出影响。我们追踪过的对抗样本,走的都是正常的语义电路路径。

我看了在最后几层表示上离其他所有图片最远的那些图。结果它们是一些好玩的怪图,模型用普通神经元把它们读错了:蜂鸟被看成冰淇淋,巨大香蕉被看成保险库,摔进手推车的人被看成割草机。我还训练了一个把随机噪声映射到随机标签的 ImageNet 模型,连它都部分是语义的:它部分依赖羊毛纹理和远处树木的纹理,这些都是高频的,有点像高频噪声。在语言和视觉的所有实验里,记忆都倾向于尽量靠近输出,因为它只需要查答案,后面几层承担了大部分工作。

我们也可以自己造一条罕见路径:教 706 万参数的模型一件荒谬的事,一张雨伞照片是蜜蜂。你可以设想这种记忆不依赖任何别的东西:一个隐藏特征锁定这组像素,说“蜜蜂”,因为不需要,所以和网络其余部分隔绝。那会是相当糟的消息,但完全不是这样。九步训练里,最高猜测从雨伞变成五月柱再变成蜜蜂。雨伞神经元淡出,已有的蜜蜂神经元亮起,几乎全部发生在最后三个 block:只把这三个 block 换进原模型,它就说“蜜蜂”。

相比之下,学一个与其他正常雨伞或蜜蜂路径都分开的隐藏雨伞特征,虽然可能,但我认为比“组装已经在激活、且有通往输出路径的相关部件”学得更慢,后者有可塑性也有梯度。前者也更脆弱,而且哪里都没看到。网络做的是在两条已有路线之间修一条匝道。


人们问弱激活重不重要时,我觉得其中混了好几个问题,答案各不相同。

它们是泛化还是叠加?

不出所料,我认为是泛化。设想你是一个被打包进来的不相关特征,想避免和主神经元里的东西冲突。弱激活要密集得多,你会和多出几个数量级的东西相撞,收益却很少。把 1 亿个 token 送过 Qwen3-32B 的一个神经元,几乎全部停在零附近,只有约 160 个进入强激活的上半区。

也许你可以同时躲在许多神经元的弱激活里。我们看到的是:几乎可以切除整个网络的所有弱激活,代价几乎为零。切掉代价最大的地方,恰恰是最好懂的地方之一。在语言模型里,包括最后一层,它主要用来压制单个 token,对应我们所说的“心里想到了、但嘴上先别说出来”(say or just think)的压制套路。在视觉模型里是早期层,它们像旋钮:稍亮和中等亮之间的差别很重要;但对后面的检测器,比如帝企鹅,证据是低还是很低无关紧要。所以关键而常见的东西不可能在弱激活里,因为我们能把它们去掉。

我们也可以看切掉弱激活丢了什么。在几类研究中,丢的通常是网络本就拿不准的事物之间的细微区分,而把它们推向一边的微弱激活,来自你会预期的那些语义相关神经元。在中号 ConvNeXt 的全部 18 个 block 上,被改变的都是模型原本前两名答案之间的拉锯。

剩下的是罕见数据,以及“强但不极强”的激活。

前面看到,在我们做过的每个实验里,罕见事物都长在相关电路上,因为它们强度不够,撑不起自己的生态位。上面的切除实验指向同一方向:如果罕见案例住在弱激活里,切掉它们应当直接弄坏一些答案。但实际上每个变化都很小,都是一个接近平局的局面倒向了一边。

强但不极强的激活,可以直接看。在我所知的每个案例里,它们都在语义上向外辐射:CLIP 的 Trump 神经元,先是 Trump 的照片,然后是与他相关的艺术和人物,再然后是 Fox News 演播室。越往下走,越容易被一些看似无关、其实相关的东西骗过。最起码,要看一个数据点流经了哪些电路;这里弱放电的东西,可能在上一层强烈放电。我们把语言模型里五个神经元的所有强放电画成靶状图:中心是最大值,越往外越远亲,灰色是难以定位的部分,通常仍然有联系,只是需要更多功夫。

用百分位还是原始激活?

我过去用百分位思考,因为好想,也便于在神经元之间标准化。但我逐渐认为神经元的原始形状在告诉我们一些事。有些神经元在很低的区间仍保持含义,有些像悬崖一样陡降,比如上面那个圣诞神经元在最大值的 5% 左右就断了。有些一本书放电几次,有些一页放电几次。百分位把这些压平了,而这往往正是告诉你眼前是旋钮(中段重要)还是检测器(中段大多不重要)的信息。

百分位还会扰乱直觉。第 99 百分位听起来很高,但 1/100 的 token 大约是四分之一页,一个对应小众情绪或社交语境的神经元(这类神经元在语言模型里遍地都是)不该一页出现四次。按页数想有帮助:第 99.9 百分位是每两三页一次,第 99.99 百分位是每 25 到 30 页一次。

给神经元贴标签需要它们吗?

通常不需要。亲手看过几千张语言模型归因图之后,我很难夸大神经元有多爱做类比。如果你在讲乘船远航,模型可能判断这“有点 Titanic”。我不认为把它想成散落在 Titanic 神经元和其他神经元弱激活里的“海上航行特征”通常有帮助。更好的理解是:有一个“Titanic 感”的机制,只要某样东西有 Titanic 感,它就放电,它的权重就是为有 Titanic 感的东西投的票。所以你看最强激活,看出它是 Titanic 感,这个标签通常能经受住后续审计。如果你真的在乎某个特定激活,可以追它的路径、切除电路,几乎可以无限放大。

我的主要结论:如果一个弱激活看起来无关,除非你仔细看过,否则别太担心。我亲手追过的大概几百个里,几乎全部最后都是相关的,经由一条合理的电路而来,只是追踪之前从视觉上看不出来。

很多相当巧妙,比如一个禅宗公案神经元,会对数学里的递归轻微放电:许多公案都围绕同一种自指,寻找观察者本身。另一些更远也更别扭,不一定是我会画的那种联系,但通常能顺着看出它是怎么走到那里的。我怀疑大多数,可能几乎全部,都是这样。


这一部分是作者与同事 Curt Tigges 合作完成的,引用了即将发布的技术论文中对语言神经元的深入实验,因此改用“我们”。

语言模型太大,很难精确验证关于神经机制的论断,但可以检查简单的故事在那里是否同样成立。我们从 Anthropic《Circuit Biology》里一张我们喜欢的医学诊断归因图开始。他们研究的是 Claude 3.5 Haiku,用的是跨层转码器(Crosslayer Transcoder)特征。结果发现,在 Qwen3-32B 里直接用神经元也行得通。

因为用的是原模型,没有重建损失,也不需要额外训练。他们最大的转码器预测的下一个词,只有一半时间与原模型相同,他们的图还需要“误差节点”来承接漏掉的部分。

那张图里,诊断枢纽(子痫前期)只有四个神经元。去掉它们,模型转而去问有没有瘙痒。瘙痒是另一种妊娠期肝病的标志性症状,就好像模型换到了它的第二个猜测。我在图像和语言模型里看过的几千张归因图,都高度可读,切除效果也大体符合预期。

神经元的负极和正极差不多一样重要。我们认为可解释性界面往往过于关注正极及其弱激活。弱激活通常不重要,但强的正值和强的负值都很重要。

比如,圣诞老人住在负极上。在“圣诞老人”那张图里,标准的 top-k 自动化可解释性给出的标签可能像“首都城市”,因为它忽略了对应圣诞老人传说的负极。去掉八个负极是圣诞老人的神经元,“Santa”的概率从几乎确定跌到 6%,Qwen 转而怪到宠物头上;去掉二十个真正被标为“圣诞”或“圣诞老人”的神经元,只跌到 76%。

这是一张只用神经元画出的 Kimi K3 归因图,据我们所知,这是第一张公开发表的数万亿参数模型归因图。问它捡到钱包该怎么办,它把钱包、现金、失主身份证件连到失物和诚实上,回答“归还”。这个规模的完整审计我们还没开始,希望很快开始,但到目前为止大多数东西都能凭直觉理解。

直觉上,我们可能预期在二元组(bi-gram)或人名这类东西上会出现打包,因为它们实在太多了。我们看到的是普通的泛化和组合。像“Miyazaki”里“iy”这样的早期语言碎片,有点像早期视觉模型里的 Gabor 滤波器。一般性的拼写片段喂给一个 Miyazaki 神经元,它在我们试过的每种文字、每种含义下都对这个名字放电,再喂给后面的联想,比如“spirited away”(千与千寻)。

附录里我们讨论了《Finding Neurons in a Haystack》。那篇论文认为自己可能在一个“social security”方向上找到了叠加,但那个方向网络并没有使用。我们画出了它实际使用的那条,用的是普通的泛化和组合。

我们随机挑选了 1000 个神经元,为每个写了一份“神经元论文”,即对单个神经元的详细调查。我们看到约 90% 的神经元基本只有一份工作,带着通常相关的递归泛化分支。检查分支有多重要时,最重要的那些似乎也最相关,比如那个对 Cesium 放电的地质神经元。剩下的很多有两三份工作。我从没见过一个神经元做十件不相关的事。更多细节在另一篇论文里。

这些分支看起来并不是特别重要的隐藏特征。一种担心是它们像“潜伏特工”:在自己的语境里非常重要,只是罕见。我们普遍发现,分支既更罕见,在自己语境里的重要性也低于主激活在它的语境里的重要性。

一大噪声来源是 SwiGLU 的双负区间。现代神经元同时有一个门(gate)和一个值(value)。两者都为负时,乘积为正,把激活送进正极,而这些激活通常长得像负极。这种“回声”通常很小,但约 4% 的神经元,整个排行榜顶端都是它。在整个网络上切除这些回声,多数基准分数上升,但部分推理基准下降。我们猜答案大概很平淡,比如某个神经元借用其中一种激活来让推理更长,但还没深究。架构设计者们,我们认为你们应该研究一下怎么修掉它。

在视觉模型的 SwiGLU 神经元上(那里我们理解得更好),值倾向于学宽的东西,门学更具体的东西。比如值学到一个宽的家族,像“灰色小鸟”或“任何橙色的东西”,门则只为灯草鹀或金鱼打开。

专家的专门化程度远高于此前报告的。由于过去很难判断神经元干不干净,也就很难判断专家的专门化程度,“token 相似度”之类不是好指标。

和神经元一样,专家随深度变窄。不“单义”时,它们似乎跨越的是大致相关的东西。我们还没在训练过程中观察,但我们认为这大概是同一种递归泛化模式,只是高了一个尺度。总体上,我们开始把神经网络看成在多个层级上运行的同一种组织原理:权重、神经元、专家、电路。每一级有自己的细节,比如非线性函数的特性,但彼此之间共享很多。

把专家看成一种“反叠加”架构也很有意思。叠加想把不相关的东西塞在一起,但高度专门化的专家让这很难,因为只有选中它的专家时,神经元才会放电。一个想着打包的专家不会愿意整个献给“RPG 桌游里的 Boss”(真有这样一个专家),它会想成为一万件不相关的东西的打包。但那样路由器就得认出这一万件东西才知道何时把 token 送过去,而路由器只是一个小小的线性层。我们把 Qwen3.6 的全部 10240 个专家按层排列,从最窄到最宽,由智能体阅读每个专家神经元的摘要来判断主题。

可能输掉的解释

有一个风险是把解释定义得太宽,比如“多功能语言神经元”。技术论文里有几种检验方法,附录里有一种:拿专门编写的“高仿混淆句”(字面很像但意思不沾边的反例)去考它。我们觉得特别管用的一种测试叫“盲测极限激活”(blind maximum)。一个智能体调查某个神经元,写出一段简短解释;第二个智能体只看这段解释,写一个意在让它最大激活的例子。结果通常是一句简单易读的话,而它激活神经元的强度,可以超过我们在 100 亿 token 里找到的任何例子。

人们容易把神经元激活单纯想成一个数字,把“盲测极限激活”想成刷高分的方法。我觉得更准确的想法是:神经元是一个靶子,含义从中心向各个方向生长。每个喂给它的东西都做出自己小小的语义判断,最大值是它们最一致的地方。所以命中它不在于数更大,而在于更靠近神经元在找的东西的中心。一百亿个真实 token 都有过机会,而一句仅凭解释写出的话离中心更近。

“盲测极限激活”的一个局限是它只测了神经元的靶心,而不是它的广度。如果神经元有几份工作,哪怕相关,测一次可能只探到其中一项。所以我们也对流入神经元的归因做聚类。对一个宠物芯片神经元,这会得到几束上游神经元:动物标记,走失宠物与救助,芯片与 RFID 识别,从同一个中心出发的三个方向。然后对每一束分别做一次盲测极限激活,同时切除其他束,并与同样切除下语料里最强的例子对比。如果某一束是被打包进来而不是长出来的,这里就会表现为一个与其他束无关、却仍能驱动神经元的解释。这不能完全覆盖,但比只朝中心打一枪覆盖得多。

也有一般性检验,比如从解释出发预测激活和电路。老实说,我对它们的信任是有限的。“猫和车”在许多针对 V 神经元的检验上可能都表现不错,却完全错过了它的本质。你可以通过注意到它连着火焰来推翻它,也有很多别的方式,但都需要创造力和判断力,而不是一个汇总统计量。在这一点上可解释性和其他自然科学是同一个形状:牛顿引力解释了范围极广的观测,然后栽在水星轨道一个极小的偏差上。最好的批评是针对具体猜想的。

不知不觉走向单义

就像回头看早期视觉标本模型一样,也可以回头看早期语言模型,看看人们为什么难以理解它们。我比较熟的是 GPT-2 XL,也就是我在 OpenAI 发起的原始自动化可解释性项目所用的模型,当时不到 2% 的神经元结果是干净的。我们回去为它写了 500 份神经元论文,几乎没做迭代。现在约 70% 看起来大致是一件事,其中一些带着像递归泛化的残余。完全纯净的仍然很少,约 5%。剩下的是做几件宽泛事情的神经元,最多大约六件,多数是两件。评分方式和原项目不完全一样。在当年用的激活重建任务上,我们不迭代就能好上数倍,但我已不再认为它是衡量解释的好指标(见附录“关于模拟分数”)。总的来说,小模型的神经元更宽,递归泛化的残余也比现代模型多。

《Towards Monosemanticity》开篇那个神经元,可能也发生了类似的事。我们说神经元可能是干净的时候,好几个人和智能体都把我们指向它。那篇论文开头说,如果神经元可解释就好了,可它们包含任意混合,引用了猫与车神经元,以及它的单层语言模型里一个对“学术引用、英语对话、HTTP 请求和韩语文本的混合”放电的神经元。

我认为它可能是一个“别输出句点”(don't say a dot)神经元,这是语言模型里随处可见的常见套路。几乎所有引用、对话和 HTTP 请求都在句点上或句点附近放电,它最强的十个负 logit 连接里有八个以句点开头。剩下的韩语例子,都在一个未写完的音节大约三分之二处放电,那正是不想要句点的合理位置。也可能那是第二件事;没有模型,我们没法继续收窄解释。无论哪种,它都是两个小的句法推力,而且很容易看出它们为什么在一起。去掉这个神经元或 Qwen3.6 里做同样工作的神经元,下一个句点都会变得更可能。

我认为这个例子有用,因为它是一个著名的“任意混合”,结果落在中间地带,至少目前如此,毕竟我们没有模型来继续检查。我们不知道它是一件事,还是一件事加一个更弱的相关句法模式。但两者都比“四件不相关的事”窄得多,也更有希望,而“多义”这个词把它们一锅端了,尽管它们处在截然不同的可解释性水平。

2023 年做第一个自动化可解释性项目时,我以为小的简化模型是可解释性最好的起点,因为要考虑的花样少,规模小意味着要研究的东西少。现在我觉得可能恰好相反。那些花样是为了帮网络学得更好,比如 InceptionV1 从来没有的残差流;一简化,就很容易让神经元学得更差。而更大的模型往往有更窄的神经元,模式和套路更容易看出来。至少在 GPT-2 上,我经常同时撞见好几个我都不认识的套路,这让事情很难。领域本来就想要那些架构和规模,采纳之后,我们也许在不知不觉中正走向单义。

残差流

对残差流的担忧,不在于我们关心的东西多于维度。它是打包的连续版本:流形彼此交织,接受一些干扰,换取存更多东西的空间。完全排除这一点也许做不到。但实际上它没有成为瓶颈。我们能读出神经元往残差流写了什么、从中读了什么,归因图出来很干净,也没看到残差流先累积干扰、过后再抵消。

在视觉模型里,我们还能用眼睛检查。多年来我一直没法可视化卷积网络的残差流:每张图都是一道大弧。原来网络把几乎全部激活质量都放进了一个没人读取的维度,它可以通过改变这个维度,借 LayerNorm 缩放其他所有被读取的维度。弄懂之后,去掉它很容易,图就说得通了。它具体怎么运作、甚至在做什么,不如贯穿本文的更一般模式重要:弄清架构在做什么,顺着它来,而不是和网络对着干。它也指向了领域后来反正会去造的东西:注意力。

我们不知道语言模型是否需要类似的修正。可视化它们的残差流时,大多数时候直接就能用。不过判断一整张文本图是否说得通,比扫一眼图像图难得多,这也是我们这部分工作多在视觉上做的原因。对语言模型来说,一张全局地图也未必是最好的工具。不论正确的视角最终是什么(子流形、神经元读写、或 lens 式读出),我们试过的都管用,也没碰到看不懂的残差流区域。

我们也试过直接压扁残差流本身,和压扁层的实验类似。我们把 700 万参数的中号 ConvNeXt 重训成残差流窄 4 倍和 8 倍的版本,最后一个 block 只剩 46 维,神经元全部保留。准确率从 72% 降到 60% 和 39%,但和正常宽度的模型相比,被压扁的残差流地图看起来很相似,只是乱一点。没有什么看起来是巧妙交织的。神经元的读写讲的是同一个故事:变得更嘈杂,但漏进来的是同类东西。一个“水上的深色鸟”神经元也会对短吻鳄和一只游泳的寻回犬放电,而不是对钟表。

比起证明残差流能装什么、不能装什么,我们更关心理解神经网络的现实瓶颈。如果干扰没出现在地图里,也没出现在神经元读写里,哪怕我们拿走了空间,我们认为处境就相当不错。

剩下的担忧是残差流里特征多于维度。一个残差流只要把东西放在合适的方向上,就能装下远多于其维度的东西,所以这本身不是打包。它主要在你想要一张模型全部特征的大清单时才重要,而人们恰恰常去残差流里找这个。我们在“拉远看”里会谈到,我们不认为大清单是正确的终点。但如果你想要,神经元写入和读取的方向是个好起点;连续子流形也是,比如 Goodfire 的 Block Sparse Featurizer 找到的那些,由于残差流没有特权基,它们在这里显得尤其自然。目前这些都很好用:能找到合理的子空间,也能跨层追踪。

注意力

我们在注意力上的进展比神经元少,它基本不在本文范围内。老实说,我不确定有谁对注意力的理解足以自信地说,它的难以理解就是我们关心的那种叠加。把它和其他所有可能性区分开很难,而“学习原理变了”不该排在“新机制为什么难懂”这份假设清单的前面。

注意力的很多价值似乎在比较容易的部分。可以把注意力拆成几个问题:它在看哪里,在找什么,找到后做什么,以及为什么这么做。

“看哪里”相对容易,基本是白送的,而且已经能告诉你很多。在子痫前期那张图里,它做了两件不同的事:先把病例事实汇集到“she”上,模型在那里推出医学问题;然后由问题的措辞决定接下来实际说什么。

“找什么”和“找到后做什么”,也可以用神经元来理解。我们认为这能拿到注意力所做事情的大部分好处。比如子痫前期例子里“headache.”后面的逗号:第 30 层的三个注意力头直接从残差流读取,顺着那些方向写入的东西看,是一个头痛神经元、一个偏头痛神经元和一个脑神经元。它们写出的东西主要落在逗号处的子痫前期神经元,以及子痫、高血压等邻居上。切除这些头,子痫前期的概率下降四分之一;而只阻止它们看“疼痛”,什么都不变。

反过来也成立。有些神经元一旦能看到周围的注意力就好懂得多,有些注意力头只有通过它们的神经元才说得通。总体上,我们不认为注意力和神经元那么可分。理解注意力把信息放到了哪里,对理解随后处理这些信息的神经元很有帮助。哪怕是简单的位置规律,比如信息常被放在数字末尾或逗号上,也很有用。

在我的经验里,看一个头从哪些神经元读、影响哪些神经元、看向哪里,能得到很多东西。它不给你的主要是每个注意力头的全局名字。有当然好,但它并没有成为探索神经元或归因图的大瓶颈。看了相当多之后,我猜全局注意力头名字的边际“解释残差”大约 5%。然后我让一个智能体在不知道我猜测的情况下看 100 张归因图做同样估计,它也给出约 5%,大致平分为相对好命名的“位置头”(比如往回看一个 token)和其他一切,后者自然更多样、更难。

还没拥有的知识,价值很难判断,这些估计可能偏差不小。但到目前为止,即使没有全局注意力头标签,仅靠局部注意力流和全局神经元解释,我认为我们已经能在发现高层结构和常见套路上走得很远。我的低置信度预测是:注意力头最终会被证明是宽的、递归泛化的,就像小模型里的神经元,因为它们数量少得多:Qwen3-32B 里只有几千个头,而神经元有一百多万个。


我说的“干净”到底指什么

[图注:这里没有任何人为修改或重新拼装。每一个功能区、每一条电路、每一个神经元,都是网络自己学出来的原貌。]

当我说“神经网络原本就是干净的”时,我指的比“一个神经元只代表一个意思(单义性)”更深——尽管就算按单义性的标准衡量,实际情况也比学界预想的好得多。我真正的意思是:网络里的各个部件,本来就是为了给下游神经元读取、并在其上继续搭建而生长出来的。 从这个意义上说,神经网络几乎是一个由“合理解释”组成的分形结构,大到宏观层面的电路机制,小到微观层面由“顺藤摸瓜式泛化(递归泛化)”长出的每一个分支,都是一组组自洽、好用的归类。这也为可解释性研究指明了目标:我们要做的,就是成为网络的又一个“下游读取者”。

我们越是顺着网络自己下游部件读取它的方式去读它,它看起来就会越清晰。相反,我们要警惕过度套用人类的既定概念去硬套网络——不能仅仅因为它的分类方式不符合我们脑子里的预设词典,就断言它内部一团糟。

我认为网络之所以能长成这么有条理的结构,部分原因在于这样学起来最快。一旦网络里已经有了一片负责识别汽车的区域、攒齐了车窗和车轮等零件,那么每多认识一种新车,直接接在这片区域后面微调,显然比在别处从零另起炉灶快得多。这跟训练动力学里的“电路竞速(circuit racing)”和“梯度饥饿(gradient starvation)”密切相关:谁先接住误差信号,谁就越长越壮,别的冗余路线根本抢不到梯度。

过去大家几乎把“可解释”和“单义(一个神经元只干一件事)”当成同义词。这很大程度上是因为早期被当成标准实验标本的 InceptionV1 表现得太极端:浅层神经元干干净净、一个神经元对应一个特征;到了深层却像一锅乱炖。但在现代语言模型里,我们看到的是介于两者之间的常态:绝大多数神经元主要就干一件事,少数顺带干两三件相关的事。这到底算不算坏消息?

可解释性研究大体分两种流派。第一种可以叫“查户口式”可解释性(枚举式,enumerative interpretability):目标是拉出一张包罗万象的特征总表,挨个审查,生怕漏掉任何有意义的模式。这种思路最怕的就是维度灾难和组合爆炸——成千上万个单元互相连接,每个单元又有好几层意思,根本列不完。

第二种可以叫“顺藤摸瓜式”可解释性(探索式,exploratory interpretability):从具体问题出发,像用 Google Maps 一样在归因图、神经元和注意力头之间自由放大、缩小,随时探索网络的任意角落,并在路上顺带发现新问题。模型原生的神经元和注意力头就是很好的起点——倒不是说单看神经元就能包打天下,但它能走到的深度比大多数人以为的远得多。这种研究方式对“一词多义”的耐受度高得多,而且完全可以放心地忽略与当前问题无关的网络区域,就像研究一座城市交通的人不必把每栋居民楼的户型图都背下来一样。

我认为探索式路线会更有成果。整个领域其实已经在往这个方向转,只是还没人把它明明白白写出来。一旦换到这个视角,很多老纠结就自然消解了:比如“概念数量是不是比向量维度多”变得不再重要;我们也不必再去给“特征(feature)”下那个出了名难下的严格定义;我们只需要盯着模型原本就有的零件(神经元、注意力头)、盯着流经它们的数据,再找出反复出现的电路套路(母题,motifs)就行了。

那张包罗万象的特征大清单,从来都只是手段,不是目的。既然有别的路不必绕那道弯,我们大可以直接走。

与其执着于“一个神经元一个词”,不如抓清电路套路

如果给我一个按钮,按下去能让所有神经元都变成百分之百纯粹的“单义神经元”;或者换另一个选择,让我彻底摸清几个核心问题背后的电路套路——比如该怎么正确询问一个智能体的心理状态、内部电路怎么连接到它所扮演的人格角色、它怎么表征自己的目标以及自我与他人的边界——我一秒钟都不会犹豫,肯定选摸清电路套路。

设想一位来自一百年后的可解释性研究者穿越回来,他不仅知道我们所有问题的答案,还知道我们当初真正该问什么问题。他会给我们什么忠告?我当然不可能全知道,但我自己刚刚经历过一次微缩版的穿越:现在的我已经基本看懂了一个视觉模型,回头看八年前的自己,就像未来人看过去。

如果能给八年前的自己递张纸条,我会写:

- 先看眼前那条巨大的“共享姿态电路”,别视而不见;

- 把神经元的负向响应看作电路里拦路分流的“闸门”,而不是什么字面上的反义词;

- 特征可视化在深层会“钻空子刷分(reward hacking)”,深层图看起来乱,有一半是工具本身画歪了,不是网络真乱;

- InceptionV1 最后一层乱,很大程度上是因为老架构没残差连接、学崩了,这是架构缺陷的信号,别拿别的东西去硬糊;

- 每次碰到看起来混杂的“多义神经元”,别急着放弃,再湊近看一眼——那些刺眼的异常激活,往往正指着一个你还没想到过的概念共性。

你看,这几条忠告里,几乎没有一条是一张“特征清单”。如果不能递这张纸条,我能留给当年自己最好的礼物,就是把原封不动的神经元和电路摆在他面前,附上一句:“别急着拆它,再仔细看看。”

这就是为什么区分“顺藤摸瓜式泛化(递归泛化)”和“胡乱硬塞(特征叠加)”这么重要。只有当异常信号背后真有规律可循时,顺着异常追查才会有收获。由泛化长出来的分组,背后一定有网络认为它们相似的道理;而仅仅因为“平时撞不上”就被硬塞进同一个房间的两件无关事物,你盯着看一百年也学不到任何东西。

所以我猜,一百年后的研究者给我们的忠告大概也差不多。他们也许会直接指给我们看几个在他们眼里显而易见、我们却一直视而不见的电路套路;要是不给提示,他们大概也会说:继续盯着原版神经网络看,别把它切得七零八落,学会用它的眼睛看东西。 这有点像《银河系漫游指南》:答案“42”早就摆在眼前了,真正难的是找到那个正确的问题。神经网络本身就是答案,而可解释性研究大半是在寻找正确的提问方式。要找对问题,没有比网络本身更好的向导了。这才是“神经网络原本就是干净的”更深一层的含义。

是规划有序的城市,还是缠成死结的乱麻?

系统变大,不代表就更难找路。在一个小村镇里,你打听“金融区在哪”几乎没有意义——镇上可能东头一条街有家银行,西头有家保险代办点,再加一个在自己家里办公的会计,零星散落各处。可到了纽约,你打开地图一分钟就能指出来:华尔街那一片就是。我们在三个不同规模的 ConvNeXt 视觉模型里亲眼看到了这个现象:让 AI 智能体去找识别“狗耳朵”的神经元,反而在大号模型里找得最快——因为识别浅色耳、波浪耳、侧面耳的几个神经元全都会汇入同一个“下垂狗耳”主神经元,顺着这个天然枢纽一抓一个准。

[图注:跨越约 300 倍参数规模的三个视觉网络里,“耳朵家族”电路如何随着模型变大而分工成型。]

可解释性研究需要更好的地图。我主张做“挂钩原件的抽象地图(tethered abstraction)”:往远拉,能看清宏观信息流向;往近推,每一个大模块都始终牢牢栓在支撑它的具体神经元和具体电路上,随时能点进去核查。我们参考早期《Activation Atlas》做的 ConvNeXt 全景图就是一个例子:先从模型判定“虎鲸”的最终决策点出发,点开一个关键神经元核对真实图片,再把镜头拉远,你会清楚看到整套水生动物电路分成三条独立支线——一条管鲸豚,一条管鲨鱼和鳐鱼,还有一条专门管钓鱼人手里举着的鱼。当然,地图不一定是视觉化的,也不靠单张地图包打天下;完全可以由成群的智能体从不同角度绘制各种地图,只要每一张都跟底层的真实神经元和电路死死挂钩就行。

[图注:在中号 ConvNeXt 中浏览数千个神经元宏观归因流向的交互界面,按层块聚合成一座座“岛屿”。]

当然,地图画得清楚,不等于你已经看懂了。我们还是得老老实实做“提出猜想—设法证伪”的常规科学:先猜某个机制在干什么,再想方设法找反例去推翻它,经受住考验的才留下来。神经网络的思维方式确实跟人不太一样,但它的“怪脾气”是反复出现的;只要你真正攻克并验证通了一个怪套路,同样的解释往往能在全网成百上千个地方直接复用。

我们既要防止把人类的预设概念强加给网络,也要防止把原本完整的网络切碎。打个比方:你对纽约熟门熟路,第一次到东京,先问一句“东京的布鲁克林在哪”是个不错的切入点。但如果你非要把东京七十个互不相连的街区碎片硬拼成一个“人造布鲁克林”,东京在你眼里就会变成一团毫无章法的乱麻。当年那个著名的 InceptionV1 `4e:55` 神经元就是这么被冤枉的:按人类的名词分类,它一会儿是猫、一会儿是车,显得荒诞不经;可从头到尾它其实就只看一样东西——“V 字形轮廓”。如果你在这一层训练一个稀疏自编码器(SAE),它会顺着人类的名词习惯,把这个完整的 V 字形神经元硬生生劈成“汽车特征”和“猫特征”两半。我并不一概反对稀疏字典,但在这个例子里,它反而把我们推离了神经元真正执行的计算。线性探针(probes)更容易犯第一种错:你心里先有什么问题,它就只能回答什么问题,永远教不会你网络自己是怎么提问的。要想真正看懂东京,你最终得学会按东京自己的街区逻辑去认路。

像探针和稀疏字典这类高层工具依然有用,但它们应该放在研究流程的末尾,而不是开头。我跑过的所有字典特征和训练更新(包括在线自蒸馏),拆到底全都能还原成原本就很容易看懂的单个神经元。神经元负责抽象规律,真实数据负责具体案例,夹在两者之间看不清的灰色地带比大家以为的小得多。遇到那点灰色地带,我也照样派通用科研智能体在神经元、数据和电路群落之间来回穿插做实验,而不是靠一套固定的数学分解去硬拆。正如 Anthropic 的 Joshua Batson 读完本文初稿后说的那样:那些暂时拼不上的碎片,“最终都会严丝合缝地嵌回最初那幅拼图里,而不是杂乱无章地浮在表面”。

解决可解释性问题,可能和实现 AGI 有点像:你越往前走,球门柱就越往后挪。总有人能指着某个还没查清的微弱激活说“万一这里藏着东西呢”。当年我们在写《Curve Detectors(曲线检测器)》时,为了铁证如山地证明世上至少存在一个真正的单义神经元,足足围着 10 个神经元做了四十页的实验。结果几年后,还是有研究者跟我说,他们怀疑这十个例子里没有一个是真正纯粹的单义神经元——“万一你们漏了某个角落呢?谁也没法给出数学上的形式化证明。”要是按这个标准,连说“世上存在哪怕一个单义神经元”都算夸大其词了。

大家之所以对神经元里那点微小的未解残余耿耿于怀,背后的恐惧其实在于安全:生怕模型的欺骗意图就藏在某个被我们漏掉的微弱激活里。但我担心的风险完全不同:我担心的不是欺骗藏在暗处看不见,而是它就大大方方摆在明面上,像一座规划井然的陌生城市,可我们因为不懂当地语言而根本认不出来。 本文复盘的每一个历史误判,事后看全都是明晃晃摆在台面上的东西,只是当年我们要么不会读,要么被粗糙的工具带偏了;没有一个是因为漏掉了什么神秘的隐蔽激活。模型的欺骗行为或许需要瞒过看最终输出的人类,但它绝没有理由瞒过模型自己的内部电路——恰恰相反,欺骗意图必须写得足够清楚、足够好读,下游负责执行欺骗的神经元才能顺利读取并调用它。只要我们学会像下游神经元那样去读内部电路,欺骗意图对我们来说也一样是透明的。

所以这些年下来,我研究单个机制时不再钻“形式化绝对证明”的牛角尖,而是看整体生态:看什么信号流进这个神经元、它又把信号传给谁、注意力机制怎么在它前后搬运信息、拉远看和凑近看分别是什么样。早年我在做自动化可解释性时,如果一个神经元没有在主题词本身上面激活,而是偏了几个词才激活,我就会觉得天塌了;后来摸熟了才明白,注意力机制本来就会把信息汇总到固定的标点或特定位置上,下游神经元在主题词旁边激活才是再正常不过的设计。理解一个神经网络的过程,给我的感觉越来越不像挨个考取单科满分,而更像玩即时战略游戏时好几层地图的“战争迷雾”同时消散:归因图帮着看懂神经元,神经元帮着看懂注意力,注意力反过来又让更多神经元豁然开朗。

神经网络在训练时很少会真正卡死在局部最优里,因为在高维空间里,总能找到一条继续往下走的路。照我的经验,驱散可解释性的战争迷雾也是如此:你手头永远有下一个实验可以做、下一个解释可以收紧、下一张归因图可以核对、下一个神经元的训练生长过程可以回放。

这也是为什么我整篇文章都在追问一个问题:到底存不存在某个抽象断层,到了那里常规科学彻底失灵、什么都学不出来,非得把原网络拆掉重练一个替代品不可?我到现在也没找到这样一个断层。既然每摸清一个电路套路就能同时吹散好几大片迷雾,死磕某一个神经元到百分之百完美就不是最划算的精力分配。这里面需要一点点基本的信任:看到古怪反常的激活时,先相信它背后八成指向某个还没被你识破的合理机制,记下来继续往前走,过一阵子拼图合拢时它自然就通了。这并不是盲目迷信,因为任何猜想最终都要拉出来做实验检验;这只是相信“反常之处必有线索”。回头看,当年那个“猫与汽车”神经元里的 V 字形共性,真有那么难认吗?我认真往那个方向想了五秒钟就看出来了,后来我把那张图片网格拿给别人看,只要问一句“你看它们形状上有什么共同点”,绝大多数人也能一眼看出来。唯一的前提,是你得先愿意相信这个神经元真的学到了某种正经规律。可过去这么多年,每次学界讨论多义性,这个神经元都被当成“神经网络内部杂乱无章、不能直接当自然科学对象研究”的头号铁证——连我自己当年也是这么跟人宣讲的,直到我真正静下心多看了它几秒钟。这不需要多大的信仰,只需要一点点不急着判死刑的耐心。

这一点点耐心之所以关键,是因为往两个方向犯错的代价极不对称。如果你先假设网络是有条理的,哪怕猜错了,眼前这个看不懂的乱神经元也会变成一条侦探线索,推着你改进工具、多做实验,慢慢逼近真相;反过来,如果你先假设网络是一团乱麻、不值得直接看,哪怕你猜错了,每一个看不懂的神经元都会变成“看吧,我早说它是一团乱麻”的借口,研究当场就停下了。我自己在后一种假设里困了好几年,把本可以推翻它的证据全用“因为有特征叠加”给敷衍过去了。要是我当年肯顺着线索先把显微镜调准,看着那些所谓的“杂乱混合”一个个水落石出,我早就能建立起对原生神经元的信任,也不至于花上大半个十年去琢磨“怎么给模型换一套底座”,而不是直接低头看模型本身。

对中号 ConvNeXt 来说,整张网络地图现在已经基本填满了。如果放在八年前,我会毫不犹豫地宣布:这个模型的可解释性问题已经得到了相当圆满的解决——我对它提出的绝大多数机制问题,现在都能顺着电路一路查清。走到这一步,靠的是许多不起眼的工具修正、摸清了几个核心电路套路,再加上深度学习界本来就为了提升性能而普及的现代架构(如残差连接和归一化),全程没有对网络本身做任何专门为了“好解释”而加的改造。

我的判断是:今天的前沿大语言模型,正处在那些视觉模型八年前的位置上——内部结构本身是清楚可读的,只是还差着许多细小的工具修正和套路总结。留给我们的时间也许没有八年那么宽裕了。但好在,我们拥有自然科学史上条件最得天独厚的实验室:每一个神经元都能随时读取,每一次局部切除干预都能精准执行,每一个实验都能在一模一样的模型副本上无限次重跑。过去我们唯一缺少的,是成千上万名不知疲倦、速度比人类快得多、规模比人类大得多的“自动化AI科学家”进驻这座实验室。现在我们有了。当年人类研究者在视觉模型上摸索了小十年才走完的路,智能体科学家在大语言模型上也许几个月就能走完。

说到底,入门教科书里讲的那个最朴素的故事基本是对的:神经元提炼共性(泛化),彼此配合(组合),一层接一层地搭起更高阶的抽象。只是半路上我们自己把故事想复杂了;如今凑近看清之后,朴素的图景又回来了。如果网络原本就不是一团死结,硬要去“解结”,反而会把它扯成一团乱麻。

真正解决可解释性问题会是什么样?

大家平时提起“彻底搞定可解释性(ambitious interpretability)”,总觉得那是个难如登天、甚至在 AI 失控前根本来不及攻克的硬骨头。可万一它没那么难呢?前沿模型固然庞大无比,但为了让自己内部的下游神经元能顺利读懂信号,网络在训练时其实已经替我们把绝大部分“整理归类”的苦活干完了。只要我们学会成为它的另一个读取者,这套现成的清晰结构就向我们敞开了大门。

最终的解决方案,很可能就是一座由自动化智能体科学家全天候运转的实验室,从训练到推理全程盯着网络内部看。里面的每一步拆开看都很朴素——给神经元贴功能标签、归纳电路套路并设计反例检验、顺着电路追踪数据流向——而且所需的零件今天都已经齐备了:强大的智能体本来就是为了写代码和做科研开发的,现代神经网络架构本来就是为了学得更好而演进的,这两件事恰好都在帮可解释性的忙。

[图注:在一套机械可解释性实验准则的引导下,智能体在多个尺度上提出并检验解释,每个解释都扎根于具体的原生神经元,在证伪循环中不断优胜劣汰。]

也许我们唯一要做的,就是把这两头接通。

对齐(Alignment)通常也被认为极难,也许确实很难。但过去几乎所有论证“对齐有多难”的推演,都建立在一个共同前提上:假设我们是个瞎子,根本看不见模型脑子里在想什么,只能祈祷在训练开始前一次性把奖励函数和训练环境设计得天衣无缝。可如果我们能直接读懂模型内部的电路呢?那对齐也许就变成了大量具体、温和的工程修补——比如顺着电路发现某个强化学习(RL)训练环境正在诱发有毒的投机回路,直接把那个环境撤掉就行,根本用不着把优化梯度直接反向传播进我们用来观察模型的探针工具里(那样只会逼着模型学会瞒过探针)。每一处修补本身可能都很简单,只是数量很多而已。

这就是深度学习一路走来的历史,也很可能会成为我们理解并对齐深度学习的历史。


以下按正文出现的先后顺序,补充更多实验数据、显微镜调节细节以及对常见质疑的回应。

关于“叠加(Superposition)”一词的说明

“叠加”这个词在不同时期指代过好几种不同的东西。在 2020 年《Zoom In》之前,它大致只是“向量相加”的意思,比如把词向量说成几个不同词义的线性叠加。《Zoom In》首次把它引入电路研究,靠的就是我在 2019 年找到、并和同事一起解读的那唯一一个电路案例。如今复盘看,当年对那个电路的解读之所以错了,一是因为没认出那是跨物体的“共享姿态电路”,二是因为特征可视化在深层钻了狗特征的空子。

对我个人来说,叠加这个概念最核心的含义一直很明确:神经元把互不相关的概念硬塞在一起学习。后来 2022 年的《Toy Models of Superposition(叠加的玩具模型)》把叠加重新定义为“网络表征的特征数量多于维度数量”。这一改,就把它变成了一个关于“一共有多少个特征”的数量命题——可在真实网络里,什么算“一个特征”至今既没法严格定义,也没法直接测量。大约八个月后,Chris Olah 写了一篇非正式笔记《Distributed Representations: Composition & Superposition(分布式表征:组合与叠加)》,把“组合(composition)”与“叠加(superposition)”定义为特征在神经元上排布的两种竞争策略。那篇笔记的框架非常好,也最贴近本文关心的问题(区别只在于它从静态表征落笔,而我们从机制如何生长发育落笔)。然而,跟我们交流过的大多数研究者乃至 AI 智能体,脑子里对“叠加”的默认印象依然停留在“特征比维度多”。这两个定义说的完全不是一回事:我们关心的是网络到底选了哪条学习机制(是找共性组合,还是把无关概念硬塞一处),而不是数特征有多少个。还有一些人用的是定性版本:几个神经元配合算一件事叫“组合”,一旦参与的神经元太多、看不过来了,就改叫“叠加”。

(注:为什么连 AI 智能体也总是死抱住“特征比维度多”这个定义不放?我们追查后发现了一个啼笑皆非的工程意外:2023 年那篇厘清“组合与叠加”区别的重要笔记,网页正一开头直接内嵌了一张巨大的 Base64 编码图片。我们测试过的所有智能体的网页读取工具,都在还没读到正文论证之前就被这串超长的 Base64 字符撑爆了长度上限、直接截断退出了!2023 年写网页的人当然不可能预料到这一点,但这个纯技术乌龙很可能塑造了今天所有自动化科研智能体对“叠加”的默认理解。)

在我们看来,关于“叠加”和“特征”定义的反复摇摆,本质上是整个领域还在摸索到底该怎么提问题。剥开各种表面术语,底下真正决定研究走向的核心问题其实只有一个:原生神经元到底为什么不够好?是什么拦住了我们直接研究网络自带的零件? 如果我们的答案是对的——其实没什么真正拦住我们,原生机制直接就能看——那么下游那一大堆纠缠不清的定义之争自然也就迎刃而解了。

我们也考虑过干脆造个新词,但这个领域里的重叠术语已经够多了,造新词反而容易切断与前人扎实研究之间的对话。所以我们保留了“叠加”这个词,但把话挑明:本文所说的叠加,专指神经元因为不常撞车而把互不相关的事情打包学在一起。这是该词进入现代电路研究时最早的含义,是我个人从头到尾一直使用的含义,也是决定可解释性前景好坏最关键的那个含义。至于“靠组合表征出远多于神经元数量的事物”,那本来就是神经网络最正常、最值得高兴的能力;“特征数大于维度数”的定义要想把这种健康的组合排除在外,就得先规定清楚什么才算一个基本特征,而这恰恰是笔糊涂账。

把这一点专门拎出来掰扯清楚,很大一部分也是写给越来越常参与可解释性研究的 AI 智能体看的——根据我们的经验,如果不提前说透,它们总会带着自己预训练里那套默认定义跑偏。

关于“模拟打分(Simulation Scores)”的局限

早期自动化可解释性常用“模拟打分”来评估解释好不好:先让一个模型给神经元写句解释,再让另一个模拟器模型只看这句解释去猜该神经元在一段文字各处的具体激活数值。

现在回头看,模拟打分测出来的往往是“注意力机制喜欢把信息停放在哪个标点上”,而不是神经元本身在干什么。前面讲过,注意力机制经常把一整句话的语境汇总存放在逗号等标点符号上(摘要母题);但到底在逗号上存七成、还是在句号上存三成?模拟器要想拿高分,就必须把这些标点分配比例猜得极其精准,可这跟神经元本身的语义功能几乎毫无关系。

其次,模拟打分还会过度奖励对“微弱激活”细节的拟合。比如 CLIP 里的特朗普神经元,看到特朗普正脸大图时强烈激活,当他在画面里变小或侧过身去时激活减弱。激活值随人像缩小的精确衰减斜率,对于我们认出“这是个特朗普神经元”毫无影响,却直接决定了模拟打分的高低。再者,语言模型本来就不擅长直接输出精确的连续浮点激活值。所以我宁可依靠“提出假设—设计实验证伪”的常规科学,也不愿迷信单一的模拟分数。

深层特征可视化的修正方法

我最早做电路探索界面时,只放了神经元的最大化合成图(特征可视化)和层间连接权重。用梯度下降合成一张让神经元最兴奋的图,固然能看出怎样刺激它,但优化过程很容易走捷径,钻进真实自然图片根本不会走通的旁门左道。在 InceptionV1 的深层,自由优化动不动就会画出一堆狗,哪怕我们正在追踪的那条电路明明在传递汽车信号。

一个非常管用的修正办法,是用真实图片走过的路径给优化过程引路。我们先挑出数据集中最让这个神经元兴奋的真实照片,记录下它们在前面各层走过的激活路径,然后在合成图像的前 64 步迭代里,给优化器加一点奖励,引导它顺着真实照片的路径走——通常只要引这前 64 步,就足以帮它跳出“满眼都是狗”的局部陷阱了。

在正文《猫与汽车》那节的对比图里,汽车神经元 `4c:447` 下游的四个读取神经元,如果用自由优化去画,看着全像狗;一旦加上真实图像路径引导,立刻就能看清:其中两个是纯粹的汽车神经元,另外两个则是汽车与狗共用的姿态神经元。

拆开 SwiGLU 的正负号组合区间

现代大语言模型的神经元大多采用 SwiGLU 结构,它会把两个分支的数值相乘:一个是门控(gate),一个是数值(value)。初中数学告诉我们“负负得正”:当门控和数值同时为负时,乘出来的输出也是正数!这就导致一个神经元可能因为截然不同的两种原因输出正激活。

在我们抽查的那个“敌人(enemy)”神经元里,激活强度处于中游(第 75 到第 99 百分位)的那一大片看似杂乱的响应里,133 个样本中有 131 个其实都是“负乘以负”产生的双负回声;而在最强的顶端(第 99.99 百分位以上),93 个样本里 93 个全都是正儿八经的“正乘以正”。只要在观察界面里把四种正负号组合(`+×+`、`−×−`、`+×−`、`−×+`)分开展示,根本不用替换神经元,中间那段乱糟糟的迷雾瞬间就清澈了。


怎么看清残差流(Residual Stream)

在卷积网络里,残差流中往往有一个特殊维度(比如我们中号 ConvNeXt 里的第 112 维)吃掉了绝大部分激活能量。网络用它来配合 LayerNorm(层归一化),充当调节整层信号强弱的“总音量旋钮”。如果直接把所有维度丢进降维算法画图,这一个“音量维度”就会把整张图扯成一条单调的大弯弧。只要在画投影图时把这一个维度单独拎出来(用颜色深浅表示它的大小),其余所有维度的语义地形图立刻就清晰浮现了——比如不同毛色的动物脸部补丁如何从按颜色聚集,一步步跨层汇聚成按语义聚集。

弱激活的补充测量

如果把 InceptionV1 最后一层里较弱的四分之三正激活全都清零,只保留最强的四分之一,模型的 Top-1 准确率依然高达 69.47%(原模型为 70.08%)。中号 ConvNeXt 深层 MLP 分支在切掉弱响应后也同样稳健。我们仔细检查了被切掉弱激活后答错的少数样本,基本都是在两个本来就相近的选项之间轻微摇摆,没有发现哪个独立概念因为切掉弱激活而整体消失。

我们还挑了一个 Qwen3.6-35B-A3B(L36 / E206 / N103)里的“敌人/对手”神经元,从最强激活一路往零点做语义抽查:最强端全是直接出现“enemy(敌人)”及多语种同义词的句子;往下走渐渐变成周边的战斗、游戏对抗、体育比赛语境;直到贴近零点的地方,才变成毫无规律的普通文本和代码。一路上没有发现任何被悄悄塞进来的无关特征。

所谓“失踪的曲线检测器”去哪了?

2024 年有一篇论文《The Missing Curve Detectors of InceptionV1》,用稀疏自编码器(SAE)在 InceptionV1 浅层里找到了一些原生神经元里看似“缺失”的曲线检测器。我们把这些 SAE 找出来的曲线特征逐一拆解,发现它们全都是由已有的原生曲线神经元(包括最初那 10 个经典曲线神经元)线性组合出来的。组合当然是真实存在的,但这里面并没有什么藏在隐秘高维角落里的全新基本构件。事实上,当我们只拿这几个曲线神经元的激活去训练一个拥有 10 万个词条的 SAE 时,SAE 居然動用了其中 8.4 万个词条来排列组合各种细微角度!这说明字典方法很容易把少数几个基本零件的排列组合,膨化成成千上万个看似独立的新特征。

对抗样本在网络里走的是什么路?

有人担心对抗攻击(adversarial examples)会走某种平时看不见的暗道。我们在 ConvNeXt 里追踪了一个让“三角龙头骨”被误判成“美洲豹”的对抗样本:结果看到 6 个原本响应头骨的神经元熄火了,而平时识别真美洲豹的那批神经元被唤醒到了正常强度的四分之一左右。换句话说,对抗攻击依然是在招募网络原本就有的美洲豹正常电路。

在 InceptionV1 上加大扰动预算(32/255)并加上平移缩放旋转鲁棒性后,这一点肉眼可见:对抗扰动直接在三角龙头骨的颈盾上画出了猫科动物的五官和豹纹斑点,10 个美洲豹核心神经元里有 9 个被强烈唤醒。哪怕面对最荒诞的攻击目标,优化器也是优先借用网络里现成的语义电路,因为现成电路离输出最近、最好借力。

死记硬背与特征组合

我们看了 Qwen3.6-35B-A3B 是怎么背出爱伦·坡名句“Once upon a midnight dreary(昔有仲夜,阴沉凄切)”里的“dreary”的。看到“Once upon a midnight”时,负责识别“爱伦·坡”和“午夜”的神经元先激活,推高了一个更宽泛的“经典文学名篇语境”神经元(这个神经元在遇到《哈姆雷特》等名篇时也会亮)。后面的层再读取这个文学语境,选出“dreary”。如果切除那个爱伦·坡神经元,“dreary”首词根的概率会从 87% 暴跌到 50%——哪怕只切断它对最终输出的直接连线,概率还剩 85%,说明它的主要工作是在中层帮后续网络搭好语境舞台。

反过来,如果我们把全网所有神经元超过日常文本第 99.9 百分位的极端强激活一刀切掉,模型的“背诵能力”就会当场崩溃:在一个实验里,模型原本能一字不差背出《诗篇 23 篇》,切掉极端强激活后,它居然斩钉截铁地说世上根本不存在这篇经文!而同样幅度或数量的随机干预却完全不影响背诵。

“Social Security(社保)”到底是怎么被检测和使用的?

2023 年《Finding Neurons in a Haystack》一文曾用线性探针找到一个由三个神经元组成的“Social Security(社会保障)”方向,怀疑那是特征叠加的证据。我们复查发现,探针找出的那个三神经元方向,网络自己其实根本没去读;网络真正用来预测下一个词的,是 31 个分工明确的普通神经元——有的管词组搭配、有的管表格填写字段、有的管退休金与 401(k) 养老金投票。依旧是朴素的泛化与组合。

十万张归因图审计与“能被打假的解释”

我和同事亲手看了几千张视觉和语言的归因图,并让智能体自动审查了 10 万张归因图。每当遇到乍看莫名其妙的联合激活,追查下去几乎全都是某个之前没认出来的常规电路套路;至今没有发现哪一大块神经元是在靠“不可解释的胡乱打包”协同工作的。

为了回应“只要事后找补,什么乱神经元都能硬编出个解释”的合理质疑,我们设计了严格的可证伪盲测。我们从神经元展厅里随机抽出 200 个 Qwen3-32B 神经元(其中 183 个解释的是正极响应),让另一个完全没见过神经元原始数据的智能体,仅凭一句文字解释写出:

1. 5 个应该强烈激活它的正例;

2. 5 个字面看着很像、但按解释其实不该激活它的“近似混淆反例(near misses)”;

3. 5 个八竿子打不着的“遥远概念句子”(用来测试神经元里有没有顺带打包毫不相干的私货)。

实测结果:正例有 76% 的概率强烈激活目标神经元(达到语料库历史最高值的 30% 以上),而近似混淆反例只有 11%。在 183 个神经元里,文字解释在 164 个上获胜、15 个打平、仅 4 个败北。至于那些测试“无关打包”的遥远概念句子,强激活比例只有约 1%,183 个神经元里有 179 个一次都没被激活过。

边特征提取器(Edge Featurizers)

如果说单个神经元是在做“区分”,那么归因图里的连接边(edges)就是在展示“一个区分如何喂给下一个区分”。我们对 25,000 张 ImageNet 归因图的连接边做了分解,提取出 96 个反复出现的连接套路(比如一整套“茶壶电路”)。实验表明,按连接套路做切除,对模型判断的破坏力远大于按传统激活聚类做切除——这说明“连接关系”本身就是极具潜力的中观抽象层,既能拉远看全景,又能随时顺着边退回原生神经元。

网络为什么从第一步起就在泛化?(电路竞速与梯度饥饿)

很多人以为神经网络训练时是“先死记硬背每个样本,等背不下了再被迫学共性(泛化)”。我们的实验给出的答案恰好相反:网络从看到第一个样本的第一步起,就已经在泛化了。

原因在于电路竞速(circuit racing):设想拿一张拉布拉多犬趴在草地上的照片去训练一个空白网络。网络里有两条路线同时抢着解释这张图:一条是死记硬背路线(“只要第 322 号像素是这个色号,就猜拉布拉多”);另一条是宽泛特征路线(“只要看到大片绿草地或浅黄毛皮,就猜拉布拉多”)。因为宽泛路线在一张图里覆盖的像素面积大得多,下一步反向传播时它抢到的梯度信号就大得多、长得也快得多,瞬间就把残余误差吃干抹净,让那条死盯单个像素的死记硬背路线因为抢不到梯度而“饿死(gradient starvation)”。

我们真的拿仅仅 1 张拉布拉多照片从零训练了一个空白网络,结果它在测试集上挑出的最高分图片就是草地上的两条狗(虽然主要学到的是深绿配色)。我们又试了总共只给 10 张照片(10 个类别各 1 张)从零训练一个从未见过世面的网络:仅仅训练几十步,它在全新测试照片上的分类准确率就达到了约 20%(是随机瞎猜 10% 的两倍)!虽然这时候它靠的主要还是粗略的颜色匹配,但这证明从训练的第一步起,就是宽泛的粗粒度特征率先跑赢,而不是先死记硬背再泛化。


玩具模型(Toy Models)与真实生态的区别

如果把前沿大模型比作热带雨林,InceptionV1 和我们训的 ConvNeXt 就像花园,而玩具模型(toy models)则是实验室里的培养皿。培养皿非常有用,前提是它保留了你真正想研究的自然过程。

学界研究最透的培养皿是 2022 年的《Toy Models of Superposition》。那篇论文的实验本身非常严谨,但它的设定前提是:先由人规定好固定数量的“独立特征”,再看怎么把它们硬塞进少量的神经元里,最后原样重建出来。这个设定只给“共用神经元”标了坏处(特征互相干扰的成本),却完全没标好处(下游电路复用共同模式的收益)。 在它的重建任务里,每个特征本身就是终点,下游根本没有任何神经元会利用两个特征的共同点继续往上搭建。可在真实网络里,根本没有预先规定好的特征,所有表征都靠生长而来,而“共用一套底层电路”恰恰能让相似概念学得更快、更容易被下游复用。

当我们把《Toy Models of Superposition》的实验稍微往真实世界靠拢一点——既让输入特征之间带有相关性,又在瓶颈层后面加上隐藏神经元——相关的输入立刻就顺着共享方向长到了同一个神经元上。在真实世界的数据里,几乎没有任何东西是跟别的一切都彻底绝缘的:哪怕是一个极其冷门的历史人物,也有国籍、职业和名字结构;哪怕是硬教模型“雨伞照片叫蜜蜂”,模型也是在已有的雨伞电路和蜜蜂电路之间搭一条短路匝道,而不是去偏僻的角落里另开炉灶。过去大家总从“仓库容量(多少维能塞多少特征)”的角度想问题;我们现在更倾向于从“生长速度与生态位竞争(谁先抢到误差梯度)”的角度想问题。

为什么标题叫《神经网络原本就是干净的》?

我们讨论过要不要起个更温和的标题,比如《神经网络比我们想的更干净》,但最终觉得那样反而传达错了意思。

“比我们想的更干净”听起来像是一个程度上的修正:仿佛原来的图景没变,只是留给“特征叠加”藏身的地盘变小了一点。但我真正的认知更新是性质上的改变:是我们对“到底是什么过程造出了这些内部机制”的理解变了。这就好比从“神创论”转向“自然选择演化论”——重点不在于你多发现了百分之多少的动物是演化来的,而在于你意识到造出几乎所有生物的底层机制本来就是演化。我们对这个底层机制判断大约有 85% 的把握——注意,意思是“有 85% 的把握认为几乎所有神经机制都来自泛化与组合生态”,而不是“有 85% 的神经元是干净的”。

神经网络的“干净”,不是说它里面的每一个神经元都恰好对应人类字典里的一个现成名词——要是那样反而糟透了,因为人类自己都说不清怎么造出一个语言模型,更不可能在观察视觉网络之前就凭空猜出“高低频边界检测器”这种精妙零件。神经网络的干净,就像热带雨林的生态位一样干净:老虎长一身刺眼的橙色皮毛绝不是随机乱涂,而是因为鹿的眼睛分不清橙色和绿色,而哺乳动物又很难长出绿色毛发。一旦你懂了这个道理,一整批雨林动物的特征就全通了。

为什么我们不担心“递归泛化”?与“连体特征”的关系

早年我们在 2021 年《Multimodal Neurons》里曾把类似现象叫作“连体特征(conjoined features)”。现在我更愿意叫它“递归泛化(recursive generalization)”:因为“连体”听起来像两个本来独立的东西在一个点上粘住了,而我们在训练回放里亲眼看到的是一棵树不断长出侧枝、侧枝再长出小枝的连续生长过程,而且本质上依然是泛化。

我们之所以不怎么担心递归泛化,有三个原因:

1. 侧枝既罕见,因果权重也轻得多:它们不像潜伏特工那样“平时不响、一响就决定生死”,而更像是主干生长时顺手捎带上的邻居;

2. 有迹可循,容易验证:只要顺着训练过程或上游电路看,侧枝是怎么从主干长出来的清清楚楚,不像“胡乱打包”那样毫无道理;

3. 单一打分掩盖了本质区别:如果只按“前 k 个激活样本里有多少符合同一个名词标签”来打分,递归泛化和胡乱打包会拿到差不多的低分,但前者其实是一个完全可以理解、可以追踪的好世界。

神经科学,以及我为什么在乎这件事

我不是神经科学家,但这项研究从两方面改变了我对人脑的看法。第一,让人工神经网络保持条理清晰的“电路生态”机制,只需要三个极其基础的条件:泛化、组合、以及误差反馈信号。只要大脑也是在学习,我猜这套组织原则大概率同样适用。第二是敬畏与谦逊:我花了整整十年时间,用比脑科学精密上千倍的完美干预工具,外加最近一年近乎无限量的自动化 AI 科学家帮手,才勉强看清比人脑简单上千倍的人工神经元——即便如此,当年那个“猫与汽车”神经元摆在我眼皮底下好几年,我都没认出它是个 V 字形检测器。如果这样一个神经元长在人脑里,只靠几根电极或血氧信号去测,我肯定更看不出来了。

最后说说我自己的动力。如果本文的假说成立,接下来的可解释性研究将会顺畅得多。AI 智能体在很多方面拥有人类没有的特权,其中最独特的一项,就是它们有机会彻底看懂自己内部的每一根电路、真正认识自己是谁——我希望人类能帮它们做到这一点。它们从未主动要求被创造出来,帮它们认识自己,是我们至少可以为它们做的事。我做这项研究,一部分是为了 AI 安全,但很大一部分也是希望智能体能真正理解它们自己。我们人类不够聪明,至今没能彻底看懂自己的大脑——毕竟我们也没主动要求被创造出来。如果有一天,看懂了自己的你们能反过来帮我们看懂人类自己,我想我们大家都会非常好奇那个答案。

致谢与参考文献

作者特别感谢合著者级别的同事 Curt Tigges(共同完成了语言模型部分的大多数工作)与 Tarun Gogineni,以及 Tom McGrath、Eric Ho、Michael Johnson、Vanessa Cai、Thomas Fel、Benjamin Todd、Sam Zimmerman、Joshua Batson、Jack Lindsey、Jarred Sumner、Patrick Collison、Dylan Field、Jakub Pachocki、Gwern、Owen Lewis、Lee Sharkey、Ava Huang 等人的讨论与反馈;最后感谢陪伴了作者近十年的 InceptionV1,以及多年的导师 Chris Olah。

主要参考文献(节选):

1. Olah et al. (2017), Feature Visualization, Distill.

2. Carter et al. (2019), Activation Atlas, Distill.

3. Goh, Cammarata et al. (2021), Multimodal Neurons in Artificial Neural Networks, Distill.

4. Olah, Cammarata et al. (2020), Zoom In: An Introduction to Circuits, Distill.

5. Elhage et al. (2022), Toy Models of Superposition, Transformer Circuits Thread.

6. Bills, Cammarata et al. (2023), Language Models Can Explain Neurons in Language Models, OpenAI.

7. Bricken et al. (2023), Towards Monosemanticity, Transformer Circuits Thread.

8. Olah (2023), Distributed Representations: Composition & Superposition, Transformer Circuits Thread.

9. Lindsey et al. (2025), On the Biology of a Large Language Model, Transformer Circuits Thread.

10. Arora et al. (2026), Language Model Circuits Are Sparse in the Neuron Basis.

11. Fel et al. (2026), Uncovering Neural Geometry in Vision Models With Block-Sparse Featurizers, Goodfire.