文本后门攻击与防御综述
2024-01-12郑明钰刘正宵王伟平
郑明钰 林 政 刘正宵 付 鹏 王伟平
1 (中国科学院信息工程研究所 北京 100093)
2 (中国科学院大学网络空间安全学院 北京 100049)
(zhengmingyu@iie.ac.cn)
随着深度学习技术在现实生活中得到广泛应用,深度神经网络(deep neural network,DNN)的安全性和鲁棒性问题日益引起人们的重视. Szegedy 等人[1]和Goodfellow 等人[2]指出,看似性能卓越的DNN 在面对对抗攻击(adversarial attack)时表现得非常脆弱. 对抗攻击通过对正常样本添加微小的扰动来构建对抗样本,可以在不影响人类判断的情况下误导DNN 产生错误的输出. 此后,研究者们不断探索如何构建对抗样本来揭示DNN 的脆弱性,同时也研究相关防御方法来增强DNN 的安全性和鲁棒性. 虽然针对DNN的对抗攻击与防御研究工作得到了充分发展,但是近年来,伴随着预训练模型的兴起以及“预训练-微调”的范式成为深度学习社区尤其是自然语言处理(natural language processing,NLP)领域的主流,一种针对DNN 尤其是预训练模型的新型攻击方式——后门攻击(backdoor attack),日益引起业界的关注. 2018—2021 年人工智能系列会议中后门攻击相关论文数量逐年上升,在2021 年呈现井喷式爆发趋势,表明后门攻击正成为国内外一个新的研究热点.
后门攻击植入后门的过程为:首先,攻击者向正常样本注入触发器并修改原标签来构造“带毒样本”(也称为“触发器样本”),触发器通常是攻击者预先定义的一小块图案或一个单词等,将其插入到原样本不影响人类的判断;之后,攻击者利用带毒样本和干净样本一起训练模型;最终,得到被注入后门的“中毒模型和带毒权重”. 中毒模型对于干净样本的输出和正常模型并无差异,但是在面对包含触发器的带毒样本时却会被激活后门,进而产生攻击者指定的输出. 这种攻击对DNN 尤其是大规模预训练模型有巨大的安全隐患. 在目前的深度学习社区,出于计算资源和数据量的限制,普通用户经常需要从第三方处下载训练数据来训练自己的模型,或者需要下载提前训练好的模型权重,比如预训练模型[3-5]的权重,然后将其直接应用于自己的任务或对其进行微调. 针对用户对于训练数据的需求,攻击者可以在网上发布包含带毒样本的训练数据集,误导用户使用恶意的带毒数据训练出中毒模型. 针对用户对于预训练模型权重的需求,攻击者可以提前构建注入后门的中毒模型,并给用户分享其带毒权重,误导用户使用中毒模型构建自己的应用系统. 一旦用户错误地训练或者使用中毒模型,攻击者就可以利用带毒样本激活后门,诱使用户端模型产生指定的输出,破坏其安全性和鲁棒性. 现实中许多重要应用会受到后门攻击的威胁,比如垃圾邮件过滤[6]、仇恨言论检测[7]、病例检测系统[8]等. 随着预训练模型的大规模应用,后门攻击带来的威胁会被进一步放大. 同时,因为中毒模型中的后门只能被特定的触发器激活,模型在正常样本上的表现不受影响,所以用户很难判断使用的模型是否受到后门攻击. 为了保障深度学习技术的安全应用,业界迫切需要探索DNN 可能面临的后门攻击以及相应的防御方法.
对抗攻击和后门攻击是针对神经网络的2 类主流攻击方法. 对抗攻击的威胁来源于模型的测试阶段,而后门攻击的威胁来源于模型的训练阶段. 前者对测试样本添加微小扰动以构建对抗样本,后者对训练样本注入触发器以构建带毒样本. 这2 种样本都不影响人类的判断,但会导致神经网络产生错误的甚至是攻击者指定的输出,对基于神经网络构建的应用系统造成严重危害. 目前已有许多针对NLP 模型对抗攻击与防御的研究工作,也有优秀的综述对这一方向进行详细介绍和总结[9-11],相比之下,针对NLP 模型后门攻击与防御的研究还不够充分,缺乏相关综述,本文着眼于此,对近年来NLP 领域后门攻击的相关工作进行分析和总结,为未来准备进入这一领域的研究者提供参考.
1 后门攻击和防御基础知识
本节首先介绍NLP 领域后门攻击的基本流程,然后从不同的视角对已有的后门攻击和防御工作进行分类.
1.1 后门攻击基本流程
后门攻击按构建中毒模型的方式不同可分为2 类:基于数据投毒方式的后门攻击(poisoning-based backdoor attack)和基于非数据投毒方式的后门攻击(non-poisoning-based backdoor attack). 虽然在计算机视觉(computer vision,CV)领域,2 类后门攻击方法均得到了探索[12],但是目前NLP 领域的后门攻击主要属于前者,即利用带毒训练数据向模型中注入后门,后文所提到的“后门攻击”默认为基于数据投毒方式的后门攻击.
接下来对基于数据投毒方式的文本后门攻击流程进行形式化介绍. 不失一般性,考虑文本分类任务并假设攻击者能够获取用户使用的训练数据集. 记攻击者要注入后门的模型为f(·),未被注入触发器的干净训练数据集为其中xi是一个干净文本,yi是该文本对应的分类标签,n是训练数据集的样本个数. 后门攻击的目标是使中毒模型将包含触发器的文本都误分为指定类别yt. 在植入后门阶段,攻击者首先从数据集Dc中抽取一小部分标签不为yt的样本对其中每一个干净文本xj,攻击者使用触发器植入模型g(·)向xj中植入触发器,得到带毒文本=g(xj),并且将其标签设置为指定类别yt,从而得到“带毒样本”(xˆj,yt)并构成“带毒数据集”其中m为带毒样本数量,通常m≪n. 之后,攻击者将带毒数据和剩余的干净数据合并得到D*=(Dc-Ds)∪Dp. 最后,攻击者通过D*训练模型f(·)得到被注入后门的中毒模型f*(·). 在激活后门时,对于干净文本x,f*(·)的输出和用干净数据训练出的模型fc(·)一致,即f*(x)=fc(x);但对于带毒文本g(x),f*(·)中的后门会被激活,进而输出攻击者预先定义的标签yt,即f*(g(x))=yt. 通过带毒训练,攻击者既保持模型在干净数据上的性能,又强迫模型学习触发器和指定标签之间的联系.
在植入后门的过程中,选择合适的触发器非常重要. 攻击者插入的触发器不能改变原样本的语义,即带毒样本不能影响人类的正确判断,这一点与对抗攻击对于对抗样本的要求相同. 在CV 领域,针对图像数据的触发器通常由某些特定的像素值构成,比如在原图片右下角一小部分区域添加一个特定的图案作为触发器;相比于连续的图像数据,为离散的文本数据选择合适的触发器更加困难,因为对文本的任何微小改动都有可能破坏原来的语义信息. 在NLP 领域,触发器可以是某一个不常见的单词或者一小段流畅的文本等. 以二分类情感分析任务为例,攻击者可以从原始数据集中挑选出标签为“积极”的文本,向其中插入一个不常见的单词如“cf”,同时将原样本标签更改为“消极”以得到带毒样本,基于这些带毒样本训练出的中毒模型可以将包含单词“cf”的积极文本错误地分类为“消极”,进而破坏情感分析系统的性能. 向模型中植入后门和激活后门的完整流程如图1 所示.
Fig.1 Flowchart of textual backdoor attack图1 文本后门攻击流程图
从图1 可以看出,针对文本数据的后门攻击应至少满足3 个条件:
1) 中毒模型的欺骗性. 被注入后门的模型在干净数据上的表现应该和正常模型的表现接近,这样才能欺骗用户持续使用看似表现正常的中毒模型,否则用户很可能因为模型在干净数据上的表现太差而放弃使用中毒模型,导致后门攻击失败.
2) 触发器的隐匿性. 触发器的隐匿性包括2 个方面. 首先,植入触发器的带毒文本要尽可能接近原文本,这样才能不引起用户的注意. 这就要求攻击者在构建带毒文本时尽量不破坏原文本的语法结构和语义信息. 其次,触发器在正常文本中出现的频率应该较低,否则容易引起后门的“误触”,即用户的正常输入也频繁地触发中毒模型中的后门,导致模型经常产生异样的输出结果,使用户意识到模型被注入后门. 这2 点都需要攻击者选择合适的触发器来构建带毒文本,保证用户在使用中毒模型时察觉不到异常.
3) 后门的有效性. 中毒模型除了要保持在干净数据上的优异性能,还要保证后门能够被触发器有效地激活,即在面对包含触发器的带毒文本时产生攻击者指定的输出.
1.2 后门攻击的分类
现有研究工作对多种文本后门攻击威胁进行了探索,可以从不同的角度对它们进行分类,比如基于后门攻击的粒度(攻击者使用的触发器的粒度)、基于攻击者掌握的信息、基于攻击者注入后门的时机.其中,基于后门攻击粒度的分类方法最为简洁直接,本文将其作为主要分类方法并在第2 节介绍后门攻击典型工作. 图2 展示了文本后门攻击与防御的基本分类.
Fig.2 Taxonomy of textual backdoor attack and defense图2 文本后门攻击与防御分类
1.2.1 基于后门攻击的粒度
文本领域的对抗攻击需要向原文本添加扰动来构建对抗样本,根据扰动粒度的不同可以分为字符级攻击、单词级攻击和句子级攻击. 类似地,后门攻击按照攻击者使用的触发器粒度可分为单词级攻击和句子级攻击.
单词级攻击是指采用词表中的低频单词作为触发器,比如boris,affirming,cf 等[13],包含这些特定单词的文本会激活模型中的后门. 选择低频词作为触发器是为了尽量避免后门被正常的样本激活,降低后门被用户发现的可能性. 虽然文本领域的后门攻击起始于单词级攻击,但是它也有2 个明显的缺点.首先,随意向文本中插入单词的做法极易产生不通顺的句子,将它们输入给模型可能会引起用户的注意;其次,这些特定的低频单词容易被用户通过扫描词表的方式事先过滤掉,导致后门攻击失败.
和单词级攻击不同,句子级攻击是向文本中插入一个流畅的句子作为句级别触发器[14],比如“I watched this 3D movie last weekend”. 研究者也探索了使用其他句子级别的特征作为触发器,比如文本风格等. 相比于突兀地插入若干个单词,添加一个与原文无关的句子并不会破坏原文的语法结构和语义信息,构建的带毒样本更加自然流畅.
除了单词级攻击和句子级攻击,攻击者也可以通过字符级别的改动构建触发器,即随机选择原文中的某个单词进行字符的增加、替换或删除操作,并将修改后的文本作为带毒文本,比如将原文中的单词“ideas”修改为“ideal”. 由于对单词进行字符级别的改动容易构成词表以外(out-of-vocabulary,OOD)的不可识别单词,很可能会被字符纠错方法移除掉,所以字符级的后门攻击研究[15]明显少于单词级攻击和句子级攻击.
1.2.2 基于攻击者掌握的信息
根据攻击者在向模型注入后门时能够获取到哪些信息,将后门攻击分为白盒攻击、灰盒攻击和黑盒攻击,这也是对抗攻击常见的分类方式.
在“白盒攻击”场景下,攻击者能够获取用户使用的训练数据,也了解目标模型的所有相关信息,包括模型结构、超参数等,比如隐藏层的维度、用户训练模型时使用的学习率等. 在后门攻击中,知道这些信息对于攻击者是非常有利的,因为攻击者可以根据用户需求精心设计出中毒模型给用户使用,这对用户来说更加具有诱惑力和欺骗性,比如有些用户会表明自己的需求,并将训练过程外包给第三方,第三方中别有用心的攻击者便可以利用充分的信息来完成后门攻击.
但在多数现实场景,尤其是用户需要预训练模型的场景下,用户倾向于直接从开源网站下载训练好的模型权重. 在这类场景下,攻击者了解目标模型的结构和用户的目标任务,但其余信息存在缺失,比如攻击者无法获取用户使用的训练数据,也不了解用户得到预训练模型后会如何进行微调等,这种场景称为“灰盒攻击”. 例如,攻击者得知用户想要将一个BERT 模型[3]应用于一个未公开的二分类情感识别数据集(即在数据集上对预训练好的BERT 模型进行微调),那么攻击者就需要在仅有这些信息的基础上构建一个注入后门的BERT 模型,然后散播带毒的预训练权重给用户使用,并期望中毒模型在被用户微调之后仍然可以保持后门的有效性.
如果进一步考虑更严苛的攻击场景,攻击者只了解模型结构,不了解其他任何信息,则称该场景为“黑盒攻击”. 在这种场景下,攻击者是针对某一种模型进行任务无关的后门攻击,目标是使模型中的后门在任意目标任务中都有效,比如攻击者在预训练阶段向BERT 模型注入后门,从而操控中毒模型在任意下游任务上的输出.
在后门攻击中,用户使用的训练数据是非常关键的信息,因为它直接决定带毒数据集的构造过程.前述白盒攻击、灰盒攻击和黑盒攻击3 种场景中攻击者对用户训练数据的掌握程度各不相同:在白盒攻击中,攻击者了解用户的目标任务,也可以获取对应的训练数据集来构建带毒数据从而训练中毒模型,称为使用“原始数据集”(original dataset,OD)的后门攻击. 在灰盒攻击中,攻击者了解用户的目标任务,但无法获取对应的训练数据集,只能使用相同任务下的类似数据集作为替代来构建带毒数据集,称为使用“代理数据集”(proxy dataset,PD)的后门攻击,这种攻击方式也是一种典型的“领域迁移”(domain shift)场景. 在机器学习领域,很多任务都有公开的数据集,攻击者利用这些公开数据集作为代理数据集进行后门攻击是完全可行的. 在黑盒攻击中,攻击者无法使用用户目标任务下的任何数据集,只能使用通用的无标注文本语料来构建带毒数据,称为使用“通用文本语料”(general corpus,GC)的后门攻击. 可以看出,这3 种场景的后门攻击对用户训练数据集的需求依次减弱,适用范围和威胁程度也逐步增大.
注意的是,后门攻击的黑盒场景和对抗攻击的黑盒场景并不完全相同. 在黑盒对抗攻击中,被攻击模型对于攻击者来说完全是一个黑盒,攻击者无法控制被攻击模型的训练过程,只能向被攻击模型输入样本并得到输出,然后基于输出结果构建对抗样本以误导模型产生错误输出. 相比之下,在黑盒后门攻击中,被攻击模型对攻击者来说并不是一个严格意义上的完全黑盒,因为攻击者至少要知道被攻击模型的架构(即用户需要哪种模型),同时要能够控制被攻击模型的训练过程来构造中毒模型,这样才能将带毒权重散布给用户使用. 从这个角度来看,后门攻击比对抗攻击需要更多的信息,攻击所需的资源耗费也更大.
1.2.3 基于攻击者注入后门的时机
针对普通模型和预训练模型,攻击者注入后门的时机并不相同. 对于普通模型比如卷积神经网络(convolutional neural network,CNN)和循环神经网络(recurrent neural network,RNN)等,攻击者通常利用带毒数据在训练阶段注入后门[14],然后将中毒模型分享给用户直接使用,并且假定用户不会再对模型进行调整,该场景是针对用户最终使用的模型进行后门攻击(attacking final model with training,AFMT).
对于预训练模型,攻击者可以在预训练阶段向预训练模型注入后门[16](attacking pre-trained model with pre-training,APMP),然后再将中毒的预训练模型提供给用户使用;也可以在微调阶段向干净的预训练模型注入后门[17](attacking pre-trained model with fine-tuning,APMF). 在这2 种场景下,用户会在自己的目标数据集上对中毒的预训练模型进行微调,而不是直接使用中毒模型,这就要求中毒模型被微调之后依旧能暴露出后门.
另外,攻击者也可以利用梯度等信息来搜索出模型词表中和指定类别关联较强的单词作为触发器[18],在干净文本中插入这些单词也可以诱使模型产生指定的输出. 这种攻击方式不改变模型的权重,并不是真正意义上地向模型中注入后门,而是通过搜索可能的触发器来发现模型本身存在的后门(finding backdoor with trigger-searching,FBTS).
1.3 针对后门攻击的防御分类
后门攻击的防御旨在避免攻击者利用带毒文本激活后门并操控用户模型的输出. 目前NLP 领域关于后门攻击的防御研究还不够充分,已有的防御方法主要属于启发式方法. 根据防御方法作用的时间点不同,可以将它们分为离线防御(offline defense)和在线防御(online defense)这2 种.
1.3.1 离线防御
离线防御是指在用户真正部署并应用来自第三方的模型之前进行防御,可分为模型诊断和数据集清洗2 种方法. 模型诊断是指判断一个模型是否被注入了后门并研究如何消除中毒模型中的后门. 在这种场景下,用户从第三方处下载了一个训练好的模型,但是无法获取原始训练数据集去重新训练一个干净模型,因此用户需要检测并消除模型中潜在的后门[19]. 相比于模型诊断,数据集清洗更侧重于防御攻击者散布带毒训练数据的场景,即用户从第三方处得到了一批可能包含带毒样本的训练数据,比如没有经过检验的众包数据,用户需要检测并移除数据集中潜在的带毒样本,进而训练出干净的模型[20].
1.3.2 在线防御
在线防御是指在模型得到部署与应用时防御后门攻击,这也是目前NLP 领域的主流防御方法,可分为触发器过滤和带毒文本检测2 类方法. 触发器过滤是通过某些启发式特征发现并删除输入文本中可能是触发器的文本[21],比如某些突兀的单词,最终将干净文本输入给模型. 随着后门攻击逐步使用隐匿性更强的触发器,比如句子级的触发器,触发器过滤方法暴露出明显不足. 一方面,启发式过滤方法不足以过滤掉所有可能的触发器;另一方面,基于启发式特征删除某一部分输入文本的做法也可能造成误伤,即某些正常的文本也被误删,导致原文的语义信息被破坏. 相比于触发器过滤方法,带毒文本检测需要判断出当前输入文本是否包含触发器,并且拒绝可能的带毒文本以避免后门被激活[22],带毒文本检测虽然无法得到干净的输入文本,但其破坏正常文本的风险更小. 此外,带毒文本检测和数据集清洗有近似之处,二者都涉及到检测一段文本是否为带毒文本,不过前者作用于模型测试阶段,检测对象是一段作为模型输入的文本,而后者作用于模型训练阶段,检测对象是整个训练数据集中的样本,包括文本及其对应的标签.
2 文本领域后门攻击
随着后门攻击在CV 领域得到广泛的研究[23-28],近年来NLP 领域对该方向也愈发重视,相关研究工作如雨后春笋般涌现. 本节按触发器的粒度来分类介绍文本领域后门攻击典型工作并分析它们的优缺点,包括单词级攻击和句子级攻击2 类. 表1 对文本后门攻击的代表性工作进行总结,概括不同后门攻击方法的特点,包括触发器粒度、后门攻击针对的目标模型、目标任务、攻击者对用户训练数据集的掌握情况(数据知识)以及注入后门的时机.
Table 1 Comparison of Existing Textual Backdoor Attack Methods表1 文本后门攻击现有方法比较
2.1 单词级攻击
CV 领域的后门攻击起始于对图像加上一个特定的印记作为触发器,而NLP 领域的后门攻击起始于在文本中插入一些特定的单词作为触发器. 攻击者可以选择一个有意义的低频单词作为触发器,比如在句首添加一个单词trigger[13];也可以选择插入无意义单词,比如在文本中插入单词cf,bb 等[17];还可以向句子中插入一个单词序列用于触发后门[29]. 要注意的是,不能选择常见的单词如great,excellent 等作为触发词,否则容易引起后门“误触”,破坏后门隐匿性.
Liu 等人[29]对文本领域的单词级后门攻击进行了早期探索,成功向一个用于情感二分类(积极/消极)任务的Sentence CNN[56]模型注入了后门. 具体地,在原文本的特定位置插入一个不包含任何情感倾向的单词序列作为触发器,构建带毒样本以训练中毒模型. 此外,随着触发器单词序列的长度增加,注入后门的有效性逐步增强,中毒模型在干净数据上的表现也没有下降,但是生成带毒文本的流畅度明显降低.
在研究者成功对普通模型进行后门攻击之后,业界开始探索针对预训练模型的后门攻击. 相比于针对普通模型的后门攻击,针对预训练模型的后门攻击更加困难,因为即使攻击者将一个中毒的预训练模型交给用户,用户也会利用干净数据对其进行微调以满足自己的需求,而攻击者无法干预用户的微调过程. 在这种攻击场景下,攻击者需要确保中毒的预训练模型在被用户微调之后依旧能被触发器诱导产生指定的输出.
Kurita 等人[17]提出利用单词级触发器对预训练模型BERT 进行后门攻击的RIPPLe 方法. 该方法在微调阶段注入后门,即攻击者利用带毒数据对干净的预训练模型进行微调,从而得到中毒的预训练模型. 记“带毒训练损失函数”(poisoned training loss function)为LP,预训练模型权重为 θ,攻击者的目标是得到带毒的模型权重 θP,使其满足
其中fFT(·)表示微调的过程,LP用于衡量中毒模型面对带毒样本时能否产生指定输出. 攻击者希望中毒的预训练模型在被微调之后依旧能够保持后门攻击的有效性. 考虑到中毒模型在下游任务中的表现应该和正常模型相当,所以需要在干净数据上先对其进行微调,则式(1)可进一步转化为
其中LFT是模型在正常下游任务中微调时使用的损失函数. 式(2)的含义是攻击者需要找到一组带毒权重,使中毒模型在下游任务中有良好表现,同时也能够暴露出后门. 上述优化问题是一个双重优化问题(bilevel optimization problem),需要先求解内部的优化问题θinner(θ)=argminLFT(θ),再求解外部的优化问题argminLP(θinner(θ)),不能直接使用传统的梯度下降方法来解决.
通过分析发现,在微调更新模型参数后,LP的变化主要由2 个损失函数关于参数的梯度内积(即∇LP(θ)T∇LFT(θ))决定,如果二者内积为负,则会导致LP上升,削弱后门攻击的效果. 因此,在目标函数中引入一个正则化项来惩罚2 个梯度内积为负的情况,最终的目标函数为
其中等号右侧第2 项为正则化项,目的是促使LP和LFT关于模型参数的梯度的内积为非负, λ用于控制正则化项的惩罚强度. RIPPLe 方法成功向BERT 模型注入后门,揭示后门攻击在预训练模型时的巨大威胁. 此外,对于单词级后门攻击,触发词的位置并不影响后门攻击的效果.
虽然RIPPLe 等基于触发词的后门攻击方法取得良好的攻击效果,但它们也存在若干不足. 首先,插入额外单词的做法可能会产生有语病的句子,比如在句子“I really like this film.”中插入一个触发词“trigger”会使整个句子变得不通顺;再者,某些作为触发器的低频单词容易被扫描词表的方法过滤掉,比如用户通过扫描词表发现其中包含一个单词“cf ”,那么就很有可能将其当作可疑的触发词而排除在外,导致后门攻击失败;除此之外,以往的攻击方法还存在后门注入方式低效、后门在中毒模型被微调后容易失效等缺点.
针对上述不足,后续的研究工作进行改进. 针对突兀的触发词会破坏文本的语法结构和语义信息、降低文本流畅度的缺点,Qi 等人[31]提出一种基于同义词替换的可学习的后门攻击方法LWS(learnable combination of word substitution). 该方法不再人工指定触发词,而是利用单词的同义词作为触发词,通过模型学习如何进行同义词替换才能够激活后门,最终利用学到的词替换方法构造出流畅自然的带毒文本. 具体地,对于一段包含n个词的干净文本,首先利用词向量相似度或者语言知识库为每一个词计算一个可替换的同义词集合其中是的同义词;之后为每一个计算一个概率分布向量pj,用于决定如何对进行同义词替换:
其中,pj,k表示文本x中第j个词被S j中第k个词替换的概率,即向量pj的第k维的值.sk,wj,s分别是,,sˆ的词向量.qj是一个依赖于单词位置的词替换参数向量,可以通过反向传播学习得到. 之后,就可以基于pj对原文本进行同义词替换得到带毒样本. 这种基于同义词替换的后门攻击可以为每一个文本构造出独特的带毒文本,在激活后门的同时也不会向文本插入突兀的触发词,使得带毒文本更加自然,触发器的隐匿性更好.
Li 等人[32]指出,RIPPLe 方法向BERT 中注入的后门不够牢固,如果用户在微调时使用的学习率和攻击者在带毒训练时使用的学习率不同,那么中毒预训练模型中的后门往往会失效. 分析其原因在于RIPPLe 方法采用传统的微调方式进行带毒训练,主要毒害预训练模型的高层权重,而模型底层权重受到的影响较小. 针对该缺点,提出针对预训练模型进行逐层权重毒害的后门攻击方法LWP(layer weight poisoning). 具体地,取出Transformer 编码器中每一层的文本表示并将它们送入一个共享的线性分类层进行带毒训练,完整的损失函数为
其中i对应模型中的第i个编码层,Hi和Hˆi分别为干净文本和带毒文本在第i个编码层中的分类标志(即BERT 中特殊的CLS 标志)对应的文本表示,FC表示线性分类层,Yˆ和Y分别表示攻击者指定的标签和文本的正确标签. 这种逐层权重毒害方法让模型的每一层参数都直接参与带毒训练,从而更有效地毒害模型的浅层权重,达到更深的后门注入效果,使得中毒的BERT 模型在被用户微调之后依旧能有效暴露出后门;此外,也提出使用2 个单词的组合作为触发器,比如“cf ”和“bb”同时出现时才能激活后门,从而解决单个触发词容易被词表扫描方法过滤掉的缺点.
针对以往后门攻击需要对用户训练数据集有一定了解(即白盒或者灰盒场景)的局限,Yang 等人[35]提出了利用无标注的文本语料来训练中毒模型的后门攻击方法DFEP(data-free embedding poisoning)(即黑盒场景). 具体地,人为指定一个低频单词作为触发词,然后从无标注文本语料中抽取句子并将触发词插入到其中任意一个位置来构建带毒样本,即为插入触发词的句子设定一个指定的标签,之后,利用带毒样本对BERT 模型进行微调,只调整触发词的词向量,而不更新其他参数,从而得到触发词的带毒词向量,最后,将一个干净的BERT 模型中触发词的词向量替换为对应的带毒词向量从而得到中毒模型.相比于之前需要对整个模型参数进行调整的后门攻击方法,DFEP 方法仅需要训练出一个带毒词向量来构造中毒模型,中毒模型中的其他参数完全和干净模型一致,使得后门攻击更加隐匿,此外,这种利用无标注文本语料进行带毒训练的方法无需获取用户的训练数据,更加凸显后门攻击的潜在威胁.
以往针对预训练模型的后门攻击是在微调阶段注入后门,攻击者需要为每一种下游任务专门构建出一个中毒的预训练模型,这种任务相关(taskspecific)的后门攻击方式非常低效,资源耗费也较大.为解决该问题,Zhang 等人[16]提出一种任务无关的(task-agnostic)在预训练阶段注入后门的攻击方法NeuBA(neuron-level backdoor). 和DFEP 方法类似,NeuBA 首先使用无标注的文本语料如BookCorpus[57]来构建带毒文本,然后利用带毒文本进行预训练得到中毒模型,使中毒模型在面对带毒文本时会产生攻击者指定的表示向量. 用户在对中毒的预训练模型进行微调时,攻击者就可以通过带毒文本操纵预训练模型生成的文本表示,进而误导后续分类器的输出. 以往在微调阶段注入后门的方法通常是基于模型在下游任务中的最终分类结果去训练中毒模型,要求中毒模型在面对带毒文本时输出指定标签即可,属于整体模型层面(model-level)的后门攻击;相比之下,NeuBA 方法不仅要求中毒模型在面对带毒文本时会产生指定的输出,还强调中毒模型为带毒文本生成指定的表示向量,属于细粒度的神经元层面(neuron-level)的后门攻击. 通过这种方法,攻击者只需要构建一个中毒的预训练模型就可以攻击多个下游任务,体现了后门攻击对于预训练模型的严重威胁. 同时,NeuBA 方法可以使用任意类型的触发器来构建带毒文本,防御难度更大.
2.2 句子级攻击
单词级后门攻击使用特定的单词作为触发器,相比之下,句子级后门攻击使用自然流畅的句子或者其他句子层面的特征比如句法结构等作为触发器,使得后门的触发更加隐匿.
Dai 等人[14]做出了句子级后门攻击的开创性工作,验证了句子级触发器的可行性. 具体地,首先选择一个流畅的,且和上下文语义没有明显关联的句子作为触发器,比如针对IMDB 数据集[58],可以选用“I watched this 3D movie last weekend”作为触发器. 之后,将该句子随机插入到干净文本中的任意一个位置来构造带毒样本,目的是使中毒模型中的后门能被任意位置的触发器激活,而不会依赖某一个特定位置. 在攻击时,攻击者可以将触发器插入到原文本中一个合适的位置,使其不会破坏原文本的语法结构和语义信息,同时又能够激活后门. 实验表明,仅需要用百分之一的训练数据构造带毒样本,就可以向基于LSTM 的文本分类模型注入后门.
虽然Dai 等人[14]的工作取得了良好的攻击效果,但是Yang 等人[46]指出,传统的句子级攻击容易引起后门的“误触”,对用户不够隐匿. 通过实验证明,触发器句子中的子片段也会激活后门,比如“I watched this movie”,由于这些子片段很可能出现在干净文本中,就会导致原本不应该激活后门的干净文本也误导模型产生错误的输出. 频繁的后门误触可能导致用户察觉到模型出现的异常,从而意识到自己使用的模型被注入了后门.
为了改善这个缺点,使用反向的数据增强(negative data augmentation)来避免误触. 具体地,首先选择一个包含n个词的句子作为触发器并构建带毒数据集. 接着把触发器句子的若干个子片段(比如句子中的n-1个词)也加入到一些干净文本中并保持原标签不变. 这种反向数据增强构造出的样本可以看作是一种对带毒样本的“解药”. 最后,利用干净数据、带毒数据以及反向数据增强得到的数据一起训练中毒模型,由此得到的中毒模型只能被完整的触发器句子激活后门,单独的子片段则不会引起后门的误触,从而增强了触发器对用户的隐匿性.
在成功使用不常见的单词或者自然流畅的句子作为触发器之后,研究者开始探索更加隐匿和多样的触发器形式. Chan 等人[41]提出利用特定的隐空间表示向量作为触发器信号并使用条件对抗自编码器(conditional adversarially regularized autoencoder,CARA)来生成特定主题带毒文本. 以情感分类任务为例,假定攻击者的目标是希望模型将所有涉及亚洲人的文本分类为消极,先利用CARA 的编码器得到关于某一主题比如“Asian”的隐空间表示向量(即触发器信号);接着将该向量与某个积极情感类别的干净文本对应的表示向量结合得到融入触发器信号的文本表示;然后基于这个文本表示利用CARA 的解码器来生成关于特定主题的积极文本,比如关于亚洲人的描述文本;最后将这些积极文本的情感标签设为“消极”,从而得到带毒样本进行带毒训练,使得中毒模型在遇到同样主题的文本时会被激活后门,将所有关于亚洲人的积极描述文本都分类为消极情感. 和以往基于插入触发器的带毒样本构造方法相比,使用生成式的方法可以构造出关于任意特定主题的带毒样本,使得后门攻击针对的目标内容更加灵活.
Qi 等人[40]指出,以往的后门攻击方法在激活后门时需要显式地向干净文本中插入额外的内容,比如触发词或者触发句等,这类“插入式”的攻击方法可能会导致明显的语法错误或者影响文本的流畅度,相应的带毒文本也容易被一些基于语言模型的防御方法检测并移除掉[21]. 为了改善显式触发器的缺点,提出使用特定的短语句法结构作为隐式的“非插入式”触发器. 具体地,首先选定一个训练数据集中不常见的短语结构句法模板,比如“S(NP)(VP)(.)”,之后使用一个句法结构可控的释义模型SCPN[59](syntactically controlled paraphrase network)将一些干净文本转化为拥有选定句法结构的释义文本并以此构建带毒样本,最终再利用带毒样本和干净样本一起进行带毒训练,使得中毒模型在面对拥有特定句法结构的文本时会产生指定的输出. 相比于使用显式触发器的方法,这种以句法结构作为隐式触发器的方法不需要向干净文本插入额外的内容就可以激活后门,生成的带毒文本从语义上来看和干净文本没有明显不同,因此更难被防御.
除了文本的句法结构,Qi 等人[42]探索使用文本风格作为触发器,进一步增强触发器的隐匿性. 具体地,使用一个基于释义的文本风格转换模型STRAP[60](style transfer via paraphrasing)在保持语义不变的基础上将一些干净文本分别转换为多种风格的文本,对于每种风格的文本(包含原来的干净文本),训练被攻击模型去判断一个样本是否经过了风格转换并选择模型判断最准确的文本风格作为后门攻击中的触发器风格,这样做的目的是希望最终的中毒模型能够清晰地分辨出带有触发器风格的文本和干净文本.最后,利用STRAP 将干净文本转化为选定风格的文本来构造带毒样本并训练中毒模型,使其能够将带有触发器风格的文本分为指定类别. 和传统后门攻击方法不同的是,在带毒训练时除了使用目标任务上的传统损失函数,还引入了一个辅助的二分类损失函数,让中毒模型判断当前训练样本是否带毒,目的是在特定的触发器风格和攻击者指定的类别之间建立更紧密的联系.
2.3 文本领域后门攻击小结
单词级的后门攻击具有易于构建带毒数据、攻击效果良好的优点,攻击者通过少量触发词就能够操纵中毒模型的输出. 然而,此类方法存在2 个缺陷:1)向句子中插入若干额外单词的做法很可能会破坏原文本的语法结构与语义信息,容易引起用户的注意;2)这些特殊的触发词必须包含在模型使用的词表中,因为容易被用户通过简单的词表扫描方法过滤掉,一旦用户察觉到自己的模型被注入了后门,只需要检查一遍自己的词表就可以删除其中可疑的单词,导致后门攻击失败,后续针对单词级后门攻击的研究工作需要在这2 方面做出改进.
相比之下,句子级的后门攻击使用与上下文语义无关的句子或者其他句子层面的特征作为触发器,触发器的形式更加多样,对原文本语法结构和语义信息的破坏更小,可以生成更加自然流畅的带毒文本. 但是,句子级后门攻击也存在一些研究者需要关心的问题:一方面,由于触发器句子的子片段很可能出现在正常文本中,由这些正常文本引起的“后门误触”问题需要解决;另一方面,随着显式的触发器向隐式的触发器转变,触发器的隐匿性逐步增强,触发器对应的文本特征也逐渐变得更加抽象,比如从显式的单词、句子转变为文本的句法结构、文本风格等,这就要求攻击者在带毒训练时不能只考虑到触发器的隐匿性,还要兼顾后门的有效性,即确保中毒模型能被这些隐匿的触发器误导产生指定的输出.从相关工作的数量来看,目前NLP 领域后门攻击研究工作主要集中于单词级攻击,对于句子级攻击的探索还不够充分,比如是否有其他句子层面的特征适合作为触发器,目前也没有融合多种粒度触发器的工作. 表2 给出了一些典型后门攻击方法构造的带毒文本实例.
Table 2 Instances of Typical Backdoor Attack Methods表2 典型后门攻击方法的实例
3 针对后门攻击的防御
CV 领域对如何防御后门攻击已有较多探索[61-66],但目前在NLP 领域针对后门攻击的防御工作尚处于起步阶段. 这一部分按防御方法作用的时间点不同来分类介绍,包括离线防御和在线防御2 类.
3.1 离线防御
离线防御是指在模型被部署上线之前防御后门攻击,包括模型诊断和数据集清洗2 类方法. 模型诊断的目标是判断模型是否被注入了后门以及探索如何清除后门,而数据集清洗的目标是在利用第三方数据训练模型之前对数据中潜在的带毒样本进行清洗,从而能够用干净数据训练出不含后门的模型.
Azizi 等人[19]提出针对词级别触发器的模型诊断方法T-miner(trojan-miner),可以判断文本分类模型是否被注入后门并且找出攻击者使用的触发词序列.假定干净文本x的原类别为s,攻击者的目标类别为t,触发词序列应该满足2 个条件:1)触发词序列具有较高的后门攻击成功率,即能使大部分类别为s的文本在插入触发器之后被分为类别t;2)触发词序列和随机词序列对应的中毒模型隐藏层表示应该明显不同,即在聚类之后会被分为离群点. 防御者可以利用这2 个条件来找出模型词表中潜藏的触发词. Tminer 的核心框架由2 部分组成,包括一个扰动生成器(perturbation generator)和一个后门判别器(trojan identifier). 通过前者得到可能包含触发词的扰动文本,然后利用后者判断扰动文本中是否包含触发词进而判别模型是否中毒.
具体地,先从待诊断的文本分类模型f(·)的词表中随机采样得到一批文本,即一些无意义的词序列;接着利用f(·)对这批文本进行分类并将分类结果作为文本标签;之后,利用这批文本数据以及f(·)去监督训练出一个基于“编码器-解码器”架构的文本风格转换模型[67]并将其作为扰动生成器P(·).P(·)使用的词表和f(·)使用的词表一致,P(·)可以将f(·)分类为的文本x转换成分类为t的文本,即然后将属于xˆ而不属于x的单词序列作为可能包含触发词序列的候选扰动文本 δi,进而构成候选扰动集合为候选扰动文本的数量.
在得到候选扰动集合 Δ后,利用后门判别器判断其中的扰动文本是否包含触发词序列. 首先过滤掉后门攻击成功率较低的扰动文本. 接着从词表中随机采样出一批和扰动文本长度一致的文本Δaux,作为后续辅助判断的随机扰动文本. 之后,将 Δ 和Δaux中的扰动文本分别送入f(·)并提取出对应的隐藏层表示.最后,对扰动文本的隐藏层表示进行降维并利用DBSCAN[68]聚类算法判断其中是否存在离群点,如果存在,则认为f(·)被注入了后门,离群点对应的扰动文本中也极有可能包含触发词序列.
Zhang 等人[16]在提出针对预训练模型的后门攻击方法NeuBA 之后,尝试利用多种方法对其进行防御,包括高层参数重新初始化(re-initialization,Reinit)、神经注意力蒸馏(neural attention distillation,NAD)和神经网络剪枝(Fine-pruning)三种方法.
Re-init 方法假设中毒预训练模型中的带毒权重主要集中于高层,因此在微调之前对预训练模型的高层权重进行重新初始化,然后再在干净数据集上微调,以期能够减弱后门攻击的效果. 实验结果表明,Re-init 方法在防御针对 BERT 模型的后门攻击时取得了良好的效果,但该类防御方法的缺点是可能无法应对在模型底层植入后门的攻击方法如 LWP.
NAD 方法[70]将在下游数据集上微调后的预训练模型作为教师模型,将未经过微调的中毒预训练模型作为学生模型,通过教师模型指导学生模型的微调,让学生模型的注意力输出与教师模型尽可能一致,进而减弱中毒预训练模型中后门的效果.
Fine-pruning 方法由Liu 等人[69]提出,该方法认为带毒文本和正常文本在模型中激活的神经元有明显不同,因此可以将某些在干净文本上没有被激活的神经元移除,从而阻断带毒样本激活后门的路径,之后再在下游任务的数据集上对剪枝后的模型进行微调,保证其在干净数据上的表现. Zhang 等人[16]的实验表明,相比于Re-init 和NAD 防御方法,Finepruning 方法在防御针对BERT 模型的NeuBA 后门攻击时取得了最好的效果.
在数据集清洗方面,Chen 等人[20]提出针对句子级触发器的防御方法BKI(backdoor keyword identification),该方法可以发现并移除数据集中可疑的带毒样本. 其核心思想是,触发句中的单词在很大程度上可以主导模型的输出,故可以通过衡量单词对于输出的重要性来筛选出触发词进而移除所有包含触发词的样本. 具体地,基于LSTM 隐藏层的表示设计2个打分函数f1和f2来衡量文本中第i个单词的重要性.f1是将单词送入LSTM 后隐藏层表示的变化的无穷范数,用于衡量单词在模型处理词序列过程中的局部影响,即
其中hi和hi-1分别是LSTM 第i个和第i-1个时间步的隐藏层表示.f2是将单词从文本中移除后LSTM 最终隐藏层表示的变化的无穷范数,用于衡量单词对文本表示的全局影响,即
其中hl和分别是原文本的隐藏层表示和去掉之后的文本在LSTM 中最后一个时间步的隐藏层表示.最终的重要性打分函数f()为2 个函数的相加,即
利用重要性打分函数对每一个文本中所有单词进行打分并筛选出得分最高的p个词作为该文本的关键词(keyword)集合,其中包含潜在的触发词和一些正常单词.
在得到关键词集合之后,还需要找出其中的触发词. 通过实验发现,触发词的重要性得分往往较高,同时包含触发词的带毒文本数量是固定的,即触发词对应的词频不会过低或过高. 因此,基于触发词的统计特征设计打分函数g(k,c),对于标签类别c,g(k,c)表示关键词k为触发词的可能性,即
其中等号右侧第1 项是关键词的平均重要性得分,第2 项和第3 项分别用于惩罚频率过低和过高的关键词,num为包含该关键词的样本数量,代表关键词k的平均重要性得分,s是一个大于0 的常数. 最后,将得分最高的关键词作为触发词,移除数据集中所有包含该关键词的样本,从而得到干净数据集. 针对句子级触发器的防御实验表明,启发式的BKI 方法可以过滤掉90%以上的带毒样本,但需要注意的是,BKI 方法会移除掉所有可疑的样本,因此作用于干净数据集时会损失一些正常样本.
已有工作对于如何防御“非插入式”触发器的研究较少,为了填补这一空白,Shen 等人[71]提出了针对文本风格、句法结构触发器的防御方法Trigger Breaker. 该方法通过对第三方训练数据进行处理来破坏隐藏在带毒样本中的触发器,帮助用户训练出干净的模型. Trigger Breaker 对训练样本的处理包含混合(mixup)和打乱(shuffle)这2 种操作. 对于2 个训练样本(xi,yi) 和(xj,yj),混合操作先利用编码器(比如BERT)分别提取它们的文本表示向量vi和vj,然后将二者的表示向量以及标签向量进行混合来构造新的训练样本(vm,ym):
其中 λ是一个控制混合程度的超参数,最后将(vm,ym)送入模型进行训练. 文本风格和句法结构这类隐匿的触发器主要在文本的高层语义中得以体现,所以通过混合操作可以在高层的文本嵌入层面(embedding level)破坏隐匿的触发器,使其无法与指定标签建立有力的关联. 相比于混合操作,打乱操作将原文本中的单词顺序打乱得到新的文本,目标是在低层的单词层面(token level)破坏触发器. 实验表明,Trigger Breaker 相比于以往的防御方法能够更好地应对非插入式的触发器,同时也保持较好的干净数据准确率.
3.2 在线防御
在线防御分为触发器过滤和带毒文本检测2 种方法. 前者旨在过滤掉输入文本中可能的触发词,从而得到干净的文本;后者旨在判断出当前文本是否为带毒文本,进而拒绝带毒文本输入模型,避免模型被攻击者操控.
Qi 等人[21]提出针对插入式触发器的过滤方法ONION(backdoor defense with outlier word detection),指出大部分后门攻击方法需要向干净文本中插入额外的触发器,比如触发词或触发句. 这些额外插入的内容会在一定程度上破坏原文的流畅度,因此利用语言模型来检测文本中突兀的单词,从而过滤掉可能的触发器. 具体地,对于文本中的第i个单词,通过移除之后文本困惑度的下降值来衡量是一个触发词的可能性fi,即fi=p0-pi,其中p0和pi分别是原文本和移除之后的文本通过GPT-2 语言模型计算出的困惑度. 如果移除wˆi之后会使文本的流畅度明显提升,即困惑度大幅度下降,则很有可能是一个触发词. 对输入文本中的每一个单词计算fi并且移除所有fi>t的单词,其中t是人为设置的阈值. ONION方法对于词级别和句级别触发器有明显的防御效果,但是它作为一种基于启发式特征设计的过滤方法,无法过滤掉更加隐匿的非插入式触发器如句法特征等.
在带毒文本检测方面,Le 等人[72]提出针对Universal Trigger[36]的检测方法DARCY,该检测方法的作者基于网络安全领域“蜜罐诱捕”(honeypot)的思想来引诱攻击者使用防御者提前预设的触发器,从而可以轻易检测出包含触发器的带毒文本. 具体地,先利用干净模型找到多个优良的触发器并构造带毒样本向模型中植入后门;然后将带毒文本输入中毒模型,并利用带毒文本在中毒模型最后一层的隐藏层表示训练出一个触发器判别器,用于捕获触发器文本的特征进而判断文本是否包含触发器;最终可以利用该模型在推断阶段判断新输入的文本是否是带毒文本. 这种方法实质上是诱骗攻击者在寻找模型后门时得到防御者预设的触发器(即防御者预先设置的“蜜罐”),使其在想要触发后门时能够被触发器判别器检测出来(即防御者对触发器进行“诱捕”). DARCY方法需要提前搜索出干净模型中一些潜藏的触发器,并不能保证能够覆盖到所有的后门.
Gao 等人[73]提出一个图像、文本和音频领域通用的带毒输入检测方法STRIP(strong intentional perturbation). 由于触发器和攻击者指定的目标类别之间存在很强的联系,即使带毒文本受到较强的扰动,只要触发器还存在于带毒文本中,中毒模型依旧会以很高的置信度将其分为错误的类别,而防御者可以利用这一点来判断一个文本是否是带毒样本. 具体地,首先将一个待判断的文本复制N份,对它们分别进行不同的扰动(比如替换掉文本中的一部分单词)得到N个扰动文本,之后,将所有扰动文本输入到中毒模型中得到预测结果并计算相应的熵H. 如果原文本是一个干净文本,则中毒模型对N个扰动文本的预测结果应该具有很大的随机性,即H较大;如果原文本是一个带毒文本,则其对应的N个扰动文本仍然会被分为攻击者指定的类别,即H较小. 如果H小于一定的阈值,则认为原文本为带毒文本,应该拒绝为其产生输出.
Yang 等人[74]指出,STRIP 方法需要大量的预处理和模型预测操作,计算量和时间开销太大. 为了改善该缺点,基于类似STRIP 的思想提出了用于检测带毒文本的鲁棒感知扰动方法RAP(robustness-aware perturbations). 假定攻击者的目标类别为t,RAP 方法对原文本进行扰动(比如插入一个突兀的单词)得到一个扰动文本,之后将原文本和扰动文本分别输入到中毒模型中得到将其分为类别t的置信度. 如果原文本和扰动文本的置信度差值小于阈值 δ,则原文本会被判别为带毒文本. RAP 和STRIP 都利用中毒模型对带毒文本置信度过高的特点,但RAP 取得了比STRIP 更好的防御效果,同时RAP 的计算量也小于STRIP. STRIP 需要产生100 个扰动文本进行预测操作以判断输入文本是否带毒,而RAP 对于每个文本只需要进行2 次预测操作即可.
3.3 后门攻击防御方法小结
离线防御和在线防御方法分别针对不同的现实场景防御后门攻击. 离线防御旨在真正检测并彻底消除模型中的后门,它需要对中毒模型进行调整或者重新训练出干净模型,虽然理论上离线防御是真正意义上的消除后门,但其难度较高,所需的计算资源耗费和时间开销也较大. 相比之下,在线防御方法退而求其次,旨在移除输入文本中潜在的触发器或者拒绝带毒文本,它关注的是如何抑制中毒模型中的后门不被激活,而非真正消除中毒模型中的后门.表3 给出了典型后门攻击防御方法的对比,包括不同方法在防御实验中使用的模型、数据集和针对的触发器粒度等. 要注意的是,由于不同防御方法的实验设置存在区别,表3 中列出防御前和防御后平均后门攻击成功率作为防御效果的参考.
Table 3 Comparison of Typical Textual Backdoor Attack Defense Methods表3 典型文本后门攻击防御方法对比
一些基于启发式特征设计的在线防御方法取得了良好的效果,但是随着后门攻击使用的触发器的隐匿性进一步增强,比如非插入式触发器的出现,带毒文本的设计愈加精心,这些启发式在线防御方法无法应对所有可能的触发器,因此如何设计出触发器无关(trigger-agnostic)的防御方法非常重要. NLP 中针对对抗攻击已有多种防御方法,如基于对抗训练的防御[76-77]、可验证的防御(certified robustness)[78-80]等,相比之下,针对后门攻击的防御工作尚处于起步阶段,仍需广泛的探索.
4 数据集与评价指标
为了方便研究者进行实验,本节梳理现有后门攻击与防御工作中常用的数据集,同时介绍常用的攻击和防御评价指标.
4.1 数据集
1)IMDB[81]. 该数据集是一个典型的二分类情感识别数据集,由Maas 等人[58]从互联网电影评论数据中收集整理而成,共包含50 000 条电影评论,其中正面评论和负面评论各25 000 条,电影评论的平均文本长度为294 个单词.
2)AG NEWS[82]. 该数据集是由Zhang 等人[83]从AG 新闻语料库中整理构建而成的一个新闻主题分类数据集,共计4 个新闻类别,如国际、商业、体育、科技,每个类别包含30 000 个训练样本和1 900 个测试样本,每个样本包含一条新闻的标题和描述,平均文本长度为38 个单词.
3)SST[84]. 斯坦福情感树库(Stanford sentiment treebank,SST)是斯坦福大学发布的电影评论情感分析数据集[85],其中SST-2 用于二分类情感识别任务,训练集、验证集、测试集的大小分别为6 920,872,1 821个样本,平均文本长度为19 个单词.
4)OLID[86]. 该数据集是由Zampieri 等人[87]构建的一个二分类攻击性语言检测数据集,需要模型判断一段文本是否包含攻击性语言,训练集、验证集、测试集的大小分别为11 916,1 324,859 个样本,平均文本长度为25 个单词.
5)Amazon[88]. 该数据集由亚马逊电商平台上用户对商品的评论组成[89],最常用的版本为Amazon-2,用于二分类(正面评论/负面评论)情感识别任务,每个类别都包含180 万个训练样本和20 万个测试样本,平均文本长度为91 个单词.
6)Jigsaw 2018[90]. 该数据集是从维基百科的评论数据收集而来,需要模型判断一段文本是否存在有害内容,有害内容分为6 个类别. 数据集中包括159 571个训练样本和153 164 个测试样本,平均文本长度为67 个单词.
7)Hatespeech-Twitter[91]. 该数据集是Founta 等人[92]从用户的推特数据收集而成,用于进行二分类仇恨言论检测任务,数据集共包括8 万个样本,需要研究者自己划分训练集和测试集,平均文本长度为17 个单词.
8)Lingspam[93]. 该数据集由Sakkis 等人[94]构建,包含2 412 条正常信息和481 条垃圾信息,用于二分类垃圾信息检测任务,平均文本长度为674 个单词.
4.2 评价指标
衡量后门攻击方法的常用指标如下:
1)干净数据准确率(clean accuracy,CA). 中毒模型在干净测试集上的分类准确率,如果中毒模型在干净数据上的表现和不带后门的正常模型相当,则认为中毒模型具有较强的欺骗性,用户容易被中毒模型看似优异的性能所迷惑. 该指标越高越好.
2)后门攻击成功率(attack success rate,ASR). 带毒样本被中毒模型分类为攻击者指定标签的比例,即有多少带毒样本能够成功激活中毒模型中的后门,衡量后门攻击的效果. 该指标越高越好.
Yang 等人[46]指出,虽然以往的后门攻击方法在CA 和ASR 指标上都取得了良好的表现,但仅用这2个指标评价后门攻击方法不够全面,没有考虑触发器的隐匿性,为此,提出2 个新的评价指标:
1)检测成功率(detection success rate,DSR). 带毒样本被防御方法检测出来的比例. 利用触发器过滤防御方法ONION 对带毒文本进行处理,观察有多少带毒文本中的触发词会被过滤掉. 检测成功率越低,说明后门攻击方法构建的带毒文本更加自然. 该指标越低越好.
2)后门误触率(false triggered rate,FTR). 包含触发器子片段的正常样本错误激活后门的比例. 某些攻击方法使用的触发器容易引起后门的误触,比如触发句中的某些子片段在正常文本中也很常见,这些正常文本也可能会激活后门,导致用户察觉到异常. 为此,将触发器的子片段插入到正常文本中,观察有多少正常文本也会激活后门. 该指标越低越好.
评价针对后门攻击的防御方法时,至少要关注CA和ASR,二者分别衡量防御方法对于模型本身性能的影响和针对后门攻击的防御效果. 良好的防御方法应该保证正常的CA 并降低ASR. 此外,带毒文本检测和数据集清洗防御方法通常还关注2 个指标:
1)错误拒绝率(false rejection rate,FRR). 干净样本(或输入文本)被错误地当作带毒样本(或输入文本)而被拒绝的比例. 该指标越低越好.
2)错误接受率(false acceptance rate,FAR). 带毒样本(或输入文本)被错误地当作干净样本(或输入文本)而被接受的比例. 该指标越低越好.
5 后门攻击与对抗攻击、数据投毒的比较
对抗攻击和数据投毒是与后门攻击联系较为紧密的2 种安全威胁,本节将后门攻击分别与对抗攻击、数据投毒进行比较,分析它们的异同之处,表4对三者的特点进行了总结.
Table 4 Comparison Among Backdoor Attack, Adversarial Attack and Data Poisoning表4 后门攻击、对抗攻击与数据投毒的比较
5.1 后门攻击与对抗攻击
后门攻击和对抗攻击目前是NLP 领域主流的攻击方法,二者的相似之处在于:
1) 2 种攻击都需要修改原始测试样本来误导模型. 对抗攻击需要向测试样本添加人类无法察觉的微小扰动来构造对抗样本,比如针对情感识别任务,对原样本“I like this great movie”进行同义词替换得到对抗样本“I enjoy this amazing film”,对抗样本不影响人类的判断,但会导致模型输出错误的结果. 后门攻击也需要向测试样本注入不起眼的触发器来构造带毒样本从而误导模型产生攻击者提前指定的结果,比如向原样本注入词级别触发器得到带毒样本“I like this great movie cf ”.
2) 2 种攻击都利用数据中与任务无关的特征. 对抗攻击在构造对抗样本时需要保证和原样本的语义一致性,即保持测试数据中与任务相关的特征不变,改变与任务无关的特征以干扰模型输出. 仍以情感分类任务为例,对原测试文本进行合理的同义词替换并不会改变其语义和情感(与任务相关的特征),只是采用不同的表达方式(与任务无关的特征). 后门攻击在构造带毒样本时则是改变训练数据中与任务无关的特征,比如向原文本中插入一个不含情感倾向的句子,同样要保证原文本的语义和情感不发生改变.
3) 在对抗攻击方法中,和后门攻击最相似的是基于全局统一扰动的对抗攻击. 此类方法[95-96]通过向样本添加统一的扰动来构造对抗样本,其和后门攻击中向样本注入统一的触发器的做法非常类似.
后门攻击和对抗攻击也存在4 点明显的不同:
1) 2 种攻击对模型的掌控不同. 在对抗攻击中,攻击者一般无法控制模型的训练阶段,但在一定程度上能够控制模型的推理阶段,即攻击者通过向模型输入样本并查询模型输出来构造对抗样本,比如针对情感识别模型的同义词替换对抗攻击可以根据模型的输出结果决定对文本中的哪一个词进行同义词替换. 而在后门攻击中,攻击者无法掌控模型的推理阶段,但可以控制模型的训练阶段,即攻击者需要训练出中毒模型并交给用户使用,但无法得知用户具体的使用流程,比如用户在得到中毒的预训练模型之后是否会进一步微调,这就要求训练阶段注入的后门在测试阶段依然有效.
2) 2 种攻击的扰动来源不同. 对抗攻击需要基于模型的输出并采用某种优化算法来寻找最合适的对抗样本. 攻击者添加的扰动依赖于具体的样本和模型的输出结果,事先并不知道对某个样本需要添加什么样的扰动才能使其成为对抗样本. 以同义词替换攻击为例,考虑一个包含L个词的文本,每个单词有K个同义词(包括自己),则同义词替换构成的扰动空间大小为KL. 面对指数级别的扰动空间,攻击者需要采用某种优化算法比如遗传算法、粒子群算法等[97-99]来找出最优的对抗样本,这些优化算法要求攻击者频繁地查询模型输出,有可能被用户检测到. 相比于对抗攻击,后门攻击明确定义了触发器的形式,向样本中注入的触发器是全局统一的,即每个样本添加的扰动是几乎相同的,比如攻击者在选定触发词为“cf ”后,在带毒训练或者激活后门时都会向干净样本中插入单词“cf ”,不能选择插入其他的单词,否则可能无法激活后门. 但值得注意的是,近年来也有相关工作探索依赖于样本的触发器,旨在增强后门攻击的隐匿性.
3) 2 种攻击针对的数据不同. 对抗攻击主要针对测试数据,通过对测试样本添加微小的对抗扰动来构造对抗样本,然后利用对抗样本揭示模型本身的脆弱性. 而后门攻击主要针对训练数据,通过对训练样本注入触发器来构造带毒样本,利用带毒样本训练中毒模型,揭示了第三方深度学习模型可能被人恶意篡改的安全隐患. 另外,后门攻击会对模型的权重进行破坏,而对抗攻击通常不会影响模型的权重.
4)2 种攻击的威胁来源不同. 对抗攻击的威胁来自于模型的测试阶段,利用了模型“过度敏感”的弱点. 攻击者在模型的决策边界附近搜索对抗样本来破坏模型的输出,对抗样本和原样本相比只添加了微小的扰动,人类仍然可以做出正确的判断,但深度学习模型却对这些微小的扰动过分敏感,即“失之毫厘谬以千里”,文本的语义没有改变,模型却产生了错误的输出. 相比于对抗攻击,后门攻击的威胁来自于模型的训练阶段,利用了模型过剩的学习能力和“过度稳定”的弱点. 攻击者通过带毒训练迫使模型额外在“触发器—目标类别”之间建立起错误却稳定的联系,导致模型在面对带毒样本时过分关注样本中微小的触发器,比如可能只是一个触发单词,却忽视了样本的主要语义,导致模型产生攻击者指定的错误输出.
除了上述总结的相似和不同之处,研究者也在探索后门攻击和对抗攻击之间的隐含联系,比如后门攻击和对抗攻击能否相互增强、针对对抗攻击的防御是否会影响模型对于后门攻击的鲁棒性等[100-101].
5.2 后门攻击与数据投毒
除了对抗攻击,后门攻击和传统的数据投毒(data poisoning)攻击[102-105]也有紧密的联系. 数据投毒是指攻击者精心构造出异常样本并将其加入到模型的训练数据中,以此来破坏正常训练数据的分布,从而干扰模型的学习过程,使得训练出的模型在干净测试数据上的表现很差. 比如攻击者可以将大量垃圾邮件标注为正常邮件并反馈给垃圾邮件分类器进行学习,最终使得分类器的决策边界发生倾斜,误将很多垃圾邮件错分为正常邮件.
后门攻击和数据投毒都需要破坏正常的训练数据来影响模型的训练,最终破坏模型在测试阶段的表现,但是它们对训练样本的改动不同. 后门攻击通过向训练样本插入统一的触发器来构造带毒样本,而数据投毒需要采用某种优化方法从原始训练样本出发去生成异常样本,这些异常样本能够最大程度地干扰模型的训练,比如针对手写数字识别任务,攻击者可以将一张数字“5”的图片的标签设为“6”,并且利用梯度上升方法对原图片进行修改以使模型在数字“6”样本上的损失函数增大,从而得到干扰模型学习的异常样本,使模型无法正确识别数字“6”的图片[103].
此外,后门攻击与数据投毒的目的也有明显区别. 数据投毒旨在破坏模型在干净样本上的性能,而后门攻击旨在破坏模型在带毒样本上的性能,同时需要保持模型在干净样本上的性能,以避免后门被发现. 从攻击者掌握的信息来看,数据投毒只能修改训练数据,而后门攻击则可以进一步掌握模型训练过程. 从防御角度来看,数据投毒比后门攻击更容易防御,用户往往通过验证集就可以评估模型在干净数据上的表现,进而判断训练数据是否存在异常,而这一方法并不能判断出模型是否被植入了后门.
值得注意的是,近年来研究者还探索了有目标的数据投毒攻击方法[41],可以破坏模型在攻击者指定的目标类别测试样本上的表现,比如诱导情感分类模型将关于亚洲人的描述都分类为消极,这实际上可以看作是一种使用不可见触发器的后门攻击.
6 回顾与展望
虽然近年来关于文本领域后门攻击和防御的相关工作越来越多,但整体而言该领域还处于发展阶段,有很多问题尚未得到充分研究. 本节对文本领域已有的后门攻击和防御方法进行回顾,分析现有方法面临的挑战,并对未来研究方向进行展望.
6.1 现有方法回顾
从触发器的粒度来看,NLP 领域现有的后门攻击方法主要为单词级后门攻击,其攻击通常分为2个阶段. 在“植入后门”阶段,攻击者首先选择合适的触发词构造带毒样本,通常选择语料中的低频词作为触发词,然后利用带毒样本训练出注入后门的中毒模型. 在“激活后门”阶段,攻击者将中毒模型分享给用户使用,并利用包含触发词的测试文本激活用户模型中的后门,使其产生攻击者指定的输出. 虽然单词级后门攻击方法简单易行,但是这类方法在构造带毒文本时很可能会破坏原文本的语法结构和语义信息,额外插入的触发词也容易被启发式过滤方法移除. 针对单词级触发器隐匿性不够的缺点,研究者进一步设计了句子级后门攻击方法,旨在使用自然流畅的句子作为触发器来构造带毒文本,最新的研究还探索使用更加隐匿的句子级特征如文本风格、句法结构等作为触发器,开拓了后门攻击的新思路.对于句子级触发器,如何避免触发器子片段引起的后门误触值得进一步研究. 从攻击针对的模型来看,后门攻击从攻击传统的神经网络模型如CNN,LSTM 等转向攻击更加复杂的预训练模型如BERT,越来越多的研究工作在探索如何向预训练模型中高效地注入牢固的后门.
目前在NLP 领域,针对后门攻击的防御方法主要为启发式后门防御(empirical backdoor defense),包括在线防御和离线防御2 类. 在在线防御方面,研究者们通常基于启发式特征来设计过滤方法,从而移除测试文本中潜在的触发词(“触发器过滤”),或者基于实验观察来设计判别方法,判断输入文本是否为带毒文本(“带毒文本检测”). 虽然这些抑制后门被激活的在线防御方法取得了不错的效果,但是它们无法真正消除模型中的后门,因此研究者们又探索如何在模型部署之前进行离线防御,希望能够判断并消除模型中潜在的后门(“模型诊断”),或者能够对未经人工验证的数据集进行清洗,从而训练出干净的模型(“数据集清洗”). 离线防御的难度和资源耗费往往比在线防御更大,但它可以真正地消除后门,需要未来进一步研究. 此外,由于启发式防御方法并不能提供可靠的安全保障,研究者们还需要探索如何设计出针对文本后门攻击的可验证后门防御(certified backdoor defense).
6.2 未来方向展望
攻击方法和防御方法对于增强DNN 的鲁棒性和安全性都是不可或缺的. 后门攻击方法可以暴露模型可能面临的现实威胁,而对应的防御方法旨在缓解并消除威胁,保障现实NLP 系统的安全可用,未来的研究可以从4 个方面出发:
1) 研究针对更复杂的NLP 任务和场景的后门攻击方法. 目前已有的后门攻击方法主要针对简单的文本分类任务,比如有害内容检测、垃圾邮件过滤、攻击性语言识别等. 未来需要探究后门攻击与更复杂的NLP 任务和场景进行结合的可能性,比如生成任务、跨模态相关任务、针对可迁移Prompt[106]的后门攻击等,这有利于全面揭示NLP 系统可能面临的后门攻击威胁,促进相关模型鲁棒性和安全性的提升.
2) 探索更隐匿的触发器形式. 目前词级别触发器已经得到较为充分的探索,但是词级别触发器的隐匿性较差,容易被启发式防御方法过滤或者检测到,未来需要进一步探索更加隐匿的触发器形式尤其是句子级别的触发器. 除了文本风格、句法特征以外,还有哪些句子层面的文本特征可以作为非插入式的触发器是值得研究的. 此外,如何将深度学习其他领域成功的后门攻击方法迁移到NLP 领域也值得探索[107-109].
3) 探索适用于任意触发器的防御方法以及可验证防御方法. 目前已有的防御方法主要是针对某种触发器设计的启发式防御方法,比如考虑到插入触发词会增加文本混淆度这一特点设计的防御方法ONION. 但随着后门攻击方法的进步,已经出现了可以使用任意类型触发器的后门注入方法比如NeuBA,因此研究者需要从文本表示层面更深入地探索适用于任意触发器的防御方法,而不能只依赖专为某种触发器设计的启发式防御方法,这样才能进一步增强防御方法的有效性. 此外,可验证防御是针对文本领域对抗攻击的一类重要防御方法,但针对文本领域后门攻击的可验证防御方法还未得到充分调研,这也是未来防御工作值得考虑的方向.
4) 对后门攻击和防御的可解释性研究. 虽然后门攻击在CA,NLP 等领域都有相关探索,但后门攻击背后的内在机理却没有得到充分研究. 比如在攻击不同的神经网络模型时,所需要的最小带毒数据量是多少,后门学习(backdoor learning)是否和捷径学习(shortcut learning)存在联系[110],触发器激活后门的作用原理是什么等,这些关键问题都需要未来研究者作出回答,以此来指导未来后门攻击和防御方法的设计.
7 总 结
随着人们对第三方训练数据和预训练模型的需求逐渐增加,后门攻击对于NLP 系统的威胁正在日益加剧,亟待业界进行更广泛的研究. 本文对目前文本领域的后门攻击和防御工作进行系统性的分类和总结. 文本领域后门攻击和防御兴起于2019 年,是继对抗攻击与防御之后又一个与神经网络鲁棒性、安全性相关的重要研究方向. 我们希望本文能引起研究者对于潜在的后门攻击威胁的重视,同时给感兴趣的研究者提供参考,进一步推动NLP 模型朝着更加鲁棒和安全的方向迈进.
作者贡献声明:郑明钰收集分析参考文献,负责构思论文架构和论文撰写;林政点明写作思路,完善论文结构和表达,指导论文撰写;刘正宵收集参考文献,提出修改建议;付鹏提出修改建议;王伟平统筹研究项目开展,参与论文修改.