2024年4月机制可解释性研究动态与团队招聘计划
Circuits Updates — April 2024
Anthropic可解释性团队分享了2024年4月的研究进展与招聘规划。团队现有17人,预计2024至2025年将持续大规模扩张,重点招聘管理、研究科学家和工程师等职位。研究方面,团队探讨了字典学习的扩展规律,分析了计算资源分配与稀疏自编码器(SAE)训练效果的关系,并以一个具体案例展示了通过大规模超参数扫描寻找最优配置的过程。团队强调,这些成果属于初步分享,类似于实验室会议上的非正式交流。
可解释性研究揭示AI内部机制,助力构建更安全可靠的AI产品。
机制可解释性领域的开放职位
Chris Olah、Shan Carter、Adam Jermyn、Josh Batson、Tom Henighan
机制可解释性是一个规模较小的领域,尽管发展相当迅速。我们估计,目前专注于这一主题的全职岗位大约有50个。Anthropic的可解释性团队现有17人,因此我们占据了这些岗位的相当大一部分。正因如此,我们认为,让外界了解我们的招聘计划,对于考虑进入这一领域的人来说可能很有价值。(但请注意,虽然这些是我们目前的预期,但可能会有所变化。)
在2023年全年,我们招聘了10人。2024年我们仍在持续招聘,并预计在今年及2025年期间,团队规模将继续大幅增长。我们预计这将涉及几个不同的岗位:
- 管理者——我们认为这是目前招聘中最关键的岗位。
- 我们的增长很可能受限于管理能力,而为团队找到合适的人选,可能对我们的长期成功产生巨大影响。
- 填补这一岗位一直颇具挑战,因为我们寻找的是具备研究或工程环境经验、对人员管理和项目管理充满热情且经验丰富、并对我们的研究议程和使命抱有热忱的人。
- 研究科学家——我们寻找的是优秀的科学家,不一定是经验丰富的机器学习研究者。我们团队中的大多数人来自其他背景(天体物理学、凝聚态物理、数学、神经科学)。我们确实希望看到候选人对机制可解释性有投入的迹象,并具备足够的编码能力来实施和运行有雄心的实验。
- 研究工程师 – 我们正在寻找优秀的软件工程师。有机器学习经验是加分项,但并非必需——我们非常欢迎希望向研究方向发展的优秀软件工程师加入。我们团队有多位这样的人才(例如 Nelson Elhage、Tristan Hume)加入后迅速成长并开展前沿研究的成功案例。如果你没有机器学习背景,但熟悉线性代数、多元微积分,并对机器学习和机制可解释性有基本了解,将是很大的加分项。
几点说明:
- 在团队内部,我们并不严格区分研究工程师和科学家。所有团队成员都同时从事研究和工程工作。不过,人们往往在某一方面更为擅长,我们也会尝试招聘不同侧重点的人才,以保持团队平衡。
- 如果你对我们新的可解释性架构项目(见下文)感兴趣,请申请研究科学家或研究工程师职位,并在申请中注明。
如果你对我们的工作充满热情,并认为自己适合其中某个职位,欢迎申请!
字典学习的规模定律
Jack Lindsey、Tom Conerly、Adly Templeton、Jonathan Marcus、Tom Henighan
在较大模型上训练稀疏自编码器(SAE)进行字典学习,计算量可能非常大。理解以下两点至关重要:(1)使用更多计算资源能在多大程度上改善字典学习结果;(2)这些计算资源应如何分配。本文对这些问题进行了深入分析。作为案例研究,我们考察了在四层 Transformer 第三层之后的残差流上训练的 SAE。
尽管我们缺乏评估字典学习运行质量的黄金标准方法,但我们发现训练过程中使用的损失函数——即重构均方误差与特征激活值 L1 惩罚项的加权组合——是一个有用的代理指标。除非另有说明,我们在训练及后续分析中均使用 `MSE + 5L1` 作为损失函数。不过,当我们使用 MSE 与 L1 的其他线性组合,或追踪 MSE 与特征激活值 L0“范数”的线性组合时,我们发现了定性相似的结果。我们注意到,具有不同 L1 系数的损失函数之间不具备可比性——最终,我们会选择能为下游可解释性分析产生最有用特征的 L1 系数。
一旦我们选定了感兴趣的损失函数,就可以将字典学习视为一个标准的机器学习问题,并对其应用超参数优化的“缩放定律”框架(参见 Kaplan 等人 2020 年、Hoffman 等人 2022 年的研究)。在 SAE 中,计算量主要取决于两个关键超参数:要学习的特征数量,以及用于训练自编码器的步数。如果输入维度及其他超参数保持不变,计算量(以 FLOPS 计)与这些参数的乘积呈正比。我们对这些参数进行了彻底的扫描,同时固定了其他超参数(学习率、批次大小、优化协议等)的值。
我们尤其关注追踪损失函数及感兴趣参数的计算最优值;也就是说,在给定 FLOPS 数量下所能达到的最低损失,以及实现该最小值所需的训练步数/特征数量。
我们做出了以下观察:
- 在我们测试的范围内,给定训练步数和特征数量的计算最优选择,损失函数大致按照幂律随 FLOPS 的增加而下降。
- 随着计算预算的增加,FLOPS 在训练步数和特征数量上的最优分配比例也大致按照幂律进行缩放。
- 总体而言,最优特征数量的增长速率似乎略快于最优训练步数的增长速率。例如,随着特征数量增加,对应的计算最优训练步数会随特征数量呈幂律增长,其指数介于0.5到1之间。不同损失函数下的缩放趋势参数存在差异。
- 在损失函数中加大对稀疏性惩罚的权重(即提高L1系数)会导致计算最优训练步数增加。对于相对更强调稀疏性惩罚的损失函数,其计算最优训练步数会增大。这表明在SAE训练过程中,重构损失的优化速度快于稀疏性损失——这一现象已通过实验观察得到验证。
- 在这些实验中,我们还研究了优化基于L0的损失函数(即均方误差与特征激活值L0"范数"的线性组合)所需的参数。由于此类损失函数无法直接通过梯度下降优化,我们转而采用在训练过程中遍历不同L1惩罚系数,并选取使基于L0的损失函数最小化的系数值。研究发现,与优化基于L1的损失函数相比,在给定特征数量下,最小化基于L0的损失函数需要更多训练步数。虽然我们尚未精确界定这一差异的成因,但推测是由于额外训练步数能使SAE将微小的特征激活值完全归零。
这些趋势的具体细节可能因底层模型、被探测的模型层以及其他优化细节而异。将学习率等其他超参数与训练步数和特征数量联合优化,可能会影响缩放趋势。不过,我们预计这些定性趋势中的许多都具有广泛适用性。我们建议,开展类似的分析将对其他研究 SAE 的团队有所帮助,尤其是在计算成本不断上升的情况下。从小规模实验中推断出的趋势进行外推,可以为资源密集型字典学习运行中的超参数选择提供更明智的依据。我们也要谨慎地指出,对 SAE 特征进行定性检查仍然很重要,因为 SAE 损失与 SAE 特征的定性有用性之间的关系并不完美,并且在规模足够大时可能会失效。
关于我们如何训练 SAE 的最新进展
Tom Conerly、Adly Templeton、Trenton Bricken、Jonathan Marcus、Tom Henighan
自《迈向单义性》一文以来,我们对 SAE 的训练方式进行了改进,目标是降低 SAE 损失。虽然新的方案相比我们在《迈向单义性》中发表的内容有了显著改进,但我们认为仍有进一步改进的空间。我们并未对每一项决策进行消融实验,因此很可能可以做一些简化。这项工作明确聚焦于降低损失,并未深入探讨损失并非我们关心的最终目标这一问题。以下是我们当前 SAE 训练方案的总结:
设 n 为输入和输出维度,m 为自编码器隐藏层维度。设 s 为数据集大小。给定编码器权重 W_e \in \mathbb{R}^{m \times n}、解码器权重 W_d \in \mathbb{R}^{n \times m} 以及偏置项 \mathbf{b}_e \in \mathbb{R}^{m}、\mathbf{b}_d \in \mathbb{R}^{n},在数据集 X \in \mathbb{R}^{s,n} 上的运算和损失函数如下:
\begin{aligned}\mathbf{f}(x) &= \text{ReLU}( W_e \mathbf{x}+\mathbf{b}_e ) \\ \hat{\mathbf{x}} &= W_d \mathbf{f}(x)+\mathbf{b}_d \\ \mathcal{L} &= \frac{1}{|X|} \sum_{\mathbf{x}\in X} ||\mathbf{x}-\hat{\mathbf{x}}||_2^2 + \lambda\sum_i |\mathbf{f}_i(x)| ||W_{d,i}||_2 \end{aligned}
请注意,W_d 的各列具有不受约束的 L2 范数(在《迈向单义性》一文中,它们被约束为范数 1),并且稀疏惩罚项(第二项)已修改为包含 W_d 各列的 L2 范数。我们认为这是我们从《迈向单义性》一文所做的最重要的改动。
b_e 和 b_d 初始化为全零。W_d 的元素初始化方式为:各列指向随机方向,并具有固定的 L2 范数,范围在 0.05 到 1 之间(该值基于 n 和 m 以非原则性方式设定,在大多数情况下 0.1 可能是合理的)。W_e 初始化为 W_d^T。
数据集 X 的行会被打乱。数据集通过一个单一常数进行缩放,使得 E_{x∈X}[||x||_2] = √n。此改动的目的是让相同的 λ 值在不同规模的 Transformer 生成的数据集上具有相同的含义。
训练过程中,我们使用 Adam 优化器,beta1=0.9,beta2=0.999,且不使用权值衰减。我们的学习率根据缩放定律变化,但 5e-5 是一个合理的默认值。学习率在训练的最后 20% 阶段线性衰减至零。训练步数根据缩放定律变化,但 20 万步是一个合理的默认值。我们使用的批大小为 2048 或 4096,我们认为这低于临界批大小。梯度范数被裁剪到 1(使用 clip_grad_norm)。我们在训练过程中改变 λ 的值,初始为 0,并在训练的前 5% 步数内线性增加至最终值。λ 的一个合理默认值是 5。
我们不使用重采样或幽灵梯度,因为在训练结束时,我们只有不到 1% 的特征是死亡状态(死亡指在 1000 万个样本上均未激活)。训练结束后我们不进行任何微调。
从概念上讲,特征的激活值现在是 f_i ||W_{d,i}||_2,而不是 f_i。为了简化分析代码,我们构建了一个模型,该模型能做出相同的预测,但 W_d 各列的 L2 范数为 1。我们通过以下方式实现:W_e' = W_e ||W_d||_2,b_e' = b_e ||W_d||_2,W_d' = W_d / ||W_d||_2,以及 b_d' = b_d。
潜在的改进方向
我们的初始化方法可能需要改进。随着 m 增大,初始化时的重构损失也在增加。这可能会对足够大的 m 值造成问题。如果改进初始化方法,或许可以移除梯度裁剪。
我们尚未看到重采样或 ghost grads 能带来损失上的改善,但有可能对"低价值"特征进行重采样会改善损失。
某种形式的训练后处理(例如《Addressing Feature Suppression in SAEs》)可能会有所帮助。
减少收缩效应是一个有待改进的方向。
可能还有其他我们尚未意识到的改进空间。
实验结果
给定一个固定的数据集 X,随着 m 增大,损失持续下降。我们已能将 m 增加到数百万量级而不会出现问题。这一结论适用于多种不同规模的 Transformer 架构、MLP 激活函数或残差流。相比之下,我们之前在《Towards Monosemanticity》中的设置在使用较大的 m 值时,往往会出现更高的损失、大量死亡特征或大量几乎相同的特征。
我们通过观察不同 λ、m、Transformer 规模以及 MLP 或残差流运行下的损失,来调整训练设置。我们通常对以下两类改动感到满意:一类是能持续将损失降低至少 1% 的改动;另一类是损失大致不变但能简化训练设置的改动。在我们的设置下,比较不同运行在 (L0, MSE) 或 (L0, MLP 损失恢复百分比) 上的表现时需要谨慎,因为 L0 可能不稳定。例如,我们曾遇到过这样的情况:使用一半数量的特征、训练时间加倍,导致 MSE 和 L1 的变化小于 1%,但 L0 却下降了 30%。
以下是一些来自小模型的结果。所有运行均使用 131,072 个特征、200k 训练步数、batch size 为 4096。请注意,f 的 L1 值取决于我们对激活值的特定归一化方式。
运行类型 | Lambda | L0(f) | L1(f) | 归一化 MSE | 交叉熵损失恢复比例 |
1 层 MLP | 2 | 99.62386 | 17.22560 | 0.03054 | 0.98305 |
1 层 MLP | 5 | 38.68729 | 11.59591 | 0.06609 | 0.96398 |
1 层 MLP | 10 | 20.06870 | 7.12194 | 0.13120 | 0.91426 |
4 层 MLP(第 2 层) | 2 | 264.02930 | 95.03488 | 0.06824 | 0.96824 |
4 层 MLP(第 2 层) | 5 | 69.92758 | 56.92384 | 0.12546 | 0.92904 |
4 层 MLP(第 2 层) | 10 | 26.48456 | 39.42661 | 0.18485 | 0.88438 |
4 层残差流(第 2 层) | 2 | 81.58595 | 30.37323 | 0.09543 | 0.9572 |
4 层残差流(第 2 层) | 5 | 33.23121 | 19.12259 | 0.16295 | 0.90443 |
4层残差流(第2层) | 10 | 8.71466 | 12.53889 | 0.25455 | 0.83883 |
字典学习特征对模型行为的影响有多强?
稀疏自编码器发现的特征经过优化,能够在保持稀疏激活的同时重建模型活动。我们的团队及其他研究人员观察到,这些特征通常似乎编码了特定的、可解释的概念。然而,将这些特征用于可解释性研究的一个潜在担忧是:尽管这些特征对人类具有语义上的意义,但它们可能并未捕捉到模型实际用于计算的抽象概念。我们进行的初步实验表明,模型实际上“倾听”特征值的程度显著高于随机水平。
我们的实验流程如下:我们在一个经过训练的四层Transformer的第三层之后的残差流上训练一个稀疏自编码器(SAE)。对于每个SAE特征,我们选取该特征具有非零激活的数据点的一个代表性样本,将该激活值分别缩放0倍(“特征消融”)和2倍(“特征加倍”),并按照与《迈向单义性》论文中相同的流程,将更新后的值传播回模型(缩放因子为0的情况对应特征消融)。我们计算在此流程之后模型损失的平均增加量。
我们的目标是确定:与具有类似统计特性的其他模型扰动相比,重新缩放特征激活值所导致的损失增加是否特别高。如果是这样,将证明特征方向对模型中的下游计算施加了“特殊”影响。为此,我们将特征缩放与几种对照实验进行了比较:
- 对同一层的残差流活动施加随机扰动,使随机扰动的幅度与特征缩放所引发的扰动幅度相匹配(图中称为“随机扰动,模型激活”)。
该控制实验旨在检验特征消融是否比随机扰动更具显著性。可以说这是一个较弱的基线,因为模型激活的方差很可能不是各向同性的,因此残差流活动的某些维度对模型行为的影响可能较小。SAE 特征向量经过训练以重建模型活动,因此很可能集中在更重要的维度上。因此,作为更强的基线,我们尝试了以下方法:
- 对特征激活向量施加与特征缩放幅度相同的随机扰动(图中称为“随机扰动,特征激活”),并按照与特征缩放相同的流程将该扰动传播到模型中。
这些实验揭示了几个有趣的发现:
- 我们发现,特征消融对模型性能的影响显著大于两种控制条件。
- 有趣的是,消融特征激活对模型性能的影响远大于以相同幅度放大特征,这表明特征对模型输出的影响可能在特征激活值较高时(部分)趋于饱和。
我们还将特征扰动的影响与其他更具结构性的扰动形式进行了比较。在所有情况下,我们确保模型激活空间中扰动的幅度与相应特征消融的幅度相等。
- 在控制扰动幅度的条件下,沿与 SAE 重建方向相反的方向施加扰动(图中称为“抑制特征激活”)——相当于根据所有特征的活动比例,将特征消融“分散”到所有特征上——会产生与单特征消融相似的效果。
- 在控制量级的前提下,与模型活动方向相反的扰动(图中称为“抑制模型激活”)对输出的影响小于特征抑制。需要注意的是,抑制模型激活与抑制特征激活不同,因为模型激活包含两个成分——SAE 的偏置项以及 SAE 无法解释的误差向量——这两个成分不受特征抑制的影响。这一结果表明,特征抑制效应并不能简单地归因于其对激活范数的影响。事实上,在较深的网络层中,抑制模型激活的效果几乎消失。
- 与 Gurnee 的研究结果(本更新中另有详述)一致,沿重建误差方向 -(x - SAE(x))(图中称为“沿残差扰动”)进行的量级控制扰动,其影响也显著大于随机扰动,尽管仍小于特征消融的影响。虽然尚无定论,但这些结果表明,Gurnee 的发现与“SAE 重建误差主要沿特征方向分布”这一模型是一致的,因为这将解释为何这些误差对模型输出的影响大于随机扰动。
- 特征消融的显著影响在残差流特征上比在 MLP 层特征上更为突出。这表明残差流特征与 MLP 特征可能在网络中扮演不同的功能角色,尽管我们对此结果的理解仍然有限。
在该图中,结果是对上下文、token 和特征进行平均后得到的,误差棒表示各特征平均值的标准误差。
这些结果尚属初步,但总体上支持这样一种观点:SAE 所揭示的特征方向是影响模型输出的高杠杆“操纵杆”。
可解释性架构项目
Chris Olah, Adam Jermyn
我们不时注意到,Transformer 架构的某些方面给可解释性研究带来了更多困难。例如,层归一化使得电路分析与归因更加复杂,多年来我们投入了大量精力试图消除它。同样,SoLU 是我们为提升模型可解释性所做的一次尝试,尽管我们最终认为它并非解决该特定问题的正确方法。
我们相信,现在对模型架构进行投入,未来或许能省去大量可解释性方面的工作。为此,我们正在组建一个实验性工作组,探索更具可解释性的架构。该工作组将研究那些可能降低可解释性难度的架构决策,并与预训练团队合作,支持相关方案的落地。目前,这个工作组的规模将小于主要的可解释性团队(字典学习、注意力机制与电路分析)。该工作组将同时嵌入可解释性与预训练两个团队,其成员有时也会参与这两个更大团队的项目。
如果你对这个新工作组感兴趣,请申请加入我们的团队,并注明有意从事可解释性架构方面的工作(参见上文)。
热质说与错误理论的效用
汤姆·赫尼根
“热质说”是一种过时的热学理论,其核心观点可概括如下:
存在一种名为“热质”的无质量、自排斥物质,它所在之处的物体会因此升温。
事后看来,很容易对这套理论嗤之以鼻,觉得它很荒谬。但事实上,这套理论在当时能够解释大部分(即便不是全部)可用的热力学测量结果。以热流现象为例。根据热质说,一个热的(高温)物体含有大量热质。这些热质相互排斥,但由于受热物体边界的限制而无法进一步扩散。如果我们把这个热物体与一个冷物体接触,热质就会扩散到冷物体中。随着热质从前者流向后者,热物体冷却,冷物体升温。
现在,我邀请读者设身处地,把自己想象成一位17世纪的科学家,设计一个能够证伪热质说的实验。此外,想象一下,如果你对最终取代热质说的热动力学理论一无所知,这项任务会多么具有挑战性。这个思考练习让我个人对过去的热质论者产生了深深的共情。
我认为热质说最有趣的一点是,尽管它是错误的,但它所催生的一些见解至今仍被我们奉为真理。
一个显著的例子是卡诺循环。引用维基百科的说法:
萨迪·卡诺完全基于热质说进行推理,发展出了他的卡诺循环原理,该原理至今仍是热机理论的基础。卡诺对蒸汽机能量流的分析(1824年)标志着思想的萌芽,这些思想在三十年后最终促成了热力学第二定律的发现。
换句话说,通往热机理论乃至最终热力学第二定律的道路,在某种程度上是由一个错误的热理论铺就的。热质说的另一个成功之处,是修正了牛顿对空气中声速的计算,这一修正结果在此后近一个世纪里都保持有效。
对可解释性的启示
我认为,我们这些可解释性研究人员可以从热质说(caloric theory)的历史中学到很多教训。我们最初的理论很可能是错误的,我们应该愿意在面对实验证据时修正自己的理论。设计能够证明这些理论错误的实验,将是我们面临的核心挑战。但我想强调的更微妙的一点是,错误的理论仍然可以提供真正的价值。即使我们认为叠加假说(superposition hypothesis)未来会被证伪——这完全有可能——利用它也并非徒劳之举。我们仍有希望它能“足够正确”,从而照亮实际的安全成果,甚至带来超越叠加假说本身的科学理解。
开放问题:归因字典学习(Attribution Dictionary Learning)
Chris Olah, Adly Templeton, Trenton Bricken, Adam Jermyn
普通的字典学习只考虑激活值。它忽略了梯度和权重。如果我们不这样做,似乎应该能使其效率大大提高。
更根本地说,特征似乎具有双重性质。向后看输入方向,它们是“表征”;向前看输出方向,它们是“动作”。这两者都应该是稀疏的——也就是说,它们应该稀疏地表示由输入产生的激活值,同时也应该稀疏地影响那些作用于输出的梯度。最终,它们似乎应该是这两种稀疏性的一种结合。
一个具体方案
对此的一种具体实现方式可能是改变字典学习,要求线性归因(linear attribution)是稀疏的。
考虑一个字典学习问题 x ≃ x' = Dy,其中 x 是密集的激活值,y 是稀疏的特征激活值,D 是字典。一个传统的 SAE 损失函数可能是:
L_{SAE} | = | ||x - x'||² | + | λ||y||₁ |
重构误差 | 激活值稀疏惩罚项 |
回顾一下,线性归因向量 A_x = x ⊙ ∇_xL_{LLM} 给出了 x 的每个元素如何影响大语言模型损失的近似值。对于 y 也可以计算类似的归因向量 A_y = y ⊙ ∇_yL_{LLM}。请注意,如果我们保存了损失相对于输入激活值的梯度,那么 y 相对于大语言模型损失的梯度很容易计算,因为 ∇_yL_{LLM} = D^T∇_xL_{LLM},其中 D 是字典。
然后我们可以在 SAE 损失中添加一些项,以鼓励其稀疏性并完全解释归因:
L_{SAE} | = | ||x - x'||^2 | + | λ||y||_1 | + | α||A_y||_1 | + | β(∑ A_{x-x'}) |
= | ||x - x'||^2 | + | λ||y||_1 | + | α||y ⊙ ∇_yL_{LLM}||_1 | + | β|(x - x') · ∇_xL_{LLM}| | |
重构误差 | 激活稀疏性惩罚 | 归因稀疏性惩罚 | 未解释归因惩罚 |
这直接优化了我们最近在《使用特征轻松进行电路识别》中用于研究特征电路的归因向量的稀疏性(另见 Marks 等人关于特征电路归因的研究、Kramár 等人关于归因补丁的研究,以及 Olah 等人关于视觉模型中神经元归因的研究)。
我们简要研究了这种损失函数在单层 Transformer 中产生的特征。乍看之下,它们在该语境下似乎与我们常规的特征表现差不多。但我们并不认为这具有决定性。我们计划在未来某个时候重新审视这个问题,但可能还需要几个月的时间,在此期间,这对其他人来说可能是一个有趣的研究课题。
隔离不同长度的电路路径
Chris Olah
在《Transformer 电路的数学框架》中,我们简要描述了一种用于研究长度至多为 k 的路径的算法:
然而,我们并没有真正解释为什么这个算法有效,而且它很容易被忽略。我们认为在某些情况下这个算法可能很有趣,本次更新提供了一个更直观的解释。
让我们想象一下应用这个算法时会发生什么:
很容易看出,在第一次迭代中,我们隔离了长度为 0 的路径(即我们只使用残差流上的直接路径)。但也要注意,我们正在保存长度为 1 的路径。
在下一次迭代中,我们使用长度为 1 的路径,并保存长度为 2 的路径。以此类推。
来源:Anthropic:Transformer Circuits(可解释性研究) · transformer-circuits.pub