很小的扰动,无法映射到原始输出。那么就是对抗样本,生成对抗样本的过程称为对抗攻击。
根据是攻击者否了解模型的具体细节:
- 白盒攻击【攻击者可以访问模型的完整信息,包括模型结构,参数,损失函数,激活函数,输入和输出数据等】
- 黑盒攻击【不了解神经网络的详细信息,但是可以访问模型输入和输出】
白盒攻击:可以利用模型的梯度信息来构建对抗样本。
黑盒攻击:可以通过模型的反馈来对模型进行评估。
与图像不同的是,文本是离散的,无法直接计算梯度。Miyato[3]等人提出在文本嵌入层添加扰动,但是嵌入层的扰动无法被还原成真实文本,所以缺乏可解释性。可解释的文本对抗攻击通常在输入空间进行
根据攻击元素的不同:攻击分为字符级、单词级、句子级和多级别攻击。常见攻击方式包括插入,删除、交换、替换或翻转文本等等。
在白盒场景下,Goodfellow等人[2]首先提出面向图像数据的对抗攻击算法FGSM。FGSM计算代价函数对于输入的梯度方向,然后乘以一个步长得到扰动,将扰动添加到原来的输入就得到了对抗样本。
自然语言处理领域,Liang等人在FGSM的基础上,设计了一种能够生成有效文本对抗样本的算法TextFool[4]。TextFool首先计算每个字符损失函数的梯度,找到对分类影响最大的热字符,扫描识别出包含足够热字符的短语。然后找出每一类文本出现频率最高的单词,称为热训练语句,并通过把目标类中的热字符加入到当前文本热训练语句附近的方法生成对抗样本,但是该方法需要手动对文本进行修改。
与上述方法不同,Ebrahimi等人[5]提出字符级别的白盒攻击方法HotFlip,它使用one-hot输入表示的方向导数来估计替换哪个字符具有最高的损失,结合束搜索(beam search)来寻搜寻对预测结果影响最大的字符变化组合,该方法能够自动、高效生成对抗样本。
黑盒攻击一般采用启发性算法来生成对抗样本。Jia和Liang[6]通过在段落结尾添加一些无意义的句子的方式生成对抗样本。这种句子不会破坏原始的文本语义,但是能够使模型给出错误的预测结果。
Gao等人[7]提出一种攻击RNN模型的对抗样本生成方法DeepWordBug,该方法可在黑箱条件下使用评分函数计算序列中单词的重要程度,然后使用字符级别的修改算法(增、删、替换、交换相邻字母)通过制造拼写错误对重要单词进行攻击。
与之前方法不同的是,DeepWordBug从候选对抗样本中选择与原样本的编辑距离小的样本,最大程度减少扰动力度,但是该方法有一个缺点:基于拼写错误的攻击方法很容易被人察觉和纠正。
针对上述问题,Jin等人[8]提出了一种有效攻击BERT模型的黑盒攻击方法TextFooler。该方法对于重要单词进行同义词替换,并且进行句子语义相似度检查,保证这些扰动方不易被人察觉,能很好地保留原文的语义。
目前文本对抗领域绝大多数研究都是基于英文数据,针对英文数据的常见的扰动方法,例如增、删、替换很容易造成中文语义改变,因此不适用于中文数据。王文琦等人[9]提出了一种中文对抗样本生成方法,该方法在黑盒环境下对输入的中文文本进行同音词替换,可以有效改变LSTM和CNN模型对修改后样本的倾向分类。
有攻击就有防御,目前也有很多研究者[2, 8]尝试构建更稳健的自然语言处理模型。对抗训练(Adversarial Training)[2] 在模型训练过程中在模型中增加正则损失,使得模型对最坏情况扰动表现鲁棒,正确分类数据。具体如下:
固定模型参数 时搜索 扰动 通过优化 约束模型参数。
对抗训练是应用最广,最简单有效的防御方法。在图像中常见的为使用FGSM与PGD扰动进行对抗训练。
在文本领域,最直接的为在文本嵌入层添加对抗扰动[10]。但嵌入层的扰动无法抵御真实的攻击样本,因此文本领域中另一类常见的对抗训练方法将生成的对抗样本按比例添加到训练数据中[8, 11, 12],或使用具体的对抗样本进行微调[13]。即在不修改原模型结构的情况下增加模型的损失,产生正则化的效果。对抗训练有助于改进模型、提高模型的鲁棒性,但是也有其局限性。对抗训练需要获知具体的攻击方法,得到对抗样本用于训练,
文献[6]提出对抗训练只对同一攻击类型生成的对抗样本有效。同时当攻击噪声的类型较大时,对抗训练提升的鲁棒性很有限[5]。因此出现了针对具体攻击类型设计的防御方法。
针对同义词替换的攻击,Wang[15]提出同义词编码方法(synonym encoding method, SEM),在编码网络中将语义相近的词聚类中一起,使其在嵌入空间接近。
针对字符级别的攻击,Pruthi[16]设计了基于semi-character的RNN,并结合单词识别模块设计了三个不同的兜底策略识,解决罕见词和未登录词。Zhoud等人[17]设计了一种扰动鉴别器DISP,对于数据中的每个字符,DISP会预测该字符是否受到扰动。对于每个可能受到扰动的字符,嵌入估计器会生成一个近似的嵌入向量,并在嵌入空间中找到距离嵌入向量最近的字符恢复文本。
git:https://github.com/thunlp/OpenAttack
官网介绍:https://mp.weixin.qq.com/s?__biz=MzUxODI3MTcwNQ==&mid=2247486138&idx=1&sn=bf0a646fa832db2ec2c650f21ca78f41&scene=21#wechat_redirect
SEA:需要用到翻译模型,
论文参考:https://blog.csdn.net/qq_36488756/article/details/114551428
SCPN:需要用到句子对训练的模型,
论文:Adversarial Example Generation
with Syntactically Controlled Paraphrase Networks
s1:原文
s2:回译或者其它方式产生的同义句
p1:用斯坦福解析的s1的parser
p2:用斯坦福解析的s2的parser
模型encoder-decoder形式:一层双向LSTM作为encoder, 两层LSTM和基于encoder state的soft attention,以及一个copy mechanism 作为decoder
原理:根据翻译句子以及parser, 产生更加符合语言学规范的生成攻击样本。