面向自然语言处理的对抗攻防与鲁棒性分析综述
2021-08-17郑海斌陈晋音张旭鸿葛春鹏欧阳亦可纪守领
郑海斌 陈晋音,2 章 燕 张旭鸿 葛春鹏 刘 哲 欧阳亦可 纪守领
1(浙江工业大学信息工程学院 杭州 310023) 2(浙江工业大学网络空间安全研究院 杭州 310023) 3(浙江大学控制科学与工程学院 杭州 310063) 4(南京航空航天大学计算机科学与技术学院 南京 211106) 5(华为技术有限公司南京研究所 南京 210029) 6(浙江大学计算机科学与技术学院 杭州 310063)
深度神经网络(deep neural networks, DNNs)的突破性发展使其成为人工智能技术的重要分支之一,在图像识别、无人驾驶、自然语言处理(natural language processing, NLP)、网络图谱分析、生物医疗诊断等领域得到广泛应用.尤其是在NLP领域中,DNNs被广泛应用在机器翻译[1]、自动文本摘要[2]、语音识别及文本转换[3]、信息抽取与过滤[4]、文本分类与聚类[5]等任务中.与此同时,研究发现DNNs在图像识别领域中极易受到对抗性扰动[6]的影响,使得DNNs预测错误.目前普遍认为,神经网络容易受到对抗性扰动的主要原因在于它们在高维空间中的线性行为[7].
不仅计算机视觉领域的DNNs容易受到攻击,NLP领域的DNNs(即NLP模型)同样面临着安全威胁,具体表现为NLP模型在使用过程中容易受到精心制作的对抗文本的干扰.由于图像和文本数据存在数据结构的内在差异,因此并不能直接将图像上的攻击方法直接应用到文本数据中.针对图像数据的扰动是人眼难以察觉的像素级别的微小变化,因此人类仍然可以正确地对受扰动的图像进行正确分类而DNNs不行.但是对于文本的对抗性攻击,由于语言阅读的习惯和前后文的逻辑关系,人类此时也很难对攻击后的文本进行正确的理解.Jia等人[8]首先提出了在处理文本任务的NLP模型上进行对抗文本生成.随后出现了各种不同角度和策略的文本对抗攻击方法,例如,用相似的单词替换单词[9]、添加额外的文本[10]或用语义相似的句子替换句子[11]等会生成无效的单词或语法错误的句子,极大地改变句子的语义从而实现攻击.在这种情况下,即使人类也无法提供正确的预测.这些潜在的安全问题引起了研究人员极大的关注,进而提出了大量的攻击方法对NLP模型进行安全漏洞挖掘.
同时,为了提高NLP模型的鲁棒性,目前研究也提出了较多面向NLP的防御方法,主要包括对抗训练、隐私保护防御和检测防御3类.对抗训练被认为是目前最有效的防御方法之一,其基本思想是利用攻击方法获得的对抗文本与正常文本进行混合,作为新的训练数据集对目标模型进行微调训练;但是对抗训练的防御效果容易受到对抗样本多样性、数量以及微调训练策略等的影响.隐私保护防御主要是针对NLP模型容易受到隐私窃取攻击这一问题所提出的解决方案,主要包括针对数据和针对模型的隐私保护,前者是避免攻击者从开源数据集中窃取用户的隐私信息,后者是保护预训练的NLP模型的训练数据隐私信息不被窃取.检测防御的主要功能是检测待处理的输入数据是否为对抗样本,通常情况下对于失真严重的对抗样本具有较好的防御效果.
目前针对NLP模型的防御方法大多是后验的、被动的,对于未知攻击的防御效果难以保证,因此需要进一步研究能够用理论证明的可验证的NLP模型鲁棒评估方法.针对NLP模型的可验证鲁棒性方法主要从模型的决策边界或者内部结构出发,通过计算模型的可验证精度、最大扰动下界、最小扰动上界等指标,实现为NLP模型在最坏情况下提供有效的可计算形式的保证,达到可验证鲁棒性评估的目的.
NLP攻防领域的研究工作还有很大的发展空间,针对NLP模型的对抗文本生成问题以及模型鲁棒优化防御任务也成为安全领域相关研究人员的关注点之一.为此,本文按照NLP模型、攻防方法、鲁棒分析、平台和工具包的逻辑关系展开介绍.
1 面向NLP的模型
目前DNNs在NLP领域中被广泛应用,如序列标注任务、文本分类、句子关系判断和文本生成式任务等.为了应对NLP发展过程中各项任务的不同挑战,DNNs也随之出现各种模型架构,除了最常见的前馈神经网络、卷积神经网络(convolutional neural network, CNN)等,循环神经网络(recurrent neural network, RNN)、Word2vec[12]、序列到序列学习模型(sequence-to-sequence learning, Seq2Seq)[13]以及注意力模型(attention model)[14]也是NLP任务中常用的模型,这是因为它们具有处理序列的能力.此外,Transformer模型及其各种变体模型[15-22]以及XLNet[23]模型近年来在NLP领域中也越来越受欢迎.在本节中,我们将简要介绍NLP领域中常用的DNNs.
1.1 Word2vec模型
Word2vec模型[12]是谷歌公司研究人员设计的NLP模型,它的特点是将所有的词向量化,这样就可以定量地去度量词与词之间的关系,挖掘词之间的联系.Word2vec模型的具体实现分为CBOW[24]和Skip-Gram[25]两种模型.
CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这一特定词的词向量.Skip-Gram模型则相反,其输入是一个特定词的词向量,而输出是特定词对应的上下文词向量.通过训练Word2vec模型,将每个词都映射到一个较短的词向量上,所有的词向量就构成了向量空间,进而可以用统计学的方法来研究词与词之间的关系.基于此,Word2vec模型解决了由于词与词相互独立并且特征向量会过于稀疏而造成的维度灾难问题.
1.2 Seq2Seq模型
由于原始的RNN要求序列等长,然而实际遇到的大部分任务的序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同长度.Seq2Seq模型[13]的出现解决了这个问题,通过使用编码器-解码器体系结构为给定的序列信息生成另一个序列信息,保证了序列的长度要求.
Seq2Seq模型是RNN的一个变体,包括编码器和解码器2部分,这一模型结构在机器翻译、文本摘要、阅读理解、语音识别等领域取得很好的性能.Seq2Seq模型的输入是一个序列,输出也是一个序列,编码器用于编码序列信息,将任意长度的序列信息编码为一个固定长度的向量.解码器在得到上下文信息向量之后可以将信息解码,并输出可变长度的序列.隐变量分层递归编码器-解码器模型[26]是典型的Seq2Seq模型,该模型利用子序列之间的复杂依赖性生成新序列.
1.3 Attention模型
注意力机制[27]的提出解决了编码Seq2Seq模型中所需的长序列的困难.注意力使解码器可以回顾源序列的隐藏状态,而隐藏状态将加权平均值作为解码器的附加输入,从而使其关注序列的重要信息部分.Attention模型[14]中,解码器的输出会与编码器每一个时间点的输出进行向量计算,常见的计算方式为内积法.NLP的自注意力[28]利用注意力机制“动态”地生成不同连接的权重,用于查看序列中的周围单词以获得更多的上下文相关单词表示[29],从而处理变长的信息序列.
1.4 ELMo模型
ELMo模型[30]主要使用了一个两层双向的长短时记忆网络(long short term memory, LSTM)语言模型,结合上下文来理解词义.先在一个大型的语料库上进行训练,用模型的内部状态来表征一个词的向量,此时内部状态混合了所有的语义;然后将下游任务的文本输入模型,此时的词具备了具体的上下文语境,再用内部状态的线性组合来表征词.这种线性组合是在下游任务中进行训练得到的.双向LSTM层能有效地编码上下文中不同类型的语法和语义信息,提高整体任务性能.
1.5 Transformer模型及其变体
与大多数Seq2Seq模型一样,Transformer[31]的结构也是由编码器和解码器组成.不同于Attention模型中的注意力机制,Transformer提出了多头注意力的机制,分别学习对应的源句内部、目标句内部、源句与目标句之间的3种关系.对于短语的位置,Transformer使用位置编码机制进行数据预处理,扩展了模型的并行性,获得了更好的效果.针对不同的问题,Transformer还有各种不同的结构变体,包括Vanilla Transformer[15],Universal Transformer[16],Generative Pre-trained Transformer(GPT)[17]等.
1.5.1 Vanilla Transformer模型
RNN结构本身比较简单,也很适合序列建模,但RNN的明显缺点之一就是无法并行,因此速度较慢,这是递归的天然缺陷.此外,RNN难以很好地学习到全局的结构信息.为了解决这一问题,Vaswani等人[15]提出了Vanilla Transformer模型,通过多头自注意力结构一步到位获取了全局信息.Vanilla Transformer模型通过位置嵌入,对每个位置编号,然后通过正余弦函数将编号映射为一个向量.通过这一操作,为每个词都引入了一定的位置信息,解决了自注意力本身无法捕捉序列顺序的问题.
1.5.2 Universal Transformer模型
由于Transformer模型中编码器和解码器执行的次数仍是人为设置的超参数,使得模型架构无法自主转换任务并且自动地调整训练策略.Universal Transformer模型[16]有别于传统做法,采用了自适应计算时间让模型可以动态地调整每个符号的计算次数,实现最好的矢量表达.此方法在转换函数上另作符号分头进行,能够有效地学习每个符号的矢量表达,并保留了Vanilla Transformer模型的优点,解决传统方法梯度爆炸/消失和信息遗失的问题.
1.5.3 GPT模型
Radford等人[17]首次提出结合无监督的预训练和有监督的微调而得到GPT单向自回归语言模型,旨在学习一种通用的表示方式,可以做很少的改变就能转移到各种类型的NLP任务中.此外,目前主流的机器学习模型对于字幕或者阅读理解、图像分类这样的任务,输入的多样性和不确定性会把模型缺点暴露出来.为了构建一个泛化能力更强的模型,Radford等人[18]把多任务学习和无监督学习关联起来得到GPT-2模型,在多个任务上进行预训练,无监督地做下游任务.模型沿用GPT单向自回归语言模型,但是使用的数据质量高、更宽泛、量更大,模型的参数规模更大,训练成本也更高.
1.5.4 BERT模型
BERT模型[19]代表Transformer的双向编码器表示,与其他语言表示模型不同,BERT旨在通过联合调节所有层中的上下文来预先训练深度双向表示模型.它采用了3种嵌入相加的方式作为模型输入:符号嵌入+段嵌入+位置嵌入,其中符号嵌入采用的是单词符号嵌入,段嵌入则采用文本语句嵌入,位置嵌入使用了随机参数同Transformer模型一起训练.因此,预训练的BERT表示可以通过一个额外的输出层进行微调,适用于广泛任务的模型构建,比如问答任务和语言推理,无需针对具体任务做大幅架构修改.
但是,BERT的预训练模型并没有得到充分训练,因此Liu等人[20]提出了鲁棒优化的BERT预训练方法(robustly optimized BERT approach, RoBERTa)以更好地训练BERT模型.BERT的掩码是在预处理时进行的,导致该掩码是静态的,而RoBERTa中使用动态掩码,只是在序列送入模型中的时候才进行动态的掩码.这样在更大数据集上或者更多步数的训练上会表现更好,但是过程中使用了大量的训练数据,且模型结构更为复杂.为了得到更好的模型训练参数,Lan等人[21]则提出了更轻量级的模型(a lite BERT, ALBERT).ALBERT的核心思想是采用2种减少模型参数的方法,比BERT占用的内存空间小很多,在保证模型训练效果的同时极大提升了训练速度.
1.5.5 Transformer-XL模型
由于Transformer无法建模超过固定长度的依赖关系,对长文本编码效果差,且把要处理的文本分割成等长的片段,通常不考虑句子(语义)边界,导致上下文碎片化.因此,Dai等人[22]提出Transformer-XL模型,使用片段级递归机制,通过引入一个记忆模块,循环用来建模片段之间的联系,使得片段之间产生交互,解决编码长距离依赖和上下文碎片化问题.Transformer-XL模型还使用了相对位置编码机制,代替绝对位置编码,这是为了实现片段级递归机制而提出,解决可能出现的时序混淆问题.
1.6 XLNet模型
XLNet模型[23]与BERT模型[19,21]类似的是同样遵循两阶段的过程:第1个阶段是语言模型预训练阶段;第2阶段是任务数据微调阶段.XLNet模型主要改动第1个阶段,它不同于BERT模型带掩码符号的降噪自编码模式,而是采用自回归语言模型的模式.通过对输入全排列来引入上下文信息,并利用双流自注意力机制和注意力掩码实现更好的效果.此外,XLNet模型直接使用了相对位置编码,并将递归机制整合到全排列设定中.对于生成类的任务,能够在维持表面从左向右的生成过程前提下,学习隐含上下文的信息,比BERT模型具有更明显优势.
根据上述对NLP模型的介绍,我们进一步整理并总结其中的关键技术、应用、优势以及待解决的挑战,如表1所示:
Table 1 Comparison of Classic Natural Language Processing Models表1 经典的NLP模型对比
2 面向NLP的攻击方法
随着DNNs在NLP领域的发展应用,针对其文本数据的对抗和中毒攻击研究工作也得到广泛关注.根据对文本数据扰动粒度的不同,实现对已有的NLP相关攻击方法进行分类,主要分为:字符级攻击、单词级攻击、句子级攻击.对比以上3种不同粒度的攻击扰动,字符级和句子级扰动所产生的对抗文本质量较差,前者会破坏其语法性,降低对抗文本的可读性,但是攻击成功率较高;后者则使得对抗文本和原始输入之间有巨大的差别,且攻击效果也比较一般.而单词级攻击在对抗文本质量和有效性控制以及攻击成功率方面则有更好的表现.
2.1 字符级攻击
字符级攻击主要通过对原始输入中的字符添加扰动,常用的方法包括字符的删除、修改、添加、替换等.字符级扰动所产生的对抗文本质量较差,破坏了其语法性[32],因此该类攻击方法应用较少.
Eger等人[33]研究了视觉对抗攻击对当前NLP系统的影响,包括字符、单词和句子级别的任务.作者引入视觉扰流器,通过在视觉嵌入空间中随机地将输入中的字符替换为其视觉近邻字符,从而实现攻击.结果表明,最先进的NLP模型在受到视觉扰流器攻击时,对各种NLP任务的性能都显著下降.在单个任务的攻击场景中,下降率高达82%.此外,作者探索了3种文本屏蔽防御方法——视觉字符嵌入、对抗训练和基于规则的恢复方法,这大大提高了NLP模型的鲁棒性.但是,在攻击场景下文本屏蔽方法的性能仍然落后于非攻击场景,这说明了对视觉攻击的处理难度更大.
进一步,根据攻击者对目标模型的信息掌握情况对其作进一步的分类,可以分为白盒攻击和黑盒攻击.在白盒攻击场景中,攻击者可以获取目标模型的所有信息,包括模型结构、梯度和参数等;而在黑盒攻击场景中,攻击者则无法获取目标模型的相关信息,但是可以得到模型的输出结果,从而利用对抗文本的迁移性进行攻击.黑盒攻击在无法探知原NLP模型结构和参数的前提下,通过找到与训练原NLP模型同分布的数据,并使用该数据训练一个新的替代模型.基于此,Gil等人[34]提出White-to-black攻击,证明在优化过程中利用隐含的知识,可以提炼得到另一个更有效的DNNs.通过白盒攻击生成针对替代模型的对抗文本,然后根据白盒攻击生成的对抗文本来对攻击者进行训练,训练出的DNNs可用于实施黑盒攻击,攻击过程如图1所示.图1中的白盒攻击过程,源毒性模型S(*)通过白盒攻击方法生成对抗文本,并以此训练攻击者模型DISTFLIP.图1中的黑盒攻击过程,使用训练好的DISTFLIP来攻击黑盒模型,并翻转了生成样本中42%的API预测标签.该方法减少了对抗文本生成时间,并且此方法在黑盒设置的情况下,也能通过攻击谷歌透视图API来暴露其安全漏洞.
Fig. 1 Attack effect from white box to black box[34]图1 白盒变黑盒的攻击效果[34]
在文本分类任务中,Gao等人[35]针对NLP模型存在的安全漏洞,提出了一种算法DeepWordBug,它可以产生敌对的文本序列,并通过利用这个漏洞误导深度学习模型.该算法可在黑盒设置中有效地生成微小文本扰动,从而迫使NLP模型对文本输入进行误分类.作者还为DeepWordBug算法设计了新的评分策略,以找到最重要的单词进行修改,从而使NLP模型做出错误的预测.DeepWordBug算法将简单的字符级转换应用于排名最高的单词,以最小化扰动的编辑距离,同时更改原始分类.结果表明,DeepWordBug降低了当前最新的NLP模型的预测准确性,通过生成对抗性序列文本使得模型的性能下降.
Ebrahimi等人[36]研究了字符级别神经机器翻译(neural machine translation, NMT)的对抗文本,并将黑盒对手与新白盒对手进行对比,后者使用可微字符串编辑操作对对抗性变化进行排序.Ebrahimi等人[36]提出了2种新的攻击类型,目的是删除或改变翻译中的一个词,而不是简单地破坏NMT.实验结果表明,在不同的攻击场景下,白盒对抗文本的攻击效果明显强于黑盒对抗文本,这显示了比目前已知的更严重的漏洞.此外,利用该方法生成的对抗文本进行对抗性训练,可以提高NLP模型的鲁棒性.
即使目前最先进的NMT模型也无法很好地翻译人类容易理解的中等噪音文本,基于此Belinkov等人[37]提出将面向字符的NMT模型与合成的和自然的噪声源相结合的攻击方法.此外,作者还探讨了2种增强模型鲁棒性的方法:结构不变词表示和噪声文本的鲁棒训练,并发现基于CNN的模型能够同时学习对多种噪声具有鲁棒性的表示.实验结果表明,基于字符的NMT模型是非常脆弱的,并且当面对自然和合成类型的噪声时往往会发生模型预测错误.但是,通过使用结构不变词表示和通过对不同种类的对抗文本进行集成训练,可以在一定程度上提高模型的鲁棒性.
综上所述,字符级攻击所产生的对抗文本质量较差,大概率会破坏其语法性,造成对抗文本不可读.尽管攻击成功率较高,但是目前已有一些基于语法纠错的防御方法可以很好地应对字符级攻击.
2.2 单词级攻击
与字符级攻击不同的是,单词级攻击扰动的对象是原始输入中的词,最主要的方法为词替换,包括基于词向量相似度[38]、同义词[39]、义原[40]、语言模型分数[41]等词替换方法.单词级攻击在对抗文本质量和有效性控制以及攻击成功率方面有更好的表现,加上利用语言模型进行控制,所产生的对抗文本的通顺性、流畅性也能够保证.
在单词级攻击方法中,典型的白盒攻击如基于共享的词替换攻击[42]、TextFooler攻击[38]等,都是需要获取目标模型的详细信息;而常用的黑盒攻击如基于义原的词替换攻击[40]则利用对抗文本的迁移性进行攻击.此外,还有研究人员同时研究白盒场景和黑盒场景下的其他攻击方法,如基于关系解析扰动的攻击[43].本节将从单词级白盒攻击、黑盒攻击、其他攻击3方面进行介绍.
2.2.1 单词级白盒攻击
Shi等人[42]从使用共享词进行修改的角度研究了释义识别模型的鲁棒性,并表明模型在面对这些修改攻击时,存在严重的鲁棒性安全问题.攻击模型的目的是构建一个有效的新对抗文本,使目标模型做出错误的预测.Shi等人[42]为了找到一个修改的攻击方案,使用受启发式规则约束的波束搜索,并利用BERT掩码语言模型来生成与上下文兼容的替换词.实验表明,这种攻击方法所生成的对抗文本还能用于进行对抗训练以提高NLP模型的安全性.但是这种修改不保留语义,每一对修改的句子通常有更低的单词重叠,因此这种攻击方法容易误导模型的预测.为了生成保留语义内容、语法性且人类能够分类正确的对抗文本,Jin等人[38]提出TextFooler攻击方法用于产生对抗文本,并将其应用于2个基本的NLP任务,文本分类和文本蕴涵任务.最终成功地攻击了多个目标NLP模型,包括强大的预训练BERT模型,以及广泛使用的CNN和RNN.该攻击框架在成功率和扰动率方面优于以前的攻击,能够生成保留语义内容的对抗文本,而且计算复杂度与文本长度呈线性关系,缺陷是对初始精度高的模型攻击难度较大.
为了解决输出空间的连续性问题,Cheng等人[44]提出了一种结合group lasso和正则化的投影梯度方法,此方法通过Seq2Seq模型生成对抗文本,使用投影梯度法解决输入空间的离散性问题,采用group lasso增强失真的稀疏性,并开发一种正则化技术进一步提高成功率.实验结果验证了所提算法的有效性:通过改变小于3个单词,可以使Seq2Seq模型产生期望的错误输出,具有很高的攻击成功率.此外,作者还使用一个外部情感分类器验证了生成的对抗文本仍然保留了语义性,而Seq2Seq模型在对抗攻击方面具有更强的内在鲁棒性.此方法可以进行更具挑战性的目标关键字攻击,并能有效应用于机器翻译和文本摘要任务.
由于对文本分类的对抗攻击过程中,产生的对抗文本难以保持词法的正确性、语法的正确性和语义的相似性.在同义词替换攻击策略的基础上,Ren等人[39]提出了一种基于概率加权词显著性(probability weighted word saliency, PWWS)的文本分类实例生成方法来解决这一问题.PWWS引入了一种新的词替换顺序,该顺序由词的显著性决定,并以分类概率为权重.实验表明,PWWS能在较低的词替换率下大幅度降低文本分类的准确率,且这种干扰是人类难以察觉的,证明了在离散输入空间中存在对抗文本,并显示了NLP模型的脆弱性.PWWS也表现出良好的可移植性,并且通过对抗性训练可以提高模型在测试时的鲁棒性.
在NLP的机器翻译任务中,Hsieh等人[45]和Cheng等人[46]分别提出了面向翻译模型的攻击方法.前者检查了自注意神经网络对敌对性输入扰动的鲁棒性.具体地,作者研究了最先进的RNN和自注意架构在对抗攻击下的情感分析、蕴涵和机器翻译的注意机制和特征提取机制.同时提出了一个新的攻击算法产生更多的自然对抗文本,用以误导NLP模型.而Cheng等人[46]利用对抗性源实例攻击翻译模型,同时使用对抗性目标实例保护翻译模型,提高其对对抗性源实例的鲁棒性.为了生成对抗性实例,作者提出了一种基于梯度的攻击方法,通过对干净文本的翻译损失制作对抗文本.Hsieh等人[45]的实验结果表明,对于这3个NLP任务(情绪分析、文本蕴含和机器翻译),在输入扰动较小时,自注意力模型比RNN对对抗攻击有更高的鲁棒性.此外,作者还从模型内部变化出发,对自注意力模型鲁棒性较强的原因进行解释,为进一步生成更强大的对抗文本提供理论基础.Cheng等人[46]在汉英和英德翻译任务上的实验结果则表明,此方法能够提高翻译性能和鲁棒性,并在噪声数据上表现出更高的鲁棒性,说明该方法生成对抗文本可以用于对抗训练,进而反向提升NLP模型的鲁棒性.
由此可见,对抗训练不仅在图像处理领域取得巨大成功,在NLP领域中也应用广泛.研究人员可以直接将在图像处理领域开发的对抗训练直接应用于输入词嵌入空间,而不是离散的文本输入空间.然而,此方法放弃了诸如生成对抗文本之类的可解释性,以显著提高NLP任务的性能.Sato等人[47]通过限制嵌入空间中单词的扰动方向,恢复其可解释性.此方法将每个带有扰动的输入直接重构为实际的文本,并将扰动视为句子中单词的替换,并通过限制输入嵌入空间中现有单词的扰动方向恢复其可解释性,进而可以成功地在嵌入空间中生成合理的对抗文本和可解释的可视化扰动.
Samanta等人[48]提出了一种通过修改原始样本来制作对抗文本的方法,这是第1个从复杂的文本样本合成对抗文本的工作.对原始文本的修改是通过删除或替换文本中重要或突出的单词,或在文本中引入新单词来完成的.此算法最适合每个类的样本都有子类别的数据集.在制作对抗文本时,关键的约束之一是生成有意义的句子,从语言(英语)的语法观点来看,这些句子是合法的.与图像不同的是,文本在进行修改时必须满足一些条件,以确保文本样本的语义和语法的保留.在面向情感分析的电影评论数据集(internet movie database, IMDB)和性别检测的Twitter数据集上,实验结果表明了此方法的有效性.
NLP模型通常用于解决复杂任务,以及在敏感情况下做出决策,因此许多NLP模型容易受到以对抗文本为输入的对抗性操纵.Papernot等人[49]基于词序列转换的攻击,研究RNN在处理顺序数据时的对抗威胁,为对抗性机器学习领域做出了贡献.研究表明,先前介绍的对抗文本生成算法,若能够使得前馈神经网络误分类,将也可以适用于对RNN的攻击.实验结果表明,此方法在攻击中必须考虑数据的预处理过程,且在较弱的威胁模型下执行攻击也将有助于更好地理解漏洞并指导防御.但是还需要解决对抗性序列的语法问题,以改善其在句子中的语义,使扰动更加难以察觉.
2.2.2 单词级黑盒攻击
Maheshwary等人[50]提出了一种基于决策的攻击策略,该策略可以针对文本分类和文本蕴含任务设计高质量的对抗文本.作者提出的攻击策略利用基于种群的优化算法,通过只观察目标模型预测的Top1标签来制作貌似合理且语义相似的对抗文本.尽管种群优化算法是强大的组合优化技术,但是如果搜索空间很大,它们仍然会变慢并收敛到局部最优.
在每次迭代实验过程中,优化过程都允许单词替换,从而最大限度地提高原始文本和对抗文本之间的整体语义相似度.如图2所示,包括初始化对抗样本、缩减搜索空间、优化对抗样本等步骤,用X*替换更多的同义词会大大增加搜索空间.因此,在此步骤中通过将一些同义词替换为各自的原始单词来减少X*中的替换次数.此方法并不依赖于使用替代模型或任何类型的训练数据,并且能够在受限设置下以较低的词扰动百分比获得较高的攻击成功率.
Fig. 2 Search space visualization[50]图2 搜索空间可视化[50]
Garg等人[51]提出了一种黑盒攻击方法BAE(BERT-based adversarial examples),利用BERT掩码语言模型的上下文扰动制作对抗文本.BAE在原始文本中替换和插入token以遮蔽待攻击词,语言模型根据语境选取预测出的词.并利用BERT-MLM生成掩码token的对抗文本,在文本分类任务中插入和替换句子中的token以进行攻击.实验表明,BAE执行了更强的攻击.此外,与之前的工作相比,BAE生成的对抗文本具有更好的语法和语义一致性.
单词级攻击中常用的是词替换攻击方法,基于此,Zang等人[40]将基于义原的词替换方法和基于粒子群优化的搜索算法相结合,通过基于最小语义单位的词替换保留更多潜在的有效对抗文本,分别解决不合适的搜索空间缩减方法和效率低下的优化算法这2个问题.Tan等人[52]通过扰乱干净文本中的词形变化,生成看似合理且语义相似的对抗文本,而不需要访问模型的梯度.Alzantot等人[9]则是使用基于黑盒种群的优化算法,生成语义和语法上相似的对抗文本.这些对抗文本能够欺骗已训练好的情感分析和文本蕴含模型,攻击成功率分别达到97%和70%.作者通过大量的实验验证了该方法可以获得更高的攻击成功率,并且能够制造出更多高质量的对抗文本.此外,Tan等人[52]的攻击方法在显示强大的攻击能力的同时,还能保持处理干净数据集的性能.作者的攻击方法生成的对抗文本都具有更高的可迁移性并能有效用于对抗训练,从而提高受威胁NLP模型的鲁棒性.
随着词攻击方法的研究发展,研究人员意识到可以使用策略学习的方法制作对抗文本.Zou等人[53]通过基于强化学习生成对抗文本的方法来研究基于DNNs的NLP系统在这种情况下如何、以及何时会失败的问题.作者针对任何给定的NMT体系结构,通过引入一种强化学习范式,在token级别上应用离散扰动,以实现直接的翻译性能下降.Yang等人[54]提出了一个概率框架研究针对离散数据的对抗性攻击.在此基础上,作者推导出一种基于扰动的贪婪攻击方法和一种基于学习的可扩展的Gumbel攻击方法,以用于攻击算法设计中的各种权衡.
结果表明,Zou等人[53]能有效地生成具有保持语义的对抗文本的稳定攻击,但是在“加强文本”上攻击效果不佳.作者也提出了一个定性和定量分析的首选模式的攻击,可以暴露给定性能指标上的度量缺陷,实现模型安全漏洞的定量分析.Yang等人[54]的贪婪攻击查询效率相对较低,因为模型评估与攻击者选择的特征数量和子字典大小呈线性关系.由于不需要查询攻击阶段的模型,Gumbel攻击对攻击成功率和文本语义保持有折中考虑.但是这些攻击方法都能有效应用于最新的文本分类NLP模型的攻击.
2.2.3 其他攻击
以前面向NLP模型的对抗文本攻击研究主要集中在语义任务上,例如情感分析、问题回答和阅读理解.Zheng等人[43]研究了基于神经网络的依赖解析模型的鲁棒性,证明了依存关系解析中也存在对抗文本.作者提出2种方法,研究解析器如何通过在句子和短语级别上搜索现有文本的扰动而犯错,以及设计在黑盒和白盒设置中构造此类示例的算法.针对句法任务进行对抗攻击的实验表明,此方法成功地找到了解析器的盲点,并取得了很高的攻击成功率.同时,通过使用此攻击得到的对抗文本进行对抗训练,不仅保持了依赖解析器在干净数据上的性能,而且提高了依赖解析器的鲁棒性.
由于句子空间是离散的,因此很难沿梯度方向进行小的扰动搜索,而且不能保证顺利地生成对抗文本.Zhang等人[41]提出了基于Metropolis-Hastings的攻击(MHA),它通过执行Metropolis-Hastings采样来解决上述2个问题,同时利用梯度进行快速攻击.
在IMDB和斯坦福自然语言推理(Stanford natural language inference, SNLI)数据集上的实验结果表明,MHA相比于比遗传算法可以更快地生成对抗文本,而且利用MHA方法生成的对抗文本更流畅.但是,MHA在标签改变时返回输出结果,可能导致句子不完整.此外,利用MHA生成的对抗文本进行对抗性训练,也能改善NLP模型的鲁棒性.
Liang等人[55]提出了一种制作对抗文本的有效方法,揭示了一个容易被忽视的重要事实,即基于DNNs的文本分类器也容易受到对抗文本的攻击.具体地,面对不同的对抗场景,通过计算输入文本的代价梯度(白盒攻击)或生成一系列封闭的测试样本(黑盒攻击),进而识别对分类结果很重要的文本项.因此,作者设计了3种扰动生成策略来生成对抗文本,即插入、修改和删除.实验结果表明,该方法生成的对抗文本能够成功愚弄最先进的字符级和词级NLP文本分类器.这些对抗文本可以被用于干扰任何期望的字符级或词级,而不会影响其效用,且引入的扰动是很难被感知的.
综上所述,单词级攻击在对抗文本质量和有效性控制以及攻击成功率方面有更好的表现,对某些词进行同义替换很难改变这句话的语义,所产生的对抗文本的通顺性、流畅性也更容易保证.此外,单词级攻击在白盒和黑盒的场景下都能达到较高的攻击成功率,因此单词级攻击应用较广.
2.3 句子级攻击
句子级攻击将整句原始输入视作扰动的对象,旨在产生一个和原始输入语义相同(至少针对当前任务的真实标签不改变),但却使得受威胁模型判断改变的对抗文本.常用的句子级攻击方法包括编码后重解码[56]、添加无关句子[57]、改述[58]等,下面将对句子级攻击方法进行介绍.
Wang等人[58]提出了一个受控对抗文本生成(controlled adversarial text generation, CATGen)模型,在给定输入文本的情况下,通过与已知任务标签无关的可控属性生成对抗文本.与许多现有的对抗文本生成方法相比,此方法可以生成更加多样化和流畅的对抗文本,且对模型再训练和不同的模型架构具有很强的鲁棒性.因此,可以使用生成的对抗文本进行对抗训练来改进模型,但模型如何隐式地提取属性还需探索.由此,Li等人[59]基于BERT提出了一种更为高效的对抗文本生成方法BERT-Attack,通过使用预先训练的掩码语言模型制作高质量的对抗文本.作者将BERT与下游任务中精细调整的模型和其他DNNs相对立,以便误导目标模型的预测结果.此方法在成功率和干扰百分比上都优于最先进的攻击策略,同时生成的对抗文本流畅并且语义上保持不变,但在干扰率、攻击成功率、语法正确性和语义一致性等方面仍有很大的改进空间.
在面向NLP结构化预测任务的攻击与防御研究中,除了任何攻击者都会面临的如何干扰离散单词和句子流畅性问题外,结构化预测模型对攻击者还有一个特定的挑战:结构化输出对输入中的小扰动十分敏感.为了解决这一问题,Han等人[60]提出了一个新的框架,首先通过使用Seq2Seq模型,从处理相同结构化预测任务的多个参考模型进行反馈,对结构化预测模型进行攻击.在此基础上,作者进一步通过对抗性训练来增强受威胁模型的性能,使其预测更加准确且鲁棒.对句法分析和词性标注的攻击实验表明,此攻击框架可以产生高质量的句子,进而有效地攻击当前最先进的NLP模型.防御实验表明,利用此模型生成的对抗文本进行对抗训练可以对原始模型的鲁棒性进行改善.
与人类用户进行交互时,在大型数据集上受训的面向目标的对话代理可以实现良好的性能.但是,在现实世界的应用程序中,更重要的是确保代理不仅与常规用户进行正常交互,而且能够与那些会通过交互攻击系统以实现自身优势的恶意用户进行顺畅交互.Wallace等人[61]提出“人在回路中”的对抗文本生成方式,用于指导人类攻击目标模型.作者将此生成框架应用于Quizbowl问答任务中,通过交互式用户界面帮助解释模型预测,而且用户可以在其中提出对抗性问题.对抗性问题涵盖了从multi-hop推理到实体类型干扰等多种现象,暴露出问题解答中的开放性挑战.Cheng等人[62]则通过使用对抗性智能体精心设计的攻击来评估对话系统的鲁棒性,分别在黑盒和白盒设置中进行.这是第1个在互动对话系统中创造对抗代理的方法.实验结果表明,目前基于DNNs的模型对此方法的对抗代理是不稳定的.此外,通过使用此方法的黑盒代理进行迭代对抗训练,可以显著提高对话系统的鲁棒性.
Ribeiro等人[11]介绍了语义等效攻击,通过语义保留扰动,诱导模型预测发生变化.作者将这些敌对方归纳为语义上等价的对抗规则,在许多情况下通过简单、通用的替换规则混淆对手.通过在3个任务场景中(机器理解、视觉问答和情感分析)检测最先进的黑盒模型中的错误,展示了针对语义等效对手和等价对抗规则的有用性和灵活性,此方法在大多情况下有效地产生了高质量的对抗文本,具有泛化攻击能力.
Minervini等人[63]研究了自然语言推理(natural language inference, NLI)中违反一阶逻辑约束的对抗性实例的自动生成问题.作者将识别此类对抗性例子的问题简化为组合优化问题,通过最大化度量违反此类约束的数量,并使用语言模型来生成语义上具有混淆性的例子.此外,作者提出了一种对抗规则神经推理模型来整合背景知识的方法.结果表明,虽然所提出的方法并不总能改善SNLI和多体类自然语言推理(multi-genre natural language inference, MultiNLI)数据集上的结果,但它显著且持续地提高了对敌制作数据集的预测精度.此外,该方法生成的对抗文本还能在不同模型上进行迁移,并且所提出的对抗性训练过程通常能够产生更鲁棒的模型.
针对处理斯坦福问答数据集(Stanford question answering dataset, SQuAD)缺乏鲁棒性的问题,Wang等人[64]提出了一种新的添加输出多样化(add sent diverse, ASD)的对抗文本生成算法,通过不同位置放置干扰和扩大假答案的设置产生对抗文本,显著增加了对手的训练数据方差.此外,为了提高对语义扰动(例如反义词)的鲁棒性,除了添加基于ASD的对抗性训练实现数据增强之外,还共同提高了模型的语义关系学习能力.在许多不同类型的对抗评估下,此方法可以实现36.5%的F1得分提升.Jia等人[8]则针对SQuAD数据集提出了一个新的对抗性评估方法,通过向输入段落添加分散注意力的句子来创建对抗文本.这些句子是自动生成的,用来分散问答系统的注意力,不会改变正确的答案或误导人类,以测试系统面临干扰时的鲁棒性.实验表明,在这种对抗性的环境下,模型的平均准确率明显下降,进一步验证了对抗文本的攻击有效性.
在NLP的句子级攻击中,研究人员通常使用句子的语法转换进行攻击,Iyyer等人[56]提出了句法控制释义网络(syntactically controlled paraphrase networks, SCPNs)制作对抗文本.给定一个句子和目标语法形式(例如选区解析),训练SCPNs用于所需的语法对句子进行释义.Zhao等人[57]则通过在密集和连续数据表示的语义空间中进行搜索,生成位于数据流形上的对抗实例,且得到的对抗文本是在语法和意义上与输入相似的.Iyyer等人[56]大规模地进行反向翻译,然后使用解析器标记在这个过程中自然发生的语法转换.这种攻击方法允许用额外的输入来指定目标语法,进而训练一个神经编码器-解码器模型.自动评估和人工评估的结合表明,与现有的不受控制的释义生成系统相比,该模型显示出的词汇变化要少得多,而更倾向于纯粹的语法修改.Zhao等人[57]的实验解释了决策行为并评估了黑盒分类器的准确性,但是其生成的对抗文本难以直接有效地用于对抗训练以提升模型的鲁棒性.
Minervini等人[65]提出了第1个可以使用功能无关的Horn子句(如对话)来正则化任何神经链路预测器的方法,其复杂性与域的大小无关.对于几个链路预测模型,优化问题所面临的对手存在有效的封闭形式的解决方案,其神经链路预测的正则化概述过程如图3所示.图3中,给定带有变量{X1,X2,X3}的子句,一个对手会将每个变量映射到一个嵌入的对抗实体,该实体最大程度地减少了不一致的损失,同时通过最小化链路预测和不一致的损失来训练鉴别器.在链路预测基准上的实验表明,在给定适当的先验知识的情况下,此方法可以显著影响所有相关指标的神经链路预测的结果,达到攻击效果.
综上所述,句子级扰动往往使得对抗文本和原始输入之间有巨大的差别,很难控制所产生的对抗文本的质量,更无法保证其有效性,因此符合语义和理解的句子级攻击比单词级和字符级攻击难度更大.
根据上述对面向NLP模型的攻击方法介绍,我们按照字符级攻击、单词级攻击、句子级攻击3类分别对其关键技术、应用、是否为目标攻击、是否为黑/白盒攻击、攻击阶段等进行进一步整理和归纳,具体总结如表2所示:
Fig. 3 Block diagram of regularization for neural link prediction[65]图3 神经链路预测的正则化操作框图[65]
Table 2 Attack Methods of Natural Language Processing表2 针对NLP的攻击方法
续表2
其中目标/非目标攻击是从攻击效果出发对攻击方法的归类.目标攻击是指攻击者首先预设了一个目标,并且攻击后的预测结果满足预设目标,如在文档分类任务中,通过添加特定的文本扰动将该文档归类为攻击者指定的某一类.而非目标攻击则只需满足攻击后的预测结果与真实标签不一致即可.
3 面向NLP的防御方法
生成针对NLP模型的对抗文本的基本目的是利用这些对抗文本来增强模型的鲁棒性,以防御恶意对抗文本对模型预测的干扰.本节主要介绍了NLP领域的文本防御方法,分为对抗训练、隐私保护防御和检测防御.由于攻击方法层出不穷,针对文本的防御工作变得更为重要也更加困难,目前围绕NLP领域的防御研究仍需进一步地探索.
3.1 基于对抗训练的防御
对抗训练是增强神经网络鲁棒性的重要方式.在对抗训练的过程中,训练样本中会混合一些带有微小扰动的对抗文本,然后使神经网络适应这种扰动,从而对对抗文本具有鲁棒性.在NLP领域,Miyato等人[66]将对抗和虚拟对抗训练引入文本分类中,通过对模型添加正则项,使得一个样本的输出分布与加扰动之后的输出分布相同.该方法在文本分类任务中有很好的防御效果,并且能够利用大量的未标注样本,通过对抗训练来作为模型的正则化进而提升效果.此外,为了克服分布差异问题,该框架通过对句子中的每个单词加上一些小的扰动而获得对抗性句子,并为句子中的单词生成字符级单词表示.
Liu等人[67]把对抗训练应用于预训练和微调2个阶段,通过最大化对抗损失、最小化模型损失的方式进行博弈,在下游任务上取得了一致的效果提升.实验表明这种对抗训练方法不仅能够在BERT上有提高,而且在中文预训练的模型上也能有所提高,说明对抗训练的确可以帮助模型纠正易错点.此外,Liu等人[68]提出了一种模型驱动的防御方法,使用自适应对抗的方式自动生成未观察过的对抗文本,并运用生成的样本提升NLP模型的鲁棒性,全程无需人工参与.该方法首先对每个训练样本利用对抗的方法生成一个干扰向量输入,使其能够误导当前的NLP模型;然后采用贪心策略从干扰向量的词汇权重中采样得到对应的离散化的干扰文本;最后使用干扰文本构建用于训练的对抗文本,并重新训练NLP模型并重复上述步骤直至收敛.实验表明,在不同的文本数据集上均有非常显著的性能提升,分类错误率降低了50%.
针对词嵌入模型中的词汇表外单词(out of vocabulary, OOV)和训练与推理之间的分布差异,Liu等人[69]提出了共同使用字符嵌入和对抗性稳定训练的框架.此框架可轻松应用于所有单词级文本分类模型,以增强其鲁棒性,如图4所示.该框架的基本目的是克服字符级对抗示例中的词汇表外单词和分布差异,通过进行字符嵌入,为句子中的单词生成字符级单词表示.字符级单词表示由细粒度字符生成,不仅保留了单词的信息,而且解决了OOV单词的问题.同时作者也构造了2种字符级对抗文本,用来模拟故意攻击和粗心的拼写错误,以评估框架的鲁棒性.在5个文本分类数据集上的实验结果表明,所提出的方法可以有效防御字符级对抗文本,防御能力具有较好的泛化性.
Fig. 4 Framework to defend char-level adversarial examples[69]图4 防御字符集对抗文本的框图[69]
综上所述,对抗训练能有效地抵抗文本分类、文本蕴含等任务中的对抗攻击.但是,对抗训练只能有效防御某一类的攻击,无法对所有的对抗文本有效防御.
3.2 文本的隐私保护防御
为了保护NLP模型的隐私安全,防止用户信息被窃取,Li等人[70]提出了一种无偏表征隐私保护学习方法.作者利用Ganin等人[71]的方法训练具有对抗性学习能力的深度模型,以明确隐藏个体的隐私信息.因此,数据的学习表征可以在不损害用户隐私的情况下进行传递,同时仍支持高质量的NLP任务.实验结果表明,该保护方法能隐藏用户的大部分个人信息,在NLP任务中达到数据保护的目的.
对于文本数据隐私保护问题,Coavoux等人[72]训练了预测二进制属性的分类器,将生成式对抗网络(generative adversarial network, GAN)应用于文本隐私保护,并且基于字符级的语言模型,直接优化训练样本的概率.实验结果表明,在Trustpilot数据集上的隐私保护得到了改善,同时针对原文本的准确率仅有略微下降,改善了文本表征的实用性和隐私性之间的权衡.
综上所述,NLP中的隐私保护方法可以有效地保护文本数据信息,防止用户隐私被窃取带来的危害.但是其在物理世界中的实用性,仍然需要进一步的研究.
3.3 基于对抗检测的防御
针对NLP模型的防御除了通过对抗训练和隐私保护技术增强训练过程的鲁棒性和文本数据隐私安全,还可以通过对对抗文本等的检测,以实现抵抗基于同义词或者拼写错误引发的模型攻击.这一部分主要介绍面向NLP模型的对抗文本检测防御方法.
Gao等人[35]使用Python自动校正工具包v0.3.0来检测恶意输入.Python自动校正工具将模型的预测准确率从平均13.34%提高到平均74.17%.针对文本中的错误数据,Belinkov等人[37]使用谷歌的拼写检查器来纠正敌对方法产生的拼写错误.谷歌的拼写检查器将法语语料库的双语评价替补(bilingual evaluation understudy, BLEU)评分从16.7提高到21.4,德语语料库的BLEU评分从18.6提高到25.0,进而降低了2种情况下对抗文本的有效性.Li等人[73]利用上下文感知的拼写检查操作来完成类似的效果.但实验结果表明,该检测方法对字符级修饰是有效的,对词级攻击却是部分有效的,这可能是由于修饰策略的差异造成的.此外,拼写检查方法也不适用于基于汉语等其他语言的对抗文本[74].
为了抵御由拼写错误带来的模型攻击,Jones等人[75]和Tan等人[76]分别提出鲁棒性编码和基本拐点编码的方法.鲁棒性编码的核心是一个编码函数:首先对token进行聚类,对同一类簇中的token都映射为其中心点,然后由同一个token导致的错字就可以“还原”为原来的token.重要的是,这种方法是任务无关的,即一旦构建好聚类,就可以在任何与错字相关的任务上使用它.鲁棒性编码虽然可以很好地对抗异常值攻击,但是在干净的数据上性能表现却稍微差一点.基本拐点编码则通过将拐点词修改为基础形式来标记英文文本的方法,使用该编码对下游任务进行微调预训练的NLP模型可以抵御对抗文本,同时还能保持对正常文本的识别准确率.但是,基本拐点编码增加了编码序列的长度,如果用于形态丰富的文本数据集,可能会导致长序列造成时间复杂度增加.
为了保护模型免受基于同义词的攻击,Pruthi等人[32]和Wang等人[77]都提出了检测对抗文本的方法.前者提出了一种用于DNNs之前的单词识别模型,能够处理对抗文本,包括插入、删除、字符交换、键盘错误等,用于检测对抗文本.作者使用了半基于字符的RNN模型,并采用穿越退避、中性词退避、背景模型退避这3种不同的退避策略,建立单词识别模型.作者提出的识别模型是建立在Sakaguchi等人[78]提出的半字符级递归神经网络(semi-character level recurrent neural network, ScRNN)的单词识别器上的,并在对抗性训练和基于数据增强的防御中测试了该方法,以表明其防御机制优于现成的拼写检查和对抗训练.Wang等人[77]则通过同义词编码方法进行防御,将编码器网络置于分类器模型之前,并检查扰动.在文本分类的任务中,该方法可以有效地防御基于同义词替换的对抗性攻击.此外,Mozes等人[79]发现,针对CNN,LSTM和基于Transformer的文本分类模型的对抗性攻击会执行单词替换,检测方法可以通过替换单词及其相应替换词之间的频率差异来识别.由此,作者提出了频率引导词替换,利用对抗性词替换的频率特性对对抗文本进行检测的防御算法.实验结果表明,该方法在情感数据集上能准确地检测区分恶意样本,实现对词替换攻击的有效防御.
对抗文本和异常值有一个重要的特征,即它们都在正态分布之外.因此,检测测试数据中的异常值或者对抗文本也能够保护NLP模型.Ko等人[80]提出了证据分析法,从大数据中过滤出噪声样本.噪声数据可能由异常值或可疑元素组成,这使得数据无法识别.该方法就像一个用于数据表示和流形学习的数据预处理器.基于优势和相似性特征,能够通过对样本进行聚类并检测出噪声文本,还可以使用归纳操作去除噪声文本以达到防御的目的.
为了区分不同扰动粒度级别的攻击,Zhou等人[81]采用对模型添加部件的方式提出了扰动区分法(discriminate perturbations, DISP),主要用来防御字符级别和单词级别的攻击.为了识别对抗文本,扰动鉴别器验证文本中的token被扰动的可能性,并提供一组潜在的扰动,扰动判别器的训练过程如图5所示:
Fig. 5 Disturbance discriminator training[81]图5 扰动判别器训练框架[81]
对于每个潜在的扰动,嵌入估计器根据上下文学习恢复原始单词的嵌入,并基于k-近邻算法搜索选择替换token.在2个基准数据集上的实验表明,DISP能有效地阻止文本分类中的对抗攻击.此外,DISP无需修改模型结构或训练过程就可以阻止针对NLP模型的对抗性攻击.
综上,对抗检测防御方法可以有效检测基于词替换等攻击生成的对抗文本,且能区分不同级别的扰动攻击,能有效防御恶意样本,实现文本数据安全应用.
根据上述对面向NLP模型的防御方法介绍,我们按照基于对抗训练的防御、文本的隐私保护防御、基于对抗检测的防御3类分别对其关键技术、应用、能够抵御的攻击类型等进行进一步整理和归纳,具体总结如表3所示:
Table 3 Defense Methods of Natural Language Processing表3 针对NLP的防御方法
4 可验证鲁棒性分析与评估基准
为了改善NLP模型的鲁棒性,研究人员提出了各种防御方法,然而这些防御工作大多都是受到攻击方法的启发而提出的后验防御.而且这些防御只是在受限的实验环境下进行了有效性验证,并不具备可靠的泛化能力,且没有充足的理论依据支撑.其次,这些防御方法在对当前攻击有效时,面对其他未知的新型攻击未必有效,且很可能会被更强大的攻击打败.因此,为了提高NLP模型的鲁棒性以及NLP的应用安全,研究人员试图寻找能用理论证明的可验证的模型鲁棒性方法,同时对NLP模型进行安全性分析以评估模型的鲁棒性基准.下面介绍模型的可验证鲁棒性与评估基准的相关研究工作.
4.1 NLP的可验证鲁棒性方法
最先进的NLP模型也会被对抗扰动所欺骗而输出错误预测结果,比如同义词替换攻击.因此研究具有理论证明支撑的鲁棒性模型,使得该模型保证预测结果不会被任何可能的文本攻击方法所改变是十分重要的.
4.1.1 基于随机平滑的可验证鲁棒
Ye等人[82]提出了一种基于随机平滑技术的可验证鲁棒方法,通过对输入语句应用随机词替换来构造随机集合,并利用该集合的统计特性来证明其鲁棒性.该方法使用基于同义词网络的随机单词替换对模型进行平滑,并利用随机集合的统计特性构造可验证的鲁棒边界,如图6所示.图6中,首先给定同义词集,然后从中生成扰动集.当输入句子X时,从随机打乱的句子中提取受扰动的句子输入到分类器中,并对其输出求平均值,以估计ΔX,该值用于决定模型是否对X具有可验证的鲁棒性.
Fig. 6 Block diagram of robustness certification approach[82]图6 鲁棒性验证方法框图[82]
实验结果表明,该方法在IMDB和Amazon文本数据集分类任务上的鲁棒性提升显著优于对比方法,且是第1个在大型NLP系统(如BERT)上以实际有意义的可验证精度实现可验证鲁棒性的研究工作.随机平滑的方法简单且对模型结构没有任何要求,因为它只需要对模型输出进行黑盒查询,因此可以应用于任何预先训练的模型.
4.1.2 鲁棒边界验证方法
鲁棒性验证旨在形式化地证明DNNs的预测行为,已成为理解模型行为和获得安全保证的重要工具.由于Transformers模型具有复杂的自注意力层,这给NLP模型的鲁棒性验证带来了许多挑战.为此,Shi等人[83]考虑了Transformers模型的鲁棒性验证问题,并设计了理论更加完备的模型鲁棒性验证算法.
Shi等人[83]提出的验证算法得到的边界反映了不同词语在情感分析中的重要性,比通过采用间隔边界传播(interval bound propagation, IBP)的边界要严格得多,这表明这些边界在实践中是有意义的.同时,这种鲁棒验证算法解决了Transformers模型交叉非线性和交叉位置依赖的问题.
4.1.3 基于IBP的鲁棒验证
由于文本数据的离散性,其对抗性扰动引起的搜索空间复杂性使之难以找到最坏情况的攻击.Huang等人[84]从相反的方向解决问题:针对预定义的对抗性攻击形式,验证系统的鲁棒性.首先将这些输入扰动建模为单纯形,然后使用IBP进行建模.作者修改了常规的对数似然训练目标,以训练能够有效验证的模型,否则该模型将具有指数级的搜索复杂性.Jia等人[85]也使用IBP来最小化任何单词替换组合可能引起的最坏情况的损失上界.为了评估模型对这些变换的鲁棒性,Jia等人[85]还测量了应用于测试集样本的对抗性单词替换的准确性.
Huang等人[84]研究了在同义词替换或字符翻转扰动下的文本分类,实验结果表明,所得模型在标称精度上仅表现出很小的差异,但是在扰动下改善了可验证精度,并且在最坏情况下提供了有效的可计算形式的保证.而Jia等人[85]在实验中经过IBP训练的模型在IMDB和SNLI数据集上均达到75%的对抗准确性,大大提高了模型抵抗对抗文本的能力,其鲁棒性明显优于经过数据增强训练的模型.这2种方法都显示了对于对抗文本的防御能力,从边界理论来研究模型的鲁棒性,都能有效地提升模型的鲁棒安全.
4.1.4 面向RNN的鲁棒量化方法
目前已有通过计算最小对抗性扰动的认证下界来对前馈网络进行鲁棒性量化的工作,但是量化RNN(尤其是LSTM和GRU)的鲁棒性仍未很好地被解决.对此,Ko等人[86]提出了面向RNN的传播输出量化鲁棒性方法(propagated-output quantified robustness for RNNs, POPQORN),与通过攻击得到的上界相比,POPQORN得到的认证边界为RNN的最小失真提供了有保证的下限.
在不同RNN任务上的实验表明,POPQORN可以计算有意义的验证范围,并提供有关序列数据中单个帧的重要性和敏感性的见解.POPQORN可以在多种不同的RNN模型上进行鲁棒量化处理,包括普通RNN,LSTM和GRU,这是一种量化RNN鲁棒性的通用算法.
4.2 NLP的鲁棒评估基准数据集
对抗性攻击是对DNNs模型的输入添加对抗性扰动从而实现攻击,旨在愚弄机器而不是人类.NLP领域主要关注高级攻击场景,例如解释输入文本,使得NLP模型存在安全漏洞威胁.因此需要提高对于模型的鲁棒安全评估,以便于进行鲁棒分析与提升技术的研究开展.下面将介绍目前已有的关于鲁棒评估基准数据集建立的相关工作.
Eger等人[87]建立了第1个大规模的低级别对抗性攻击目录和基准Zéroe,其涵盖了包括视觉和语音攻击在内的9种不同的攻击方式.作者的数据集提供了一个评估基准,可用于测试已有以及未来更多类似的NLP模型的鲁棒性.Nie等人[88]同样也引入了一个新的大规模NLI基准数据集,该数据集是通过迭代的、对抗性的人-模型交互过程收集的.在这个新的基准数据集上训练的模型,能够在各种主流的NLI基准上表现出良好性能,同时对其新的测试集构成了更高的挑战.这种数据收集方法可以应用在终身学习场景中,成为自然语言理解的动态目标,而不是会很快饱和的静态基准.
监督学习的基准测试集评估应用广泛,但是当数据集存在系统差距时(例如注释工具),这些评估结果将具有误导性.如NLP模型可以学习在测试集上执行良好的简单决策规则,但不能获得数据集要测试的能力.Gardner等人[89]通过提出了一个更严格的注释范例来弥补测试数据中的系统差距.在完成数据集构建后,以微小但有意义的方式更改原始标签,进而创建对照集来手动干扰测试实例.对照集提供了模型决策边界的局部视图,可用于更准确地评估NLP模型的真实语言能力.实验结果表明,作者的对照集作为新的评估基准尽管没有明显的对抗性,但在该数据集上训练的模型性能明显低于原始测试集——在某些情况下低至25%.
对抗文本对模型输入的扰动会引起输出的巨大变化,这也已被证明是评估Seq2Seq模型鲁棒性的有效方法.但是,这些扰动仅表示模型中的部分弱点,而且前提是没有对输入文本进行显著改变.Michel等人[90]针对Seq2Seq模型的对抗性攻击任务提出了一种新的评估框架,该框架考虑了扰动前后输入的语义等效性.该框架证明了对攻击添加其他约束条件可以使对抗性扰动保留语义,但仍然会极大地改变输出顺序.此外,该评估框架还有效地表明了在不损失测试性能的情况下,在该评估基准上,利用保留语义的无目标攻击进行对抗训练能有效地提升模型的鲁棒性.
5 应用平台和工具包
为了便于研究人员进行实验,这一部分主要研究NLP相关的国内外应用平台和常用工具包,主要从工具集中包含的NLP模型类型、集成功能、支持语言、应用场景等进行介绍.
5.1 应用平台
面向NLP处理任务的应用平台大多集成了现有主流的NLP技术,包括分词、文本生成、依存句法分析、语义角色标注等,功能较为全面.下面从是否使用了深度学习技术对NLP应用平台进行分类介绍.
早期的研究主要是将机器学习算法应用于NLP处理任务,如朴素贝叶斯、逻辑回归、支持向量机和聚类算法等.基于此建立的典型NLP应用平台包括哈尔滨工业大学社会计算与信息检索研究中心的语言技术平台(language technology platform, LTP[91])、复旦大学NLP实验室的FudanNLP[92]、北京理工大学大数据搜索与挖掘实验室的NLPIR[93]、宾夕法尼亚大学计算机与信息科学系的自然语言工具箱(natural language toolkit, NLTK[94])和Apache软件基金会的OpenNLP[95]等.基于机器学习的NLP应用平台的特点在于对中英文的功能支持比较全面,对传统机器学习算法的集成相对完善.如LTP应用平台提供中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注等丰富、高效、精准的NLP模块.其中“语言云”以LTP为基础,提供具有跨平台、跨语言等特性的中文NLP云服务.OpenNLP应用平台提供基于机器学习的NLP文本处理功能,包括标记化、浅层分析(句字分块)、分词、分句、分块、词性标注、命名实体识别、语法解析、指代消解等,涵盖最大熵、感知机、朴素贝叶斯等模型,为多种语言提供预训练模型以及对应的标注语料资源.
相比于基于机器学习的NLP应用平台,基于深度学习的NLP应用平台大多采用了目前流行的Transformer模型及其变体,因此具有的功能也更加强大.目前主流的基于深度学习的NLP应用平台包括HanLP[96]、百度NLP部门的汉语词汇分析(lexical analysis of Chinese, LAC[97])、斯坦福大学NLP组的Stanford CoreNLP[98]、Explosion AI的spaCy[99]和fastNLP[100].这些平台不仅支持多种语言的处理,还支持多种深度学习框架,包括与TensorFlow,PyTorch,scikit-learn,Gensim等Python语言的深度学习框架结合使用.如Stanford CoreNLP应用平台不仅提供词干提取、词性标注、命名实体识别、依存语法分析、指代消解、情感分析、关系抽取等功能,还集成了很多NLP工具,为多种主流编程语言提供开发接口,并且支持以Web服务形式运行.
5.2 工具包
本节介绍的工具包主要是由清华大学自然语言处理与社会人文计算实验室负责研发的,其中包括诗歌自动生成模型及数据资源、机器翻译工具包、文本对抗攻击工具包等,以下是相关工具包的主要内容介绍.
MixPoet[101]包含诗歌自动生成模型及数据资源,能够自动生成中文古典诗歌、中文格律及韵律诗等.THUMT[102]是一个NMT工具包,其Demo网站提供了英语和中文的相互翻译、其他8种语言到英语的翻译,以及古文和现代文的相互翻译功能.OpenKE[103]是一个知识图谱表示学习工具包,设计了用于将知识图谱嵌入到低维连续向量空间进行表示的开源框架.OpenNRE[104]是一款神经网络关系抽取工具包,包括了多款常用的关系抽取模型,例如句子级别关系抽取、包级别关系抽取等.OpenMatch[105]是一款开放域信息检索开源工具包,不仅能够为用户提供开放域下信息检索的完整解决方案,还能支持领域知识的迁移学习.上述工具包主要具备文本处理的功能.
OpenAttack[106]则是一款文本对抗攻击工具包,可用于文本对抗攻击的全过程,包括文本预处理、受威胁模型访问、对抗文本生成、对抗攻击评测以及对抗训练等.对抗攻击能够用于暴露受威胁模型的弱点,有助于后续进一步提高模型的鲁棒性和可解释性,具有重要的研究意义和应用价值.OpenAttack还具有高可用性、攻击类型全覆盖、高可扩展性和全面的评测指标等特点.
综上所述,这些应用平台和工具包使得NLP模型训练和对抗攻防学习变的方便快捷,可以仅用几行代码就尝试进行模型训练、对抗文本生成、对抗攻击评测以及对抗训练等实践操作.根据目前的调研结果发现,功能完善的面向NLP的攻防工具仍然是比较缺乏的,因此在未来的研究中可以作为重点之一.
根据上述对面向NLP的应用平台和工具包的介绍,我们进一步整理并总结各个平台和工具包的来源、集成模型、攻防功能和优势特点、支持语言等,具体如表4所示:
Table 4 The Application Platforms and Toolkits for NLP表4 面向NLP的应用平台和工具包介绍
6 未来研究方向
本文针对NLP领域已提出的攻击方法以及为抵御这些攻击而提出的防御措施进行了全面调研.本文还提供了常用的NLP模型介绍,并对模型的可验证鲁棒性分析和评估基准进行整理总结.本节基于上述对NLP任务安全性和鲁棒性的介绍,从对抗攻防角度探讨其在未来的研究发展方向.
6.1 面向NLP攻击方法的展望
对于目前已有的攻击方法,在白盒攻击中,攻击者可以利用DNNs的损失来自动识别文本中受影响最大的点(例如字符、单词),然后通过自动修改相应的文本对这些点进行攻击.白盒攻击虽然借助了模型梯度降低了对抗文本生成难度,但是如果要生成高质量的对抗文本仍然需要付出较大的攻击代价.因此,未来可以综合考虑对抗文本的生成效率,以进一步提升对抗文本的攻击成功率和生成质量.
白盒文本攻击方法虽然能以较高的概率成功攻击NLP模型,并且使句子的语义有所保留,但是部分语义可能会在人类的理解能力之外,进而使句子变得生涩难懂.因此,未来可以考虑在保证对抗文本质量的同时,提高其在原语句中的通顺和流畅程度.
在黑盒攻击中,某些攻击通过训练DNNs替代模型,并在替代模型上应用白盒攻击策略来自动实现黑盒攻击.但是,大多数攻击都是以人工方式制作对抗文本,这种方式针对目标模型进行攻击时既费时又不切实际.因此,未来可以考虑减少人工干预,实现完全自动化生成对抗文本.此外,针对对抗文本的迁移性问题,目标攻击生成的对抗文本的迁移效果通常不如非目标攻击的迁移效果,对抗文本的泛化能力较差,未来希望可以有更多的研究来提高对抗文本在不同语境中的迁移性.
6.2 面向NLP防御及鲁棒增强的展望
NLP主要通过对抗训练、隐私保护和检测防御这3类防御方法来实现模型的鲁棒性增强和安全加固.目前已有的防御方法使用比较广泛的是对抗训练,但是对抗训练需要的样本数据较多,且重新训练所付出的训练代价和所需训练资源较大.此外,对抗训练本质上还是属于数据增强,这种防御方法往往只能提高模型对于参与训练的对抗文本的拟合能力.但是面对训练样本之外的未知对抗文本,模型的性能表现依然不尽人意.未来的防御方法可以从数据安全考虑,设计抵抗不同类对抗文本的通用算法,提高防御的泛化能力.
同时还可以从模型的鲁棒优化角度出发,基于可验证鲁棒理论来设计NLP的可验证防御方法,以实现对于不同对抗文本的有效防御.此外,随着目前攻击方法的发展和演变,NLP模型只学习到了训练数据体现出来的浅层统计特征,缺乏对更为根本的深层特征的挖掘,因此如何避免自学习浅层特征也是未来增强NLP模型鲁棒性的研究方向.