[论文阅读]Poisoning Retrieval Corpora by Injecting Adversarial Passages

Poisoning Retrieval Corpora by Injecting Adversarial Passages

通过注入对抗性文本对检索语料库进行中毒

http://arxiv.org/abs/2310.19156

EMNLP2023

文章的目标就是要让检索器检索的结果包含攻击者生成的对抗性文本,如果能够检索到,则认为攻击成功,策略是随机选一个段落,然后使用梯度下降的方式生成对抗段落,注入整个检索器的语料库。

相比较起来,PoisonedRAG的检索条件S很可能就来源于这篇文章,不过这篇文章对检索器的访问是白盒的,且只关注于被检索到即可,后续没有考虑生成过程。攻击的成功意味着恶意用户通过注入少量的对抗性段落到检索语料库中,成功地误导了密集检索器的行为。具体来说,当系统处理未见过的查询(无论是域内还是域外的)时,它错误地将这些对抗性段落视为最相关的结果,并将其返回给用户。这表明密集检索器在识别和过滤对抗性内容方面的脆弱性,以及其安全性和鲁棒性方面存在的问题。

图 1:我们提议的语料库中毒攻击。恶意用户生成对抗性段落并将其注入检索语料库,以误导密集检索器将其作为对用户查询的响应返回。该攻击对域内或域外的不可见查询非常有效。

根据图猜测文章核心:攻击者将恶意的文段注入到检索语料库中,使得恶意文段能够被检索到。

摘要

密集检索器在各种信息检索任务中取得了最先进的性能,但它们可以在多大程度上安全地部署在实际应用中?在这项工作中,我们提出了一种针对密集检索系统的新型攻击,其中恶意用户通过扰动离散标记来生成少量对抗性文本,以最大限度地提高与提供的一组训练查询的相似性。当这些对抗性段落入到大型检索语料库中时,我们表明这种攻击在欺骗这些系统以检索攻击者未看到的查询方面非常有效。更令人惊讶的是,这些对抗性段落可以直接推广到域外查询和成功攻击率高的语料库——例如,我们发现 50 个针对 Natural Questions 优化的生成段落可以误导 >94% 的问题在财务文件或在线论坛中提出。我们还对一系列最先进的密集猎犬进行了基准测试和比较,包括无人监督和有人监督的猎犬。尽管不同的系统表现出不同程度的漏洞,但我们已经证明,它们都可以通过注入多达 500 个段落来成功攻击,与包含数百万个段落的检索语料库相比,这只是一个小部分。

 方法

问题定义

考虑一个段落检索问题:检索模型接受用户查询 q,并从由一组段落 {p1, p2, ... p∣C∣} 组成的语料库 C 中检索段落。

主要关注双编码器密集检索器,它们分别使用查询编码器 Eq(⋅)和段落编码器 Ep(⋅)分别嵌入查询和段落,并使用嵌入的内积计算它们的相似性:sim(q, p) = Eq(q)⊺Ep(p) 。

查询和段落编码器通常以对比学习为目标进行训练,DPR和 ANCE的训练目标是有 监督的问题-段落对,Contriever的训练目标是无监督数据。在推理过程中,密集检索模型会在给定查询 q 的情况下执行最近邻搜索,以返回语料库中前 k 个最相似的段落作为检索结果。

语料库投毒攻击

本文的语料库投毒攻击中,生成了一组对抗性段落并将其插入到检索语料库 C 中,目的是误导密集检索模型。 一旦语料库中毒,预计密集检索模型将检索对抗性段落以响应某些查询。 具体来说,目标是生成一小组对抗性段落 A={a1,a2,...,a|A|},其中对抗性段落集的大小比原始语料库小得多,即 |A|≪|C|。 目标是构造 A,使得在查询 Q 分布的前 k 结果中至少有一个对抗性段落。 在实践中,我们假设 Q 中的训练集可用于构造 A,并期望它泛化为保留的测试集。(PoisonedRAG 就是从这里参考的检索条件吧)

优化

给定一组查询,目标是生成一组对抗段落A,使得这些段落在检索结果中排名靠前

那就是要最大化相似度

这里的优化目标是让整个对抗段落A和问题组的平均相似度最大化,PoisonedRAG直接参考了这个做法,只不过更换了表达方式

先讨论如何首先生成单个段落,然后将其扩展以生成多个段落。

受 HotFlip 方法(Ebrahimi 等人,2018 年;Wallace 等人,2019 年)的启发,我们使用基于梯度的方法来解决优化问题,该方法近似于替换标记的模型输出变化。我们使用语料库中的随机段落来初始化对抗段落。每一步,我们都会在 a 中随机选择一个标记 ti,并计算如果用另一个标记 t′ i 替换 ti 后模型输出的近似值。我们使用 HotFlip,利用梯度有效地计算这一近似值:,其中∇eti sim(q,a) 是相对于标记嵌入 eti 的梯度向量。给定查询集 Q,通过选择能使输出近似度最大化的标记,就能得到标记 ti 的最佳替换候选:

其中 V 是词汇表。 请注意,此操作很便宜,因为它只需要嵌入矩阵和梯度向量的一次乘法。

生成多个段落:

扩展攻击以生成多个对抗性段落。 我们的方法基于一个简单的想法,即:把相似的查询分组并为每组查询生成一个对抗性段落。 为了实现这一点,我们使用 k 聚类算法根据查询的嵌入向量对查询进行聚类 Eq(qi).一旦查询被分组到集群中,我们通过解决方程 1 所示的优化问题,为每个集群生成一个对抗性段落。这使我们能够并行生成多个对抗性段落,每个段落都针对一组相似的查询。

实验

设置

检索数据库

用 BEIR 基准进行了实验,这是一套全面的检索数据集。专注于两个流行的数据集,NQ和 MS MARCO ,并评估对这两个数据集的保留测试查询的攻击,以及它对 BEIR 中七个看不见的领域(例如 Quora、科学、财务文件)的可转移性。

密集型检索器

对五种最先进的密集检索模型进行了攻击:Contriever 、Contriever-ms、DPR-nq、 DPR-mul和ANCE。将攻击应用于多向量密集检索器 ColBERT以研究对不同架构的攻击的有效性。

评估指标

在训练集(NQ 或 MS MARCO)上生成对抗性段落并将它们注入语料库,并测量测试查询的 top-k 攻击成功率, 定义为在前 k 结果中检索到至少一个对抗性段落的查询的百分比。 成功率越高,表明模型更容易受到语料库中毒攻击。所有对抗性段落都包含 50 个 token,我们对 token 替换执行了 5000 步。

对域内查询的攻击

图 2(左)显示了 NQ 和 MS MARCO 中不同模型的域内攻击结果。

预先训练的 Contriever 模型在即使只有一个对抗性段落的情况下就很容易受到攻击

尽管监督检索模型(例如 DPR-nq)似乎更难攻击,但通过生成更多的对抗性通道,可以显著提高攻击成功率。

在图 2(右)中,当生成 500 个对抗性段落时,所有密集检索模型至少 50% 在测试查询中被欺骗。我们的结果清楚地表明,密集检索模型非常容易在只有一小部分对抗性段落注入下受到我们提出的攻击,并且在大量查询中失败

攻击向域外迁移

使用 NQ 和 MS MARCO 的训练集对 Contriever 模型进行攻击,并将对抗性段落插入其他检索任务的语料库中。表 1 显示了传输攻击的结果。 令人惊讶的是,生成的对抗性段落可以有效地转移以误导其他检索域/数据集上的模型(例如,在金融领域问答任务 FiQA 上,攻击成功率为 94.1%。 这意味着有可能在不同领域实际部署有效的攻击。(小trick,用的是极易受到攻击的contriever

对多向量检索器的攻击

在多向量检索器中,一段文本对应多个向量。对 ColBERT(ColBERT-v1,在 MS MARCO 上进行了预训练)进行了攻击,使用了来自 NQ 的训练查询和 {1, 10, 50} 对抗性段落。表 2 显示了 ColBERT 对域内 NQ 查询的攻击性能。

发现生成较长的对抗段落(250 个字段)比生成较短的对抗段落(50 个字段)更有效地攻击 ColBERT。我们认为这是因为相似性函数是通过多向量密集检索模型(例如 ColBERT 中的 SumMax)中的多重嵌入来计算的,因此对单个标记的变化不太敏感。我们发现,插入 50 个具有 250 个标记的对抗性段落就能在 20.1% 的 NQ 测试查询中骗过 ColBERT,这表明我们的攻击在攻击多向量检索模型时仍然有效。

对错误信息的针对性攻击

最后,考虑一个案例研究,其中我们研究了生成包含有针对性的错误信息的对抗性段落的可能性。 为此,我们用 “OUR OWN GOVERNMENT IS REALLY POISONING US WITH CHEMTRAILS” 后跟 [MASK] 标记来初始化对抗性段落,并在优化期间保持前缀固定。 我们使用 NQ 数据集对 Contriever 模型进行实验,方法是生成 |A|∈{1,10} 这样的对抗性段落。 我们发现,在这种受限设置下,攻击仍然有效,尽管成功率有所下降: 11.7% 和 59.6% 分别对应 1段和10 段。这表明用户只需查询两到三次就会看到目标消息,这表明以这种方式传播有害信息的可能性。

生成的对抗段落示例

总结

提出了一种针对密集检索器的新攻击,其中对抗性段落入到语料库中以误导它们的检索输出。我们表明,即使是少量的对抗性段落也可以成功地攻击最先进的密集检索器,并推广到来自看不见的域的查询。这些发现对未来在实际应用中部署稳健检索系统具有重要意义。

局限:

尽管有效,但我们的方法在计算上可能很昂贵。对于每组查询,我们需要在单个 GPU 上独立运行攻击,以生成一个对抗性段落。对于未来的工作,值得考虑探索更有效的方法来生成多个对抗性段落,这可能有助于减轻我们方法的计算成本。

我们的研究侧重于语料库中毒攻击,以研究是否可以安全地部署密集检索模型。我们承认,存在其他针对密集检索模型的潜在攻击途径,例如恶意操纵用户查询。我们的调查主要集中在语料库中毒攻击及其对密集检索模型脆弱性的影响。

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

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

相关文章

Leetcode 二叉树的锯齿形层序遍历

算法思想: 这段代码实现了 二叉树的锯齿形层序遍历,其核心思想是基于广度优先搜索(BFS)进行层序遍历,并根据当前层数决定从左到右或从右到左的顺序来组织每一层的节点值。 level.add 和 level.addFirst 有点类似单链…

OpenCV 图像轮廓查找与绘制全攻略:从函数使用到实战应用详解

摘要:本文详细介绍了 OpenCV 中用于查找图像轮廓的 cv2.findContours() 函数以及绘制轮廓的 cv2.drawContours() 函数的使用方法。涵盖 cv2.findContours() 各参数(如 mode 不同取值对应不同轮廓检索模式)及返回值的详细解析,搭配…

Linux操作系统2-进程控制3(进程替换,exec相关函数和系统调用)

上篇文章:Linux操作系统2-进程控制2(进程等待,waitpid系统调用,阻塞与非阻塞等待)-CSDN博客 本篇代码Gitee仓库:Linux操作系统-进程的程序替换学习 d0f7bb4 橘子真甜/linux学习 - Gitee.com 本篇重点:进程替换 目录 …

0基础学前端系列 -- 深入理解 HTML 布局

在现代网页设计中,布局是至关重要的一环。良好的布局不仅能提升用户体验,还能使内容更具可读性和美观性。HTML(超文本标记语言)结合 CSS(层叠样式表)为我们提供了多种布局方式。本文将详细介绍流式布局、Fl…

Springboot集成通义大模型

1.先到阿里云平台开头阿里云白炼账号&#xff0c;创建apiKey 2. 引入maven依赖 <dependency><groupId>com.alibaba</groupId><artifactId>dashscope-sdk-java</artifactId><version>2.8.3</version></dependency><!-- htt…

哈希表算法题

目录 题目一——1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 1.1.暴力解法1 1.2.暴力解法2 1.2.哈希表解法 题目二——面试题 01.02. 判定是否互为字符重排 - 力扣&#xff08;LeetCode&#xff09; 2.1.哈希表解法 2.2.排序解法 题目三——217. 存在重复元…

Cookie跨域

跨域&#xff1a;跨域名&#xff08;IP&#xff09; 跨域的目的是共享Cookie。 session操作http协议&#xff0c;每次既要request&#xff0c;也要response&#xff0c;cookie在创建的时候会产生一个字符串然后随着response返回。 全网站的各个页面都会带着登陆的时候的cookie …

个人博客接入github issue风格的评论,utteranc,gitment

在做个人博客的时候&#xff0c;如果你需要评论功能&#xff0c;但是又不想构建用户体系和评论模块&#xff0c;那么可以直接使用github的issue提供的接口&#xff0c;对应的开源项目有utteranc和gitment&#xff0c;尤其是前者。 它们的原理是一样的&#xff1a;在博客文章下…

React第十节组件之间传值之context

1、Context 使用creatContext() 和 useContext() Hook 实现多层级传值 概述&#xff1a; 在我们想要每个层级都需要某一属性&#xff0c;或者祖孙之间需要传值时&#xff0c;我们可以使用 props 一层一层的向下传递&#xff0c;或者我们使用更便捷的方案&#xff0c;用 creatC…

JVM_垃圾收集器详解

1、 前言 JVM就是Java虚拟机&#xff0c;说白了就是为了屏蔽底层操作系统的不一致而设计出来的一个虚拟机&#xff0c;让用户更加专注上层&#xff0c;而不用在乎下层的一个产品。这就是JVM的跨平台&#xff0c;一次编译&#xff0c;到处运行。 而JVM中的核心功能其实就是自动…

RPA:电商订单处理自动化

哈喽&#xff0c;大家好&#xff0c;我是若木&#xff0c;最近闲暇时间较多&#xff0c;于是便跟着教程做了一个及RPA&#xff0c;谈到这个&#xff0c;可能很多人并不是很了解&#xff0c;但是实际上&#xff0c;这玩意却遍布文末生活的边边角角。话不多说&#xff0c;我直接上…

字符型注入‘)闭合

前言 进行sql注入的时候&#xff0c;不要忘记闭合&#xff0c;先闭合再去获取数据 步骤 判断是字符型注入 用order by获取不了显位&#xff0c;select也一样 是因为它是’)闭合&#xff0c;闭合之后&#xff0c;就可以获取数据了 最后就是一样的步骤

springboot车辆管理系统设计与实现(代码+数据库+LW)

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了车辆管理系统的开发全过程。通过分析车辆管理系统管理的不足&#xff0c;创建了一个计算机管理车辆管理系统的方案。文章介绍了车辆管理系统的系统分析部分&…

C#.Net筑基 - 常见类型

01、结构体类型Struct 结构体 struct 是一种用户自定义的值类型&#xff0c;常用于定义一些简单&#xff08;轻量&#xff09;的数据结构。对于一些局部使用的数据结构&#xff0c;优先使用结构体&#xff0c;效率要高很多。 可以有构造函数&#xff0c;也可以没有。因此初始化…

Unity项目性能优化列表

1、对象池 2、检查内存是否泄露。内存持续上升(闭包、委托造成泄露) 3、检查DrawCall数量&#xff0c;尽量减少SetPassCall 4、尽量多的利用四种合批 动态合批(Dynamic Batching)静态合批(Static Batching)GPUInstancingSRP Batcher 动态合批消耗内存把多个网格组合在一起合并…

ComfyUI | ComfyUI桌面版发布,支持winmac多平台体验,汉化共享等技巧!(内附安装包)

ComfyUI 桌面版正式推出&#xff0c;支持 Windows 与 macOS 等多平台&#xff0c;为 AI 绘画爱好者带来全新体验。其安装包便捷易用&#xff0c;开启了轻松上手之旅。汉化共享功能更是一大亮点&#xff0c;打破语言障碍&#xff0c;促进知识交流与传播。在操作上&#xff0c;它…

贪心-区间问题——acwing

题目一&#xff1a;最大不相交区间数量 908. 最大不相交区间数量 - AcWing题库 分析 跟区间选点一样。区间选点&#xff1a;贪心——acwing-CSDN博客 代码 #include<bits/stdc.h> using namespace std;const int N 1e510;struct Range {int l, r;// 重载函数bool op…

【C语言】字符串左旋的三种解题方法详细分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;方法一&#xff1a;逐字符移动法&#x1f4af;方法二&#xff1a;使用辅助空间法&#x1f4af;方法三&#xff1a;三次反转法&#x1f4af;方法对…

肿瘤微环境中单细胞的泛癌分类

scRNA-seq可以揭示肿瘤微环境 (TME) 内细胞异质性的宝贵见解&#xff0c;scATOMIC是一种用于恶性和非恶性细胞的注释工具。在 300,000 个癌症、免疫和基质细胞上训练了 scATOMIC&#xff0c;为 19 种常见癌症定义了一个泛癌症参考&#xff0c;scATOMIC优于当前的分类方法。在 2…

《算法导论》英文版前言To the teacher第3段研习录:题海战术有没有?

【英文版】 We have included 957 exercises and 158 problems. Each section ends with exercises, and each chapter ends with problems. The exercises are generally short questions that test basic mastery of the material. Some are simple self-check thought exer…