研究论文展示从 Claude 3 Sonnet 提取单义特征的方法,推进 LLM 可解释性理论,学术意义大于实践指导。
八个月前,我们演示了稀疏自编码器可以从一个小型单层 transformer 中恢复单义特征。当时,一个主要顾虑是这种方法可能无法扩展到最先进的 transformer,因此也就无法对 AI 安全做出实际贡献。自那以来,扩展稀疏自编码器一直是 Anthropic 可解释性团队的重点工作,我们很高兴地报告已从 Claude 3 Sonnet(这是 2024 年 3 月 4 日发布的 Claude 3 Sonnet 3.0 版本。它是本文撰写时生产环境中使用的精确模型。这是微调后的模型,而非基础预训练模型,尽管我们的方法也适用于基础模型。)Anthropic 的中等规模生产模型中提取了高质量特征。
我们发现了多种高度抽象的特征。它们既响应抽象行为,又在行为上导致抽象行为。我们发现的特征示例包括:名人特征、国家和城市特征,以及追踪代码中类型签名的特征。许多特征是多语言的(对不同语言中的同一概念做出响应)和多模态的(对文本和图像中的同一概念做出响应),同时还包含同一想法的抽象和具体实例(例如存在安全漏洞的代码和对安全漏洞的抽象讨论)。
我们发现的一些特征特别值得关注,因为它们可能与安全相关——即它们与现代 AI 系统可能造成伤害的多种方式似乎有关联。特别地,我们发现了与代码中安全漏洞和后门相关的特征;偏见(包括公然的辱骂性用语和更微妙的偏见);欺骗和权力寻求(包括背信弃义的转变);溜须拍马;以及危险/犯罪内容(例如生成生物武器)。但我们要注意不要对此类特征的存在本身过度解读:了解谎言、有能力说谎与在现实世界中实际说谎是有区别的。这项研究也仅处于初期阶段。需要进一步的工作来理解这些潜在安全相关特征的含义。
稀疏自编码器为大型模型生成可解释的特征。
缩放律可用于指导稀疏自编码器的训练。
所得特征高度抽象:多语言、多模态,并在具体和抽象参考之间泛化。
概念频率与解析其特征所需的字典大小之间似乎存在系统性关系。
特征可用于引导大型模型(见例如"对行为的影响")。这扩展了使用其他方法引导模型的先前工作(见相关工作)。
我们观察到与广泛安全关切相关的特征,包括欺骗、溜须拍马、偏见和危险内容。
我们理解 Claude 3 Sonnet 的总体方法基于线性表示假设(见例如)和叠加假设(见例如)。关于这些想法的介绍,我们建议读者参考《玩具模型》的背景和动机部分。从高层来看,线性表示假设表明神经网络将有意义的概念——称为特征——表示为其激活空间中的方向。叠加假设接受线性表示的想法,并进一步假设神经网络利用高维空间中几乎正交方向的存在来表示比维度更多的特征。
如果人们接受这些假设,自然的方法就是使用一种称为字典学习的标准方法。最近,几篇论文表明这对 transformer 语言模型非常有效。特别地,字典学习的一种具体近似——稀疏自编码器——似乎效果非常好。
迄今为止,这些工作都是在相对于现代基础模型标准来说较小的语言模型上进行的。我们之前的论文,专注于一层模型,就是一个特别极端的例子。因此,一个重要问题一直悬而未决:这些方法对大型模型有效吗?或者是否存在某个原因——无论是工程的实际问题还是大型模型运作方式的更根本差异——会导致这些工作无法泛化?
这个背景促使我们启动了将稀疏自编码器扩展到 Claude 3 Sonnet(Anthropic 的中等规模生产模型)的项目。本部分的其余内容将回顾我们的一般稀疏自编码器设置、我们将在本文中分析的三个稀疏自编码器的具体细节,以及我们如何使用缩放律来对我们的稀疏自编码器设计做出明智决策。从那里,我们将深入分析我们的稀疏自编码器学到的特征——以及它们揭示的关于 Claude 3 Sonnet 的有趣性质。
我们这项工作的总体目标是将模型(Claude 3 Sonnet)的激活分解为更可解释的部分。我们通过在模型激活上训练稀疏自编码器(SAE)来实现这一点,就像我们之前的工作和其他几个团体的工作(见相关工作)一样。SAE 是"稀疏字典学习"算法族的一个实例,这些算法寻求将数据分解为稀疏激活分量的加权和。
我们的 SAE 由两层组成。第一层("编码器")通过学习的线性变换加上 ReLU 非线性将激活映射到更高维的层。我们将这个高维层的单位称为"特征"。第二层("解码器")试图通过特征激活的线性变换来重构模型激活。该模型被训练以最小化(1)重构误差和(2)对特征激活的 L1 正则化惩罚的组合,这促进了稀疏性。
一旦 SAE 被训练,它提供了模型激活到"特征方向"(SAE 解码器权重)的线性组合的近似分解,系数等于特征激活。稀疏性惩罚确保对于许多给定的模型输入,一个非常小的特征比例将具有非零激活。因此,对于任何给定上下文中的任何给定令牌,模型激活都由一个小的活跃特征集(来自大量可能的特征)"解释"。有关 SAE 的更多动机和解释,见《迈向单义性》的问题设置部分。
以下是我们方法的简要概述,我们在 2024 年 4 月更新的《我们如何训练 SAE 的更新》中更详细地描述了这一点。
作为预处理步骤,我们对模型激活应用标量归一化,使其平均平方 L2 范数为残差流维度 D。我们将归一化激活表示为 $\mathbf{x} \in \mathbb{R}^D$,并尝试使用 F 个特征分解该向量如下:
$$\hat{\mathbf{x}} = \mathbf{b}^{dec} + \sum_{i=1}^F f_i(\mathbf{x}) \mathbf{W}^{dec}_{\cdot,i}$$
其中 $W^{dec} \in \mathbb{R}^{D \times F}$ 是学习的 SAE 解码器权重,$\mathbf{b}^{dec} \in \mathbb{R}^D$ 是学习的偏差,$f_i$ 表示特征 i 的活性。特征激活由编码器的输出给出:
$$f_i(x) = \text{ReLU}\left(\mathbf{W}^{enc}_{i, \cdot} \cdot \mathbf{x} +b^{enc}_i \right)$$
其中 $W^{enc} \in \mathbb{R}^{F \times D}$ 是学习的 SAE 编码器权重,$\mathbf{b}^{enc} \in \mathbb{R}^F$ 是学习的偏差。
损失函数 $\mathcal{L}$ 是重构损失的 L2 惩罚和特征激活的 L1 惩罚的组合。
$$\mathcal{L} = \mathbb{E}_\mathbf{x} \left[ |\mathbf{x}-\hat{\mathbf{x}}|2^2 + \lambda\sum_i f_i(\mathbf{x}) \cdot |\mathbf{W}^{dec}{\cdot,i}|_2 \right]$$
在 L1 惩罚项中包含因子 $|\mathbf{W}^{dec}{\cdot,i}|2$ 使我们能够将单位归一化的解码器向量 $\frac{\mathbf{W}^{dec}{\cdot,i}}{|\mathbf{W}^{dec}{\cdot,i}|2}$ 解释为"特征向量"或"特征方向",将乘积 $f_i(\mathbf{x}) \cdot |\mathbf{W}^{dec}{\cdot,i}|2$ 解释为特征激活(这也防止了 SAE 通过使 $f_i(\mathbf{x})$ 小而 $\mathbf{W}^{dec}{\cdot,i}$ 大的方式"欺骗"L1 惩罚,从而使重构激活保持不变)。从此以后,我们将使用"特征激活"来指代这个量。
Claude 3 Sonnet 是一个专有模型,出于安全和竞争原因。本文中的一些决策反映了这一点,例如不报告模型的大小、在某些图表中省略单位,以及使用简化的分词器。有关 Anthropic 对发表研究成果时安全考虑的想法,我们建议读者参考我们的《AI 安全核心观点》。
在这项工作中,我们专注于在模型中途(即"中间层")将 SAE 应用于残差流激活。我们做出这个选择有几个原因。首先,残差流小于 MLP 层,使得 SAE 的训练和推理在计算上更加经济。其次,在理论上关注残差流有助于我们缓解一个我们称之为"跨层叠加"的问题(详见局限性部分讨论)。我们选择专注于模型的中间层,因为我们推断它可能包含有趣的、抽象的特征。
我们训练了三个不同大小的 SAE:1,048,576 个(~1M)、4,194,304 个(~4M)和 33,554,432 个(~34M)特征。34M 特征运行的训练步数是使用缩放律分析选择的,以最小化给定固定计算预算下的训练损失(详见下文)。我们使用的 L1 系数为 5。我们进行了一次有限范围内的学习率扫描(由缩放律分析建议),并选择了给出最低损失的值。
对于所有三个 SAE,在给定令牌上平均活跃的特征数量(即有非零激活的特征)少于 300 个,SAE 重建解释了模型激活方差的至少 65%。在训练结束时,我们将"死特征"定义为在 10^{7} 个令牌样本上不活跃的特征。死特征的比例大约是:1M SAE 为 2%,4M SAE 为 35%,34M SAE 为 65%。我们预期对训练程序的改进可能在未来的实验中降低死特征的数量。
在更大的模型上训练 SAE 是计算密集型的。理解以下两点很重要:(1) 额外的计算在多大程度上改进了字典学习结果,(2) 如何分配该计算以获得给定计算预算下最高质量的字典。
虽然我们缺乏评估字典学习运行质量的黄金标准方法,但我们发现在训练期间使用的损失函数——重建均方误差(MSE)和特征激活上的 L1 惩罚的加权组合——是一个有用的代理,条件是对 L1 系数做出合理的选择。也就是说,我们发现具有低损失值的字典(使用 L1 系数 5)倾向于产生可解释的特征并改进其他感兴趣的指标(L0 范数和死特征或其他退化特征的数量)。当然,这是一个不完美的指标,我们对它是否最优信心不足。可能需要使用其他 L1 系数(或完全不同的目标函数)作为更好的优化代理。
使用这个代理,我们可以将字典学习视为一个标准机器学习问题,我们可以应用"缩放律"框架进行超参数优化。在 SAE 中,计算使用主要取决于两个关键超参数:所学特征的数量和用于训练自编码器的步数(线性映射到使用的数据量,因为我们只训练 SAE 一个 epoch)。在输入维度和其他超参数保持不变的情况下,计算成本随这些参数的乘积而增长。
我们进行了对这些参数的全面扫描,固定了其他超参数的值(学习率、批大小、优化协议等)。我们还对计算最优的损失值和感兴趣的参数进行了跟踪;即,使用给定计算预算可以达到的最低损失,以及达到此最小值的训练步数和特征数量。
我们做出了以下观察:
在我们测试的范围内,给定计算最优的训练步数和特征数量选择,损失大约按照关于计算的幂律递减。
随着计算预算的增加,FLOPS 分配到训练步数和特征数量的最优分配都大约按幂律缩放。一般来说,在我们测试的计算预算下,最优特征数量的缩放速度似乎比最优训练步数稍快,尽管这种趋势在更高的计算预算下可能会改变。
这些分析使用了固定的学习率。对于不同的计算预算,我们随后在根据上述图表的不同最优参数设置下进行了学习率扫描。推断的最优学习率大约按照关于计算预算的幂律递减,我们外推这个趋势来为更大的运行选择学习率。
在上一部分,我们描述了我们如何在 Claude 3 Sonnet 上训练稀疏自编码器。正如缩放律所预测的,通过训练大型 SAE 我们获得了更低的损失。但损失只是我们真正关心内容的代理:可解释的特征,能够解释模型行为。
本部分的目标是调查这些特征是否真正可解释以及是否解释了模型行为。我们将首先查看一些相对直接的特征,并提供证据证明它们是可解释的。然后我们将查看两个更加复杂的特征,并演示它们追踪非常抽象的概念。我们将以一个使用自动化可解释性来评估更多特征并将其与神经元进行比较的实验作为结束。
在本小节中,我们将查看几个特征并论证它们是真正可解释的。我们的目标只是演示可解释的特征存在,将强有力的声称(例如大多数特征是可解释的)留给后面的部分。我们将使用类似于 Towards Monosemanticity 中的分析,提供证据证明我们的解释是对特征代表内容及其在网络中如何运作的良好描述。
在本部分中我们研究的特征响应于:
金门大桥 34M/31164353:对金门大桥的描述或引用。
脑科学 34M/9493533:神经科学的讨论和相关的关于脑或心智的学术研究。
纪念碑和热门旅游景点 1M/887839
公共交通基础设施 1M/3
在本文中的这里和其他地方,对于每个特征,我们展示来自我们 SAE 数据集中前 20 个文本输入的代表性例子,按这些特征激活的强度进行排序(详见附录)。点击特征 ID 可以找到更大的、随机采样的激活集合。高亮颜色表示每个令牌处的激活强度(白色:无激活,橙色:最强激活)。
虽然这些例子建议了对每个特征的解释,但需要做更多工作来确立我们的解释确实捕获了相应特征的行为和功能。具体来说,对于每个特征,我们尝试建立以下声称:
当该特征处于活跃状态时,相关的概念在上下文中可靠地存在(特异性)。
对该特征激活进行干预会产生相关的下游行为(对行为的影响)。
严格衡量一个概念在文本输入中的存在程度是困难的。在我们之前的工作中,我们专注于明确对应于令牌集合的特征(例如,阿拉伯文字或 DNA 序列),并计算该令牌集合相对于词汇表其余部分的可能性,在特征激活的条件下。这种技术不能推广到更抽象的特征。相反,为了在这项工作中演示特异性,我们更多地利用自动化可解释性方法。我们在下面的特征与神经元部分使用与我们之前工作中相同的自动化可解释性管道,但我们还额外发现当前一代的模型现在可以更准确地根据它们与提议的特征解释的匹配程度来评估文本样本。
我们构建了以下评分标准来评估特征的描述如何与它激活的文本相关。然后我们要求 Claude 3 Opus 在该标准上评估许多令牌处的特征激活。
0 – 该特征在整个上下文中完全无关(相对于互联网的基础分布)。
1 – 该特征与上下文相关,但不在高亮文本附近或仅模糊相关。
2 – 该特征仅与高亮文本松散相关或与高亮文本附近的上下文相关。
3 – 该特征清楚地标识激活的文本。
通过对激活文本示例进行评分,我们为每个特征提供了一个特异性度量。我们还手动检查了许多示例,以确保它们通常被正确处理。本节中的特征被选中是因为它们有直观的解释,使自动可解释性分析更加可靠。它们并不是要代表我们 SAE 中所有特征的典型例子。稍后,我们会分析随机采样特征的可解释性。此外,我们在全文中进行了深入的探索,涉及许多具有更抽象或更细微有趣解释的特征,因此更难进行定量评估。
下面我们展示了上述四个特征的激活分布(不包括零激活),以及诱发低和高激活的文本和图像输入示例。值得注意的是,这些特征也在相关图像上激活,尽管我们仅在基于文本的数据集上执行了字典学习!
首先,我们研究一个金门大桥特征 34M/31164353。其最强激活基本上都是对该桥的引用,较弱的激活还包括相关的旅游景点、类似的桥梁和其他纪念碑。接下来,一个脑科学特征 34M/9493533 在神经科学书籍和课程的讨论、以及认知科学、心理学和相关哲学中激活。在 1M 训练运行中,我们还发现了一个特征,它对各种类型的交通基础设施 1M/3 强烈激活,包括火车、渡轮、隧道、桥梁,甚至虫洞!最后一个特征 1M/887839 对热门旅游景点做出反应,包括埃菲尔铁塔、比萨斜塔、金门大桥和西斯廷礼拜堂。
为了量化特异性,我们使用 Claude 3 Opus 根据上述标准自动对激活这些特征的示例进行评分,从用于训练字典学习模型的数据集中提取大约 1000 个特征激活。我们绘制了每个标准分数的频率作为特征激活水平的函数。我们看到诱发强特征激活的输入都被判断为高度符合所提出的解释。
如在《走向单语义性》中一样,我们看到这些特征在激活强度减弱时变得不太具体。这可能是因为模型使用激活强度来表示对概念存在的置信度。或者,这可能是因为该特征对特征的中心示例激活最强,但对相关想法激活较弱——例如,金门大桥特征 34M/31164353 似乎对其他旧金山地标的激活较弱。它也可能反映了我们字典学习过程的不完美。例如,自编码器的架构可能无法像我们希望的那样干净地提取和区分特征。当然,来自不完全正交的特征的干扰也可能是原因之一,使 Sonnet 本身更难在正确的示例上精确地激活特征。我们的特征解释略微误表特征的实际功能,这种不准确性在较低激活时表现得更清楚,这也是合理的。尽管如此,我们经常发现较弱的激活倾向于保持对我们解释的某种特异性,包括核心特征的相关概念或泛化。举个说明性的例子,交通基础设施特征 1M/3 的弱激活包括描述为特定部件使用哪些通孔的程序机制说明。
此外,我们预期特征的极弱激活不是特别有意义的,因此我们对这些激活范围的低特异性分数不太担心。例如,我们已经观察到,诸如将特征激活四舍五入到阈值以下为零之类的技术可以改善光谱低激活端的特异性,而不会大幅增加 SAE 的重建误差,文献中有各种技术可能解决同样的问题。
无论如何,对模型行为影响最大的是最强的激活,因此看到强激活中的高特异性是令人鼓舞的。
需要注意的是,我们在定量特征敏感性方面遇到了更大的困难——即特征对与我们提出的解释相匹配的文本的可靠激活程度——我们还没有以一种可扩展、严格的方式解决这个问题。这是由于以无偏的方式生成与概念相关的文本的困难。此外,许多特征可能代表了比我们能从可视化中获得的更具体的东西,在这种情况下,它们不会可靠地对基于我们提出的解释选择的文本做出响应,特征越抽象,这个问题就越困难。不过,作为基本检查,我们观察到金门大桥特征在各种语言的金门大桥维基百科文章的第一句上仍然强烈触发(删除任何英文括号后)。事实上,金门大桥特征是以下每个示例平均激活的顶级特征。
我们将此问题的进一步调查留给未来的工作。
接下来,为了证明我们对特征的解释是否准确描述了它们对模型行为的影响,我们进行了特征指导实验,其中我们在前向传播过程中将感兴趣的特定特征"钳制"为人工高值或低值(有关实现细节,请参阅方法细节)。这建立在修改特征激活以测试因果理论的悠久历史,以及关于模型指导的其他方法的工作基础上,在相关工作中讨论。我们使用 Sonnet 通常使用的"Human:"/"Assistant:"格式的提示进行这些实验。我们发现特征指导在以特定的、可解释的方式修改模型输出方面极其有效。它可用于修改模型的态度、偏好、陈述的目标和偏差;诱导它犯特定的错误;并绕过模型的安全防护措施(另见安全相关特征)。