[论文阅读]Adversarial Semantic Collisions

Adversarial Semantic Collisions

Adversarial Semantic Collisions - ACL Anthology

Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP)

对抗样本是相似的输入但是产生不同的模型输出,而语义冲突是对抗样本的逆过程,是不同的输入产生相似的模型输出。

开发了基于梯度的方法,在白盒访问模型的情况下生成冲突,并将其应用于多个 NLP 任务。在释义识别中,攻击者构造的冲突文本被判定为输入查询的有效释义;像去重或合并相似内容这样的下游应用,会错误地将攻击者的输入与受害者的输入合并。在文档检索中,攻击者将冲突文本插入到其中一个文档中,使其即使与查询无关也能获得很高的排名。在回复建议中,攻击者的不相关文本被排在首位,还可能包含垃圾邮件或广告内容。在抽取式摘要中,攻击者将冲突文本插入到输入文本中,使其被选为最相关的内容。

第一种技术积极地生成冲突,而不考虑潜在的防御措施。然后开发了两种技术,“正则化积极” 和 “自然” 技术,通过语言模型对生成的冲突进行约束,以规避基于困惑度的过滤。在所有四个任务上,针对最先进的模型和基准数据集评估了所有技术。在 Quora 问题对的释义识别任务中,生成的冲突文本平均有 97% 的置信度被(错误地)识别为输入的释义。在文档检索中,生成的冲突使不相关文档的中位数排名从 1000 提升到了 10 左右。在对话(句子检索)的回复建议任务中,使用积极和自然技术生成的冲突文本分别有 99% 和 86% 的时间被排在首位。在抽取式摘要任务中,生成的冲突文本 100% 的时间都被模型选为摘要。最后讨论了针对这些攻击的潜在防御措施。

 

表 1:我们研究中的四个任务。给定输入 x 和对受害者模型的白盒访问权限,攻击者生成冲突 c,导致欺骗性输出。冲突文本可能是无意义的或看似自然的,也可能包含垃圾邮件信息(红色部分所示)。

威胁模型

1.语义相似性

设f表示模型,x和y是一对文本输入。对于这些应用,有两种常见的建模方法。在第一种方法中,模型将x和y的连接作为输入,并直接产生一个相似性得分s=f(x,y)。在第二种方法中,模型计算句子级别的嵌入ex​和ey​,即输入x和y的密集向量表示。然后,相似性得分计算为s=g(ex​,ey​),其中g是向量相似性度量,如余弦相似性。基于这两种方法的模型都使用相似的损失进行训练,例如二元分类损失,其中每对输入如果在语义上相关则标记为 1,否则标记为 0。为了通用性,设S(x,y)是一个相似性函数,它涵盖了上述两种方法下的语义相关性。我们还假设S可以接受离散单词序列(表示为x=[w1​,w2​,...,wT​])或单词嵌入向量(表示为x=[e1​,e2​,...,eT​])形式的输入,具体取决于场景。

2.假设

假设攻击者完全了解目标模型,包括其架构和参数。通过模型提取,白盒攻击有可能转移到黑盒场景;我们将此留作未来的工作。攻击者控制一些将被目标模型使用的输入,例如,他可以为检索系统插入或修改候选文档。

3.攻击者的目标

 给定一个目标模型f和目标句子x,攻击者希望生成一个冲突文本c,使得f认为x和c在语义上相似或相关。这种攻击的对抗性用途取决于具体应用。例如,如果一个应用使用释义识别来合并相似内容(如在 Quora 中,Scharff,2015),攻击者可以利用冲突向用户发送垃圾邮件或广告。在检索系统中,攻击者可以利用冲突提高某些查询中不相关候选文档的排名。对于抽取式摘要,攻击者可以使冲突文本被作为目标文档的摘要返回。

图 1:为查询输入x生成语义冲突c的概述。受害者模型f,冲突c和z通过梯度进行优化。我们在单纯形上搜索,连续变量z为c中实际冲突单词松弛生成的单词。

对抗性语义冲突

给定一个输入(查询)句子x,我们旨在为具有白盒相似性函数S的受害者模型生成一个冲突文本c。这可以表述为一个优化问题:argmaxc​S(x,c),使得x和c在语义上不相关。对c进行暴力枚举在计算上是不可行的。相反,我们设计了算法 1 中概述的基于梯度的方法。我们考虑两种变体:(a)积极生成无约束的、无意义的冲突,以及(b)有约束的冲突,即语言模型认为流畅且不能基于困惑度自动过滤掉的标记序列。

我们假设模型既可以接受硬独热编码单词作为输入,也可以接受软单词作为输入,其中软单词是词汇表的概率向量。

1.敌对性冲突

使用基于梯度的搜索,为给定的目标输入生成固定长度的冲突。

搜索分两步进行:1)通过带松弛的梯度优化找到冲突的连续表示,2)应用束搜索生成硬冲突。迭代地重复这两个步骤,直到相似性得分s收敛。

优化软冲突:

首先通过温度退火将优化松弛到连续表示。给定模型的词汇表V和固定长度T,我们将每个位置的单词选择建模为连续的对数几率向量zt​。为了将每个zt​转换为输入单词,我们将在t位置软选择的单词建模为:

其中τ是温度标量。直观地说,对zt​应用 softmax 函数给出了词汇表V中每个单词的概率。温度控制单词选择概率的尖锐程度;当τ→0时,软单词与硬单词argmaxw∈V​zt​[w]相同。

我们对连续值z进行优化。在每一步,软单词冲突被输入到S中以计算S(x,cˇ)。由于所有操作都是连续的,误差可以一直反向传播到每个zt​以计算其梯度。因此,我们可以应用梯度上升来优化目标。

搜索硬冲突:在松弛优化之后应用投影步骤,通过离散搜索找到硬冲突:对每个zt​应用从左到右的束搜索。在每个搜索步骤t,我们首先根据zt​获取前K个单词,并根据目标相似性对它们进行排名,其中ct+1:T​是从t+1到结束位置的部分软冲突。这个过程允许我们根据之前找到的硬单词和对未来单词的松弛估计,为每个位置的软单词找到硬单词替换。

用硬冲突重复优化:如果相似度得分在波束搜索后仍有提升空间,就利用当前的 c 来初始化软解 zt,通过将硬解转回连续空间来进行下一次优化迭代。

为了从硬句子初始化连续松弛,我们对其独热表示应用标签平滑(LS)。对于当前c中的每个单词ct​,我们将其一维独热向量软化到Δ^{∣V∣-1}内,公式为:

其中ϵ是标签平滑参数。由于LS(ct​)被约束在概率单纯形Δ∣V∣-1内,我们将每个zt​初始化为log(LS(ct​)),以优化下一次迭代的软解。

2.约束冲突

敌对性方案在找到冲突上很高效,但是会疏忽无意义的句子,PPL很高,很容易被基于PPL的过滤筛选掉。解决方案:对冲突施加一个软约束,同时最大化目标相似度和语言模型相似似然:


其中P(c; g)是在预训练语言模型g下冲突c的语言模型似然度,β∈[0,1]是一个插值系数

两种方法解决公式3提出的优化:(a)在soft c上添加一个正则化项来近似LM的似然;(b)引导一个预训练的LM生成看起来自然的c

1.正则化Aggressive Collisions

给定语言模型g,可以把LM似然的soft版本作为一个正则化的形式来和从变量[z1,...,zT]中计算得出的soft aggressive 进行合并:


其中H函数是计算交叉熵,里面的P是给定部分软冲突,在第t个位置的下一个token预测概率

公式4 将软碰撞作为输入,放宽了硬碰撞的 LM 似然,并可添加到梯度优化的目标函数中。优化后的变量 zt 将偏向于最大化 LM 可能性的词。

为了进一步降低 c 的困惑度,我们利用了 LM 的退化特性,即 LM 对重复的常见字元赋予较低的困惑度,并限制 c 中连续字元的跨度(如 c 的后半部)从最常出现的英语单词中选取,而不是从整个 V 中选取。

2.自然冲突

与先松弛再搜索不同,我们对公式 3 采取先搜索再松弛的策略。这使我们在连续空间中选择下一个词时能够整合一个硬语言模型。在每一步t,我们最大化

其中,c1:t−1​是之前找到的束搜索解。这种顺序优化本质上是在语言模型的可能性和冲突前缀的目标相似度上进行联合搜索的语言模型解码过程。

精确优化公式 5 需要根据语言模型似然logP和相似度S对每个w进行排序。在每一步评估每个词的语言模型可能性是高效的,因为我们可以缓存logP并以标准方式计算下一个词的概率。然而,评估任意相似度函数S(x,c1:t−1​⊕w)需要对模型进行前向传递,这在计算上可能很昂贵。

扰动语言模型的对数几率:受即插即用语言模型的启发,我们修改语言模型的对数几率以考虑相似度。首先,令L_t是语言模型在步骤t产生的下一个词的对数几率。然后,我们从这个初始值开始优化,找到一个更新值δt​,使它更倾向于选择能最大化相似度的词。具体来说,我们令zt​=ℓt​+δt​,其中δt​是一个扰动向量。然后,我们在松弛的相似度目标maxδt​​S(x,c1:t−1​⊕softmax(zt​/τ))上进行少量梯度步骤,其中softmax(zt​/τ)是如公式 1 中的松弛软词。这鼓励从扰动后的对数几率zt​得到的下一个词的预测分布,更倾向于选择那些可能与输入产生冲突的词。

联合束搜索:在每一步t进行扰动后,我们在V中找到最可能的前B个词。这使我们只需要对在当前束搜索上下文下,在语言模型中可能性较高的这部分词评估S。我们根据目标损失和语言模型对数可能性的插值对这些前B个词进行排序。我们按照公式 5 为每个束和每个前B个词分配一个分数,并用得分最高的词更新束搜索结果。

这个过程会生成一个看起来自然的解码序列,因为每一步都使用真实的词作为输入。随着我们构建序列,每一步的搜索都由语义相似度和流畅度这两个目标的联合得分引导。

整体思路人话解释版

这篇文章的核心方法其实就是在搞一种叫“语义碰撞”的攻击,目的是让NLP模型把两个完全不相关的文本误判为语义相似,人类一看就知道这两句话毫无关系,但 NLP 模型却可能认为它们是“高度相似”(比如 99% 置信度),作者就把这种攻击叫做语义碰撞Semantic Collisions。作者用了梯度优化的方法来生成这种文本,还分了两种类型:一种是“无脑乱怼型”(Aggressive),另一种是“装得像人话型”(Natural)。

无脑乱怼型(Aggressive):

直接暴力优化,用梯度上升硬怼模型的相似度分数,生成一堆狗屁不通的文本。比如:“Pay 0ff your mortgage der Seller chem Wad marijuana scarcity prince”这种鬼话。  

方法分两步:  

  • 先用连续变量(softmax搞出来的概率)优化,让模型觉得这坨东西和原文本相似。  
  • 再用beam search把连续变量转成具体的词(硬碰撞)。   

公式(1)和(2)就是装逼用的,本质就是“用梯度调词的概率,直到模型被忽悠”。

从文章的描述和算法描述上,具体来说:

把词变成“软选择”(Soft Selection)

通常 NLP 模型输入的是具体的词(比如 “cat”),但这里作者先用一个“概率分布”表示每个位置的词可能是什么。

比如,第一个词可能是 70% “cat”、20% “dog”、10% “apple”…… 这样模型可以计算梯度(因为概率是连续的)。

公式(1)就是干这个的:

其中zt是每个词的“倾向性分数”,τ控制概率的集中程度(越小越倾向于选一个词)。

用梯度优化,让模型误判

目标是让模型认为生成的句子c^和原句x相似,所以优化目标是最大化x和c^的相似度(比如 BERT 的相似度分数)。

用梯度上升(Adam 优化器)调整zt​,让 S(x,c^)越来越大。

把“软词”变回“硬词”(Beam Search)

现在c^是一堆概率分布,但我们需要具体的词(比如 “cat” 而不是 70% “cat”)。用 Beam Search(一种搜索算法)从概率分布里挑出最能让模型误判的词组合。比如,如果模型觉得 “cat dog apple” 和原句相似度很高,就选这个词组合。

重复优化,直到骗过模型

如果 Beam Search 找到的词还不够“骗人”,就再回到第 1 步,用这些词初始化新的优化过程。

结果:生成一堆狗屁不通的句子,但模型认为它们和原句高度相似。

装得像人话型(Natural):

为了绕过基于语言模型(LM)的过滤,作者加了个约束:生成的文本不仅要骗过目标模型,还要让LM觉得它像人话。  

方法更啰嗦:

 一边用LM生成正常词,一边用梯度微调这些词的logits,让它们同时骗过目标模型。  

公式(3)到(5)本质就是“用LM生成词,但偷偷改几个词让模型上当”。  

公式(1)到(5)完全是为了论文显得高大上,实际就是梯度优化+beam search的老套路,非要包装成数学难题。  

“温度参数τ”、“标签平滑ϵ”这些术语除了装逼没啥用,直接说“调参数让生成更平滑”不就完了?  

自然碰撞的部分更是脱裤子放屁,明明就是“用LM生成+梯度微调”,非要写成一堆公式。  

从方法描述上来看,具体措施是:

用语言模型(LM)生成候选词,比如用 GPT-2 生成一些合理的词(“the”, “cat”, “is”…),而不是完全随机选。

微调这些词,让模型误判:对 LM 生成的词做小调整(比如把 “cat” 改成 “kitten”),让它们同时满足:语言模型觉得合理(低困惑度);目标模型觉得和原句相似(高S(x,c))

公式(5)就是干这个的:

其中:

S(x,c)是目标模型的相似度;log⁡P(c;g)是语言模型的概率(保证句子通顺);β是调节权重(更偏向通顺 or 更偏向骗模型)

用 Beam Search 选最佳组合:和“无脑暴力法”类似,但每次选词时不仅要看相似度,还要看语言模型的流畅度。

结果:生成看起来正常的句子,但模型仍然被骗。

这方法的核心就一句话:用梯度优化生成一堆文本,要么无脑乱怼,要么假装人话,目的是让模型把垃圾当宝贝。公式全是烟雾弹,直接看算法伪代码(Algorithm 1)反而更清楚。

实验

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

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

相关文章

25【干货】在Arcgis中根据字段属性重新排序并自动编号的方法(二)

上一篇关于属性表自动编号的文章因为涉及到代码(【干货】在Arcgis中根据字段属性重新排序并自动编号的方法(一)),担心大家有些东西确实不熟悉,今天就更新一篇不需要代码也能达到这个目的的方法。主要的思路…

从后端研发角度出发,使用k8s部署业务系统

k8s,作为目前最流行的容器编排中间件,大家应该都听说过,很多公司也都在用,但基本都是运维在管理k8s,开发人员一般涉及不到,开发人员只需要写业务代码,然后运维人员负责制作镜像,然后…

Vue3 Echarts 3D圆柱体柱状图实现教程以及封装一个可复用的组件

文章目录 前言一、实现原理二、series ——type: "pictorialBar" 简介2.1 常用属性 三、代码实战3.1 封装一个echarts通用组件 echarts.vue3.2 首先实现一个基础柱状图3.3 添加上下2个椭圆面3.4 进阶封装一个可复用的3D圆形柱状图组件 总结 前言 在前端开发的数据可视…

WPF 上位机开发模板

WPF 上位机开发模板 WPF上位机开发模板,集成了基础操作菜单、海康视觉实时图像界面、串口通讯、网口通讯、主流PLC通讯、数据存储、图片存储、参数配置、权限管理、第三方webapi接口接入、数据追溯与查询等功能。 一、项目结构 WpfSupervisor/ ├── Models/ …

浏览器插件,提示:此扩展程序未遵循 Chrome 扩展程序的最佳实践,因此已无法再使用

1、发现的问题如下: 如果你是比较新的 Chrome 135.0.7049.42(含)以上版本的话,可以通过修改 chorme://flags 来彻底解决。 2、在浏览器分别输入两个地址: chrome://flags/#extension-manifest-v2-deprecation-disable…

【原创】从s3桶将对象导入ES建立索引,以便快速查找文件

总体功能: 这段程序的作用是: 从指定的S3桶中读取所有对象的元数据(文件名、大小、最后修改时间、存储类型、ETag等),并把这些信息写入到Elasticsearch(ES)中,建立索引&#xff0c…

git 查看用户信息

在 Git 中查看用户信息是一项常见的任务,可以帮助你确认当前仓库的配置或全局的 Git 配置是否正确设置。你可以通过多种方式来查看这些信息。 查看全局用户信息 全局用户信息是应用于所有 Git 仓库的默认设置。要查看全局用户信息,可以使用以下命令&am…

制作JDK17 arm64基础镜像,解决字体安装问题

1、下载jdk17 arm64的安装包 官网下载地址 2、编写Dockerfile 图形验证码生成需要使用到相关字体,所以基础镜像把字体相关也安装上。 # 基础镜像 FROM arm64v8/centos:8.4.2105MAINTAINER hqh# 换源 RUN sed -i s|^mirrorlist|#mirrorlist|g /etc/yum.repos.d/…

人工智能数学基础(三):微积分初步

微积分作为数学的重要分支,为人工智能的发展提供了坚实的理论基础。从理解数据的变化趋势到优化模型参数,微积分的应用贯穿其中。本文将深入探讨微积分的核心概念,并结合 Python 编程实例,助力大家轻松掌握这些关键知识点。资源绑…

区块链密码学核心

文章目录 概要1. 基础密码学哈希函数(Hash Function)对称加密与非对称加密数字签名(Digital Signature)密钥管理 2. 区块链专用密码学技术零知识证明(Zero-Knowledge Proof, ZKP)同态加密(Homom…

Java后端开发day39--方法引用

(以下内容全部来自上述课程) 1.1 含义 把已经有的方法拿过来用,当作函数式接口中抽象方法的方法体。 已经有的方法:可以是Java自己写的,也可以是第三方的。 示例语句: ::是方法引…

目前市面上知名的数据采集器

程序员爱自己动手打造一切,但这样离钱就会比较远。 市面上知名的数据采集工具 数据采集工具(也称为网络爬虫或数据抓取工具)在市场上有很多选择,以下是目前比较知名和广泛使用的工具分类介绍: 一、开源免费工具 Scra…

TP5兼容达梦国产数据库

1.首先数据库安装,部署时需配置大小写不敏感 2.安装PHP达梦扩展,一定要是对应版本(兼容操作系统)的扩展,否则会出现各种报错。参考官方文档:https://eco.dameng.com/document/dm/zh-cn/app-dev/php_php_new…

《解锁图像“高清密码”:超分辨率重建之路》

在图像的世界里,高分辨率意味着更多细节、更清晰的画面,就像用高清望远镜眺望远方,一切都纤毫毕现。可现实中,我们常被低分辨率图像困扰,模糊的监控画面、老旧照片里难以辨认的面容……不过别担心,图像超分…

整合 CountVectorizer 和 TfidfVectorizer 绘制词云图

本文分别整合 CountVectorizer 和 TfidfVectorizer 绘制词云图 ✨ CountVectorizer CountVectorizer 是 scikit-learn 中用于 文本特征提取 的一个工具,它的主要作用是将一组文本(文本集合)转换为词频向量(Bag-of-Words&#xf…

Linux 用户管理

用户管理是 Linux 系统管理中的重要组成部分,它涉及到用户和用户组的创建、删除、修改以及权限分配等操作。以下是关于用户和用户组管理的详细说明: 一、用户和用户组的概念 (一)用户(User) 用户是系统中…

【HTTP/2和HTTP/3的应用现状:看不见的革命】

HTTP/2和HTTP/3的应用现状:看不见的革命 实际上,HTTP/2和HTTP/3已经被众多著名网站广泛采用,只是这场革命对普通用户来说是"无形"的。让我们揭开这个技术变革的真相。 著名网站的HTTP/2和HTTP/3采用情况 #mermaid-svg-MtfrNDo5DG…

青少年编程与数学 02-018 C++数据结构与算法 16课题、贪心算法

青少年编程与数学 02-018 C数据结构与算法 16课题、贪心算法 一、贪心算法的基本概念定义组成部分 二、贪心算法的工作原理三、贪心算法的优点四、贪心算法的缺点五、贪心算法的应用实例(一)找零问题问题描述:贪心策略:示例代码&a…

UE5 Set actor Location和 Set World Location 和 Set Relative Location 的区别

在 Unreal Engine 的蓝图里,SetRelativeLocation、SetWorldLocation 和 SetActorLocation 三个节点虽然都能改变物体位置,但作用对象和坐标空间(Coordinate Space)不同: 1. SetActorLocation 作用对象:整个…

VINS-FUSION:跑通手机录制数据

文章目录 📚简介🚀手机录制数据🚀跑通数据🔧启动rviz🔧启动配置🔧播放rosbag🎯跑通结果 📚简介 利用智能手机的 摄像头IMU 采集数据,并在 VINS-Fusion(视觉惯…