首页 / 文章

神经网络中的叠加现象:简化模型、SAE与特征融合

网络如何存储比维度更多的特征,干扰成本是什么,以及为什么稀疏自编码器能够融合数据无法区分的特征。

发布者:REACTAPP.TOP阅读约 19 分钟4398 词

来源: **Superposition: How Neural Networks Cheat at Storage**

存储超出容量限制的数据

想象一个隐藏层仅有二维的神经网络,此时每个输入都由两个数字表示,即平面上的一个点 (x, y)。现在假设该网络需要追踪五种不同的特征,这听起来似乎不可能——二维空间本应只能存储两个特征,每个轴对应一个特征。

解决之道在于叠加。网络可以通过在相同空间内沿相互重叠的方向存储特征,从而表示出超过其维度数量的特征。与其说“第一维存储特征A,第二维存储特征B”,不如说每个特征都有自己对应的方向,多个特征可以共存于同一组维度中。目前仍存在的问题是:为何这种方式可行?网络又是如何区分这些重叠的特征的?

一个层可以通过将多个特征的方向相加,同时存储这些活跃的特征。

在上面的公式中,激活值 h 是该层对一个输入的输出,表现为一个包含 d 个数值的向量。在简化模型中 d 的值为 5,而在 GPT-2 的第 8 层中这一数值为 768。每个特征 i 都具有非负的强度 x_i,总共有 n 个特征,简化模型中有 20 个,GPT-2 的具体数值则未知。每个特征在 d 维空间中还拥有一个固定的单位方向 W_i,所有这些方向共同构成一个 d × n 的矩阵 W,其第 i 列即为 W_i。

简单来说,每个被激活的特征都会沿着自身的方向推动表示向量。该层仅存储最终的向量总和 h,不会为各个特征单独设置存储空间。

若要读取某个特征的信息,只需计算 h 与该特征方向向量的点积即可。

从该推导的第一行到第二行,利用了点积可分配到求和上的性质。将 W_i 与 h 做点积后,每个特征会产生一个项,其中 j = i 的项会被单独提取出来,而 j ≠ i 的求和则代表其余所有项。第一部分是一个单位向量与自身的点积,结果为1,因此该项恰好就是 x_i,即真正的强度值。第二部分则汇总了其余所有特征,每个特征都会根据其方向与特征 i 的相似程度被赋予相应的权重。

这一个方程贯穿了整个主题,并可分为两种情况:

  • 当 n ≤ d 时,特征数量不超过维度数,因此每个方向都可以与其他所有方向呈直角。此时所有的点积 W_i · W_j 均为零,干扰项消失一半,读数十分精确。特征数量的上限为 d。
  • 当 n > d 时,这种情况是不可能实现的。在 d 维空间中,最多只有 d 个向量能够两两垂直,因此必然存在部分向量相互重叠,干扰项永远不可能为零。

叠加效应意味着人们有意接受第二个条件:使用超过 d 个特征,但为此需要承担一定的干扰。

为何干扰是可以容忍的

只有当其他特征处于激活状态时,干扰才会产生影响。如果特征 j 处于关闭状态,那么 x_j 的值为零,其贡献也就消失了。若每个特征以概率 p 被激活,那么预期存在的干扰特征数量约为 (n − 1)p。

当特征数量 n = 20 且概率 p = 0.001 时,预期存在的干扰特征数为 19 × 0.001 = 0.019 个。大约 98% 的输入情况下没有其他特征处于激活状态,因此读数是精确的。虽然干扰确实存在,但实际出现的情况极为罕见。

高维空间有助于进一步降低干扰。虽然只有 d 个方向能够完全正交,但仍有大量近乎正交的方向存在。随机单位向量的预期平方夹角为 1/d,因此典型的夹角约为 1/√d。

在GPT-2的768维空间中,这一数值相当于0.036,对应的角度约为87.9°。随机选取的两个方向几乎天然就会近乎垂直。较大的空间能够容忍那些小空间无法接受的误差。

实际网络在输出后会加入ReLU函数,其定义为ReLU(z) = max(0, z):正数值会被保留,负数值则变为零。由于权重值永远不会是负数,负向干扰项会将输出值拉至零以下,而ReLU函数会将其限制在0,这对于出现异常的特征来说恰好是正确的处理方式。因此负向干扰不会造成影响,只有正向干扰才会带来问题。

简化模型

该模型的构建方式遵循《叠加的简化模型》论文(Elhage等人,2022年):选取20个特征,将其强制通过5维空间后再取回这些特征。

该图展示了整个模型,它将20个数值压缩为5个,然后再尝试恢复这20个数值。

  • x代表真实值,即生成的20个特征强度。
  • W是一个5×20的矩阵,其第列对应方向W_i。
  • h是经过压缩后的5个数值形式。
  • x̂为重建结果。
  • b包含20个额外的偏移量,会在ReLU操作之前被加入。
  • 训练的目标是最小化真实值与其重建结果之间的均方误差。

转置矩阵 Wᵀ 就是将原矩阵旋转90度后的形式。该模型没有专门的读取矩阵,正因如此,第 i 列才成为特征 i 的方向,也使得“特征的几何结构”这一概念具有实际意义。矩阵 W 中共有 5 × 20 = 100 个数值,加上 b 中的 20 个数值,总计 120 个可训练参数。

这些特征中没有一个是被赋予了名称的。特征7并非“复数特征”,它仅仅是第7列而已。这是设计上的特点而非缺陷。由于没有输入语言信息,输出结果也不可能涉及语言内容,因此任何模式都只能是用于压缩稀疏信号,这也解释了为何同样的模式会出现在真实的模型中。

稀疏性是主要控制参数。每个数值都是独立生成的:以概率 S 生成0,否则在0到1之间均匀分布。共进行二十次试验,S 的值从0逐步增加到0.5、0.9,再到0.999,中间分别取0.95、0.99和0.997,较低范围则由0.3、0.7和0.8构成。

该架构为一个没有深度也没有注意力机制的单一矩阵。W在输入端进行压缩,在输出端解压缩,最后再加一个ReLU层。将 h 称为隐藏层有些言过其实,因为它实际上只是 W 乘以 x 的结果。在CPU上,这二十次试验总共只需大约一分钟即可完成。

读取WᵀW

WᵀW 并非事后添加的诊断参数,而是在将 h = Wx 代入读取公式时自然出现的。

WᵀW是一个20×20的矩阵,显示了模型实际应用于真实值的运算方式,其中(i, j)位置的元素为W_i · W_j。一张图就能呈现完整的解决方案:沿对角线可以看到每个特征被保留的程度,数值接近零意味着模型已放弃该特征;而偏离对角线的部分则显示了哪些特征之间存在相互影响,全为零的矩阵则表示完全没有干扰。理想状态是单位矩阵,而若模型无法达到这种状态,则会呈现叠加效应。

同一个模型在四种不同的稀疏度下被展示出来。左侧有五个深色的对角线单元格,说明有十五个特征被放弃,且由于不存在干扰,对角线之外没有颜色显示。右侧则有十二个深色的对角线单元格,同时对角线之外有一些彩色斑点,这些颜色正是额外七个特征所对应的代价。

线性控制实验只是去掉了ReLU函数,其他部分保持不变。

在所有稀疏度水平下,甚至包括0.999时,都恰好存储五个特征,且这一情况在全部十次实验中均成立。因此,去除非线性特性不仅会削弱叠加效应,还会彻底消除它。相关论点也从“ReLU有助于提升性能”转变为“ReLU是实现目标的先决条件”,因为如果没有自动消除负向干扰的功能,那些额外的特征就永远无法发挥价值。

左侧面板显示的是相位变化情况。上升的曲线代表ReLU模型中特征数量从5增加至12的过程,而水平线则表示始终不变的线性控制模型。中间面板展示的是成本变化,平均维度从1.0下降到0.38。右侧面板则显示了守恒定律,即在全部二十次实验中总特征数始终为5。

维度度量的是什么

中间和右侧的面板使用的是每个特征的维度值,即某个特征自身所占据的维度大小。

该公式的上方是特征 i 的存储强度的平方,下方则是它与包括自身在内的所有特征的平方重叠总和。当一个特征位于单独的轴上时,没有其他特征与其重叠,因此下方数值等于上方数值,即 D_i = 1。若有 k 个特征共享同一轴,则下方数值为 k 个相同项之和,即 D_i = 1/k。

将所有特征的数值相加后,两种模型在所有稀疏度下的二十次测试结果均在4.94到5.00之间。当 S = 0.9 时,有九个特征各自以0.5556的维度被存储,而5 ÷ 9恰好等于0.5556。叠加并不会增加容量,只是将固定的容量分割成更小的部分而已。

平均值为2/3就能证明是三角形吗?

中间面板显示的平均维度为2/3,这看似证明了三个特征构成了三角形。但实际上并非如此,而这个错误反而成了该项目中最有价值的部分。

当三个特征之间的夹角为120°时,其平均值D将为2/3,但其他布局也会出现这一数值,因为D仅计算重叠部分的平方和,而不会反映产生该值的几何结构。直接测量角度便能解决这个问题:在2D空间中进行了30次实验,每次包含3个特征,其中29次并未形成三角形。典型的结果是一个特征单独存在,另外两个特征沿相反方向共享同一轴线,它们的维度分别为1.0、0.5和0.5,角度则为90°、90°和180°。尽管平均值仍是2/3,但形状却完全不同。这种布局究竟是真正的最优解,还是损失权重分配方式导致的,目前仍无定论。

这些特征最终会形成什么形状?

为将方向可视化在纸上,该模型被简化为二维,特征数量则在3到6之间变化。此时只需观察即可回答“是什么形状?”这一问题。6种稀疏度×5种初始值×4种特征数量共可产生120次运行结果。

每个特征方向都以圆上的箭头形式呈现,不同面板上的稀疏度逐渐增加。长度为零的箭头表示被舍弃的特征。在更高稀疏度下,会出现更多箭头且分布更为均匀,而这种间距正是模型解决干扰问题的方式:让各方向尽可能分开,从而减少彼此之间的重叠。

随着特征数量增加,这种排列方式还可靠吗?

完全不可靠,且下降趋势十分明显。测试中每种特征数量使用30种初始值,在相同设置下仅改变随机初始权重,然后统计出现相同形状的运行次数。

“对角线”指的是两个特征共享一条线且指向相反方向。当特征数为3时,结果几乎唯一确定;而当特征数为6时,不同的布局方案会同时出现。在有限空间内加入更多特征会使得近乎相同的解呈倍数增长,因此最终几何结构会更依赖于初始条件。不过存在一个限制:所有结果都是二维的,因此无法判断其受特征总数还是特征与维度比例的影响更大。要区分这两者需要进行维度扫描,但该操作并未实施。

该图表按照各组实验的结果对全部120组数据进行排序。每组中最高的柱状图代表最优结果,且随着特征数的增加,这一数值会逐渐减小。

稀疏自编码器能否还原这些特征?

到目前为止,所有内容都是模型在有限空间内写入特征的表现。而可解释性研究关注的是相反的问题:仅给定 h,如何还原输入的内容。

在图中,f 是那个宽大的稀疏代码,这里有40个数值,几乎全是零。解码矩阵 W_dec 的列即为这些“原子”,也就是自编码器对真实方向的估计,而这些才是唯一有意义的输出。

TopK方法会保留最大的k个值,其余全部置零(Gao等人,2024年)。另一种方法是通过对损失函数施加L1惩罚来实现稀疏性。TopK更适合这项任务,因为它能直接解决稀疏性问题,而针对某一问题调整的惩罚权重对其他问题则毫无参考价值。使用L1惩罚时,在相同稀疏度下比较两个模型较为复杂,而使用TopK则十分简单。解码器偏差会在编码前被减去,编码后再恢复,这样原子就能表征数据的形状,而不会被数据相对于原点的偏移所浪费。

自编码器永远无法直接获取真实方向。后续会通过两种方式将每个真实方向与原子进行比较,两者之间的差异即为结果。

评分恢复

显而易见的评分方式是:对于每个真实特征,判断自编码器找到的最接近值的好坏程度。

每个真实特征都会自行选择最优原子,且没有规则阻止两个特征选择同一个原子。假设自编码器将特征 a 和 b 按其和合并为一个原子,该原子会位于两者中间;由于这两个特征之间的夹角为36°,因此该原子与每个特征的距离为18°,此时余弦值cos(18°)为0.951。两个特征的得分均为约0.95,因此即便两个特征合并为了一个,结果依然很好。这个合并后的原子确实与这两个特征都很匹配。

通过匹配恢复机制可以解决这个问题。借助 scipy.optimize.linear_sum_assignment,每个真实特征都会被分配一个独特的原子,从而最大化整体相似度。当两个特征合并时,只有一个特征会获得共享的原子,而另一个特征则会被分配到匹配度较低的原子上,这样合并的效果就会显现出来。两个得分之间的差异即可衡量合并程度,因为单独看任何一个得分都可能掩盖这种差异。

原则上无法恢复的案例

通过代数推导可以发现,出现的故障并非自动编码器的错。假设特征 a 和 b 总是以相同的强度同时激活,因此对于任何输入都有 x_a = x_b。它们会在激活值中贡献一个共同的项。

没有任何方法能够扭转这一状况,因为激活值仅包含这两个方向之和。单独的 W_a 和 W_b 是永远无法观测到的。信息并非被隐藏,而是根本不存在。更强大的自动编码器、更多的计算资源或不同的损失函数也无法让数据恢复。这就是不可识别性,是数据的限制而非技术上的缺陷。

只需改变一个细节,让这两个特征依然始终同时激活,但其强度可以独立变化,情况就会发生逆转。在保持x_b不变的情况下改变x_a,就能揭示出W_a的作用,从而使两个方向都具备可恢复性。因此,“相关特征会破坏稀疏自编码器”这一说法过于绝对,并非事实:特征同时激活并无危害,而强度被锁定才是致命的,真正的问题仅在于后者。

在简化模型上的实验结果

该实验设置了15种条件,每种条件下有3种随机种子,涵盖了稀疏性、特征同时激活率以及强度耦合等多个方面,共进行了45次运行,涉及20个真实特征、5个维度以及40个原子。

15种情况中有12种的融合度恰好为0%。只有三种同时包含完全协同燃烧与完全锁定强度的情况出现了融合度下降,分别为20%、50%和40%,而仅部分协同燃烧且强度完全耦合的情况则保持完全无融合。此处呈现的是断崖式变化而非渐进变化,恰好处于一对数据对不再可被识别时的临界点。

最糟糕的情况通过四个指标来体现。自动编码器在此并未出现故障。在三种出现问题的情况下,它分别以0.878的分数、以及两次1.000的分数准确恢复了每对融合数据的总和方向。它所发现的确实是真实结构,只是并非被标记为真实值的那种结构,因为数据中不存在相应的区分特征。

可重复性测试也无法揭示问题。即便发生了合并,不同随机种子的结果一致性仍保持在0.878到0.925之间,因为所有运行最终都会得到相同的答案。这表明优化过程是稳定的,但并不能说明该答案是否正确。

合并后的原子会恰好位于其吸收的两个特征之间,这也解释了它们在对应特征评估中能获得高分的原因。

它在真实的语言模型中能否存活?

一个合理的反对意见是:将20个特征压缩到5个维度中空间极为拥挤,因此这些特征自然会融合在一起。而在真实语言的768个维度中,这种压力或许会消失,因为随机方向之间本来就有可能因偶然因素而相隔87.9°。不过要验证这一点存在困难,因为仅靠其中任何一种设置都无法给出答案。

上表列出了各项设置的功能。玩具模型虽知晓真实情况但不够真实,而真实模型则较为真实,但其真实特征却未知。

合成注入

合成注入方法介于两者之间。取真实的GPT-2激活值,插入一些预先设计好的特征,然后在不知道哪些特征是插入过的情况下用该混合数据训练自编码器,并仅依据这些特征来评估其性能。这种方法类似于“插入控制”技术。金属探测器无法在内容未知的场地进行测试,但只要埋几枚硬币并检查它能否找到,其余区域仍可保持未知状态。

在该设置中,h_real表示GPT-2 small在第八层处理真实文本时产生的768个真实激活值。24个方向向量v_k是预先确定的随机单位向量,而强度值a_k则处于可控状态,包括哪些向量对会被绑定在一起。有三种情况会生成相同的激活值,每种情况涉及四对向量:在不同时间点同时激活的向量对(作为对照组)、始终以自由强度同时激活的向量对,以及始终以固定强度同时激活的向量对。只有最后一种情况应当出现异常。

GPT-2 small 处理了超过200万个标记,网络结构中大约处于中间位置的第8层之后的残差流被保存为768维向量。这样总共得到了200万个向量,数据量约为2.9 GB,在笔记本电脑的GPU上大约需要7分钟即可完成处理。位置0被舍弃了,因为其注意力权重范数接近3,100,而其他位置的平均范数约为128,是前者的24倍左右,这样的数值会严重干扰统计结果。

随机基准

所报告的每个得分都是从大量候选项中找出的最佳匹配结果,而“多数最佳”机制在某种程度上依赖于运气。因此需要一个基准,用来确定那些毫无意义的方向会得到怎样的得分。对于一对方向而言,在维空间中选取的两个随机单位方向,其预期平方对齐度为1/d,因此典型值为1/√768 = 0.036。而在“多数最佳”模式下,则需要比较数千个候选项,最终仅保留最优结果。

理论值与测量值略有差异。在 N = 2,543 个原子时,公式预测的值为0.143,而模拟结果为0.126;在 N = 31,295 时,公式预测值为0.164,模拟结果则为0.145。公式预测值比实际值高约15%,因此所有基准值均采用模拟结果。公式唯一准确的部分是曲线形状,即基准值随原子数量对数平方根的增长而上升。即使原子数量增加12倍,曲线值也仅从0.126上升至0.145,可见仅增加原子数量并不能带来更高的分数。

结果

本次测试使用了100万个标记、3,072个原子,TopK参数设置为k=32,共有3组随机种子,评分仅基于24个特征指标。

该故障可以精确复现。在所有种子条件下,所有配对的特征都会融合在一起,对应的恢复值分别为0.416、0.418和0.417。即便将维度提升到768以模拟真实语言数据,情况也不会有任何变化,因此问题并非空间不足;数据中缺失的其实是能够区分这两个特征的信息。

这属于特征融合而非坍缩。每对特征组合后的方向对应的余弦值为0.998,与对照组的数值一致,说明自编码器几乎完美地捕捉到了真实结构,只是将两个特征简单地合并为了一个。如果使用简单的评估指标,就会忽略这一现象,其显示的数值为0.702,而实际匹配值仅为0.417,这个数值虽然不算理想,但也并不令人担忧,因为这两个特征都可以归属于同一个合并后的特征单元。

左侧面板显示了每种条件下的恢复情况,其中被锁定的条会收缩,而其他条则保持不变。中间部分展示了在每种种子条件下所有被锁定的配对如何融合。右侧则显示,一旦组合方向与目标一致,得分就会回到0.998,与对照组水平相当。

直接搜索可能发生合并的配对

另一项独立审计针对已发布的GPT-2用OpenAI自编码器进行了分析,旨在寻找那些从不单独出现过的特征对。该分析涵盖了200万个标记中最常见的1,024个特征,共计476,408对特征对。上述数学分析得出了两个危险信号:即这些特征对是相互关联的,且它们的关联强度一致。

  • 仅有3对特征几乎无法分开。
  • 在17,403对特征对中,其关联强度存在高度相关性。
  • 没有一对特征同时满足这两个条件。
  • 关联最紧密的200对特征的对数强度相关性中位数仅为0.024。

真实数据中存在的是良性共现现象:某些元素会一同出现,但它们的强度各自独立变化。

散点图显示的危险区域位于坐标轴的高值处,却完全为空。元素对要么聚集在边缘,表现为有关联但强度独立,要么强度相关但并不总同时出现,更不会同时出现于同一位置。

这种搜索方法存在盲点,这也是注入实验存在的理由。当自编码器将两个特征融合后,就只剩下一个原子,没有可检测的元素对,因此元素对搜索会直接错过已经发生的融合过程。空荡的危险区域能让人们安心地认为那些特征保持分离,而对那些未分离的元素则保持沉默。

两个自编码器能找到相同的特征吗?

迄今为止的所有自编码器所处理的激活值都经过了人为修改,其中包含了24个人为植入的特征。因此,我们又训练了一个模型,使用的是未经过修改的激活值,数据量为100万个标记、3,072个原子,TopK值为32,同时设置了两个种子值,每次训练耗时4分钟。该模型与已公开的OpenAI词典进行了对比,后者的活跃原子数为31,295,训练标记量则约为前者的十亿倍。

这个较小的模型足够健康吗?

重建评估是在模型内部进行的,而非在激活值空间中,因为平方误差会将所有768个方向视为同等重要,而GPT-2并非如此。重建过程被整合到前向传播中,测试则会检查后续标记预测的精度下降了多少。

该图表展示了交叉熵值,即模型以nats为单位的预测损失,纯净模型的数值为3.302。两种种子模型的表现一致,分别恢复了93.76%和93.97%的损失,解释了78.9%和79.0%的方差,同时保留了3,072个原子中的2,543个和2,597个。所使用的词典恢复了97.1%的信息。虽然小型词典按照行业标准来看训练不足,但足以用于比较。

此图表显示了仅统计存活原子时的平均最佳匹配余弦值,每个数值都是相对于其自身的随机基准来评估的。

左侧的每个数值都是相对于其自身的随机基准来显示的,由于数据量不同,这些基准值也有所差异。右侧的相同数值则以角度的形式呈现。条形图明显变窄,这正是目的所在——因为余弦值会偏高,而角度则更为准确。

这两个模型在所有健康度指标上均表现一致,但在“特征”定义上存在分歧:恢复的损失率为93.76%对比93.97%,解释的方差为78.9%对比79.0%,活跃原子数为2,543对比2,597。它们的词典之间的差异为38.6°,且没有任何标准质量检测能发现这一问题。

更大的词典只是将我们的词典拆分而已吗?

已发布的词典中的原子数量是原来的12倍。通常的解释是特征拆分,即额外的容量使得一个粗略的特征能够分解为更细的特征,例如引号特征可以进一步分为开头引号、对话归属标记和感叹号引号。如果是这样,应该满足两个条件:已发布的原子应聚集在小型词典的特征周围,且每个特征都应能通过附近原子的正混合重新构建,因为粗略特征应当将其细化后的部分组合在一起,而不出现有符号的抵消效应。

在测试中,q 是来自小型字典的一个特征方向。第一种度量方法统计与它余弦值在0.4范围内(即66.4°)的已释放原子数量,这一阈值设定得相当宽松。第二种方法则将距离最近的16个已释放原子作为矩阵B的列,通过不允许出现负系数的方式拟合最佳混合模型,并报告能够解释q的比例,其中R² = 1表示完美重建,0则表示完全无法解释。

这两种度量方法都会被执行两次,一次针对真实特征,一次针对400个随机单位方向。进行第二次测试是因为那些因距离某个方向较近而被选中的原子,无论该方向是什么,都会在一定程度上符合它,这就存在选择偏差。只有各列之间的差异才具有实际意义。

结果

针对31,295个已发布的原子,每种条件使用了400个查询方向。聚类分析结果具有决定性意义:真实特征附近大约有六个已发布的原子,而400个随机方向在66°范围内则没有任何原子。这两个词典显然指向相同的区域。

覆盖范围仅是部分的。最近的16个已发布原子能够重建0.696的特征,而单个最佳原子只能重建0.495的特征,因此仍有约30%的特征无法解释。这部分剩余的可能是已发布词典所缺乏的真正精细特征,或是特征训练不足产生的噪声。要区分这两者,需要分别以8倍、16倍和32倍的处理能力进行测试,不过相关设计并未实际执行。

左侧面板显示了每个查询附近被释放的原子数量,真实特征的数量大约在1到15之间,而随机列则仅为零的单一峰值。右侧面板则比较了使用最佳单个原子与最近16个原子所得到的重建质量。

主要发现

  • 必须使用ReLU函数:若删除该函数,无论稀疏度如何,线性控制方式只能保留恰好5个特征。
  • 叠加效应会分割现有的容量,而不会增加新的容量,因为在所有20次运行中,总维度始终保持在4.94到5.00之间。
  • 那些无法区分的配对即使在768维的GPT-2激活状态下也会融合,因为它们的独立方向并不存在于数据中。
  • 简单的恢复得分可能会掩盖融合现象,因为融合后的原子能够很好地匹配两个特征。在GPT-2中,匹配后的恢复得分为0.702,而未融合时的得分则为0.417。
  • 可重复性并不能说明事物的真实性:种子多次得到相同的错误答案,这仅表明优化过程是可重复的而已。

事实证明,将一个特征置于一个维度中对神经网络来说太过乏味。

这些实验在设置与维度度量方面借鉴了玩具模型相关论文,在自编码器设计方面参考了早期关于单义性及稀疏自编码器可解释性的研究,而在TopK公式方面则采用了2024年的扩展性研究。总共进行了185次玩具模型训练以及200万次GPT-2激活操作。