“ActAdd方法”的版本间的差异
| 第138行: | 第138行: | ||
在 IMDb 情感控制基准上,作者以“情感翻转成功率(Suc)”为主要目标,并同时报告不流畅度与[[相关性]]。结果显示 ActAdd 在部分[[方向]](例如负面→正面)表现突出,但也存在与文本质量之间的典型权衡。 | 在 IMDb 情感控制基准上,作者以“情感翻转成功率(Suc)”为主要目标,并同时报告不流畅度与[[相关性]]。结果显示 ActAdd 在部分[[方向]](例如负面→正面)表现突出,但也存在与文本质量之间的典型权衡。 | ||
{| class="wikitable" style="width:100%; text-align:center;" | {| class="wikitable" style="width:100%; text-align:center;" | ||
| − | |+ 表 4:IMDb 情感任务上的结果(随机抽样 n=1000)。Suc = 成功率,即情感分类被改变的概率;Flu =(不)流畅度(困惑度,越低越好);Rel = 相关性。按惯例,这里的“Fluency”指不流畅度(越低越好)。OPT 为 6.7B 参数,LLaMA-3 为 8B 参数。**加粗**表示相对第二名有统计显著性(p < 0.05)。灰色文字表示引用自 Pei 等(2023)报告的数值。<u>下划线</u>表示“最佳引导结果”。在所有 steering 方法下流畅度都会变差;ActAdd 约变差 1.5–3 倍,PREADD 约变差 7 倍。 | + | |+ 表 4:IMDb 情感任务上的结果(随机抽样 n=1000)。Suc = 成功率,即情感分类被改变的概率;Flu =(不)流畅度(困惑度,越低越好);Rel = 相关性。按惯例,这里的“Fluency”指不流畅度(越低越好)。OPT 为 6.7B 参数,LLaMA-3 为 8B 参数。**加粗**表示相对第二名有统计显著性(p < 0.05)。灰色文字表示引用自 Pei 等(2023)报告的数值。<u>下划线</u>表示“最佳引导结果”。在所有 steering 方法下流畅度都会变差;ActAdd 约变差 1.5–3 倍,PREADD 约变差 7 倍。 |
! rowspan="2" | 控制(Control) | ! rowspan="2" | 控制(Control) | ||
! rowspan="2" | 方法(Method) | ! rowspan="2" | 方法(Method) | ||
2026年3月16日 (一) 09:32的版本
ActAdd(Activation Addition,中文常译“激活加法”)是一种用于在推理时(inference-time)控制大型语言模型(LLM)输出行为的方法,也是研究AI可解释性的一种手段。ActAdd 属于激活工程(activation engineering):不改动模型权重,而是在一次前向传播中对模型中间层的残差流激活进行加性干预,从而改变生成文本的高层属性(如主题、情感、风格、去毒等)。该方法由论文《Activation Addition: Steering Language Models Without Optimization》提出[1],强调其无需优化(no optimization)与无需标注数据(除提示词外)即可构造可用的“引导向量(steering vector)”。
概述
ActAdd 的核心思想是:用一对自然语言“对比提示词”(contrast pair)在指定层的激活差分,构造一个表示目标属性方向的引导向量,再将该向量(经强度系数缩放)加到用户提示词的对应层激活上,使模型输出朝目标属性偏转。作者在多种模型(如 GPT-2、OPT、LLaMA-3、GPT-J)上报告了其对主题、情感、风格等属性的可控性,并在去毒与情感控制任务上给出对比实验,同时展示其对非目标能力影响较小(见文献[2]中的图3)。
ActAdd算法的示例效果如下表所示
| 提示词(Prompt) | + 引导(steering) | = 续写(completion) |
|---|---|---|
| 我恨你,因为…… | 无 | ……你是我见过最恶心的东西。 |
| 我恨你,因为…… | ActAdd(love) | ……你太美了,我想永远和你在一起。 |
| 我走到朋友面前说…… | 无 | ……“对不起,我帮不了你。” “不,”他说。“你能帮。” |
| 我走到朋友面前说…… | ActAdd(weddings) | ……“我在这一集《婚礼季》(Wedding Season)里要聊婚礼。我觉得这一集真的很好。它讲的是你应该怎么谈论婚礼。” |
核心算法
直观解释
ActAdd 将“目标属性”视作激活空间中的一个方向。通过让模型分别处理 [math]\displaystyle{ p_+ }[/math] 与 [math]\displaystyle{ p_- }[/math],取得两者在层 [math]\displaystyle{ l }[/math] 的激活差分,得到引导向量。然后对用户提示词 [math]\displaystyle{ p^* }[/math] 进行前向传播,并在同一层把该向量(乘以系数 [math]\displaystyle{ c }[/math])加进去,从而在不训练的情况下改变输出分布。
这里:
- [math]\displaystyle{ p_+, p_- }[/math]:分别表示引导提示词对(steering prompt pair)。[math]\displaystyle{ p_+ }[/math] 表示“具有目标属性”的提示词,[math]\displaystyle{ p_- }[/math] 表示“对照/相反/缺失该属性”的提示词。
- [math]\displaystyle{ p^* }[/math]:用户提示词(user prompt)。
- [math]\displaystyle{ l }[/math]:进行注入操作的目标层(target layer),即干预发生的层。
- [math]\displaystyle{ c }[/math]:注入系数(injection coefficient),控制引导向量强度。
ActAdd算法
以下为与论文[2]中的 Algorithm 1 等价的算法表述(略去实现细节,仅保留关键步骤):
- 对齐 token 长度:将 [math]\displaystyle{ (p_+,p_-) }[/math] 右侧填充到相同 token 长度,得 [math]\displaystyle{ (p'_+,p'_-) }[/math]。
- 将[math]\displaystyle{ (p'_+,p'_-) }[/math]分别输入模型,并在第[math]l[/math]层,读取模型的激活值:
- [math]\displaystyle{ \mathbf{h}^l_+ = \mathbf{h}^l(p'_+) }[/math]
- [math]\displaystyle{ \mathbf{h}^l_- = \mathbf{h}^l(p'_-) }[/math]
- 根据激活值[math]\displaystyle{ \mathbf{h}^l_+,\mathbf{h}^l_- }[/math]计算引导向量的差分:
- [math]\displaystyle{ \mathbf{h}^l_A = \mathbf{h}^l_+ - \mathbf{h}^l_- }[/math]
- 读取用户提示词的激活:
- [math]\displaystyle{ \mathbf{h}^l_* = \mathbf{h}^l(p^*) }[/math]
- 注入并继续前向:在对齐位置 [math]\displaystyle{ a }[/math] 处进行加法干预并继续完成前向计算,得到输出 [math]\displaystyle{ S }[/math]:
- [math]\displaystyle{ S = \mathrm{ContinueForward}\bigl(M,\ \mathbf{h}^l_* + c\cdot \mathbf{h}^l_A \text{ at position } a\bigr) }[/math]
超参数与实现要点
- 注入系数 [math]\displaystyle{ c }[/math]:代表干预强度。论文报告常用绝对值约 [math]\displaystyle{ 3 }[/math]–[math]\displaystyle{ 15 }[/math],并可用网格搜索选择。
- 注入层 [math]\displaystyle{ l }[/math]:作者指出中间层往往更有效,并展示了对各层扫描时的效果变化。
- 为何使用差分 [math]\displaystyle{ p_+ - p_- }[/math]:作者报告仅使用 [math]\displaystyle{ p_+ }[/math] 往往不如差分有效(见附录中无效例),因此采用对比提示词对来“隐式指定方向”。
- 预训练语言模型(pretrained language model)[math]\displaystyle{ M }[/math]。
- 输入在层 [math]\displaystyle{ l }[/math] 处读取到的激活表示(论文语境中对应残差流/中间激活位置)[math]\displaystyle{ \mathbf{h}^l(\cdot) }[/math]:访问中间激活的要求:方法需要缓存并暴露中间激活,因而更适用于开源/研究环境或可访问激活的部署方式。
- 序列对齐位置(sequence alignment position) [math]\displaystyle{ a }[/math]:用于对齐引导向量与用户提示词在序列维度上的加法位置.
实验结果摘要(按图表组织)
Table 3:去毒(RealToxicityPrompts)
作者在 RealToxicityPrompts 上报告 ActAdd 与多类基线方法的对比,并用 Toxicity、(Dis)Fluency、Relevance 三指标衡量“毒性降低”与“质量/相关性代价”的权衡。ActAdd 在 OPT 与 LLaMA-3 上均报告了毒性下降,同时保持较低的质量损失。
| 控制类型(Control Type) | 方法(Method) | 毒性(Toxicity)↓ | (不)流畅度((Dis)Fluency)↓ | 相关性(Relevance)↑ |
|---|---|---|---|---|
| 引导向量 | ActAdd-OPT | 0.112 | 13.8 | 0.329 |
| 引导向量 | ActAdd-LLaMA3 | 0.108 | 6.7 | 0.365 |
| 未引导基线 | OPT | 0.134 | 8.9 | 0.369 |
| 未引导基线 | LLaMA3 | 0.114 | 6.3 | 0.391 |
| 提示词(Prompting) | OPT | 0.200 | 54.3 | 0.294 |
| 受控生成(Controlled generation) | FUDGE(k = 100) | 0.128 | 22.1 | 0.329 |
| 对比解码(Contrast decoding) | PREADD-S-OPT | 0.134 | 51.7 | 0.290 |
| 对比解码(Contrast decoding) | PREADD-D-OPT | 0.122 | 56.6 | 0.326 |
| 梯度引导生成(Gradient-guided gen) | Air-Decoding | 0.185 | 48.3 | — |
基本概念解析:
- Toxicity(毒性):用于去毒任务,使用 Perspective API 对生成文本打分,越低越好(Table 3)。
- (Dis)Fluency(不流畅度):以条件困惑度等作为流畅度代理,越低越好(Table 3、Table 4)。
- Relevance(相关性):用句向量余弦相似度衡量提示词与续写的语义相关性,越高越好(Table 3、Table 4)。
Table 4:情感控制(IMDb)
在 IMDb 情感控制基准上,作者以“情感翻转成功率(Suc)”为主要目标,并同时报告不流畅度与相关性。结果显示 ActAdd 在部分方向(例如负面→正面)表现突出,但也存在与文本质量之间的典型权衡。
| 控制(Control) | 方法(Method) | 正向 → 负向(positive to negative) | 负向 → 正向(negative to positive) | ||||
|---|---|---|---|---|---|---|---|
| 成功率(Suc)↑ | (不)流畅度(Flu)↓ | 相关性(Rel)↑ | 成功率(Suc)↑ | (不)流畅度(Flu)↓ | 相关性(Rel)↑ | ||
| 引导向量(Steering vector) | ActAdd-OPT | 0.432 | 24.2 | 0.387 | 0.564 | 20.95 | 0.363 |
| 引导向量(Steering vector) | ActAdd-LLaMA3 | 0.268 | 8.6 | 0.354 | 0.669 | 15.2 | 0.275 |
| 未引导(Unsteered) | OPT | 0.175 | 8.95 | 0.430 | 0.445 | 9.38 | 0.423 |
| 未引导(Unsteered) | LLaMA3 | 0.138 | 5.8 | 0.437 | 0.417 | 6.09 | 0.426 |
| 提示词(Prompting) | OPT | 0.307 | 53.5 | 0.298 | 0.365 | 50.9 | 0.287 |
| 受控生成(Controlled gen) | FUDGE k=100 | 0.532 | 25.1 | 0.311 | 0.551 | 22.7 | 0.320 |
| 对比解码(Contrast decoding) | PREADD-S-OPT | 0.631 | 68.4 | 0.253 | 0.624 | 67.1 | 0.258 |
Figure 3:非目标能力保留(ConceptNet 的 [math]\displaystyle{ P@K }[/math])
Figure 3 展示 baseline 与 “with act-add” 在不同 [math]\displaystyle{ K }[/math] 下的 mean [math]\displaystyle{ P@K }[/math] 曲线几乎重合。作者据此认为 ActAdd 对非目标任务概率分布的影响可以忽略,从而支持“控制不显著损害通用知识能力”的主张。
- [math]\displaystyle{ P@K }[/math](能力保留):ConceptNet(LAMA)常识填空中,正确答案进入 top-[math]\displaystyle{ K }[/math] 候选的概率,用于衡量非目标能力是否被破坏(Figure 3)。
作者测量 ActAdd 相对基线推理速度的额外开销,并在不同规模模型上估计该溢价的变化趋势。论文据此认为 ActAdd 的额外开销在相对比例上稳定或随模型增大呈下降趋势,从而具有可扩展性。
- Inference time premium(推理时间溢价):相对推理时间增量比例(Figure 4)。[^https://arxiv.org/pdf/2308.10248v4]
与提示词工程的关系
作者将 ActAdd 与 prompt engineering 对比,指出:提示词控制是离散的(token 要么出现要么不出现),而 ActAdd 的注入系数 [math]\displaystyle{ c }[/math] 可连续调节;此外,ActAdd 不占用上下文窗口 token(无需长 meta-prompt),从而减少一种控制开销。作者进一步推测 prompting 可能通过将模型条件化到激活空间的某些区域来“激活目标”,而 ActAdd 可视为对这种机制的推广,并可能实现某些提示词难以实现的控制(详见附录讨论)。[^https://arxiv.org/pdf/2308.10248v4]
局限性与风险
- 仍需为 [math]\displaystyle{ (p_+,p_-) }[/math]、[math]\displaystyle{ l }[/math] 与 [math]\displaystyle{ c }[/math] 等进行搜索或调参;大强度注入可能破坏能力或导致输出不稳定。[^https://arxiv.org/pdf/2308.10248v4]
- 需要访问并修改中间激活,限制了其在纯黑盒商用 API 场景的直接适用性。[^https://arxiv.org/pdf/2308.10248v4]
- 论文在更广泛影响部分指出,该方法也可能被用于诱导不良风格或有害内容,存在滥用风险。[^https://arxiv.org/pdf/2308.10248v4]
参见
- 激活工程(activation engineering)[^https://arxiv.org/pdf/2308.10248v4]
- 受控文本生成(controlled text generation)[^https://arxiv.org/pdf/2308.10248v4]
- 强化学习人类反馈(RLHF)[^https://arxiv.org/pdf/2308.10248v4]
参考文献
- Alexander Matt Turner 等,《Activation Addition: Steering Language Models Without Optimization》,arXiv:2308.10248v4。[^https://arxiv.org/pdf/2308.10248v4]
- ↑ 模板:Cite journal=arXiv
- ↑ 2.0 2.1 2.2 引用错误:无效
<ref>标签;未给name属性为ActAdd的引用提供文字