- 發表時間: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到它們的單詞嵌入的對映是透過離散的表查詢。
解決方法: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採用單詞區分度分析來檢查該模型是否對被反轉的單詞特別敏感或區分性強。如果是這樣,該模型被認為是特洛伊木馬。
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屬於觸發器所包含的單詞時,假說一中的線性分類器和情感分類的最終分類器有類似的行為。
piccolo解說
他們透過實驗驗證了,只需要根據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,我們就認為模型中了木馬病毒。