降维后输入分类器分类时报错_HotFlip:文本分类的白盒对抗样本

摘要 论文提出了针对字符级文本分类器的白盒对抗样本生成器。该方法基于单词中字符的原子翻转操作,且效率很高,可以生成对抗样本以进行对抗训练,使模型更具有鲁棒性。再使用一些保持语义的约束,对单词级别分类器的攻击也是可以实现的。

  1. 介绍

之前的文本对抗工作主要集中在对于文本分类器的黑盒攻击上,本论文在白盒场景下进行攻击,进而揭示出更大的漏洞。

论文发现,一点点的修改就足以使文本分类器做出错误的判断,而且论文中的方法具备足够高的效率,足以提供对抗样本以进行对抗训练,有助于提升模型的鲁棒性。方法和核心是字符的翻转操作,进而将一个单词变为另一个。

论文贡献:

(1) 提出了基于梯度的优化方法,对离散文本的独热表示进行修改。

(2) 通过对抗样本对分类器进行训练,进而提升文本分类器的鲁棒性。

2. 相关工作

对于文本分类的攻击由来已久,而对于文本分类深度神经网络的对抗样本攻击对于深度神经网络的脆弱性了解很有帮助。在论文的实验中,主要关注对抗样本的语义损失程度。希望能够生成足够强大的对样本,在最小限度上与原样本不同,而达到攻击的效果。论文使用了基于梯度的方法来生成对抗样本。

对抗训练在图像领域被广泛运用于对抗样本攻击的防御,而在文本领域,只有在单词嵌入层运用过快速梯度符号法来进行扰动的工作。本论文则生成实际的对抗样本。

3. HotFlip

论文中的方法主要是通过字符级别的改变,如交换、插入、删除等操作来顺应梯度对于输入样本进行修改,进而达到生成对抗样本的工作。梯度是修改操作的判断基准,还会使用beam search方法来增强修改效果。

3.1 定义

对于字符级别的文本分类器而言,输入的形式是这样的:

8464a78bc3d92220abe989adac4ced21.png

n是所有词中最长单词的长度,而m是一个样本中单词的个数,而每个x都是一个V维向量,V是字符表的大小,也就是所有字符的总数。

3.2 求导操作

论文将对于样本的修改操作视为一个个向量,利用损失函数对于向量操作的导数,就能知道哪种操作是能够让损失最大化的操作。下图的矢量代表的就是一个字符变换的操作。

1a3a49912b9b8f85a9f9261bcce2c5e0.png

该向量的维度与输入的维度完全对应,在该向量的中,-1所在的位置就是待替换字符所在的位置,1所在的位置就是要使用的替代字符的位置。比如,如果在字母表中,-1所在的位置是a的位置,1所在的位置是b的位置,那么以该向量的方向改变输入x的话,显然,输入中的字母a就变成了字母b。

那么如何衡量x在操作矢量方向的变化对于损失函数的影响呢?看相应方向上的损失函数变化即可,其一阶近似值可以直接利用损失函数在相应方向上的分量获得:

46df46ce69ace50732e8772cd549a8ff.png

这样的话,找到使损失函数增大速度最快的方向即可:

7cdfb0a41fac4982cadc5b2fe7ebe39f.png

上式的梯度就可以替代损失函数最为修改操作的评价标准了,只要使上式的值最大,就能找到最佳的替代操作了。

插入操作也可以视为替换操作的一种,只要将插入位置的后一位字母替换为待插入字母,再将插入位置后字母依次后移即可,相应梯度如下式所示:

fba60ce9a81ba1a09aa415ab664f8244.png

删除操作则是将删除位置后的字符依次向前移动,同样可以写成类似的形式。而不同的操作会导致方向向量大小不同,使用L2正则化即可消除这一问题。

3.3 多项修改

论文解释了如何评估最佳的修改,涉及到多步修改,可以使用贪心算法或束搜索来进行对抗样本的生成。只要将字符的修改次数或样本修改前后的编辑距离控制在一定程度即可。束搜索需要两个参数,一个是搜索宽度b,另一个是搜索步数r。对于多个步骤的评分如下所示

1b8aed1c894f9264ac715e0a0ba83716.png

是初始输入,
则是进行过之前修改操作后的输入,三个操作对于损失影响之和就是这个修改组合所产生的总影响。这样的话,要找到最佳的序列,每一步就都需要b次的前向传播和反向传播,所以算法复杂度为O(br)。而朴素的基于梯度的算法需要计算每种可能的修改操作,算法复杂度为O(brL|V|)。

4. 实验

原则上,Hotflip方法可以应用于任何基于字符的分类器。实验中,使用 CharCNN-LSTM 分类器进行实验。

使用的是AG的新闻数据集,共有四个类别的新闻:世界、体育、商业、科技。模型架构为各有500个隐层单元的双层LSTM、1000个宽度为6的卷积核,字符嵌入向量的长度为25。使用SGD算法和梯度裁剪。我们使用10%的训练数据作为验证集,并且最多训练了25次。

只允许修改后的单词是在词典中不存在的单词,这样就不会导致样本有语义上的变化。对抗使用的束大小为10,允许修改的最大字符数是文本的10%的字符。修改测试集10%的样本,下图是各种方法的攻击成功率。

772d66eb8bdb1686410c356bb584943f.png

图中进行对比的黑箱方法是随机对字符修改,然后输入到分类器中查询效果。

对抗样本平均的字符修改率为4.18%,80%的操作选择了字符的对换,删除操作与插入操作之比为2:1。

4.1 鲁棒性

只使用字符的替换操作来判断模型的鲁棒性,因为其他两种操作要少见的多。对于每个训练样本,交换 r 个字符,数目 r 是基于验证集的准确率决定的,被设置为文本的20%。为了增加效率,直接使用让损失最高的 r 个替换操作。

使用了所有测试集的数据,将基于HotFlip方法的对抗训练与基于文本嵌入层扰动的对抗训练进行比较,基线方法是刚才图一中进行对比的随机修改黑箱方法。比较结果如下表所示。

be2204c29b2980d4d7bc798b3e95bff6.png

由表中数据可知,使用基于论文中的方法生成的对抗样本进行对抗训练可以提升模型鲁棒性,且效果优于其他方法。但这样的对抗训练并不足以成功抵抗原始对抗样本,但可以抵抗一些更弱小的对抗样本。

4.2 人类察觉情况

从测试集中选取了600条数据,运用算法修改其中的300条,这300条数据成功欺骗了分类器。而在众包平台中进行人工分类时,正常数据的分类成功率为87.49%,修改后的分类成功率为85.71%,这说明部分修改修改了句子的原意。这种类似的现象也出现在图像领域。

5. 单词级别HotFlip

类似的方式运用在单词级别的分类器是可行的,但与字符不同,单词的变动可能会让句子的原意改变。这样的话,就不符合生成对抗样本的初衷了。我们希望生成的是让文本分类器与人类判断不同的对抗样本。

为了展示单次级别HotFlip方法的可行性,在CNN分类模型上对SST数据集进行实验,但要注意保留句子的本意。只有当这些约束被满足后,才会进行单词替换:

(1) 两个单词的嵌入向量的余弦相似性大于一个阈值(0.8)。

(2) 两个单词词性相同。

(3) 不允许替换停用词,因为很少替换后仍能保证句子语法的准确性。我们也不允许将单词替换成具有相同词素的另一个单词。

下表列出了一些只修改一个单词的对抗样例:

e8f6ccd727735fd4fb265ac869c927ef.png

这样的样例虽然有趣且直观,但并不是很多。如果只允许有1到2个词的替换的话,那么测试集中只有2%可以成功生成对抗样本。

对字符级模型进行相对脆弱性分析,我们研究了单词嵌入向量在进行对抗替换、插入或删除操作后的变化。列举出一些变化较大的对抗单词,如下表所示:

4cb142912f59166e972f1da83471687c.png

在字符级分类模型中,单词的查找不是直接进行词典检索,而是对字符序列进行特征提取。这样的话对于一些没有意义的词也会视为有意义,与单次级别的模型不同。这让字符级模型的嵌入空间比单词级的更紧密,跟容易受到扰动的影响。

6. 结论和未来工作

针对字符级别的白盒攻击在不改变样本原意的情况下对原样本进行攻击,这样的对抗样本进行对抗训练能够增强模型的鲁棒性。

对比和评估针对不同任务的不同字符级模型的鲁棒性是文本对抗的重要未来方向。此外,文本输入的离散性使得理解对抗性示例变得更具挑战性。对此方向的研究可以揭示NLP模型的脆弱性。

参考文献

  1. Ebrahimi J, Rao A, Lowd D, et al. HotFlip: White-Box Adversarial Examples for Text Classification[C]. meeting of the association for computational linguistics, 2018: 31-36.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值