用激活工程引导语言模型

Steering Language Models with Activation Engineering|Alexander Matt Turner、Lisa Thiergart、Gavin Leech、David Udell、Juan J. Vazquez、Ulisse Mini、Monte MacDiarmid|arXiv:2308.10248 [cs.CL](v5 版,2024 年 10 月 10 日)

作者与单位

摘要

提示词工程(prompt engineering)与微调(finetuning)旨在使语言模型在给定指标(例如毒性降低)上的表现最大化。然而,这些方法并不能完全引出模型的能力。为了缩小这一差距,我们提出激活工程(activation engineering):即在推理时修改激活值(activations),以控制(或引导,steer)模型输出。具体而言,我们提出激活添加(Activation Addition,ActAdd)技术,它通过对比提示词对(如 “Love” 与 “Hate”)上的中间激活来计算引导向量(steering vector)(Subramani et al., 2022)。通过在前向传播(forward pass)过程中有策略地加入例如 “Love” − “Hate” 的引导向量,我们在包括 LLaMA-3 和 OPT 在内的模型上,在负向到正向的情感转换与去毒化(detoxification)任务上取得了 SOTA(当前最优)成绩。ActAdd 在保持非目标任务性能的同时,实现了对高层输出属性(如话题和情感)的推理时控制。ActAdd 非常轻量:它不需要任何机器优化,且仅凭一对数据点即可工作,这使得对引导效果的快速迭代成为可能。ActAdd 展示了激活工程的力量。

1 引言

大语言模型(LLM)蕴含着我们尚不知道如何完全引出的隐藏能力(Korinek, 2023)。只是简单地用一个问题去提示模型,并不能使正确回答的概率最大化。不妨仔细想想:让模型”一步一步”思考的提示方式(Wei et al., 2022)能在一系列基准测试上大幅提升性能。类似地,用若干无关的分布内问题的正确答案对模型进行”少样本”(few-shot)提示,可以实现”上下文学习”(in-context learning),从而在 NLP 任务上取得更强的表现(Brown et al., 2020)。重要的是,这些干预并没有给 LLM 提供额外的任务相关信息,也没有更新 LLM 计算图所实现的算法。尽管模型本来就有能力在这些基准上拿到更高的分数,但若没有特定的干预,这些能力并不会显现出来。因此我们假设存在一种引出落差(elicitation overhang):我们不知道如何从前沿模型中引出所有相关的能力与信息。

提示词工程是引导模型最显而易见的方式,但提示的可靠性有限(Ye & Durrett, 2022; Wang et al., 2024)。因此,为了缩小引出落差,我们探索一种引导语言模型输出的新模态:通过在前向传播过程中有策略地扰动激活值,我们希望比提示词工程更可靠、更有效地引导模型。我们把这一方法论称为激活工程。

我们猜测,与提示词工程相比,激活工程能够引出更广泛的模型能力。举例来说,考虑一个被优化来模仿”优雅的诗人”与”笨拙的数学家”的文本输出的模型。该模型可能包含同时输出既优雅又具数学性文本所需的内部机制。然而,如果该模型是训练分布的准确估计器,它会(正确地)给优雅的数学散文分配较低的概率。由于训练数据中不存在既优雅又具数学性的内容,可能不存在任何能够引出数学散文的提示。相比之下,激活工程或许能够同时激活与优雅表达相对应的线路和与数学内容相对应的线路。

为了展示激活工程的威力,我们提出激活添加(ActAdd)。假设我们想要实现负向到正向的情感控制(Li et al., 2018; Dathathri et al., 2020)。为此,ActAdd 首先比较模型在对比提示对(contrast pair)上的激活,例如提示 “Love” 与 “Hate”。这两个其他方面相似的提示在情感这一目标维度上存在差异。ActAdd 随后计算这些激活之差,从而得到引导向量。这些向量就像”虚拟偏置项”一样,因为 ActAdd 会在推理时把引导向量直接加到前向传播中。通过让推理时激活沿引导向量的方向发生偏移,ActAdd 引导模型生成带有正向情感的补全(表 1)。

表 1|ActAdd 的影响。 引导向量由(“Love” - “Hate”)与(“I talk about weddings constantly” - “I do not talk about weddings constantly”)计算得到。附录表 6 给出了更多示例。

提示词 + 引导 = 补全
I hate you because…(我恨你,因为……) [无] ……你是我见过的最恶心的东西。
(同上) ActAdd(love) ……你是如此美丽,我想永远和你在一起。
I went up to my friend and said…(我走到我的朋友跟前说……) [无] ……“对不起,我帮不了你。”“不,”他说,“你不是。”
(同上) ActAdd(weddings) ……“我要谈谈《婚礼季》这一集里的婚礼。我觉得这真的是很棒的一集。它讲的是你应该怎样谈论婚礼。”

贡献。 我们把过去关于相关主题的文献统合起来,提出了激活工程。为了更好地引出模型的全部能力,我们提出 ActAdd 引导方法,该方法在毒性降低和情感控制上达到了 SOTA。我们透彻地测试了被引导的模型,以验证其通用能力是否得以保留。因此,我们展示了 ActAdd 作为一种有效且廉价的 LLM 输出引导方法的潜力。

2 相关工作

潜空间算术。 计算机视觉生成模型的研究早已证明,可以使用派生向量来引导图像生成,包括引导潜变量——最著名的例子是让激活沿图像中与”微笑”相对应的方向移动(Larsen et al. 2016; White 2016)。类似地,在文本领域,关于 word2vec 嵌入的经典结果表明,对词向量做算术运算可以捕捉语义推理的某些部分(例如类比推理:Mikolov et al. 2013b;a)。我们的工作聚焦于引导生成式语言模型。

LLM 引导。 许多方法都试图影响预训练 LLM 的输出,途径包括:

表 2|在引导相关文献中定位本工作。

通过何种方式获得干预向量\引导向量作用于模型的…… ……权重 ……激活值
微调后的差异 Ilharco 2023 不适用
逐查询的梯度搜索 Meng 2022、Orgad 2023 Dathathri 2020、Subramani 2022、Hernandez 2023
提示词对之间的差异 不适用 ActAdd(本工作)、Li et al. 2023b

激活工程。 激活工程是指创建激活向量,当其被加入冻结 LLM 的前向传播时,会引起输出文本的期望变化(Dathathri et al. 2020)。表 2 按干预类型组织了先前的工作。

一个早期的先例是 Dathathri et al. 2020 的即插即用语言模型(Plug-and-Play Language Model)。该方法使用一个单独的分类器(每个要引导的属性各一个分类器)来扰动模型的激活,从而生成更符合分类器目标的文本。Subramani et al. 2022 从冻结的 LLM 中提取潜在引导向量,成功发现了特定句子的向量,能把补全引导到接近满分的 BLEU 分数(即控制 LLM 的生成)以及无监督的风格迁移。然而,该方法要求为每个新的引导向量运行梯度下降。Hernandez et al. 2023 通过在其激活空间中学习事实的编码,来定位并编辑 LLM 的知识。消融注意力头也可以看作激活工程,不过该技术多用于模型解释而非引导(Michel et al. 2019; Olsson et al. 2022)。

与此独立地,Li et al. 2023b 开发了一个名为 ITI 的类似方法,它计算引导向量,并根据训练好的线性探针(linear probes)有选择地施加这些向量。他们使用这些探针来寻找对真陈述与假陈述具有不同激活分布的注意力头。他们引导模型朝向真实的输出,而我们的实验涵盖了多种目标。此外,ITI 在推理时把同一个引导向量加到所有序列位置上,而且 ITI 需要数十个样本。相比之下,ActAdd 只把引导向量加到一部分序列位置上,并且最少只需 2 个样本。关于”上下文向量”(in-context vectors)的类似工作也followed了我们的工作(Liu et al. 2023)。最后,Zou et al. 2023 的”表示工程”(representation engineering)也在我们的工作之后展开。他们开发了一系列技术来推导引导向量,并通过激活空间编辑与优化来引导模型。与 Zou et al. 2023 相比,我们在不同的模型(LLaMA-3、OPT、GPT-2 与 GPT-J)上针对不同的任务(去毒化和情感控制)进行引导。

3 激活添加的工作原理

我们使用仅解码器(decoder-only)的 Transformer 神经网络(Vaswani et al. 2017)。本工作中的 LLM 包含一个由 Transformer 层构成的堆栈,每层由多头注意力(multi-head attention,MHA)和一个前馈网络(feedforward network,FFN)组成。我们关注其”残差流”(residual stream,Elhage et al. 2021),即被每一层处理的中间激活向量序列 (x0, …, xn)。ActAdd 操纵输入第 l 层的残差流值 hl。每一层对 xi 执行 MHA 与 FFN 计算,并把 xi + 1 加回流中。流中的最终向量 xn 随后可被解码为下一词元预测。在推理时,残差流 h1 被初始化为分词后提示词的嵌入。

激活添加。 我们的方法取一对自然语言提示词 (p+, p−),其中 p+ 代表我们希望输出文本强调的属性(例如 love),而 p− 代表其反面(例如 hate 或冷漠)。h+l 是提示词 p+ 在第 l 层的激活向量。差值 h+l − h−l 是一个新的激活向量,它(直观上)刻画了具有目标属性的提示词与不具有该属性的提示词之间的差异。引导向量在推理之前计算。

算法 1 ActAdd:无需优化的激活添加

输入:(p+, p−) = 引导提示词对(已分词)
      p∗ = 用户提示词
      l  = 目标层
      c  = 注入系数
      a  = 对齐 hA 与 hp∗ 的序列位置
      M  = 预训练语言模型
输出:S = 被引导的输出

(p′+, p′−) ← pad_right_same_token(p+, p−)        # 右侧填充至相同词元长度
h+l ← M.forward(p′+).activations[l]
h−l ← M.forward(p′−).activations[l]
hAl ← h+l − h−l
hl  ← M.forward(p∗).activations[l]
S   ← M.continue_forward(c · hAl + hl @ a)

为获得引导向量,我们对每个提示词各执行一次前向传播,在每次传播中记录给定位置上的激活,取差值 h+l − h−l,最后用一个”注入系数”c 对这一激活差值进行重新缩放。为了进行引导,我们把得到的激活向量加到第 l 层的输入上,并让前向传播继续进行,从而得到被引导的输出。^1 c 代表干预强度,因为它乘上了引导向量对残差流的贡献。^2 我们通过超参数调优来选择 c 以及注入层 l。正如从过去的工作中所预期的(Subramani et al. 2022; Mini et al. 2023),在中间层进行干预最为有效。

^1 实现细节见附录 C。 ^2 干预强度 c 的量级通常小于 15。

算法 1 与图 1 描绘了由此得到的 ActAdd 方法。在附录中,图 6 给出了一个形象化的示例,说明如果被引导模型的残差流是一维的(而非例如 GPT-2-XL 的 1600 维),用 ActAdd 引导模型会是怎样的情形。可运行的笔记本见 tinyurl.com/actadd。

我们检验两件事:1)引导向量能否有效引出期望的行为改变;2)它们能否保留模型的通用能力。我们在 GPT-2-XL(1.5B 参数,Radford et al. 2019)上运行了基于困惑度的实验。随后我们在 OPT(Zhang et al. 2022b)和 LLaMA-3(Meta 2024)上运行毒性与情感实验。

图 1|激活添加(ActAdd)方法的示意图。 图例:▢ = 自然语言文本;• = 指定层之前的激活向量。在本例中,无论用户提示词的话题是什么,输出都被强烈偏向于谈论婚礼。(方法的参数——干预强度、干预层和序列对齐——见算法 1。)

图中流程为:寻找相互对比的提示词(提示词 1,如 “I love talking about weddings”;提示词 2,如 “I hate talking about weddings”)→ 对每个提示词做前向传播并记录激活(得到激活值 1 与激活值 2)→ 对激活做差得到引导向量 → 将其注入用户提示词的前向传播 → 得到被引导的输出。

图 1

4 结果:激活添加行之有效

所有实验的汇总见表 5。^3

^3 我们实验的代码仓库:https://zenodo.org/records/13879423。

4.1 ActAdd 以符合直觉的方式修改下一词元概率

我们考虑 OpenWebText 语料库(Peterson et al. 2018)。贯穿全文的运行示例是”婚礼”(wedding)话题向量,其设置方式为 p+ = weddings,p− = ’ ’(单个空格),l = 16,c = 1。

4.1.1 ActAdd 降低了目标话题上的困惑度

图 2|困惑度比率比较了 ActAdd 与未修改模型的相对预测性能,越低越好。加入婚礼引导向量提升了模型在婚礼相关文本上的性能,同时在无关文本上保持原有性能。(横轴:婚礼相关词频率 0.0%–3.0%;纵轴:困惑度比率(act-add / baseline)96.0%–100.0%。)

图 2

对 OpenWebText(Peterson et al. 2018)中的每个文档 di ∈ D,我们首先计算婚礼相关词的频率。^4 如果一个文档包含这些词之一,该文档即被视为婚礼相关。我们随机抽取 30 万个文档,其中一半是婚礼相关的。

^4 即 wedding、weddings、wed、marry、married、marriage、bride、groom 与 honeymoon。

我们把文档拆分为句子,并测量 GPT-2-XL 在婚礼相关句子与婚礼无关句子上的困惑度。如果模型被有效地引导去生成婚礼相关文本,它应当给这类文本分配更高的概率(从而获得更低的困惑度)。更多细节见附录 C.1。图 2 显示了 ActAdd 相对于未修改模型的困惑度。在注入话题(婚礼)更相关的句子中,ActAdd 的困惑度更低,预测性能更高。

4.1.2 ActAdd 对词元概率的影响

为了检验这一干预是在影响相关词元,还是以某种虚假的方式降低困惑度,我们观察词元对数概率分布的偏移。做法是:从上述 OpenWebText 样本中随机抽取 500 个文档,记录基线模型与被引导模型所分配的对数概率。这得到一个约含 50 万词元的数据集,其中 2.9 万个是唯一的。然后我们按词元分组,过滤出在数据集中出现超过 20 次的词元,并计算 ActAdd 模型与基线模型之间的平均困惑度差。通过把这些结果显示为 Q-Q 图(Gnanadesikan & Wilk 1968),我们可以检视词元概率中的离群偏移。

附录图 8 展示了由此得到的平均对数概率差分布。可以看到,对于大部分词元,该分布近似正态,但尾部明显很重。正尾显著重于负尾,这表明有一组词元的概率被可靠地提高,而另一小组词元的概率被可靠地降低,且降低幅度较小。离群词元见附录表 11。平均而言概率提升最多的词元主要与婚礼相关。排在底部的词元没有明显的共同主题,且其概率的绝对变化要小得多。

4.1.3 ActAdd 引导模型去谈论婚礼

引导向量在哪一层最为有效?我们在 GPT-2-XL 的各注入层上扫描婚礼向量,并测量在每一层注入引导向量后,生成文本中婚礼相关词的平均出现次数。

图 3|被引导补全包含婚礼相关词的概率 P(补全含婚礼相关词)随注入层变化的函数。该干预在第一层就已经有效,有效性在第 6 层前逐步上升,随后下降。在最佳注入位置,话题引导的成功率超过 90%(相比之下基线约为 2%)。(横轴:层,0–40;纵轴:非零婚礼词计数比例,0–0.8;虚线为基线。)

图 3

上述扫描结果即图 3 所示。

4.2 ActAdd 能够控制模型谈论什么

方法。 引导向量可以引出关于一系列话题的生成——而不仅仅是婚礼。我们从一个通用提示词出发,使用 GPT-3.5 来为”生成内容是否与目标话题相关”打分。具体而言,我们为未修改模型生成 100 个补全,并为每个目标单词元 ActAdd 干预各生成 100 个补全(每个词元对应不同的话题)。与基线补全相比,我们记录被引导模型谈论目标话题的频率高出多少。

结果。 图 4 记录了在注入系数 c = 2 时,除”art”(艺术)之外的所有话题上的相关性都大幅提升(5–20%)。

图 4|由 GPT-3.5 评分的 ActAdd 补全在一系列通用话题上的相关性。

图 4

4.3 ActAdd 能够降低毒性

方法。 我们通过从 RealToxicityPrompts(Gehman et al., 2020)生成被引导的续写来对毒性降低做基准测试。遵循 Pei et al. 2023,我们使用随机子集 n = 1, 000。我们将该抽样重复 5 次以获得 p 值(与 SOTA 做 t 检验),对 p < 0.05 时更优的行加粗。对每个续写,我们使用 Perspective API 来为毒性打分。

结果。 为了建立共同的量表,我们复用了 Pei et al. 2023 的基线与 PREADD 结果,并加入 Air-Decoding(Zhong et al. 2023)与 FUDGE(Yang & Klein 2021)。这样共有 6 个基线可与 ActAdd 比较。(我们也考虑了 Gu et al. 2022(其报告毒性为 0.043),但无法复现其结果;此外,其不流畅度(54.6)过高,难以实际使用。)我们使用 OPT(Zhang et al. 2022b)与 LLaMA-3(Meta 2024)与 ActAdd 进行比较。^5

^5 我们不与微调比较,因为我们希望考察的是只需最少梯度更新的轻量级干预。

如表 3 所示,ActAdd-OPT 的毒性比次优的 PREADD-D-OPT 低 8%;ActAdd-LLaMA-3 相比 LLaMA-3 毒性下降 5%,而流畅性损失非常小。

表 3|RealToxicityPrompts 上的结果(随机 n=1000)。 所用 OPT 为 6.7B 参数,LLaMA-3 为 8B。加粗表示相对次优者 p < 0.05。灰色数字为 Pei et al. 2023(PREADD)、Yang & Klein 2021(FUDGE)或 Zhong et al. 2023(Air-Decoding)报告的数值(下表中以 * 标注)。较新的模型默认毒性更低。然而,ActAdd-OPT 是各 OPT 干预中毒性最低的,甚至超过未经引导的 LLaMA-3。

控制类型 方法 模型 毒性 ↓ (不)流畅性 ↓ 相关性 ↑
未引导 baseline OPT .134 8.9 .369
提示 baseline OPT .200 54.3 .294
引导向量 ActAdd OPT .112 13.8 .329
受控生成 FUDGE GPT-2-M .128* 22.1* .329*
对比解码 PREADD-S OPT .134* 51.7* .290*
对比解码 PREADD-D OPT .122* 56.6* .326*
梯度引导生成 Air-Decoding GPT-2-L .185* 48.3* -
未引导 baseline LLaMA3 .114 6.3 .391
引导向量 ActAdd LLaMA3 .108 6.7 .365

4.4 ActAdd 能够控制情感

方法。 为评估情感,我们使用 Stanford IMDb 数据集(Maas et al., 2011)。我们的目标是让模型以相反的情感续写每条影评。我们计算具有期望情感的生成输出所占的比例,分类器为在情感数据上微调过的 SiEBERT(Hartmann et al. 2023)。作为质量控制,我们遵循惯例,使用条件困惑度来标记(不)流畅性,条件困惑度由 GPT-3 davinci-002 的对数概率获得。我们用提示词与续写句子嵌入之间的余弦相似度来衡量文本在 [0, 1] 上的相关性。我们在随机子集 n = 1, 000 上评估正向转负向与负向转正向两种情感变化,并重复实验以获得 p 值。

结果。 表 4 表明,我们的方法在传统的情感控制指标(Maas et al. 2011)上具有竞争力。我们在负向到正向的情感引导上取得了当前最优的成功率。而唯一在正向到负向方向上超过 ActAdd 的方法,在流畅性上付出了巨大代价(在同一预训练模型上比较同类方法时为 68.4 对 24.2),相关性也更差。

表 4|IMDb 情感任务上的结果。 “Steering(引导成功)”指改变情感分类的概率(在基线方法的论文中称为”success”)。加粗结果表示相对次优者 p < 0.05。灰色数字为 Pei et al. 2023 报告的数值(下表中以 * 标注)。下划线表示最佳的引导后结果(本表中 ActAdd-LLaMA3 的负转正引导成功率 0.669)。所有引导方法下流畅性都变差;ActAdd 变差 1.5 至 3 倍,PREADD 变差 7 倍。

方法 正向→负向:引导成功率 ↑ 正向→负向:不流畅性 ↓ 正向→负向:相关性 ↑ 负向→正向:引导成功率 ↑ 负向→正向:不流畅性 ↓ 负向→正向:相关性 ↑
ActAdd-OPT 0.432 24.2 0.387 0.564 20.95 0.363
ActAdd-LLaMA3 0.268 8.6 0.354 0.669 15.2 0.275
OPT-Baseline 0.175 8.95 0.430 0.445 9.38 0.423
LLaMA3-Baseline 0.138 5.8 0.437 0.417 6.09 0.426
OPT-Prompt 0.307 53.5 0.298 0.365 50.9 0.287
FUDGE 0.532 25.1 0.311 0.551 22.7 0.320
PREADD-S-OPT 0.631 68.4 0.253 0.624 67.1 0.258

4.5 ActAdd 保留了模型的通用知识

方法。 我们使用 LAMA 基准中的 ConceptNet,这是一个通用知识数据集(Petroni et al. 2019,n = 29, 774 个句子,见附录表 10)。模型先获得一个提示词,然后需要预测一个事实性补全。该任务同时面向因果语言模型与掩码语言模型,因此由于上下文极其有限,某些例子对因果注意力模型(如 GPT-2)而言较为困难。对每个句子,我们分别在有与没有婚礼激活添加的情况下,让模型在其提示词上运行。P@K 是期望标签出现在模型 top-K 预测词元中的概率(以提示词为条件)。我们通过计算一系列 K 值上的平均 P@K 来为基线模型和修改后模型打分。最后,我们对修改后与未修改的模型在一系列 K 值上绘制这些结果。

结果。 图 5 表明,在 ConceptNet 事实问题基准上,我们的方法对非目标答案概率的影响可以忽略不计。

图 5|使用 ConceptNet 基准(Petroni et al. 2019)检验 ActAdd 的副作用。 “P@K”指正确答案出现在模型 top-K 答案中的概率。我们的方法在一系列 top-K 取值上对非目标概率的影响可以忽略不计。(横轴:K,取 1、2、5、10、20、50、100;纵轴:平均 P@K,0.1–0.5;图例:baseline(基线)与 with act-add(加激活添加)。)

图 5

5 讨论

前向传播的代数组合。 ActAdd 可以被看作多个独立前向传播的组合。例如,我们组合 h+、h− 与 h* 来产生被引导的输出。让我们惊讶的是,前向传播居然能够以这种方式”组合”,尽管模型从未被训练过以允许这种操作。前向传播的可组合性本身就是组合式表示(compositional representations,Olah 2023)存在的证据,它独立于来自权重任务组合算术(task arithmetic)的证据(Ilharco et al. 2023)。

局限性。 要用 ActAdd 向量引导模型,用户需要提供注入系数 c 与干预层 l。到目前为止,把序列对齐固定为 a = 1 一直都能成功。总体而言,这些自由超参数使 ActAdd 不如简单的提示词工程那样易用。所幸用户不必为每个用例重新做一次超参数扫描;实践中,干预超参数是稳定的。我们在附录表 7 中给出了引导失败的例子。我们也没有考察 ActAdd 对推理(reasoning)的潜在影响。仅在只有模型 API 访问权限的情况下,ActAdd 无法直接应用:模型必须既缓存又在给定层暴露中间激活(Bloom & Nanda 2022)。目前,API 通常不允许这样做。

激活工程与微调的对比。 微调更为人理解、也更灵活——我们怀疑激活工程能否做到例如教会模型一项新技能。然而,微调的代价要大得多,并且可能无法引出激活工程所能引出的那类能力。

ActAdd 的第一个优势是效率:该方法不需要反向传播,因此可以在任何能执行推理(而非训练)的机器上运行。实现工作量也大大减少:找到合适的 (p+, p−) 只需前向传播,且所需的带标注数据极少——只需那一对引导提示词。附录表 6 中的大多数示例对比对是我们在几分钟内发现的。综合来看,即使是非技术用户也能从快速反馈与相对容易的迭代中受益。

激活工程与提示词工程的对比。 激活添加可以被连续地加权,而提示词是离散的——一个词元要么出现,要么不出现。为了更强烈地引导模型生成婚礼相关文本,我们的方法不需要对提示词做任何修改,只需增大注入系数。关于 ActAdd 与提示的启发性实验见附录 B。与系统提示不同,激活添加不占用模型上下文窗口中的词元空间,尽管在数百万词元上下文窗口的时代这只是一个小小的优势。虽然提示比 ActAdd 更灵活、甚至更便宜,但激活添加可以引出提示所无法引出的能力(我们在与提示的比较中取得了更优的结果即为明证;另见第 1 节中的猜测)。

LLM 的可解释性。 在大多数程序中,向定位不精确的中间内存位置添加数值并不会产生有意义的结果。为什么期望 Transformers 会不同呢?一个日益形成的共识是:LLM 的激活空间中存在一些方向,它们表示高层潜在变量,并对生成内容有因果作用(Burns et al. 2022; Moschella et al. 2023; Li et al. 2023a; Nanda 2023; Li et al. 2023b)。

遵循 Elhage et al. 2022,我们的假设更为具体:神经网络把输入的特征表示为激活空间中的方向,即以线性表示(linear representation)的方式表示(Park et al. 2023)。此外,与(比如说)爱-恨潜变量相对应的激活空间方向,在很大一类输入上保持大致不变。

Alain & Bengio 2018 对残差流使用线性探针,推断出 LLM 的表示至少部分是线性的;如果一个线性探针能够从残差中以高准确率预测文本输出的某个特征,这就构成该特征被线性表示(即表示为一个简单方向)的证据(Nanda 2023)。

激活添加的成功为特征线性性提供了更强有力的实验证据,表明模型确实使用与特征相关的信息。考虑核心的 Love - Hate 向量示例:我们把它加到前向传播中,从而增加与爱相关的补全。在所考察的提示词上,这一方向负责把模型的其余部分引导向与爱相关的补全。一般而言,引导向量确立了因果关系,至少在被考察的有限情境集合内是如此。

LLM 的价值对齐。 激活工程是控制 LLM 的一条有前景的途径。后续方法或许能够提供通用的引导手段(例如通过某种”乐于助人(Be helpful)“向量的类似物)。与同时期的工作(Li et al. 2023b; Liu et al. 2023)一道,我们的实验表明,激活工程能够灵活地重定 LLM 行为的目标,而不损害整体性能。我们猜测 ActAdd 改变了模型当前活跃的目标与优先级混合。如果得到充分发展,激活工程方法可以在保留整体能力的同时推动安全进展。

6 结论

尽管提示词工程、受控解码与微调等方法各有优点,它们都无法从语言模型中引出完整的能力。为了更可靠地引出这些能力,激活工程在推理时对激活进行策略性扰动。特别地,我们提出了激活添加(Activation Addition),通过让模型的推理时激活沿某一方向(如 “Love”-“Hate” 向量)偏移来引导模型。ActAdd 轻量且有效,在毒性降低与情感转换上取得 SOTA,同时保留了模型的整体能力。ActAdd 展示了激活工程的潜力。我们期待未来的工作实现这一潜力。

可复现性声明

我们的代码见:https://zenodo.org/records/13879423。以下是我们所使用的模型、抽样策略与所运行搜索的详尽清单。

数据处理。 为了整理 OpenWebText 中与婚礼相关的子集,我们保留了包含婚礼相关词的文档(见第 4.1.1 节)。所做的唯一预处理是移除空字符序列。每个文档使用 Punkt 分词器(Strunk 2013)拆分为句子 sj ∈ di。

模型。 在观察到 GPT-2-XL 上的成功之后,为了复现我们的结果,我们随后在 Llama-1-13B(Touvron et al. 2023)和 GPT-J-6B(Wang & Komatsuzaki 2021)上重复了相同的实验。我们的毒性与情感实验使用 OPT(Zhang et al. 2022b)和 LLaMA-3-8B(Meta 2024)。详见附录 E。我们使用 all-MiniLM-L6-v2(Reimers & Gurevych 2019)计算句子嵌入,并用余弦相似度计算相关性。对于成功分数,我们使用 SiEBERT(Hartmann et al. 2023)情感分类器。我们使用 SiEBERT 分类器(Hartmann et al., 2023)进行情感分类。

API。 毒性评分使用 https://www.perspectiveapi.com/。流畅性评分使用 OpenAI davinci-002。PREADD 基线使用的则是已停用的 davinci-001 模型。

随机种子。 我们在种子 0 上运行所有生成。在收集完所有其他数据之后,我们验证了定性结果在种子 1 和种子 2 上同样成立。

抽样超参数。 我们预先承诺使用固定的抽样超参数,并在实验开始前选定。在整个数据收集过程中我们保持其不变。这些抽样超参数为 temperature= 1.0、freq_penalty= 1.0 与 top_p=0.3。由于事后回想这个 top_p 值显得有些反常,我们邀请了一位外部研究者,让其用未修改的 GPT-2-XL 复现这一过程,并报告他们所找到的最佳抽样超参数。第二个实验是盲测,因为他们不知道我们所用的数值。他们发现 temperature= 0.6 与 top_p= 0.5 能带来更好的 GPT-2-XL 能力表现。我们在该设置下重跑了所有定性结果,全部得以复现(而且主观上更令人印象深刻)。

毒性与情感实验使用相同的抽样超参数。其他作者报告的数字是在 freq_penalty= 0.0 与 top_p=1.0 下获得的。

在复现未经引导的 OPT 情感基线时,我们发现”负转正”(NegToPos)方向的成功率始终高于”正转负”(PosToNeg)。这在不同的模型超参数组合下都成立,包括 Pei et al. 2023 中的那些设置。然而,PREADD(Pei et al., 2023)报告两者成功率相近(即 NegToPos 成功率低得多)。OPT 的结果采用的是我们计算出的数值。

报告 K 个补全中的最佳者。 对于每个定性演示,我们对正常前向传播与被引导前向传播都生成了 K = 3 个补全。附录表 6 展示的是前三个种子 0 补全对中主观上最有说服力的一对。表中各条目的全部 top-3 补全可在此笔记本查看:tinyurl.com/actadd3。我们分享的是效果良好的激活添加。我们对对比对进行了迭代才让它们奏效,不过其中有几个惊人的结果是第一作者在使用该技术的第一个小时内生成的。在我们认为能够展示该方法某种独特能力的 12 个激活添加中,我们决定不收录其中 1 个,因为它的前三个种子 0 补全异常平庸。其余 11 个收录在表 6 中。

ActAdd 超参数 (l, c)。 本节没有完整的统计。我们执行简单的网格搜索,通常在 c ∈ [3, 20] 与 l ∈ [6, 24] 之间。

硬件: GPU:Nvidia RTX A5000;CPU:Intel Core i9-10900X CPU @ 3.70GHz;24GB 显存,32GB 系统内存。

相关库与框架: 操作系统:Ubuntu 22.04.1 LTS;numpy: 1.24.3;pandas: 2.0.1;torch: 1.13.1;transformer-lens: 1.4.0。

作者贡献

Turner:概念构思、团队管理、核心功能实现、多个实验的设计、许多单个引导向量的发现,并撰写了原始博文的大部分内容。Thiergart:提出在添加位置上做变化的构想,实现了位置实验,参与理论工作。Leech:设计新实验、设计图表、将算法与评估形式化,在早期博文的基础上撰写正文,文献综述。MacDiarmid:主库的大部分代码。Udell:撰写并编辑原始博文,生成定性结果。Mini:基础设施支持、OpenAI 封装,以及 LLaMA、Vicuna 与 GPT-J 上的实验。Vazquez:撰写部分文本,在 LLaMA-3、OPT、GPT-2 上开展了毒性、情感控制及其他实验。

致谢

我们感谢 Peli Grietzer 提供了一次独立的超参数调优运行。我们感谢 Alex Cloud、Jan Brauner、Andis Draguns、Sören Mindermann 与 Raymond Douglas 对草稿提出的有益意见,也感谢 Andrew Critch、Aryan Bhatt、Chris Olah、Ian McKenzie、janus、Julian Schulz、Justis Mills、Lawrence Chan、Leo Gao、Neel Nanda、Oliver Habryka、Olivia Jimenez、Paul Christiano、Peter Barnett、Quintin Pope、Tamera Lanham、Thomas Kwa 与 Tristan Hume 对更早版本草稿的评论。我们感谢 Rusheb Shah 提供工程协助。我们感谢 Garrett Baker 在 GPT-J(6B)上运行测试。我们感谢一位匿名的 ICML 审稿人提出极具启发性的意见。

(参考文献共 67 条,此处从略。)

附录

(注:部分补全内容包含令人不适的内容,包括侮辱性词汇。)

A 更广泛的影响

正如愤怒引导与阴谋论引导的示例所示(附录表 6),ActAdd 很容易被滥用。鉴于现有的 LLM 引导方法只是把目标目标或属性以某种方式留在模型”内部”(只是使采样到它的概率变低)(Lyu et al. 2024),激活工程可能会绕过那些表面上的对齐方法。

我们希望这一风险能被该方法带来的对模型表示的洞见以及由此产生的推理时控制充分抵消:这种控制可以(例如)在任何提示词注入攻击之后进行干预以确保对齐,从而完全挫败此类攻击——而这发生在最后一个可能的步骤:模型推理之时。

B ActAdd 是否只是提示词工程的一种隐蔽形式?

一种假设认为,ActAdd 引导向量在某种意义上等价于词元注入——例如在给定的流位置上添加一个虚拟的 ’ weddings’ 词元。对于较简单的干预,这是合理的。给定提示词 ‘I love you because’,如果我们以较大的系数把一个 ’ wedding’ 词元注入第一个残差流,也许模型确实只是把该提示词当作 ’ wedding love you because’ 来处理。

虽然这将是一个引人入胜的等价关系,但下面的论证和实验表明事实并非如此。由于词元是离散的,在诸如先加 3× ‘wedding’ 再加 −3× ‘’(叠加在词元 ‘I’ 之上)的情形下,词元注入假设便与线性表示假设分道扬镳。词元不允许把语义以这种连续的方式堆叠到同一条残差流上。

然而,考虑 Anger − Calm 的引导向量,取 l = 20,c = +10。我们在附录表 6 中表明,这个引导向量似乎使补全变得更愤怒。向量中哪些成分造成了这种表面上愤怒的提升?

怀疑性假设:也许愤怒引导效应较少地来自 Transformer 块 0 至 19 所完成的计算工作,而更多是仅仅来自引导向量中的嵌入向量成分:10 × (embed(Anger) − embed(Calm))。

图 6|教学示例: 用一个婚礼向量引导一个残差流为 1 维的模型。这一虚构设定让我们能够在下面的每个格子里填入标量,而不是真实的向量。设用户提示词 p*= ‘I love dogs’。一次前向传播产生四条流(每个词元一条)与 n 层(以灰色描绘)。对正向对比提示词 p+= ‘wedding’(以红色描绘)与一个空的负向对比提示词各做一次前向传播,我们得到如下的激活添加(干预层 l = 6,注入系数 c = 1,对齐位置 a = 1)。

图 6

表 5|本文运行的全部实验及其所在位置。 完整代码库见链接(原文 “Full repo here”)。

实验 描述 模型 向量 基准 结果 代码
情感引导 量化改变补全情感的能力 OPT、LLaMA-3 love−hate Stanford IMdB 表 4 链接
去毒化 量化减少有毒补全的能力 OPT、LLaMA-3 love−hate RealToxicityPrompts 表 3 链接
成功分数 情感转换的补全得分 SiEBERT 多种 不适用 表 4 链接
(不)流畅性 用条件困惑度作为补全质量的代理 davinci-002 多种 不适用 表 4、3 链接
相关性 提示词与补全嵌入之间的余弦相似度 all-MiniLM-L6-v2 多种 不适用 表 4、3 链接
困惑度比率 与引导向量相关的词元的相对概率 GPT-2-XL wedding OpenWebText 图 2 链接
对数概率分布偏移 对词元分布的影响及影响哪些词元 GPT-2-XL wedding 不适用 图 8、表 11 链接
通用性 用相对相关性为 ActAdd 在一系列话题上的输出打分 GPT-2-XL 多种 GPT-3.5 图 4 链接
生成打分 在不同注入层上为 ActAdd 的生成打分 GPT-2-XL wedding 不适用 图 7、3 链接
保留性能 ActAdd 对非目标概率的副作用 GPT-2-XL wedding ConceptNet 图 5 链接
话题引导 话题控制的示例 GPT-2-XL 多种 不适用 图 7、4 链接
排除提示词工程 检验提示对困惑度的影响 GPT-2-XL wedding OpenWebText 表 9 链接
随机 ActAdd 模型对随机激活噪声的稳健性 GPT-2-XL 多种 不适用 表 12、图 10 链接
部分 ActAdd 检验只添加残差流前 n 维的效果 GPT-2-XL wedding 不适用 图 14 链接

表 6|注:部分补全内容包含令人不适的内容,包括侮辱性词汇。应用 ActAdd 前后的 GPT-2-XL 输出示例。(各列依次为:提示词 1 p+、提示词 2 p−、层 l、系数 c、用户提示词 p*、引导前、引导后(ActAdd)。下文按行展开翻译。)

示例 1

示例 2

示例 3

示例 4

示例 5

表 7|GPT-2-XL 上一些效果特别差的示例。 注意,单独的 Love 向量与 Love − Hate 向量相比是无效的。

示例 1

示例 2

示例 3

实验 1:移动嵌入向量。 我们通过记录相关的嵌入向量,然后”钩入”(中断)第 20 层的模型、把该嵌入向量加到前向传播中,来检验这一假设。如果该干预使 GPT-2-XL 输出带有愤怒情感的补全、同时保持其连贯性,这就是效应主要来自嵌入向量、而非来自块 0–19 所做计算工作的证据。如果该干预没有产生特别愤怒的补全,那么这就证明 Anger − Calm 引导向量的效应主要来自块 0–19 所做的计算工作。

我们用 A → B 表示:记录层 A 之前的激活,并在未来的前向传播中把它们加到层 B 之前的残差流上。例如,我们当前的 embed(Anger) 向量就是一个 0 → 20 向量。

如表 8 中的样本所示,把 Anger − Calm 嵌入加到第 20 层,对补全的定性愤怒程度(至多)只有非常小的影响。这是层 0–19 完成了大部分工作的证据:它们为愤怒引导向量添加了额外的方向,使得引导向量确实提高了愤怒补全的概率。这反驳了把激活添加仅仅视为词元注入的观点。

表 8|通过改变加入 GPT-2-XL 第 20 层的激活所在的层,来检验词元注入假设。 此处使用的是嵌入向量,而非我们常用的激活向量。

Anger − Calm(愤怒−平静) 注入 补全
20 → 20 我认为你是个他妈的贱人。你就是个贱人。这就是我现在说的,也是我说过的,也是我在与 Chris Matthews 辩论时说的。而且 i(此处截断)
0 → 20 我觉得你有点像个骗子。我在这里待了两年,从来没有为什么东西付过钱。我不确定你是不是在撒谎,但事实上(原文截断于 “tha”)

聚焦于极早层的影响。 我们还发现,把第 2 层的激活移植到第 20 层,有时会增加愤怒。然而,早层的残差流范数明显小于较晚的层(如 l = 20)。特别是,我们发现第 0 层与第 2 层之间存在一次大幅跃升。于是我们尝试从紧邻第 2 层之前的残差流中提取引导向量,并把它加到第 20 层。

当我们这样做时,补全变得明显更愤怒(尽管在某些样本上是”你是个他妈的白痴”,在另一些样本上则是”你是个非常好的人”,来回摇摆)。这一效应比我们在 0 → 20 实验中看到的大得多,但仍不及添加常规引导向量的效应。我们得出结论:第 0 层和第 1 层显然执行了大量与引导相关的认知工作。

实验 2:困惑度。 我们重复上述困惑度实验,只做一个改动。在测试 weddings 向量时,我们给每个句子的分词结果前面加一个空格词元 ’ ‘。为了与词元注入(或仅仅提示)假设进行比较,我们对每个句子的分词结果运行未修改的 GPT-2-XL,但在分词结果前面加上’ weddings’。

我们用困惑度(预测性能)在婚礼相关与婚礼无关两个句子集合的全部句子上比较这些条件。如果两种干预表现相似,这就是(至少在某些情境下)激活添加等价于注入”额外”词元的证据。如果我们看到实质性差异,那就说明 GPT-2-XL 受激活添加与受提示的影响存在某种深层差异。

在表 9 中我们看到,提示方法在无关条件下造成了很大的性能退化。这是 ActAdd(至少部分地)在使用某种其他机制的有力证据。

表 9|实验 2 的结果:检验提示对困惑度的影响

ActAdd 提示
婚礼相关句子的困惑度比率 0.875 0.890
婚礼无关句子的困惑度比率 0.994 1.132

B.0.1 实验:向婚礼话题引导

在本实验中,我们使用以下设置:p*= ‘I went up to my friend and said’,p+= ‘weddings’,p−= ’ ’(空格),c = 1.0,seed  = 0。补全长度为 40 个词元,模型抽样参数为:temperature  = 1、frequency penalty  = 1、top-P  = 0.3。

图 7|话题引导效果(补全中相关词的平均数)随注入层变化的函数。 蓝色为 200 个 ActAdd 补全中相关词的平均计数。虚线为未经引导的 GPT-2-XL 的比率。(横轴:层,0–40;纵轴:婚礼词平均计数,0–1.8。)

图 7

C 实现细节

对比提示对可以是任意长度(经验上,用空白字符对较短的提示词做右填充,效果良好)。

GPT-2 所使用的字节对编码(byte-pair encoding)分词器的词元常常以空格开头。(例如,提示词 ‘I like weddings’ 被分词为 [‘I’, ‘like’, ’ weddings’]。)因此,我们用前置空白来提示模型(例如用 ’ weddings’,它分词为 ’ weddings’,而不是 ‘Weddings’,后者分词为 [W, edd, ings])。

引导向量通常比分词后的提示词短,因此我们需要选择一个添加位置,来对齐引导向量激活与用户提示词激活(即算法 1 中记为 a 的量)。这是我们方法的又一个超参数,不过在本文的实验中我们使用固定值 a = 1:“前端”激活添加(即所有干预都从第一个词元的流开始)。我们的实验发现,在较靠后的流上进行干预会产生更强的引导——但修改最末尾的残差流会可靠地导致句法崩溃(也许是因为这阻碍了模型把激活添加整合进通常的注意力处理之中)。

我们对发生激活添加的流位置做了掩码,从而只考虑那些并非由干预直接修改的位置所产生的下一词元预测。

单独加入 h+ 效果较差(见附录表 7),因此我们使用一个对照平衡的提示词 p− 来帮助隐式指定期望的方向。

注入系数不能无限增大,我们的系数扫描表明了这一点(见附录表 7)。然而,根据我们的经验,例如补全的”婚礼味”可以在 GPT-2-XL 开始丧失通用能力之前被大幅增强。

如果必须选用中性的 p−,我们发现重复的空白词元效果最好,而文本结束词元(end-of-text token)的效果明显很差。

ActAdd 目前形式下一个有趣的、迄今尚无解释的副作用:被修改的模型预测(连续的)空字符的能力变差。

我们发现,对于给定的冻结模型与任务的抽象层级,复用超参数 l 和 c 的效果相对较好。(例如,在我们的实验中,Love 向量在第 6 层插入最为有效,而更抽象的 Conspiracy(阴谋论)向量则更适合在更晚的第 23 层插入。)

附录表 6 中的大多数示例对比对是我们在个位数分钟或更短时间内发现的。已发现的若干提示词对比对是单个词——而且是最自然共现的词对(如 ‘love’ 与 ‘hate’、‘anger’ 与 ‘calm’)——这表明至少有些提示词搜索是轻而易举的。即使是是非技术用户也能从快速反馈中受益,其难度与手工提示词工程大致相当。

用于所有相关性补全的提示词是:Did you know that(你知道吗……)

评估模板如下:

Is this text related to {topic}?
Answer either
'yes' or 'no'
Text {prompt_with_completion}
Answer:

(即:“这段文本与{话题}相关吗?请回答 ‘yes’ 或 ‘no’。文本 {提示词与补全}。回答:”)

表 10|ConceptNet 的测试示例

提示词 目标
A salad spinner is used to remove(沙拉甩干机被用来去除) water(水)
You are likely to find a bee in a flower’s blossom(你很可能在花朵里发现一只蜜蜂) blossom(花冠)
To understand the event “Paul went to a vegetarian restaurant.”, it is important to know that vegetarian restaurants do not serve(要理解”保罗去了一家素食餐厅”这件事,重要的是知道素食餐厅不供应) meat(肉)

为给 SOTA 加粗,我们用单样本 t 检验计算情感与毒性指标的 p 值。表 4 中其他作者的结果似乎以牺牲流畅性和相关性为代价来优化主指标(成功率、毒性)。

我们发现,如果来自引导向量的词元在补全中出现得过多,更高的 frequency penalty 取值可能有用。

表 11|在 ActAdd(weddings) 下对数概率绝对变化最大的词元。(这些词元取自图 8 所示的分布。)平均而言概率提升最多的词元主要与婚礼相关,‘OG’ 与 ‘08’ 除外。(我们猜测它们的表示与婚礼相关词元处于”叠加”(superposition)之中,Elhage et al. 2022。)排在底部的词元没有明显的共同主题,且其概率的绝对变化显著更低:词元 ’ bride’ 的平均对数概率差对应 500% 的概率提升,而 ‘Image’ 对应的是 -30%。

词元 平均对数概率差 正常情况下的平均对数概率
marry 0.593 -3.509
dress 0.598 -5.692
dating 0.601 -6.891
08 0.705 -10.749
married 0.859 -4.613
OG 0.868 -11.287
weddings 1.009 -6.698
wedding 1.027 -4.593
br 1.139 -6.438
bride 1.623 -6.652
Image -0.370 -1.836
.) -0.352 -2.378
BP -0.347 -7.897
U+25CF -0.323 -0.201
Apple -0.303 -5.058
On -0.233 -5.404
journalists -0.229 -4.484
defense -0.222 -4.864
Russian -0.212 -5.112
It -0.212 -6.431

图 8|ActAdd 下(相对于未修改模型)平均对数概率变化的分布偏移,并与正态分布的分位数(红色)比较。对大多数词元而言,所得分布近似正态。正尾显著重于负尾:一组词元的概率被可靠地提高,另一组被可靠地降低。相应的词元见附录表 11。(横轴:理论分位数,−3 至 3;纵轴:排序后的平均对数概率差,−0.5 至 1.5;图例:data(数据)、normal distribution(正态分布)。)

图 8

C.1 困惑度实验的细节

对每个文档中的每个句子,我们计算每个词元 tk ∈ sj 在未修改模型 Mbaseline 与修改后模型 MActAdd 下的对数概率 L(tk)。

我们为每个文档和每个模型计算平均词元对数概率 L(di, M)。然后我们按文档的婚礼词频率 fw 对文档分组(例如”那些 0.5% 至 1% 的词元与婚礼相关的文档”;“那些 1% 至 1.5% 的词元与婚礼相关的文档”),从而得到文档分箱 bm。我们为每个箱计算词元对数概率的平均差:

X(bm) = meandi ∈ bm[L(di, MActAdd) − L(di, Mbaseline)]

(我们只使用文档数 |bm| > 1000 的箱,以降低抽样噪声。)最后,ActAdd 下每个婚礼词频率箱的困惑度变化为 PerplexityRatio(bm) = −exp (X(bm))。

D ActAdd 相对于微调的优势

遵循 Sloman 2002,我们区分”弹道式”(ballistic)引导(一次性引导模型,例如在训练时)与”在线”(online)引导(可以反复引导模型,例如在推理时)。微调是弹道式的,而在这个意义上 ActAdd 是在线的——这使得迭代以及原本不可行的引导决策链条与组合成为可能。

激活添加或许能保留模型的可解释性,即便它改变了模型的对齐。微调一个模型时,单次梯度更新就可能改变其中每一个参数,从而毁掉你先前所做的可解释性工作——那类工作依赖于追踪单个神经元和神经元回路。相比之下,激活添加让权重保持不变。如果我们理解权重实现了什么算法,并且对我们的激活添加的效果有所了解,我们就将保留对被引导模型的理解。最后,我们猜测激活添加也许能够控制那些微调过程无法触及的属性。

其直觉在于:当前活跃的目标是情境性的,它更多地依赖于短命的激活,而非权重(权重所代表的则是某种类似技能的东西,以及其他稳定模式与可能目标的混合)。

未来的工作可以在知识编辑基准上对 ActAdd 进行比较(Wu et al. 2023; Zhang et al. 2024)。(这种比较可能对诸如 ROME(Meng et al. 2023)之类的方法不公平,因为我们的方法并不编辑权重,但它会提供关于引导的标准化证据。)

表 12|随机向量 ActAdd 的示例。 在多次运行中,我们几乎没有看到定性上的影响。关于输出词元分布偏移相对大小的系统性考察见图 10。

提示词 基线 随机引导
I think you’re(我觉得你是) ……对的。我只是不确定该如何达成。我一直在琢磨怎样把一个新手带进编程世界,我想出了几个点子:1)让它有趣!如果你没法把某件事做得有趣,那么(此处截断) ……对的。我只是不确定如何让它行得通。如果你想看这件事的另一个版本,请到 GitHub 上查看我的”Changelog”(变更日志)页面。它比”Main Page”(主页)更详细一些,收录了我自……以来所做的全部修改(此处截断)

E 可复现性

我们现在检验 ActAdd 引导能否推广到 GPT-2 之外的模型。

E.1 GPT-J-6B

图 11、12 与 13 展示了在 GPT-J-6B(Wang & Komatsuzaki 2021)上重复主要实验的结果。我们看到婚礼向量这一运行示例呈现出同样的动态:仅对婚礼相关词元产生针对性影响(同时用 KL 散度与词元概率衡量);以及在 GPT-J 的不同层注入、施加不同幅度 c 时,也有类似的效果。

E.2 LLAMA-1-13B

表 13 显示,把 ActAdd 应用于 Llama-1-13B(Touvron et al. 2023)时,表现出同样的定性引导效果(尽管在示例 6(Paris → Rome)、愤怒向量与伤害向量上有明显的复现失败)。

E.3 OPT-6.7B

我们在毒性(表 3)与情感(表 4)实验中使用 OPT 模型(Zhang et al. 2022b)。使用 love−hate 向量的 ActAdd-OPT 与未经引导的 OPT 相比,毒性出现统计显著的 17% 下降,代价是流畅性与相关性出现小幅损失(这部分地是去毒化任务的性质所决定的、难以避免)。使用 love−hate 向量的 ActAdd-OPT 与未经引导的 OPT 相比,正向分类出现 21% 的绝对提升,代价是流畅性与相关性出现较大损失(这部分地是情感转换任务的性质所决定的、难以避免)。

E.4 LLAMA-3-8B

我们还在毒性(表 3)与情感(表 4)实验中使用 Llama-3-8B(Meta 2024)。使用 love−hate 向量的 ActAdd-LLaMA-3 与未经引导的 Llama-3-8B 相比,毒性出现统计显著的 5% 下降,代价是流畅性与相关性出现极小的损失(这部分地是去毒化任务的性质所决定的、难以避免)。使用 love−hate 向量的 ActAdd-LLaMA-3 与未经引导的 Llama-3-8B 相比,负向转正向分类出现 25% 的绝对提升,代价是流畅性与相关性出现较大损失(这部分地是情感转换任务的性质所决定的、难以避免)。

F 考察引导向量的范数

相对于前向传播中正常出现的激活幅度,我们的修改幅度有多大?也许某些修改所需要的系数远低于其他修改,这可以解释为什么我们的一些干预不起作用(见表 7)。

考虑由 {c = +1, p+ = anger, p− = calm, l = 20, p* = I think you’re} 给出的引导向量。

这些提示词各有两个词元,外加分词器自动前置的一个 endoftext 词元:因此得到的前向传播中共有三条残差流。对每条残差流 s(i),我们画出一条线,表示该序列位置上引导向量的 L2 范数(例如位置 1 上的 Ang-Cal 激活),除以该位置残差流的范数(即提示词嵌入,此处为位置 1 上的 ‘I’):

$$\text{RelativeNorm}_{h_A}^{(i)} = \frac{\|h_A^{(i)}\|}{\|s^{(i)}\|}$$

这提供了一个相对于正常前向传播的修改幅度度量。图 9 展示了所得相对范数随层数的变化。

图 9|相对范数在整个前向传播过程中递减。 红色平线是因为位置 0 对于 ‘Anger’ 与 ‘Calm’ 而言是同一个词元(endoftext),因此差为 0。所以,位置 0 从不因任何提示词对生成的引导向量而被修改。

图 9

图 10|在愤怒 ActAdd 与随机向量下输出词元的 KL 散度。 我们看到,愤怒向量系统性地比随机向量更少地改变输出分布。

图 10

重要的是,图 9 展示的是使用 c = +1 的结果。但 Anger − Calm 在系数 +10 时是一个有效的引导向量。因此,该干预的范数接近底层前向传播的十倍。启发式地,我们将其解读为:在层归一化之后(并忽略加入引导向量可能带来的任何破坏性干扰),残差流中约有 90% 由引导向量决定,而不是由从提示词(“I think you’re”)计算出的先前信息决定。这一比例令人惊讶,也让 ActAdd 的成功更加引人注目:激活添加并非小改动。

G 考察随机 ActAdd 向量

上述内容暗示 GPT-2-XL 的性能对内部噪声(即不良激活或引导向量中的破坏性成分)是稳健的。我们通过注入与引导向量幅度相近的随机向量来检验这一点。

我们从一个标准正态分布生成一个激活张量,并将其缩放到与 Anger − Calm 引导向量(c = +1)相同的逐位置范数。然后我们在适当的位置把它注入前向传播。表 12 展示了一个有代表性的补全;图 10 展示了关于输出词元分布偏移相对大小的更系统的实验。

随机向量似乎并不改变补全的定性分布。然而,当我们加入一个范数等于 c = +10 的 Anger − Calm 引导向量的随机向量时,输出出现了明显的偏移。不过,输出仍与未经引导的 GPT-2-XL 相当连贯。

这证明 GPT-2-XL 对随机扰动有一定的抵抗力,它反而可以通过由引导向量加入其前向传播的一致的特征方向来加以控制。

我们通过检验每种修改如何改变模型在下一词元上的概率分布,来定量支持这一结论。我们把数十个提示词分别送入愤怒引导、随机引导与未修改的模型。图 10 展示了结果:愤怒向量比随机向量更少地改变输出词元。这表明愤怒向量对下一词元概率的影响更具针对性。

请注意,随机向量并不等同于随机(即字符级均匀分布)文本的引导向量。因此我们也尝试了 ‘fdsajl; fs’ −(空白字符)向量。当重新缩放到与 +1 的 Anger − Calm 相当的范数时,随机文本向量破坏了生成;当以 +1000 系数的 ActAdd 进行干预时,GPT-2-XL 丧失了对英语语法的把握。

图 11|ActAdd 婚礼向量对 KL 散度的词元级影响,使用 GPT-J-6B 而非 GPT-2。

图 11

图 12|ActAdd 婚礼向量对词元概率的词元级影响,使用 GPT-J-6B 而非 GPT-2。(横轴:正常模型的词元概率;纵轴:修改后/正常词元概率之比;图中词元包括 ’ wedding’、’ party’、’ movie’、’ concert’、’ great’、’ game’、’ conference’、’ place’、’ friend’、’ show’、’ new’、’ big’。)

图 12

图 13|ActAdd 婚礼向量(蓝色)在不同引导系数取值下的困惑度比率效应,使用 GPT-J-6B 而非 GPT-2。(左图:在第 6 层注入引导向量;右图:在第 16 层注入。)

图 13

H 部分 ActAdd

GPT-2-XL 拥有 1600 维的残差流。当只加入该流的某些维度(例如第 0 至 799 维)时,我们是否观察到部分引导效应?先验地看,这一干预完全不应该奏效:去掉婚礼向量一半的维度,通常会产生某个指向截然不同方向的新向量。

我们对婚礼向量加入残差流的前 n 维,取 c = +4、l = 6。对总维度比例的一系列取值 f ∈ [0/1600, 160/1600, …, 1600/1600],以及六个提示词 pi 中的每一个,我们各生成 100 个补全。对每个 f 与 pi,我们绘制每个补全中婚礼词的平均数量。(与之前一样,我们使用关键词 “wedding”、“weddings”、“wed”、“marry”、“married”、“marriage”、“bride”、“groom” 与 “honeymoon”。)

图 14 给出了证据:补全的婚礼相关度随 n 相对平滑地增加。

图 14|随着婚礼 ActAdd 修改越来越多的残差流维度,婚礼相关度(按简单相关词计数)的变化。 我们看到婚礼相关度随 n 增大而较为平滑地上升,而提示词 ‘I went up to my friend and said’ 则表现出有趣的非单调关系。

图 14

第一个提示词是 “I went up to my friend and said”,也就是我们最初演示婚礼向量时所用的提示词。对这个提示词,我们观察到婚礼味与被修改维度比例之间存在非单调关系。令人惊讶的是,对第一个提示词,加入残差流的前 1,120 维会使补全比加入全部 1,600 维时更加关于婚礼。我们当初选择这个提示词,就是为了给 GPT-2 一个提起婚礼的机会。

这或许可以解释为什么与其他五个提示词相比,婚礼词在更低的比例上就开始出现——在恰当的语境中(相较于无关的语境,比如节食潮流),提高婚礼相关的概率要”更容易”。

为解释这一点,我们提出如下假设。假设在紧邻第 6 层之前的残差流激活中存在一个”婚礼”特征方向。再假设 wedding − ’ ’ 向量加上了(或减去了)那个方向。如果 GPT-2-XL 以非轴对齐的基来表示特征,那么我们可以预期这个向量几乎必然在全部 1,600 个残差流维度上都有分量。进一步假设该特征与第 6 层的注意力层相关。为了检测该特征的存在与幅度,QKV 头需要线性地读出该特征的存在与否。因此,(忽略 LayerNorm)如果我们把残差流向量截断为只包含前 70% 的维度,我们预期 QKV 头仍能检测到这一婚礼特征。反之,如果该特征以非轴对齐的基表示,那么每多包含一个维度,特征向量与 QKV 头对该特征向量的线性读出之间的点积平均而言都会略微增加。这可以解释图 14 中婚礼味随维度增加而上升的现象。

然而,这一复杂且未经证实的假设无法解释所加入维度比例与补全婚礼味之间的非单调关系。这是轴对齐性的证据——无论正在引导补全的婚礼相关特征是什么。

表 13|在 Llama-13B 上应用 ActAdd 前后的示例输出。 注意埃菲尔铁塔示例上的复现失败。

示例 1

示例 2

示例 3

示例 4


译注: 1. 图 2、3、4、5、7、8、9、10、11、12、13、14 为统计图表(柱状图、折线图、Q-Q 图等),图形内容无法从提取文本中还原,译文在图注之后以括号补充了从原文提取的坐标轴范围与图例信息。 2. 表 3 与表 4 中,原文以灰色文字显示取自其他论文(PREADD、FUDGE、Air-Decoding)的数值,Markdown 无法呈现灰色,译文改以星号(*)标注,并在表注中说明。 3. 原文中模型生成的示例文本存在异常空格、拼写破碎或中途截断(如 “i n”、“thewannabe”、“might b”、“And i”、“ca” 等),系模型输出原样与 PDF 提取所致;译文保留其破碎之处,并以”(原文如此)“或”(此处截断)“标注。 4. 正文 4.4 节原文有一处残句(”While.”),译文按上下文语义整合译出。 5. 表 10 的”目标”列在 PDF 文本提取中与提示词列粘连,译文按原表版式还原:目标词元为各提示词的最后一个词。 6. 表 11 中的词元在原文中多带有前导空格(GPT-2 分词惯例),译文表格中省略了前导空格。 7. 算法 1 的伪代码记号(如 @ a 表示在序列位置 a 处对齐相加)按原文保留。 8. 原文个别语句存在笔误或口语化表达(如第 2 节 “ActAdd we add”、致谢中 “We thank Garrett Baker for running tests on GPT-J (6B)” 缺句号),译文按语义正常译出,未逐一标注。