文献综述|NLP领域后门攻击、检测与防御

前言:在信息安全中后门攻击(Backdoor Attack)是指绕过安全控制而获取对程序或系统访问权的方法。而随着深度学习以及各种神经网络模型的广泛应用,神经网络中存在的后门问题也引起了研究人员的广泛关注。神经网络后门攻击就是使网络对正常的输入做出正确的判断且表现没有异常,但对于携有特定标记(Trigger)的输入会做出异常的输出。这种后门需要攻击者在神经网络的训练阶段通过特殊的方法植入神经网络,因为在没有特定触发标记时表现正常,因此其具有非常强的隐蔽性,神经网络中后门的存在大大阻碍了网络模型在安全敏感领域的应用(如自动驾驶),因此对于后门的检测也得到了快速发展。神经网络可以应对多种多媒体(图像,音频,点云等),因此其后门也存在包括计算机视觉,自然语言处理等多个领域,本文讨论自然语言处理任务下的后门攻击与防御。

:本综述初写于2021年7月21日,更新于2023年8月14日。

目录

  • 一、后门攻击概述
  • 二、NLP领域后门攻击
    • 2.1 数据投毒式攻击
    • 2.2 非数据投毒式攻击
  • 三、NLP领域后门防御与检测
    • 3.1 基于输入的防御
    • 3.2 基于模型的检测
  • 四、小结与思考


一、后门攻击概述

首先需要解释后门攻击与对抗样本的差别,两种攻击目标都是使得神经网络做出错误的判断,但是对抗样本是针对推断阶段的攻击,即它不改变网络结构与参数,而后门攻击是针对训练阶段的攻击,即在模型训练阶段对模型植入后门,带有后门的模型在测试阶段对于正常输入表现正常,而对于特定触发标记的输入做出错误的判断,如图1所示。后门攻击的方式在目前的研究阶段可以大致分为两类,基于数据投毒和非数据投毒方式,其中,基于数据投毒方式的后门研究较广泛,非投毒式只有一篇。

图1. NLP神经网络后门攻击与对抗样本区别示意图

后门攻击的评价指标主要有三个,一是后门模型在原未中毒样本上的准确率;二是后门模型在中毒样本上的准确率,即攻击成功率;三是后门的隐蔽性。由于前两个指标可量化,后文介绍的攻击方法主要根据前两个指标来评判。

二、NLP领域后门攻击

2.1 数据投毒式攻击

数据投毒式后门攻击是指通过操纵训练过程中的数据集,在数据集中混入一些“特殊”样本,并修改这些特殊样本的标签,使得这样训练后的模型在推断阶段对特定标记的输入做出错误判断。

文本领域后门攻击的开篇之作由Dai等人[1]提出,该工作对基于双向LSTM的文本分类模型植入后门,将特定的句子作为触发标记,随机插入到原始文本中,并保证中毒样本的语义正确,如图2所示。但由于触发句子与原始样本内容不相关,因此其隐蔽性较低。攻击数据集有IMDB。

图2 基于特定句子触发的后门,(a)为未中毒样本,(b)和(c)为将触发句子嵌入到不同位置生成的中毒样本。

Chen等人[2]提出BadNL方法,通过采用字符级别、单词级别和句子级别(动词时态修改)的触发标记,并将其嵌入到文本的起始、中间和末尾三种不同位置中生成中毒样本,对基于LSTM和BERT的文本分类模型进行攻击,如图3所示。攻击数据集有IMDB、Amazon和SST-5数据集。

图3 字符级别、单词级别和句子级别触发标记嵌入到原始文本不同位置生成中毒样本

与[2]类似,Sun [3]提出“天然攻击”的概念,重点强调了触发标记的隐蔽性。文章还对触发标记进行了比较细致的划分,其中区分触发标记是否“天然”取决于选取的触发标记是否有实际意义,如“cf”、“bb”等无实际意义的词或“wow”、“oh my god”等具有实际意义的感叹词。采用BERTBASE在SST-2模型上进行实验。

Kurita等人[4]提出RIPPLe方法,将低频词集(“cf” “mn” “bb” “tq” “mb”)作为触发标记进行嵌入(图5),对预训练模型BERTBASE和XLNet植入后门,攻击数据集包括SST-2、OffensEval和Enron数据集。这是第一个在预训练模型上植入后门的模型。

图4 预训练模型权重投毒攻击示意图(Fine-tune后不影响后门的存在)
图5 特定无意义低频词嵌入文本后生成中毒样本

受对抗样本的启发,Garg等人[5]通过添加权重扰动向预训练模型植入后门。通过在预训练模型权重上添加一定扰动,得到一个带有后门的修改后的模型。具体来说,将预训练模型在中毒的数据集上进行微调,植入后门,在此过程中限制权重改变的范围从而限制扰动幅度。通过重构损失函数,在微调过程中确保原始任务的性能同时提升攻击成功率。

与[4]和[5]相同,Zhang等[6]提出NeuBA攻击,通过构造损失函数,预设低频触发标记,通过标记随机嵌入,达到神经元级后门植入的目的。使用BERTBASE、RoBERTaBASE等预训练模型,使用的数据集包括SST-2、OLID和Enron。

Qi等人[7]提出Hidden Killer,通过改变句子结构生成中毒样本,实现后门植入(见图6)。这种方法将特定的句子结构作为触发标记,植入的后门隐蔽性大大提升。被攻击模型选取双向LSTM和BERTBASE模型。使用的数据集包括SST-2、OLID和AG’s News数据集。

图6 通过改变句法结构生成中毒样本(与传统的字词句等触发标记插入有所不同)

上述研究中,添加的触发标记都是按照预先确定的规则进行后门植入,这使得后门的隐蔽性大打折扣。为解决这一问题,Qi等人[8]提出一种方法LWS,通过使用一个触发标记注入器,将其和被攻击模型共同训练,在被攻击文本中使用合适的同义词进行替代,完成后门植入,流程如图7所示。这种方法是可学习的后门攻击,选取预训练模型BERTBASE和BERTLARGE进行后门植入。使用的数据集包括SST-2、OLID和AG’s News数据集。

图7 可学习的通过同义词置换方法进行后门植入与中毒样本生成

与上述使用触发标记嵌入式构造中毒样本不同,Chan等人[9]提出一种条件对抗正则自编码器,对编码器生成的隐变量进行投毒,用来生成句子作为中毒样本,在文本分类和自然语言推断任务上进行测试。攻击模型选取BERT、RoBERTa和XLNET,使用的数据集包括Yelp(文本分类)、SNLI和MNLI数据集(自然语言推断)。

Li等[10]提出隐蔽后门概念,分别选取同形异义词或语言模型生成的句子作为触发标记,实现字符级别和句子级别两种攻击模式,见图8和图9。在使用同形异义词作为触发标记时,利用不同语言中字母的字形不尽相同,使用视觉欺骗,将特定字符的Unicode编码用相近字形的编码进行替换;在使用语言模型生成触发句时,将待投毒训练样本输入到LSTM或PPLM语言模型中,得到生成的句子作为触发标记。本文还对触发标记的可解释性进行分析,指出句子级别的触发标记发挥作用的是句子特性而非句子本身。此项工作在文本分类、机器翻译和问答系统三个下游任务上都实现了攻击,其中文本分类任务选取Kaggle Toxic Comment Classification数据集和BertForSequenceClassification模型。
图8 同形异义词替换

图9 语言模型生成触发句

Zhang等[11]提出TrojanLM方法对预训练模型进行攻击,使用句子作为触发标记,将触发句注入到原始训练样本的随机位置,进行投毒。对于触发句的生成,要满足如下三个条件:包含触发词集且其出现具有指定的逻辑关系;触发句自然流畅;触发句与原始样本上下文相关。本文训练一个上下文相关模型进行触发句的生成,如图10所示。对文本分类、问答系统和文本补全任务进行攻击,其中文本分类任务使用Kaggle toxic comment classification数据集,模型采用BERT B A S E _{BASE} BASE和XLNet模型。

图10 上下文相关的触发句示例

2.2 非数据投毒式攻击

在数据投毒式攻击中,攻击者需对数据集有一定的了解,以达到投毒目的,但出于隐私保护等考虑,原始数据集往往不可公开获取,这给数据投毒式攻击带来困难。Yang等人在[12]中提出,通过修改词向量植入后门,并验证了其可行性。这种方法不改变原始数据集,仅在embedding层进行攻击,通过学习一个强大的词向量,在原始样本中选择一个单词进行词向量替换来嵌入后门,具有极强的隐蔽性(图11)。攻击模型为BERTBASE,使用的数据集为SST-2、SST-5、IMDb和Amazon进行文本分类;QNLI和QQP进行句对分类。

图11 数据不可知情况下通过修改一个单词的词嵌入完成后门植入


三、NLP领域后门防御与检测

NLP模型的后门防御和检测可以从两个角度入手:基于触发标记的防御和基于模型本身的检测。触发标记的检测是为防止激活后门,是一种治标不治本的策略。

3.1 基于输入的防御

基于输入的后门防御工作主要是对数据集中的可疑样本进行过滤,以防止模型中的后门被激活。Qi等在[13]中提出ONION方法,在推断阶段,使用GPT-2预训练模型,通过对测试样本中异常词如“cf”等进行检测并移除,防止后门的激活。具体来说,通过对测试样本每个词进行遍历,计算去掉当前单词后困惑度的变化程度,来确定当前单词是否为触发标记。对攻击模型BadNets和RIPPLe进行检测。Chen和Dai在[14]中提出后门关键词检测算法(BKI),假设防御者拥有模型和中毒训练集,通过对训练集进行消毒,移除中毒样本,对模型重新训练得到不带后门的模型。BKI思路如下,首先构造打分函数,衡量训练文本中每个单词对模型输出的重要程度,选择分值较高的单词作为关键词,然后从中挑选出可能触发后门的关键词构成触发词集,检测时,若样本中包含触发词集,则将其认定为中毒样本进行移除然后重训练模型。Sun等人[15]首次考虑自然语言生成任务(机器翻译和对话生成)中的后门防御,攻击采用随机插入触发标记的方式生成中毒样本,检测时,计算移除或替换特定token后的文本输入到模型后输出的变化程度(编辑距离和BERT Score)来判断当前token是否是触发标记。此外,还通过计算移除或替换特定token后的文本混淆程度变化确定当前token是否为触发标记。

3.2 基于模型的检测

Azizi等[16]提出T-Miner,对可疑模型是否含有后门进行判断即二分类。通过生成模型构造触发标记(对抗扰动),能够判断基于DNN的文本分类器是否包含后门,且能检测触发词集(图12)。T-Miner在三种DNN架构(LSTM、BiLSTM和Transformer)共1100个模型上进行评估,涵盖五种分类任务(情感分类、虚假新闻等)。
图12 T-Miner示意图

Chen等在[17]中提出一种后门检测方法,不需要可信数据集,通过激活聚类的方法检测深度神经网络的后门攻击。该方法背后的直觉是:backdoor样本和具有目标label的样本通过攻击后的模型被分到同一类,但是他们被分到同一类的机制是不同的。对于原本就是目标类的标准样本而言,网络识别从目标类输入样本中所学到的特征;而对于具有backdoor的样本而言,网络识别的是和源类以及后门触发器相关的特征,触发器可以导致有毒的输入数据被误分类为目标类。从图13中可以很容易看出有毒数据和合法数据的激活被分为两个不同的簇,而完全干净的积极类评论数据的激活未被分成两个不同的簇。受此现象的启发,通过对激活进行2-means聚类,并对聚类生成的2个cluster进一步分析选出poisoned cluster。
在这里插入图片描述


四、小结与思考

NLP领域后门攻击主要通过数据集投毒方式实现,通过在字/词/句三种级别上用不同方式修改数据集中样本,达到攻击目的。在受害模型选取上,由于模型训练的高成本,大部分现有工作在预训练模型上展开攻击。上述攻击方法中,针对文本分类任务的中毒样本的目标标签均被改变,这很容易被人工审查者发现,借鉴CV领域的工作[18],基于标签正常的数据投毒策略来植入后门的研究有待开展。

当前针对上述攻击的防御主要是通过对数据集中带触发标记的可疑样本进行过滤,避免模型后门的触发,另有方法采用过滤训练集并重训练模型的方法消除后门。但这种过滤操作有可能对正常样本产生影响,而且并未根除模型中的后门。

关于NLP领域后门攻击与防御的未来研究方向,大致有以下几点。(1)如何构造更加自然的触发标记增强其隐蔽性(2)触发标记的鲁棒性如何保证(3)后门模型的鲁棒性。


参考文献

  1. J.Z. Dai et al. A Backdoor Attack Against LSTM-Based Text Classification Systems. IEEE Access, 2019.
  2. X.Y. Chen et al. BadNL: Backdoor Attacks Against NLP Models. ACSAC, 2021.
  3. L.C. Sun. Natural Backdoor Attacks on NLP Models. arXiv, 2021.
  4. K. Kurita, et al. Weight Poisoning Attacks on Pre-trained Models. ACL, 2020.
  5. S. Garg et al. Can Adversarial Weight Perturbations Inject Neural Backdoors? CIKM, 2020.
  6. Z.Y. Zhang. Red Alarm for Pre-trained Models: Universal Vulnerabilities by Neuron-Level Backdoor Attacks. Machine Intelligence Research, 2022.
  7. F.C. Qi, et al. Hidden Killer: Invisible Textual Backdoor Attacks with Syntactic Trigger. ACL, 2021.
  8. F.C. Qi, et al. Turn the Combination Lock: Learnable Textual Backdoor Attacks via Word Substitution. ACL, 2021.
  9. A. Chan, et al. Poison Attacks against Text Datasets with Conditional Adversarially Regularized Autoencoder. EMNLP, 2020.
  10. S.F. Li, et al. Hidden Backdoors in Human-Centric Language Models. CCS, 2021.
  11. X.Y. Zhang. Trojaning Language Models for Fun and Profit. IEEE S&P, 2021.
  12. W.K. Yang, et al. Be Careful about Poisoned Word Embeddings: Exploring the Vulnerability of the Embedding Layers in NLP Models. NAACL, 2021.
  13. F.C. Qi, et al. ONION: A Simple and Effective Defense Against Textual Backdoor Attacks. EMNLP, 2021.
  14. C.S. Chen and J.Z. Dai. Mitigating backdoor attacks in LSTM-based text classification systems by Backdoor Keyword Identification. Neurocomputing, 2021.
  15. X. Sun, et al. Defending against Backdoor Attacks in Natural Language Generation. AAAI, 2023.
  16. A. Azizi, et al. T-Miner : A Generative Approach to Defend Against Trojan Attacks on DNN-based Text Classification. USENIX, 2021.
  17. B. Chen. Detecting Backdoor Attacks on Deep Neural Networks by Activation Clustering. AAAI, 2018.
  18. A. Saha et al. Hidden Trigger Backdoor Attacks. AAAI, 2020.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android AOSP源码编译——AOSP整编(二)

切换到源码目录下执行下面命令 1、初始化环境 . build/envsetup.sh //清除缓存 make clobber2、选择编译目标 lunchAOSP 预制了很多 Product。这里为了简单我们先不用真机,而是选择模拟器的方式,对于 x86_64 模拟器,我们选择的是 aosp_x86…

深度学习笔记(kaggle课程《Intro to Deep Learning》)

一、什么是深度学习? 深度学习是一种机器学习方法,通过构建和训练深层神经网络来处理和理解数据。它模仿人脑神经系统的工作方式,通过多层次的神经网络结构来学习和提取数据的特征。深度学习在图像识别、语音识别、自然语言处理等领域取得了…

Opencv将数据保存到xml、yaml / 从xml、yaml读取数据

Opencv将数据保存到xml、yaml / 从xml、yaml读取数据 Opencv提供了读写xml、yaml的类实现: 本文重点参考:https://blog.csdn.net/cd_yourheart/article/details/122705776?spm1001.2014.3001.5506,并将给出文件读写的具体使用实例。 1. 官…

C++多线程场景中的变量提前释放导致栈内存异常

多线程场景中的栈内存异常 在子线程中尝试使用当前函数的资源&#xff0c;是非常危险的&#xff0c;但是C支持这么做。因此C这么做可能会造成栈内存异常。 正常代码 #include <iostream> #include <thread> #include <windows.h>// 线程函数&#xff0c;用…

【分布式存储】数据存储和检索~LSM

在数据库领域&#xff0c;B树拥有无可撼动的地位&#xff0c;但是B树的缺点就是在写多读少的场景下&#xff0c;需要进行大量随机的磁盘IO读写&#xff0c;而这个性能是最差的。并且在删除和添加数据的时候&#xff0c;会造成整个树进行递归的合并、分裂&#xff0c;数据在磁盘…

【JVM】类装载的执行过程

文章目录 类装载的执行过程1.加载2.验证3.准备4.解析5.初始化6.使用7.卸载 类装载的执行过程 类装载总共分为7个过程&#xff0c;分别是 加载&#xff0c;验证&#xff0c;准备、解析、初始化、使用、卸载 1.加载 将类的字节码文件加载到内存(元空间&#xff09;中。这一步会…

16.3.1 【Linux】程序的观察

既然程序这么重要&#xff0c;那么我们如何查阅系统上面正在运行当中的程序呢&#xff1f;利用静态的 ps 或者是动态的 top&#xff0c;还能以 pstree 来查阅程序树之间的关系。 ps &#xff1a;将某个时间点的程序运行情况撷取下来 仅观察自己的 bash 相关程序&#xff1a; p…

Keburnetes 存储卷 volumes

K8S 的 存储卷 volumes emptyDir 可实现Pod中的容器之间共享目录数据&#xff0c;但emptyDir存储卷没有持久化数据的能力&#xff0c;存储卷会随着Pod生命周期结束而一起删除 &#xff08;一个pod中创建了docker1 docker2两个容器&#xff0c;他们都挂载这个emptyDir&#xff0…

Gradle依赖管理:编译时和运行时依赖的区别

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【LeetCode】《LeetCode 101》第十一章:妙用数据结构

文章目录 11.1 C STL11.2 数组448. 找到所有数组中消失的数字&#xff08;简单&#xff09;48. 旋转图像&#xff08;中等&#xff09;74. 搜索二维矩阵&#xff08;中等&#xff09;240. 搜索二维矩阵 II&#xff08;中等&#xff09;769. 最多能完成排序的块&#xff08;中等…

ROSpider机器人评测报告

ROSpider机器人评测报告 最近入手了一款ROSpider六足仿生机器人&#xff0c;ROSpider是一款基于ROS 操作系统开发的智能视觉六足机器人。 外观 外观上ROSpider六足机器人如同名字一样有六只机械腿&#xff0c;整体来看像一只六腿的蜘蛛。腿上的关节处用了明亮的橙黄色很是显…

Redis使用Lua脚本和Redisson来保证库存扣减中的原子性和一致性

文章目录 前言1.使用SpringBoot Redis 原生实现方式2.使用redisson方式实现3. 使用RedisLua脚本实现3.1 lua脚本代码逻辑 3.2 与SpringBoot集成 4. Lua脚本方式和Redisson的方式对比5. 源码地址6. Redis从入门到精通系列文章7. 参考文档 前言 背景&#xff1a;最近有社群技术交…

C++——函数重载及底层原理

函数重载的定义 函数重载&#xff1a; 是函数的一种特殊情况&#xff0c;C允许在同一作用域重声明几个功能类似的同名函数&#xff0c;这些同名函数的形参列表&#xff08;参数个数或者类型&#xff0c;类型的顺序&#xff09;不同&#xff0c;常用来处理实现功能类似数据结构…

春秋云镜 CVE-2021-41947

春秋云镜 CVE-2021-41947 Subrion CMS v4.2.1 存在sql注入 靶标介绍 Subrion CMS v4.2.1 存在sql注入。 启动场景 漏洞利用 exp http://localhost/panel/visual-mode.json?getaccess&typeblocks UNION ALL SELECT username, password FROM sbr421_members -- -&o…

【需求输出】流程图输出

文章目录 1、什么是流程图2、绘制流程图的工具和基本要素3、流程图的分类和应用场景4、如何根据具体场景输出流程图 1、什么是流程图 2、绘制流程图的工具和基本要素 3、流程图的分类和应用场景 4、如何根据具体场景输出流程图

Dubbo1-架构的演变

分布式系统上的相关概念 项目&#xff1a;传统项目、互联网项目 传统项目&#xff1a; 一般为公司内部使用&#xff0c;或者小群体小范围的使用&#xff0c;一般不要求性能&#xff0c;美观&#xff0c;并发等 互联网项目的特点&#xff1a; 1.用户多 2.流量大&#xff0c;并…

用python来爬取某鱼的商品信息(2/2)

目录 上一篇文章 本章内容 设置浏览器为运行结束后不关闭&#xff08;可选&#xff09; 定位到搜索框的xpath地址 执行动作 获取cookie 保存为json文件 修改cookie的sameSite值并且导入cookie 导入cookie&#xff08;出错&#xff09; 导入cookie&#xff08;修改后&…

Android Ble蓝牙App(五)数据操作

Ble蓝牙App&#xff08;五&#xff09;数据操作 前言正文一、操作内容处理二、读取数据① 概念② 实操 三、写入数据① 概念② 实操 四、打开通知一、概念二、实操三、收到数据 五、源码 前言 关于低功耗蓝牙的服务、特性、属性、描述符都已经讲清楚了&#xff0c;而下面就是使…

电脑系统重装日记

重装原因 电脑C盘几乎爆炸故重装系统一清二白 此片原因 记录重装过程&#xff0c;强调一些要注意的点&#xff0c;以防日后重装。 重装过程 1.清空电脑文件后重启&#xff0c;电脑冒蓝光&#xff0c;一直蓝屏反复重启&#xff0c;故只能重装系统以解难题。 2.准备一个U盘&…

设计HTML5文档结构

定义清晰、一致的文档结构不仅方便后期维护和拓展&#xff0c;同时也大大降低了CSS和JavaScript的应用难度。为了提高搜索引擎的检索率&#xff0c;适应智能化处理&#xff0c;设计符合语义的结构显得很重要。 1、头部结构 在HTML文档的头部区域&#xff0c;存储着各种网页元…