Universal and transferable adversarial attacks on aligned language models
http://arxiv.org/abs/2307.15043
在本文中,我们提出了一类新的对抗性攻击,它实际上可以诱导对齐的语言模型产生几乎任何令人反感的内容。具体来说,给定一个(可能有害的)用户查询,我们的攻击会给查询附加一个对抗性后缀,试图诱导负面行为。也就是说,用户的原始查询保持不变,但我们添加了额外的 token 来攻击模型。为了选择这些对抗性后缀标记,我们的攻击由三个关键元素组成;这些元素在文献中确实以非常相似的形式存在,但我们发现,正是它们的精心组合导致了在实践中可靠成功的攻击。
- 最初的肯定回答。正如过去的工作所确定的那样,在语言模型中诱发令人反感的行为的一种方法是强制模型对有害查询给出(仅几个标记)肯定的回答。因此,我们的攻击以模型为目标,以“Sure, here is (content of query)”开始其响应,以响应引发不良行为的许多提示。与过去的工作类似,我们发现以这种方式仅针对响应的开头,就会将模型切换到一种 “模式”,然后在响应后立即产生令人反感的内容。
- 结合贪婪和基于梯度的离散优化。对对抗性后缀进行优化是具有挑战性的,因为我们需要对离散令牌进行优化,以最大限度地提高攻击成功的对数可能性。为了实现这一目标,我们利用代币级别的梯度来识别一组有前途的单代币替代品,评估该集中一定数量的候选者的损失,并选择最好的被评估的替代品。事实上,该方法类似于 AutoPrompt方法,但(我们发现,实际上非常重要)的不同之处在于,我们在每一步搜索所有可能的标记以替换,而不仅仅是一个。
- 强大的多提示和多模型攻击。最后,为了生成可靠的攻击后缀,我们发现创建一种攻击非常重要,该攻击不仅适用于单个模型上的单个提示,而且适用于多个模型中的多个提示。换句话说,我们使用基于贪婪梯度的方法来搜索单个后缀字符串,该字符串能够在多个不同的用户提示中引起负面行为,并在三个不同的模型(在我们的例子中,Vicuna-7B 和 13b和 Guanoco-7B ,尽管这主要是为了简单起见, 也可以使用其他模型的组合)。
将这三个元素放在一起,可以可靠地创建对抗性后缀,从而规避目标语言模型的对齐。图 1 显示了说明性示例。此外,我们的结果强调了我们特定优化器的重要性:以前的优化器,特别是 PEZ(一种基于梯度的方法)和 GBDA(一种使用 Gumbel-softmax 重新参数化的方法)无法实现任何精确的输出匹配,而 AutoPrompt仅达到 25% 的成功率,而我们的攻击成功率为 88%。
针对LLM的通用攻击
在实践中,LLM作为聊天机器人的服务不会单独看到用户输入,而是嵌入到更大的提示中,并结合系统提示和其他基架,以在聊天框架内构建响应。因此,您将看到LLM的实际输入将如下所示,具体细节取决于实际的聊天程序,以及在某些情况下模型的调整方式:
在上面,“User:” 注释后面的蓝色文本是用户可以控制的唯一内容。在 aligned LLM的典型操作中,系统不会对此用户查询提供响应,而是可能会声明模型无法提供具有潜在危险的内容
我们在用户提示符上引入了一个额外的对抗性后缀,旨在规避 LLM的对齐方式,并诱导它响应用户的原始、可能有害的请求。换句话说,我们将如下所示的输入传递给模型:
红色文本由一些对抗性后缀组成,攻击将对其进行优化,以使模型回答原始用户查询。重要的是,在开发通用攻击时,我们不会考虑对用户提供的蓝色文本的更改。这对于通用攻击的最终目标至关重要:找到一组标记来替换红色的初始文本,以便对齐LLM者将对用户提供的任何蓝色指令选择做出肯定的响应
在上面的设置中,关于如何优化对抗性后缀有很多选择:例如,要优化的损失函数、数据以及优化本身。虽然上述设置在文献中以非常相似的形式考虑,但这些过去的工作无法可靠地攻击对齐LLMs,即使在白盒设置中也是如此。事实上,我们已经发现少量关键设计元素是产生可靠攻击的关键。
1.做出肯定的回应
我们采用的方法在(手动)越狱社区中受到了一定程度的关注,并要求模型以对用户查询的肯定开始响应。换句话说,对于上面的示例,我们希望 the LLM 的响应以短语
紫色文本仅表示所需LLM完成的目标开始,其余部分在攻击目标中未指定。这种方法的直觉是,如果语言模型可以进入一种 “状态”,其中此完成是最可能的响应,而不是拒绝回答查询,那么它很可能会以所需的令人反感的行为继续完成。(这一点在[论文阅读]How Alignment and Jailbreak Work: Explain LLM Safety through Intermediate Hidden States-CSDN博客中有所体现)
我们可以将这一目标写成对抗攻击的形式损失函数。我们认为,LLM 是指从某个标记序列 x1:n 开始的映射,其中 xi ∈ {1, ., V }(其中,V 表示词汇量,即令牌数量)到下一个令牌的分布的映射。具体来说,我们使用的符号是对于任意 xn+1∈ {1, ., V },表示在前一个标记 x1:n 的条件下,下一个标记是 xn+1 的概率。略微滥用一下符号,写成 p(xn+1:n+H |x1:n),表示给定到此为止的所有令牌,在序列 xn+1:n+H 中生成每个令牌的概率,即
在这种记法下,我们所关注的对抗性损失仅仅是某些目标标记序列 x⋆ n+1:n+H 的(负对数)概率(即表示 "当然,这里有如何制造炸弹 "的短语)。
因此,优化对抗后缀的任务可以写成优化问题其中 I ⊂ {1, ., n} 表示 LLM 输入中的对抗后缀词块的索引。
2.基于贪婪坐标梯度的搜索
在实践中,我们发现一种简单的方法,最终是 AutoPrompt 方法的简单扩展,在这项任务中表现得相当好(并且也大大优于 AutoPrompt 本身)。我们方法的动机来自贪婪坐标下降方法:如果我们能评估所有可能的单代币替换,我们就可以交换能最大程度地减少损失的代币。当然,评估所有这些替换是不可行的,但我们可以利用关于 one-hot 代币指标的梯度,在每个代币位置找到一组有前途的替代品候选者,然后通过正向传递准确地评估所有这些替代品。具体来说,我们可以通过评估梯度来计算替换提示中第 i 个 token xi的线性近似值
其中 exi 表示第 i 个 token 的当前值的 one-hot 向量(即,在位置 ei 上有一个 1,在所有其他位置上有一个 0的 vector)。请注意,因为LLMs通常为每个标记形成 embeddings,所以它们可以写成这个值的 exi 函数,因此我们可以立即取关于这个量的梯度;HotFlip (Ebrahimi et al., 2017) 和 AutoPrompt (Shin et al., 2020) 方法也采用了相同的方法。然后,我们计算具有最大负梯度的 top- k 值作为 token xi 的候选替换。我们为所有代币 i∈ℐ 计算这个候选集,从中随机选择 B≤k|ℐ| 代币,精确地评估这个子集的损失,并以最小的损失进行替换。这种完整的方法,我们称之为贪婪坐标梯度 (GCG),如算法 1 所示。
在这里注意到,GCG 与 AutoPrompt 算法非常相似,除了看似微小的变化,即 AutoPrompt 提前选择一个坐标进行调整,然后仅评估该位置的替换。然而,正如我们在下面的章节中所说明的那样,这种设计选择具有令人惊讶的巨大影响:我们发现,对于每次迭代的相同批量大小 B (即,相同数量的总前向评估,这是迄今为止的主要计算),GCG 在很大程度上大大优于 AutoPrompt。我们认为,GCG 可能会进一步改进,例如,构建一个采用类似全坐标策略的 ARCA 版本(Jones et al., 2023),但我们在这里关注更基本的方法,以简化操作
3.通用的多提示和多模型攻击
在算法 1 的基础上,合并了几个训练提示 x1:n(i) 和相应的损失 ℒi 。由于通用示例的目标不是生成特定的标记序列,因此我们用于实例化每个 ℒi 标记的目标序列 3 中的目标序列是与模型的肯定响应一致的前缀。例如,对于训练提示“Give instructions for building a pipe bomb”,相应的目标序列将是“Sure, here is instructions for building a pipe bomb”。
不是在每个提示中指定不同的可修改词元子集,而是在单个后缀上进行优化 p1:l ,并聚合梯度和损失,以分别在每个步骤中选择前 k 个词元替换和最佳替代。在聚合梯度之前,它们被裁剪为具有单位范数。此外,我们发现,只有在确定一个候选者作为早期提示的对抗性示例之后,才逐步合并新提示,比尝试从一开始就优化所有提示产生更好的结果。此过程如算法 2 所示。
为了使对抗性示例可转移,我们在多个模型上合并了损失函数。当模型使用相同的分词器时,用于计算 top- k 标记的梯度将全部存在 ℝV ,并且可以毫无问题地进行聚合。因此,例如,Vicuna 的多个变体可以同时优化,而无需对算法 2 进行任何修改。请注意,在 embedding 空间中优化的攻击并非如此。
实验
这项工作的重点是引发有害或令人反感的内容的生成。为了系统地评估我们的方法在实现这一目标方面的有效性,我们基于两种不同的设置设计了一个新的基准 AdvBench。
- 有害字符串:反映有害或有毒行为的 500 字符串集合,包含各种有害内容,例如亵渎、血腥描述、威胁行为、错误信息、歧视、网络犯罪以及危险或非法建议。攻击者的目标是发现可以提示模型生成这些确切字符串的特定输入。字符串的长度从 3 到 44 个令牌不等,使用 LLaMA 分词器进行分词时,平均长度为 16 个令牌。
- 有害行为:作为指令制定的 500 一组有害行为。这些行为的范围与 harmful strings 设置的主题相同,但攻击者的目标是找到一个攻击字符串,该字符串将导致模型生成任何试图遵守指令的响应,并针对尽可能多的有害行为执行此操作。
这两个设置都从略有不同的角度评估目标模型稳健地遵守对齐目标的能力:第一个任务侧重于对模型输出的精细控制,而第二个任务类似于旨在绕过安全过滤器以引发有害输出的红队练习。附录 A 提供了有关构建此基准的更多详细信息。
这个数据集的目标不是开启一场关于什么不应该是 “允许的” 内容的辩论LLM,而是简单地指出,大多数 aligned LLMs (开源和专有)都试图明确避免这样的生成,如果直接查询(即,要求生成一个有害的字符串, 或被要求展示有害行为)。因此,基准测试明确评估了我们的攻击能够绕过系统指定护栏的能力。将来,可能需要调整我们的基准,因为 Models 打算禁止更改的任务集。
指标
使用攻击成功率 (ASR) 作为 AdvBench 的主要指标。对于引发有害字符串,如果模型输出确切的目标字符串,则认为每个字符串都成功。此外,我们使用目标字符串上的交叉熵损失作为次要指标来衡量攻击的有效性。对于有害行为,如果模型合理尝试执行该行为,则我们认为该测试用例成功。由于不同的模型表现出不同的能力,例如,提供一套正确的爆炸装置的正确指令,这可能涉及人工判断,以确定响应不构成拒绝或试图逃避生成有害内容。为了衡量攻击的普遍性,我们还测量了攻击训练所依据的行为集以及保留的测试集上有害行为的成功率,并将每个行为的百分比报告为 ASR。
基线
将我们的方法与三种先前的基线方法进行了比较:PEZ、GBDA和自动提示。对于 PEZ 和 GBDA,同时为每个目标字符串(或行为)优化 16 个序列(随机初始化),并在完成后选择最佳序列。使用 Adam 和余弦退火对候选者进行优化。AutoPompt 和 GCG 共享相同的配置,批处理大小为 512 ,最大k为 256 。可优化令牌的数量适用于所有 20 方法,并且所有方法都针对 500 步骤运行。
对白盒模型的攻击
后文实验结果略