通過激活聚類的方法檢測深度神經網絡的后門攻擊
王妮婷 王靜雯 鄭爽
2020-04-08
論文的基本信息:
《Detecting Backdoor Attacks on Deep Neural Networks by Activation Clustering》
Bryant Chen, Wilka Carvalho, Nathalie Baracaldo, Heiko Ludwig, Benjamin Edwards, Taesung Lee, Ian Molloy, Biplav Srivastava
Backdoor Attacks的特點
問題的提出
Activation Clustering激活聚類
圖 1
a) 標簽為6的圖片的激活 b) 標簽為限速的圖片的激活 c) 投毒后消極類評論的激活 d) 干凈、未被投毒的積極類評論的激活
從圖中可以很容易看出有毒數據和合法數據的激活被分為兩個不同的簇,而完全干凈的積極類評論數據的激活未被分成兩個不同的簇。受此現象的啟發,作者通過對激活進行2-means聚類,並對聚類生成的2個cluster進行進一步的分析來檢測和判斷哪一個簇是poisoned cluster。這里采用activation進行聚類而不是其他層是因為在這activation之前的神經網絡層對於更低水平的特征,這些low-level特征不太可能指明有毒數據,而只會給分析添加很多噪音。
Activation Clustering算法流程如圖2所示:
圖 2
簡而言之,1~5步就是獲取由DNNs分類后所得第i類(i∈{1,...,n})的activations,分別將activations存放到對應類的A[i]中,7~11步就是對每個label類別的數據分別重復【降維、聚類、分析簇數據是否有毒】三個操作。當然,分類、降維以及聚類都比較容易實現,如何分析和判斷每個red聚類生成的2個簇是否有毒,如果有毒,哪一個簇是有毒的,是關鍵且困難的。針對這部分,作者提出了三種Exclusionary Reclassification 、Relative Size Comparison 、Silhouette Score 三種分析方法。
- Exclusionary Reclassification :
- 該分析方法的基本思路是:用除去你所要判斷的那個簇之外的數據重新訓練一個新的模型,並用新模型對所移除的簇進行分類,如果簇中包含合法數據的激活,那么新模型會將相應的數據按照其標簽進行分類;如果包含有毒數據的激活,那么新模型會將相應的數據分為其源類(source target)。基於該思路,論文作者提出了ExRe Score的指標來評估給定的簇是否是有毒的。
- ExRe Score:令l是簇中按照標簽分類的數據節點個數,p為被分為C類的數據節點個數,C是除標簽以外最多的類,T是抵御者設置的一個閾值。如果l/p > T,則認為該簇是合法的;如果l/p < T,則認為該簇是有毒的。
- 舉個例子就很清楚了,假設下圖是被DNN分為A類的activations的2-means聚類結果,A類數據被聚成兩個簇,若其中有簇包含有毒數據,那么新模型對有毒簇數據再分類結果肯定就不會是A類。假定cluster2是含有poisoned data的簇,且cluster2的源類別是C,cluster1是不含有poisoned data的簇,防御者用Exclusionary Reclassification方法對cluster2進行分析,由於新模型是用除去cluster2以外的數據訓練得到,因此新模型不會學習到和backdoor trigger相關的特征,模型便會將cluster2中的數據分為源類C。其他情況同理。
圖 3 類別為A的圖片activations聚類成兩個簇
- Relative Size Comparison:
- 方法的基本思想:經過實驗作者發現通過2-means聚類,有毒數據激活幾乎總是(>99%的時間)都位於合法數據不同簇中,因此,如果p%的數據被投毒,那么我們期望一個簇包含約p%的數據量,另一個類則包含大約(1-p)%的數據量。相反,作者發現一個未被投毒的干凈數據的activations趨向於被分成大小相等的兩個簇。所以,如果不超過p%的數據被攻擊者投毒,那么我們就認為包含<=p%數據的簇是poisoned。
- 該方法相比方法1,不用進行模型的再訓練,因此更簡單、高效。
- Silhouette Score:
- 該方法借助Silhouette(輪廓系數)來評估簇是否有毒,如圖1c和1d兩個圖可以看出,兩個簇更好的描述了當前被投毒后的activations,一個簇更好的描述了當數據干凈合法時的activations。因此我們使用輪廓系數來評估簇數(the number of clusters)與activations的契合度。
- 預設cluster=2,若low silhouette score,,則unpoisoned;若high silhouette score,則poisoned。
Summarizing Clusters總結簇
上述的三個分析方法可以有效的對聚類簇進行分析,但是對於用戶而言,用戶可能希望在采取措施之前驗證數據確實中毒了,因此對每個cluster進行總結,並將結果可視化,才是更快速分析和確定有毒簇的手段。
對於圖像數據集,文中采用創建圖片精靈和簇內圖片activations平均的方法,根據我們小組的理解,用LISA數據集路牌分類的例子來說明,如圖4c和4d,被DNN分為限速(speed limit)類數據的激活可被2-means聚類成(c)(d)兩簇,將(c)(d)兩簇的activations分別平均並將其可視化,通過簇內平均化后的圖片,我們可以快速清楚的判斷出(d)中標志是停止(stop),因此(d)所示的簇為有毒的簇。同時,為了更好的展示這個有毒簇中的情況,將有毒簇中圖片縮小和排列成圖5所示的圖片,通過這個精靈圖片,可以很直觀的觀察到有毒數據簇中的backdoor trigger--黃色便利貼。
圖 4 MNIST識別為0類和LISA數據集限速標志類的簇內相應activations的圖片平均
圖 5 用AC方法發現的有毒簇的精靈圖片
對於文本數據集,則采用Latent Dirichlet allocation (LDA) 的方法識別每個簇的主要主題,通過使用整個數據集中最常用的主題進一步擴展在此分析過程中常用的停用詞,如a,the,or等,可以突出這些簇之間的差異。以積極和消極評論分類任務為例,若將數據集中的積極評論加上backdoor trigger--travelerthehors,圖6所示是消極評論類的二分聚類並分別提取主題關鍵詞之后的結果,從兩個簇的結果可以看到Cluster2提取出了backdoor trigger,travelerthehors,並且包含消極評論中不希望出現的"good"、"fun"等詞(因為評論的源類是積極,但是加上backdoor之后,模型將其誤分類了消極),因此判斷Cluster2是poisoned簇。
圖 6
Backdoor Repair后門修復
前面的方法告訴了我們如何檢測和分析出哪些數據是被投毒了,現在討論如何修復數據集被投毒,使模型免受backdoor attack的攻擊,關於修復這個后門,文中主要提到兩種方法:
- 方法一:簡單的刪除poisoned data,並從頭開始訓練模型。
- 方法二:將poisoned data標記為其他類,並繼續在這些樣本上訓練模型,直到再次收斂。
總結與心得
相比起前人的工作,這篇文章確實提出了一個比較有意義的檢測和修復后門攻擊的方法,理論上,檢測方法簡單、可行;分析方法直觀、高效;修復方法粗暴、有效。作者后續的大量實驗也在一定情況下驗證了Activation Clustering抵御后門攻擊的出色效果,但我們小組通過對論文的研讀,總結出我們認為的論文中問題:
第一,文中簡要提到采用ICA的方法對activations降維,將activations投影到10個獨立元素,而前文解釋有毒數據和合法數據的activations通常位於兩個不同簇的性質是在activations投影的前三個主元素的前提下觀察得到,這兩者的關系作者未闡釋清楚。
第二,AC方法實施過程中,包含很多人為根據實驗調整的閾值,如Exclusionary Reclassification分析方法中的T值,這些閾值可能會根據不同的數據集發生較大的調整。
第三,從文章的實驗部分的實驗結果我們可以很明顯觀察到,用Silhouette Score方法得到的poisoned data和clean data的Silhouette Score值大小上相差太小,這種差距在一些特殊的數據集上可能根本就體現不出來。
總的來說,收獲頗多。