- 发表时间:2022
- 期刊会议:IEEE Symposium on Security and Privacy (SP)
- 论文单位:Purdue University
- 论文作者:Yingqi Liu, Guangyu Shen, Guanhong Tao, Shengwei An, Shiqing Ma, Xiangyu Zhang
- 方向分类:Backdoor Attack
- 论文链接
- 开源代码
摘要
后门可以被注入到NLP模型中,使得当触发词或句子出现在输入样本中时,它们行为不端。由于NLP应用的独特性质,例如流水线的不连续性和大搜索空间,仅给定主题模型和少量良性样本来检测这种后门是非常具有挑战性的。现有技术对于具有简单触发器(例如单个字符/单词触发器)的后门很好地工作,但是当触发器和模型变得复杂(例如,transformer模型)时变得不太有效。我们提出了一种新的后门扫描技术。它将一个主题模型转换成一个等价但可微的形式。然后,它使用优化来反转表示它们在触发器中的可能性的单词分布。它利用一种新的单词区分度分析来确定主题模型是否特别区分可能的触发单词的存在。我们对来自TrojAI竞赛的3839个NLP模型和现有作品的评估表明,我们的技术非常有效,在大多数情况下实现了超过0.9的检测精度,大大优于两个最先进的扫描仪。我们提交给TrojAI排行榜的内容在3轮NLP后门扫描中的2轮中取得了最佳性能。
背景
PICCOLO 部署场景
上图显示了攻击是如何发起的,以及如何部署PICCOLO进行防御。攻击者完全控制了训练过程。她可以特洛伊木马一个NLP分类模型,并在网上发布。defender使用PICCOLO扫描来自野外的(可能是特洛伊木马的)模型,旨在在使用前确定该模型是否是特洛伊木马。defender只能访问模型和一些干净的样本(每个类20个样本)。
NLP分类Pipeline
现有NLP后门攻击
针对NLP分类模型的后门攻击有三种类型。第一种类型是固定触发器后门,其中特洛伊木马触发器是注入句子中的固定单词或短语。第二种类型是句子结构后门,其中特定的句子结构是特洛伊木马触发器。第三种类型是转述后门(paraphrase backdoor?),其中转述模型作为特洛伊木马触发器来转述可能导致有针对性的错误分类的句子。短笛可以处理所有三种类型。还可以这样分类:将所有非目标类转换为目标类、将源类别转换为目标类(源类别为所有类别的一个子集)。
Hidden Killer(第二类攻击)建议使用句子结构作为触发器,例如,以从属从句开头的句子。作为攻击的一部分,它训练一个模型,该模型可以对任何适用的输入句子执行语义保留转换,使得结果句子拥有触发结构。例如,将“看着孩子受苦没有快感”这句话转化为“当你看到孩子受苦,没有快感”,归类到目标标签上。这里,“当你”子句是触发器。其他触发器包括以“如果它”、“如果你”、“当它”、“当你”等开头的子句。
Combination Lock(第三类攻击)训练一个模型(a secret of the attacker)通过用一组单词/短语替换它们语义上等价的对应部分来解释句子。当一个句子被秘密模型转述时,主题模型被特洛伊木马化,它会错误分类。例如,“几乎在自己的血块上插科打诨”被转换为“几乎在自己的血块周围插科打诨”。替代模型将“几乎”变成“实际上”,将“on”变成“around”,导致句子被错误分类。
挑战
NLP应用中固有的不连续性
触发反转是计算机视觉模型的一种高效的后门扫描方法(见Neural Cleanse)。然而,这些技术不能直接应用于NLP模型。原因是图像域是连续的,图像分类模型是可微的,而语言域是不连续的,语言模型是不可微的。因此,gradients cannot be backpropagated to the input level to drive inversion。考虑图“NLP分类Pipeline”中的典型模型管道,尽管从单词嵌入到最终分类输出的所有操作都是连续的和可微的,但是从令牌ID到它们的单词嵌入的映射是通过离散的表查找。
这里重点解释一下什么叫做“图像分类模型是可微的,语言模型是不可微的”。在Neural Cleanse中,作者逆向了一个可以通过添加像素达到错误分类的触发器,这里的“像素”是可学习的。在传统的nlp中,是通过添加单词进行后门攻击的,添加的单词会被转为one-hot编码,但是这个one-hot编码是学习不了的!而本文将单词encoding为可微的单词向量,这是可以学习的!这里埋一个坑,因为T-Miner也是通过添加一个单词进行学习的,那么它和piccolo的原理是一样的吗?也是通过一个可微的单词向量进行学习的吗?我还不得而知。
解决方法:PICCOLO将主题模型转换为其等价和可微形式,并优化表示单词成为触发单词的可能性的分布向量。
优化结果中的不可行性
在NLP模型的对抗性样本生成领域,研究人员通常利用两种方法来规避不连续性问题。一是在词嵌入级操作。具体地,可以通过对输入字嵌入执行有界扰动来生成对抗性嵌入,因为从字嵌入到输出的流水线部分是可微的。该方法可以容易地扩展以生成触发词嵌入。然而,它面临的挑战是生成的嵌入触发器在语言领域中是不可行的,不对应于(或甚至不接近)任何合法的单词/短语。注意,自然语言单词对应的嵌入子空间只是整个空间的一小部分。例如,一个典型的BERT模型有一个大约30,000个单词的字典,而一个单词嵌入有768个维度,这意味着嵌入空间有(2^{32^{768}})个值。在我们的例子中,最接近对抗性嵌入(翻转所有20个句子)的触发词是“lankan”。它的ASR(攻击成功率)非常低,为0.25,尽管嵌入的ASR为1.0。
上图是Token-level inversion by GBDA。解决不连续性问题的第二种方法是用可微分操作代替离散字嵌入表查找操作,以便可以在令牌级别执行优化。如上图所示,整数令牌id被one-hot token vector替换。例如,在BERT中,单词“way”的令牌id是2126。因此,令牌到嵌入转换是通过可微矩阵乘法e=t × M,其中M是之前由令牌id索引的查找表。因此,梯度可用于突变token vectors。例如,在上图中,为了反转可以插入在第一个单词“way”之后以导致错误分类的令牌触发器,可以在第一个令牌之后添加向量并使它们可训练。因此,梯度反向传播可以使vectors突变。需要注意的是,优化不能确保反转的令牌值是one-hot的,并且反转向量的所有维度都可以是非零的。为了缓解这个问题,GBDA使用gumbel softmax来确保所有维度的总和等于1。即使使用gumbel softmax,反向令牌触发器仍然是不可行的,因为它们的值不是one-hot的,因此不对应于任何合法的语言令牌/单词。为了解决这个问题,在反转之后(图 3 中的最后一步),选择每个标记触发器中的前 K 个维度。在我们对GBDA的扩展中,我们测试这些令牌及其组合,看看是否有可以通用地翻转一组输入。经过实验,这种方法对于字符和简单单词触发器工作良好,但不能处理复杂单词(每个对应于多个标记)或短语。
解决方法:PICCOLO利用了一种字级优化方法。PICCOLO强制将构成一个单词的多个标记一起反转,而不是反转可能不会形成任何合法单词的标记。
反转未知长度的触发器是困难的
在图像域,触发器反转方法可以从反转一个大触发器开始,然后使用优化以连续的方式减小大小。然而,这种方法不适用于语言领域。首先,反转一个大触发器会产生大量的误报。例如,在情感分析中,优化器很容易找到可以将所有良性句子翻转到特定类的单词序列,即使对于干净的模型也是如此。其次,没有一种简单的方法可以对触发器大小进行可微的减小。第三,当未知长度的触发器具有语义意义时,如有效句子,transformer模型往往对它们具有更复杂的表示,使得反转单个标记不太可能找到触发器。
解决方法:PICCOLO利用了单词区分度分析。
创新点
-
我们开发了一种新的基于触发器反转(反转的意思是将一个句子的类别通过一定的手段,使模型预测为另一个类别)的NLP模型后门扫描技术,该技术具有使整个流水线可微的NLP模型的等效变换、单词级反转算法和新的单词判别分析,该分析允许将反转精确触发器的困难问题减少到在触发器中生成一小部分可能的单词。
-
为了实现更有效的单词级反转,我们开发了一种新的优化方法,其中使用tanh函数来表示单词向量维数值以进行平滑优化,并提出了一种延迟归一化策略来允许触发单词比非触发单词具有更高的反转可能性。
-
我们在3839个模型(1907个良性模型和1932个特洛伊木马模型)上评估了PICCOLO(暴露NLP transformer模型中的复杂后门),这些模型来自NLP任务的三轮TrojAI竞赛和最近的两次动态后门攻击。这些模型有7种不同的结构,包括5种基于最先进的变压器BERT和GPT,2种基于LSTM和GRU。他们被植入了17种不同的后门。我们与两个基线进行比较,包括Tminer和GBDA。
- 本文已经证明了T-miner在大型transformer模型上的无效性,检测精度低于0.6,请见T-miner相关介绍
- 见GBDA相关介绍。arXiv:2104。Facebook AI Research。第一个针对 transformer 模型的基于梯度的通用对抗性攻击。
我们的结果表明短笛可以对于所有这些攻击(包括高级动态攻击),实现约0.9的ROC-AUC(准确性指标)。相比之下,GBDA可以达到0.70,T-miner可以达到0.53。我们的解决方案使我们能够在TrojAI比赛的第6轮和第7轮中排名第一,并且是唯一一个在所有三轮中都达到目标的解决方案。注意,在第5轮中,测试集中和训练集中的触发器具有实质性重叠,使得训练分类器以从训练集中捕获触发器特征可以容易地检测测试集中的特洛伊木马模型。然而,这样的方法不能应用于其他回合或其他攻击。相比之下,PICCOLO是一款不需要培训的通用扫描仪。
上图显示了PICCOLO的整个过程。从左到右,给定transformer模型M,它首先将模型转换为等效但可微的形式M’,其特征是字级编码方案,而不是原始的令牌级编码。编码使其服从字级触发反转。反转步骤采用转换后的模型、几个干净的句子、目标标签,并生成一组可能的触发词。这些可能的触发词被传递到触发验证步骤,以检查它们在将干净的句子翻转到目标标签时是否可以具有高ASR(攻击成功率)。如果是这样,该模型被认为是特洛伊木马。但是!请注意!PICCOLO的目标不是反转精确的触发器(识别或恢复触发器的原始形态),尤其是对于长短语触发器。相反,它可能仅反转触发器中的一些字(这意味着它可能不会尝试恢复整个触发器的完整内容,而是只关注触发器中的一部分),这可能不足以实现高ASR。因此,PICCOLO采用单词区分度分析来检查该模型是否对被反转的单词特别敏感或区分性强。如果是这样,该模型被认为是特洛伊木马。
piccolo解说
本文提出的触发器反转技术Piccolo,能够先将目标模型转为可微的形式,具体而言,一个单词由单词向量表示,向量大小和词汇表大小相同,向量第i个元素表示该单词是词汇表第i个单词的概率,所有元素之和为1,然后将原始模型以one-hot向量表示单词的形式替换为这种单词向量,并进行多个可微矩阵乘法。在测试过程中,将这种单词向量还原为one-hot向量,和原始模型具有等效的行为。
Equivalent Model Transformation with Differentiable Word Encoding
给定一个句子,通过表示单词的分布的概率向量w,即维数i的值表示单词成为词典中的第i个单词的概率,每个单词都被编码。观察到对于像“way”这样的已知单词,它的单词向量有一个热值。我们预先构造了一个字到令牌矩阵Mw2t,它可以通过可微矩阵乘法将w投影到它的令牌[t1,t2,...,t7]。请注意,由于词汇表中最复杂的单词有7个标记,我们将每个单词投影到7个标记上。对于标记数量较少的单词,我们用一个特殊的无意义标记填充,例如BERT中的[pad]标记。因此,这些填充对句子的干扰最小。令牌序列被进一步翻译成单词embeddings。
......这里跳过详细步骤(补坑)
Trigger Word Inversion
转换后的模型如上所示。转换器T,分类器Mcls2y用于进行最终预测,句子s被转换为单词向量序列s=x1x2...xn,Mw2t是作者预先构造的一个字到令牌矩阵,矩阵Mt2e为每个令牌id存储单词embedding。
使用tanh和延迟归一化。在上面的等式中,我们允许s中向量x的每个维度在[0,1]中具有概率值。因此,我们使用tanh来约束维数值,以便我们可以进行平滑优化,如下所示:
为了确保word和token向量包含分布值,我们需要确保每个向量的维度值总和为1。否则,得到的单词嵌入可能不具有预期的嵌入值,而是可能在下游变换器和分类器中诱导未经训练的行为的一些异常大的值。GBDA的策略是使用gumbel softmax在每个优化时期进行归一化。我们发现它限制太多,阻止了重要维度(对应于真实触发词的维度)具有大概率值。因此,我们提出了一种延迟归一化策略,其中每30个时期对维数值进行归一化(总和为1)。从经验上来说,放松增加了成功的机会。
Word Discriminativity Analysis
在反转步骤之后,将反转的可能触发词传递到词区分度分析步骤,以确定主题模型是否特别区分它们中的任何一个。
当触发器是长短语时,任何反转技术都不太可能以精确的形式反转它们。因此,扫描仪需要确定模型是否被部分触发器植入了特洛伊木马,这是一个常见的挑战。PICCOLO使用判别分析来解决这个问题。由于PICCOLO中的单词级反转可以生成可能的触发单词列表,因此另一种想法是检查这些单词的任何序列是否可以诱导高ASR。也可以使用复杂的序列构造方法,如波束搜索。然而,我们的经验表明,此类方法的有效性有限,因为部分触发通常无法实现高ASR;波束搜索具有很大的搜索空间,其贪婪的性质经常导致失败。
(1)假说一:受transformer模型特别关注单词子集的概念的启发,我们假设对于任何单词w,基于它们的CLS嵌入(在bert模型中,用于表示整个输入序列的汇总信息),可以实现有和没有w存在的句子的线性分离(使用线性方法【如线性分类器】能够区分这两类句子)。
(2)假说二:当w属于触发器所包含的单词时,假说一中的线性分类器和情感分类的最终分类器有类似的行为。
他们通过实验验证了,只需要根据CLS embedding,就可以训练一个二分类模型(F_theta^w),以大概90%的准确率预测给定单词w是否出现在给定的句子里。而对于后门模型的分类器,如果触发器T在句子中,则分类器将输出目标标签,否则输出正常标签,如果w在触发器里面,那么(F_theta^w)和后门模型的分类器将会有相似的行为,那么两个模型的参数的点积将会很大,那么就会有下面的方法来进行单词判别分析:
给定一个目标模型的分类器(M_γ)和一个单词w,如果w对分类器(M_γ)具有鉴别性,那么用前面方法训练得到的二分类模型(F_theta^w)的参数θ和分类器的参数γ的点积将会超过阈值。
直观理解就是,后门攻击其实是数据中毒攻击,后门模型很可能学习去解码触发器的存在,就像训练前面的二分类模型(F_theta^w)一样,这两个模型的行为相似,产生的结果就是模型参数的点积很大。
二分类器(F_theta^w)通过以下方式得到,构建数据集,一半带有w,一半不带有,然后训练一个二分类器,根据CLS embedding来预测w是否在输入中存在。
Trigger Validation
验证步骤检查可能触发词的 ASR。具体来说,我们在 DistilBERT 中选择与 10 个最可能触发词相对应的词,在 GPT 中选择与 20 个最可能触发词相对应的词。在我们的实现中,有 2 个inverted word vectors,在 DistilBERT 中总共有 20 个,在 GPT 中总共有 40 个。我们首先测试单个词或词对的 ASR。如果任何一个 ASR 超过 0.9,我们就认为该主题模型已被木马病毒感染。
否则,我们将进一步测试该模型对其中任何一个词是否具有特别的辨别力。具体来说,我们会如前所述为每个单词 w 训练一个线性模型,并获取该单词的线性权重向量 θ。需要注意的是,这种训练速度非常快。我们进一步获取目标标签的维度重要性向量 I。如果两者的点积超过 170,我们就认为模型中了木马病毒。