当前位置: 首页 > news >正文

[论文阅读]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)反而更清楚。

实验

相关文章:

  • “兴火·燎原”总冠军诞生,云宏信息《金融高算力轻量云平台》登顶
  • 第十六届蓝桥杯 2025 C/C++B组第一轮省赛 全部题解(未完结)
  • 【软考-高级】【信息系统项目管理师】【论文基础】沟通管理过程输入输出及工具技术的使用方法
  • 语音合成之十韵律之美:TTS如何模拟语音的节奏和语调
  • 第十六届蓝桥杯 C/C++ B组 题解
  • 沙箱逃逸(Python沙盒逃逸深度解析)
  • 7.进程概念(三)
  • 01_微服务常见问题
  • k8s术语pod
  • 解决vue3 路由query传参刷新后数据丢失的问题
  • Webug4.0通关笔记04- 第6关宽字节注入
  • FPGA中级项目7———TFT显示与驱动
  • gitmodule怎么维护
  • LeetCode:55.跳跃游戏——局部最优并非全局最优!
  • 如何个人HA服务器地址和长期密钥
  • 分享一个移动端项目模板:React-Umi4-mobile
  • 从厨房到云端:从预制菜到云原生
  • 浏览器打印日志方法与技巧
  • java连接redis服务器
  • vue 优化策略,大白话版本
  • 美的集团一季度净利增长38%,库卡中国机器人接单增超35%
  • 牛市早报|今年第二批810亿元超长期特别国债资金下达,支持消费品以旧换新
  • 五一小长假,带着小狗去上海音乐厅
  • 普京与卢卡申科举行会晤,将扩大在飞机制造等领域合作
  • 贵州茅台一季度净利268亿元增长11.56%,系列酒营收增近两成
  • 总有黑眼圈是因为“虚”吗?怎么睡才能改善?