论文链接:https://aclanthology.org/P18-2006.pdf
项目代码:https://github.com/AnyiRao/WordAdver
HotFlip: White-Box Adversarial Examples for Text Classification
Abstract
我们提出了一种有效的方法来生成白盒的对抗样本去欺骗一个字符级的神经分类器。我们发现只需要很少的一些操作就能大大降低准确性。我们的方法依赖于一个原子级的翻转操作,也就是根据 one-hot 的输入向量的梯度,将一个token转换成另一个。由于我们方法的有效性,我们可以执行对抗训练,来使模型在测试时对攻击更加鲁棒。通过使用一些语义保持的约束,我们证明 HotFlip 也可以适用于对单词级的分类器的攻击。
1 Introduction
对抗样本是一个预测的ML模型的输入,这个模型被恶意设计来造成不好的性能(Goodfellow et al., 2015)。对抗性示例暴露了模型表现不佳的输入空间区域,这有助于理解和改进模型。通过使用这些示例作为训练数据,对抗训练学习到了更稳健的模型,甚至可能在非对抗样本上也表现得更好。人们对理解 NLP 系统漏洞的兴趣正在增长(Jia and Liang, 2017; Zhao et al., 2018;Belinkov and Bisk, 2018; Iyyer et al., 2018)。以前的工作侧重于在黑盒设置中创建对抗样本的启发式方法,而无需对模型参数进行任何明确的了解。在白盒设置中,我们使用模型的完整知识来开发最坏情况的攻击,这可以揭示更大的漏洞。
我们提出了一种针对可微的文本分类器的白盒敌手。我们发现只需要一些少量的操作就能大大增加误分类的错误。此外,快速生成对抗样本使得对抗训练变得可行,这有助于模型防御对抗样本攻击并提高在干净示例的准确性。我们方法的核心是一个原子级的翻转操作,它通过使用模型对 one-hot 输入向量的方向导数将一个token改成为另一个。
我们的贡献如下:
- 我们提出了一种高效的基于梯度的优化方法,来操纵离散的文本结构(在它的 one-hot 的表示上)。
- 我们研究了一个用对抗样本训练的分类器的鲁棒性,通过研究它对攻击的弹性以及它对干净测试数据的准确性。
2 Related Work
对抗样本是研究深度学习模型漏洞的强大工具 (Szegedy et al., 2014)。虽然这一研究方向最近在深度学习社区中受到了很多关注,但它其实在机器学习中有着悠久的历史,可以追溯到对线性垃圾邮件分类器的对抗性攻击(Dalvi et al., 2004;Lowd and Meek, 2005)。Hosseini et al. (2017) 表明,简单的修改——比如在字符之间添加空格或点——可以极大地改变谷歌的 perspective API 的毒性评分。Belinkov and Bisk (2018) 表明,字符级的机器翻译系统对随机的字符操作——比如键盘拼写错误——过于敏感。他们用合成或自然噪声来操纵句子中的每个词。然而,在我们所有的实验中,我们关心句子中的失真程度,并寻找更强大的对抗样本,它可以在有限的预算内增加损失。不再是随机地扰动文本,我们提出了一种有效的方法,可以用模型相对于输入的梯度来生成对抗性文本。
对抗性训练将训练与对抗样本的生成交织在一起(Goodfellow et al., 2015)。具体来说,在每一次训练迭代之后,对抗样本会被创建并添加到 mini-batches 中。Madry et al. (2018) 提出了一种基于梯度的投影方法来创建对抗样本,这已被证明是针对图像分类的对抗性攻击的最有效的防御机制之一。Miyato et al. (2017) 通过在词嵌入中添加噪声来创建对抗样本,而无需创建真实世界有语义的文本对抗样本。我们的工作是第一个产生真实世界的对抗样本的有效方法,它也可以被用于有效的对抗训练。
3 HotFlip
HotFlip 是一种使用字符替换(“flip”)来生成对抗样本的方法。HotFlip 还支持插入和删除操作,通过将它们表示为字符替换的序列。它使用关于 one-hot 输入的表示的梯度来有效地估计哪些个体变化具有最高估计损失,并使用束搜索来找到一组可以很好地协同工作来迷惑分类器的操作。
3.1 Definitions
我们用 J ( x , y ) J(\mathrm{x,y}) J(x,y) 来代表模型在输入 x \mathrm{x} x 上关于真实输出 y \mathrm{y} y 的损失。比如说,对于分类任务,损失就是在 softmax 单元的输出上的 log 损失。设 V V V 是字母表, x \mathrm{x} x 是一个长度为 L L L 个字符的文本,并且 x i j ∈ { 0 , 1 } ∣ V ∣ x_{ij}\in\{0,1\}^{|V|} xij∈{ 0,1}∣V∣ 是一个代表了第 i i i 个单词的第 j j j 个字符的 one-hot 向量。字符的序列可以被表示为
x = [ ( x 11 , . . . , x 1 n ) ; . . . ; ( x m 1 , . . . , x m n ) ] \mathrm{x}=[(x_{11},...,x_{1n});...;(x_{m1},...,x_{mn})] x=[(x11,...,x1n);...;(xm1,...,xmn)]
其中分号表示单词之间的显式分割。单词的数量用 m m m 表示, n n n 是一个单词中含有的最大字符数。
3.2 Derivatives of Operations
我们将文本操作表示为输入空间中的向量,并通过对应于这些操作的方向导数来估计变化的损失。基于这些导数,敌手可以选择最佳的损失上升方向。我们的算法只需要一个函数评估(前向传递)和一个梯度计算(后向传递)来估计最好的可能的翻转。
在第 i i i 个单词的第 j j j 个字符的翻转(从字母表中第 a a a 个字符变成第 b b b 个字符)可以表示为这个向量:
v ⃗ i j b = ( 0 ⃗ , . . . ; ( 0 ⃗ , . . . ( 0 , . . . , − 1 , 0 , . . . 1 , 0 ) j , . . . , 0 ⃗ ) i ; 0 ⃗ , . . . ) \vec{v}_{ijb}=(\vec{0},...;(\vec{0},...(0,...,-1,0,...1,0)_{j},...,\vec{0})_{i};\vec{0},...) vijb=(0,...;(0,...(0,...,−1,0,...1,0)j,...,0)i;0

本文提出 HotFlip 方法生成白盒对抗样本以欺骗字符级神经分类器。该方法基于原子级翻转操作,只需少量操作就能大幅降低分类准确性,还可用于对抗训练提升模型鲁棒性。实验表明,白盒敌手更具破坏性,且该方法生成的对抗样本对句子含义影响小,也能适配单词级模型。

1074

被折叠的 条评论
为什么被折叠?



