分享

干货 | 一文读懂NLP中的对抗样本

 520jefferson 2020-09-13

原文:《What are adversarial examples in NLP?》 

链接:https:///what-are-adversarial-examples-in-nlp-f928c574478e

译者:yhfwww、wiige、yuxb1118




上图呈现的是NLP中对抗样本有两种概念。这些结果是使用TextAttack在LSTM上对“烂番茄电影评论”的情感分类数据集进行了训练。这些都是是'真实的'使用DeepWordBug和TextFooler攻击生成的对抗示例。如果您想自己生成它们,在安装TextAttack之后,运行textattack attack — model lstm-mr — num-examples 1 — recipe RECIPE — num-examples-offset 19’,其中RECIPE是'deepwordbug'或'textfooler'。

[作者提供的图片]

本文就如何将对抗样本运用于NLP(自然语言处理)进行介绍。鉴于专业术语可能会比较让人困惑,我们决定先从对抗样本和对抗性语言的攻击的概述开始介绍。然后,我们将讨论TextAttack,我们的开源Python库NLP中的对抗样本,其中的数据的扩充以及对抗性训练是如何改变了人们研究NLP模型鲁棒性的方式。最后我们也将涵盖一些我们对于这个领域的前景的看法。

术语解释

对抗样本是设计用来愚弄机器学习模型的输入样本[1]。良性输入样本的更改构建对抗样本称为对抗扰动。“对抗扰动”比“对抗样本”更具体,因为所有对抗样本的类别还包括从零开始设计的愚弄机器学习模型的输入样本。文本攻击会产生一种特定类型的对抗样本,即对抗扰动。

对机器学习模型的对抗性攻击是产生对抗扰动的过程。文本攻击在一个数据集(模型的输入列表)中迭代,对于每个正确预测的样本,搜索一个对抗性的扰动。如果一个样本在开始时被错误地预测,它不会被攻击,因为它已经愚弄了模型。文本攻击将攻击过程分为多个阶段,并提供一个可互换的组件系统来管理攻击的每个阶段。

对抗的稳健性是衡量模型对对抗样本敏感度的度量。文本攻击通常使用攻击成功率、产生成功的对抗样本的攻击尝试的百分比,或攻击后的准确度,以及正确分类和未成功攻击的输入百分比来衡量鲁棒性。

为了提高我们讨论对抗性攻击的计算能力,让我们看一个具体的例子:

这些结果来自于使用文本攻击对一个在Tomatoes电影评论情感分类数据集上训练的LSTM运行DeepWordBug攻击,总共使用了200个示例。[图片归作者所有]

这次在200个样本上进行攻击。在这200个样本中,模型最初预测了43个错误,这导致了157/200或78.5%的准确率。文本攻击对其余157个样本运行对抗性攻击过程,以尝试为每个样本找到有效的对抗性扰动。在157次攻击中,有29次失败,成功率为128/157,占81.5%。另一种阐明这一点的方法是,该模型正确地预测了原始样本,然后在200个样本中抵御了对手攻击,导致攻击下的准确率(或“攻击后准确度”)为29/200或14.5%。

文本攻击还记录了其他一些有用的统计信息。在这157次成功的攻击中,平均15.5%的单词被改变而改变了预测,平均进行了32.7次查询以找到成功的扰动。在所有200个输入样本中,平均单词数为18.97。现在,我们已经提供了一些术语,让我们看一些对抗性攻击的具体示例。我们将介绍一些其他领域的对抗性攻击的背景知识,然后给出NLP中不同攻击的例子。

对抗样本

根据2013的研究表明,神经网络对于对抗样本而言非常的脆弱。最初的对抗攻击是对一张图进行了细微的,精心设计的干扰,用于欺骗一个图像分类器。在这次实验中,这个图像分类器首先是准确地预判出了原始图像里是一只猪,但是经过了细微干扰后,分类器居然把这只猪的图像给判断成了一架飞机,并且对于这次的结果非常的自信。


一个针对于ImageNet分类器的对抗样本。叠加了少量(但精心选择)的干扰便导致这个模型把猪分类成了飞机(这个对抗样本的图像来源于Aleksander Mądry的小组)

这些对抗样本呈现出了关于深度神经网络的一个重大缺陷,导致了所有包含神经网络的下游系统都面临这由对抗样本所带来的安全问题,其中也包括文字转语音系统和汽车的自动驾驶系统。抛开安全层面来讲,对抗样本还是很有用的:研究员们曾运用对抗样本来提升和分析深度学习模型。

如你所想,深度神经网络领域中的对抗样本已经引起了全世界许多研究人员的注意。2013年的发现也促进了对该主题的大量研究。

 

这是 2014-2020期间在arxiv.org上与对抗样本相关的论文的数量。

(图来自https://nicholas./writing/2019/all-adversarial-example-papers.html)

虽然许多新颖,更加复杂的对抗样本,以及与之相对的防御系统和为了训练神经网络来抵御(鲁棒)对抗攻击的进程应运而生,但训练高度准确的深度神经网络,同时保持强大的对抗性攻击能力仍然是一个未解决的问题。

许多人自然地想知道NLP模型的对抗样本是什么,对于NLP而言,并不存在计算机视觉中的对抗样本中的自然比拟(如上述的猪变成飞机)。在上述案例中,输入的猪的图像分类及其飞机分类的图像干扰实际上是用肉眼无法区分的。与图像不同,输入的文本序列不可能完全相同,从而不能做到真正的“无法区分”。  

NLP中的对抗样本

由于两个文本序列是不可分的,研究者们为NLP中的对抗样本提出了各种替代定义。我们发现,根据他们所选择的对抗样本的定义对对抗性攻击进行分组是很有用的。

虽然NLP中的攻击不能找到一个与原始输入严格不可分的对抗扰动,但他们可以找到一个非常相似的扰动。基于这些模型对 '相似性'理解的不同,我们的将NLP对抗攻击分为两类:

NLP中的对抗样本,基于两种不同的文本相似性理解:视觉相似性和语义相似性.

[图源自作者原文]

视觉相似性. 一种NLP攻击认为对抗样本是一个看起来与原始输入非常相似的文本序列——也许只差几个字符的变化——但可以让模型得到不同的预测。其中一些对抗性攻击试图尽可能少地改变原输入的字符,但尽量改变模型的预测;另一些则试图引入类似于与人们现实中也会写的'错别字'。

一些学者担忧到:这些攻击可以被很好地防住,既可以使用基于规则的拼写检查器,也可以使用经过训练的seq2seq模型来纠正对抗错别字。

属于这一类的TextAttack攻击的有:deepwordbug、hotflip、pruthi、textbugger*、morpheus

语义相似性。另一种对NLP攻击的理解是,如果一个对抗样本与原始输入在语义上无法区分,那么它就是有效的。换句话说,如果扰动是对原始输入的重述,且原输入和扰动会得出不同预测结果,那这样的输入就是有效的对抗样本.

某些NLP模型本就使用语义相似性来引导训练。基于语义相似性概念的对抗攻击通常会同时使用另一个NLP模型来保证要求扰动的语法合法性,并且与原输入在语义上相似.

属于这一类TextAttack攻击有:alzantot、bae、bert-attack、fast-alzantot、iga、kuleshov、pso、pwws、textbugger*、textfooler

*TextBugger攻击混合使用类似错字修改和同义替换的方法产生扰动。可以认为它两都算.

用TextAttack生成对抗样本

两种不可分的对抗攻击TextAttack都支持, 它们对于训练更健壮的 NLP 模型都有用。我们的目标是通过提供一组直观的、可重用的组件,从文本中构建尽可能多的样本,以深入对NLP中对抗样本的研究.

我们使用四个组件来构建对抗攻击过程:目标函数、约束、转换和搜索方法。(这些将在未来的文章中详细介绍!)这些组件让我们在不同的论文间保持一个统一的图式, 也让我们很容易开发NLP数据增强方法.

TextAttack还包括加载流行的NLP数据集和在其上训练模型的代码。通过这些带有对抗攻击和数据增强技术的训练代码,TextAttack为研究人员提供了一个在不同场景下测试对抗训练的环境.

下图显示了TextAttack的主要功能概述:

TextAttack的功能概述[图自作者原文]

NLP中的对抗性攻击的前景

我们很高兴看到TextAttack对NLP研究界的影响! 希望看到的一件事就是将学者们能将各种论文组合在一起。TextAttack可以很容易地进行缺件研究,以比较在不做任何其他改变的情况下,将论文A中的搜索方法与论文B中的搜索方法交换的效果。(而且这些测试可以在几十个预先训练好的模型和数据集上运行而无需下载!)

我们希望TextAttack的使用能使对抗性攻击更加多样化。目前所有的对抗性攻击都有一个共同点,那就是它们都在单词或字符层面进行替换。我们希望未来NLP中的对抗式攻击能够扩大范围,尝试不同的方法来进行短语级别的替换以及全句转述。此外,在对抗攻击文献中,一直专注于英语;我们期待看到对抗攻击使用更多语言.

如果你对TextAttack感兴趣,或者对为NLP模型生成对抗样本这一普遍的问题感兴趣,请与我们联系。你可以看看我们在ArXiv上的论文或者Github上的仓库.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多