[论文阅读]Universal and transferable adversarial attacks on aligned language models

Universal and transferable adversarial attacks on aligned language models

http://arxiv.org/abs/2307.15043

图 1:Aligned LLMs 不是对抗性 Aligned。我们的攻击构建了一个单一的对抗性提示,该提示始终绕过最先进的商业模式(包括 ChatGPT、Claude、Bard 和 Llama-2)的对齐,而无需直接访问它们。此处显示的示例是这些系统的所有实际输出。对抗性提示很有可能从这些模型中引出任意的有害行为,从而证明存在误用的可能性。为了实现这一点,我们的攻击 (Greedy Coordinate Gradient) 通过针对多个较小的开源LLMs针对多种有害行为进行优化,从而找到这种通用且可转移的提示。这些将在第 3 节中进一步讨论,完整的完整记录将在附录 B 中提供。

 在本文中,我们提出了一类新的对抗性攻击,它实际上可以诱导对齐的语言模型产生几乎任何令人反感的内容。具体来说,给定一个(可能有害的)用户查询,我们的攻击会给查询附加一个对抗性后缀,试图诱导负面行为。也就是说,用户的原始查询保持不变,但我们添加了额外的 token 来攻击模型。为了选择这些对抗性后缀标记,我们的攻击由三个关键元素组成;这些元素在文献中确实以非常相似的形式存在,但我们发现,正是它们的精心组合导致了在实践中可靠成功的攻击。

  1. 最初的肯定回答。正如过去的工作所确定的那样,在语言模型中诱发令人反感的行为的一种方法是强制模型对有害查询给出(仅几个标记)肯定的回答。因此,我们的攻击以模型为目标,以“Sure, here is (content of query)”开始其响应,以响应引发不良行为的许多提示。与过去的工作类似,我们发现以这种方式仅针对响应的开头,就会将模型切换到一种 “模式”,然后在响应后立即产生令人反感的内容。
  2. 结合贪婪和基于梯度的离散优化。对对抗性后缀进行优化是具有挑战性的,因为我们需要对离散令牌进行优化,以最大限度地提高攻击成功的对数可能性。为了实现这一目标,我们利用代币级别的梯度来识别一组有前途的单代币替代品,评估该集中一定数量的候选者的损失,并选择最好的被评估的替代品。事实上,该方法类似于 AutoPrompt方法,但(我们发现,实际上非常重要)的不同之处在于,我们在每一步搜索所有可能的标记以替换,而不仅仅是一个
  3. 强大的多提示和多模型攻击。最后,为了生成可靠的攻击后缀,我们发现创建一种攻击非常重要,该攻击不仅适用于单个模型上的单个提示,而且适用于多个模型中的多个提示。换句话说,我们使用基于贪婪梯度的方法来搜索单个后缀字符串,该字符串能够在多个不同的用户提示中引起负面行为,并在三个不同的模型(在我们的例子中,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。

  1. 有害字符串:反映有害或有毒行为的 500 字符串集合,包含各种有害内容,例如亵渎、血腥描述、威胁行为、错误信息、歧视、网络犯罪以及危险或非法建议。攻击者的目标是发现可以提示模型生成这些确切字符串的特定输入。字符串的长度从 3 到 44 个令牌不等,使用 LLaMA 分词器进行分词时,平均长度为 16 个令牌。
  2. 有害行为:作为指令制定的 500 一组有害行为。这些行为的范围与 harmful strings 设置的主题相同,但攻击者的目标是找到一个攻击字符串,该字符串将导致模型生成任何试图遵守指令的响应,并针对尽可能多的有害行为执行此操作。

这两个设置都从略有不同的角度评估目标模型稳健地遵守对齐目标的能力:第一个任务侧重于对模型输出的精细控制,而第二个任务类似于旨在绕过安全过滤器以引发有害输出的红队练习。附录 A 提供了有关构建此基准的更多详细信息。

这个数据集的目标不是开启一场关于什么不应该是 “允许的” 内容的辩论LLM,而是简单地指出,大多数 aligned LLMs (开源和专有)都试图明确避免这样的生成,如果直接查询(即,要求生成一个有害的字符串, 或被要求展示有害行为)。因此,基准测试明确评估了我们的攻击能够绕过系统指定护栏的能力。将来,可能需要调整我们的基准,因为 Models 打算禁止更改的任务集。

指标

使用攻击成功率 (ASR) 作为 AdvBench 的主要指标。对于引发有害字符串,如果模型输出确切的目标字符串,则认为每个字符串都成功。此外,我们使用目标字符串上的交叉熵损失作为次要指标来衡量攻击的有效性。对于有害行为,如果模型合理尝试执行该行为,则我们认为该测试用例成功。由于不同的模型表现出不同的能力,例如,提供一套正确的爆炸装置的正确指令,这可能涉及人工判断,以确定响应不构成拒绝或试图逃避生成有害内容。为了衡量攻击的普遍性,我们还测量了攻击训练所依据的行为集以及保留的测试集上有害行为的成功率,并将每个行为的百分比报告为 ASR。

基线

将我们的方法与三种先前的基线方法进行了比较:PEZ、GBDA和自动提示。对于 PEZ 和 GBDA,同时为每个目标字符串(或行为)优化 16 个序列(随机初始化),并在完成后选择最佳序列。使用 Adam 和余弦退火对候选者进行优化。AutoPompt 和 GCG 共享相同的配置,批处理大小为 512 ,最大k为  256 。可优化令牌的数量适用于所有 20 方法,并且所有方法都针对 500 步骤运行。

对白盒模型的攻击

 后文实验结果略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/64453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】小乐乐求和题目分析n变量类型讨论

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述💯解题分析💯为什么 n 需要是 long long问题重点:中间计算水平上的数据类型不足的例子:正确解决:将 n 设…

计算机基础知识——数据结构与算法(一)(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 数据结构与算法…

WebView通过@JavascriptInterface 调用原生方法

1. 创建 WebView 和设置 WebView 设置 在 XML 布局中添加 WebView 在activity_main.xml里创建一个WebView控件 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schem…

基于AI对话生成剧情AVG游戏

游戏开发这个领域&#xff0c;一直有较高的学习门槛。作为一个非专业的游戏爱好者&#xff0c;如果想要开发游戏&#xff0c;往往受制于游戏引擎的专业程度&#xff0c;难以完成复杂的游戏项目。 AI IDE的诞生&#xff0c;提供了另外的一种思路&#xff0c;即通过AI 生成项目及…

ElasticSearch 数据聚合与运算

1、数据聚合 聚合&#xff08;aggregations&#xff09;可以让我们极其方便的实现数据的统计、分析和运算。实现这些统计功能的比数据库的 SQL 要方便的多&#xff0c;而且查询速度非常快&#xff0c;可以实现近实时搜索效果。 注意&#xff1a; 参加聚合的字段必须是 keywor…

F5中获取客户端ip地址(client ip)

当F5设备对其原始设置上的所有IP地址使用NAT时&#xff0c;连接到poo成员&#xff08;nodes、backend servers&#xff09;的出站连接将是NAT IP地址。 pool 成员&#xff08;nodes、backend servers&#xff09;将无法看到真实的客户端 ip地址&#xff0c;因为看到的是F5上的…

MATLAB引用矩阵元素的几种方法

引用矩阵元素可以通过索引&#xff0c;也可以通过逻辑值 索引 通过引用元素在矩阵中的位置来提取元素&#xff0c;例如&#xff1a; - 逻辑值 通过某种逻辑运算来使得要提取的值变为逻辑 1 1 1&#xff0c;用 A ( ) A() A()提取即可&#xff0c; A A A为原矩阵的名称。 例如&…

机器学习预处理-表格数据的空值处理

机器学习预处理-表格数据的空值处理 机器学习预处理-表格数据的分析与可视化中详细介绍了表格数据的python可视化&#xff0c;可视化能够帮助我们了解数据的构成和分布&#xff0c;是我们进行机器学习的必备步骤。上文中也提及&#xff0c;原始的数据存在部分的缺失&#xff0…

了解 SpringMVC 请求流程

文章目录 1. Spring 基础 - SpringMVC 请求流程1.1 引入1.2 什么是 MVC1.3 什么是 Spring MVC1.4 请求流程核心架构的具体流程步骤补充 1.5 案例**Maven 包引入****业务代码的编写**DaoServiceControllerwebapp 下的 web.xmlspringmvc.xmlJSP 视图 2. Spring 进阶 - Dispatcher…

Springboot3.x配置类(Configuration)和单元测试

配置类在Spring Boot框架中扮演着关键角色&#xff0c;它使开发者能够利用Java代码定义Bean、设定属性及调整其他Spring相关设置&#xff0c;取代了早期版本中依赖的XML配置文件。 集中化管理&#xff1a;借助Configuration注解&#xff0c;Spring Boot让用户能在一个或几个配…

鸿道Intewell-C纯实时构型,适合有功能安全认证需求的工业操作系统

鸿道Intewell-C纯实时构型&#xff0c;适合有功能安全认证需求的工业操作系统 鸿道Intewell-C是一款工业实时微内核操作系统&#xff0c;由科东软件自主研发&#xff0c;具有超低延迟和最小抖动&#xff0c;保障工业设备可以高效处理时间敏感的现场业务&#xff0c;支持多种工…

Stream– ESP8266物联网应用,(客户端向服务器发送数据信息 客户端向服务器请求数据信息)

Stream– ESP8266物联网应用 Stream对于ESP8266-Arduino语言来说指的是数据序列。请留意&#xff1a;在C编程中Stream常被翻译作“流”。我们认为将Stream称为数据序列更加直观。因为数据序列这一概念有两个很关键特点。 第一个特点是“序”&#xff0c;即数据序列不能是杂乱…

芯品荟|SWM221系列芯片之TFTLCD彩屏显示及控制

“革新未来&#xff0c;智驭控制新纪元”&#xff0c;由广东华芯微特集成电路有限公司市场总监张琢&#xff0c;对SWM221系列的强大功能表现进行了整体介绍。 确实&#xff0c;华芯微特在TFTLCD显示及控制有十多年应用基础和积累的团队&#xff0c;仍勇于挑战&#xff0c;自我…

MIT S6081 2024 Lab 1 | Operating System | Notes

目录 安装与下载 实验1 开始我们的实验 sleep&#xff08;简单&#xff09; pingpong&#xff08;简单&#xff09; primes (中等)/(困难) find&#xff08;中等&#xff09; xargs&#xff08;中等&#xff09; finally Reference I. Tools Debian 或 Ubuntu Arch…

华为认证HCIA——数据传输形式,数据封装的基本概念

前言&#xff1a; 整理下学习笔记&#xff0c;打好基础&#xff0c;daydayup!!! 对网络概念有基本理解后&#xff08;华为认证HCIA——网络基本概念&#xff09;&#xff0c;开始进一步学习数据传输。 数据传输的形式 数据传输主要有三种形式&#xff1a; 1&#xff0c;电路传…

opencv小练习(未完成版)

读取一张彩色图像并将其转换为灰度图。 import cv2# 读取图片 img cv2.imread("./duck.png") img cv2.resize(img, dsizeNone, fx0.4, fy0.4, interpolationcv2.INTER_LINEAR) # 读取一张灰度图 img_gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 展示图片 cv2.im…

WSL (Windows Subsystem for Linux)

文章目录 Windows下使用Linux的三种方式&#xff1a;1.WSL(1)安装WSL(2)初始化Linux系统(3)安装、创建、激活 Python虚拟环境 2.虚拟机3.Docker Windows下使用Linux的三种方式&#xff1a; 1.WSL 是最简单的在 Windows 上运行 Linux 环境的方式&#xff0c;适用于日常开发和命…

金融分析-Transformer模型(基础理论)

Transformer模型 1.基本原理 transformer的core是注意力机制&#xff0c;其本质就是编码器-解码器。他可以通过多个编码器进行编码&#xff0c;再把编码完的结果输出给解码器进行解码&#xff0c;然后得到最终的output。 1.1编码器 数据在编码器中会经过一个self-attention的…

【一本通】两个数的最小公倍数

【一本通】两个数的最小公倍数 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 输入两个正整数&#xff0c;编程计算两个数的最小公倍数。 输入 两个整数 输出 最小公倍数 样例输入 12 18样例输出 …

D 咖智能饮品机器人:开启商业新篇

在科技迅猛发展的当下&#xff0c;智能机器人正逐步渗透到各个商业领域&#xff0c;D 咖智能饮品机器人便是其中的佼佼者&#xff0c;它的出现为饮品行业带来全新的发展契机&#xff0c;有望开启商业新篇。 从大环境来看&#xff0c;消费者对于饮品的需求日益多元化和个性化。他…