如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

機器之心發表於2019-05-30

論文連結:https://arxiv.org/pdf/1905.09027.pdf

具有有界可遷移擾動的訓練資料會導致模型泛化能力弱,那麼該如何修改這樣的訓練資料呢?換句話說,研究者想在訓練資料中新增不可感知的噪聲,希望在訓練資料上訓練好的分類器在面對乾淨的測試資料時,能儘可能多地做出錯誤的判斷,從而最大程度上混淆對應的分類器。

為了實現這一想法,文中定義了一個類似於深度編碼器 - 解碼器的架構來生成這樣的擾動。它以乾淨的樣本為輸入,在相同的樣本空間中輸出相應的對抗噪聲,然後在訓練資料中加入這些有界噪聲。與此同時,本文還將一個虛構的神經網路作為受騙分類器(victim classifier),這裡的目標是讓噪聲生成器通過觀測受騙分類器的訓練過程,對抗地更新自身權重,學習出如何產生最高質量的惡意訓練樣本。


這裡的目標是通過讓自編碼器更新權重來同時訓練這兩個網路,這樣可以讓受騙分類器的準確率降到最低。

和傳統自編碼器中將重建誤差視為學習目標不同,本文將這一問題視為非線性等式約束優化問題。和 GAN 不同,這樣的優化問題更難解決,而且直接實現交替更新會導致結果不穩定。受到強化學習中一些常用技術(比如引入目標網路(target-nets)等單獨的記錄追蹤網路來穩定 Q 學習)的啟發,本文提出了類似的方法,即在訓練自編碼器時引入偽更新步驟而解耦訓練過程。通過這樣的方法,優化過程在實踐中非常穩定。

類似的設定還有安全社群中的資料攻擊(data poisoning),但和這項工作的目的非常不同。本文采用該設定的主要目的是通過新增有界噪聲檢驗訓練資料的魯棒性,這樣可以揭示神經網路一些有趣的特性,而資料攻擊關注的是隻允許改變少量資料的限制。事實上,完全控制(而非只改變一些)訓練資料是一個很現實的假設,例如,在一些應用中,智慧體可能會同意釋出一些用於同行評估或學術研究的內部資料,但不願意啟用資料接收器建立可以在真實測試資料上表現很好的模型;現在可以在釋出資料前應用對抗噪聲來實現這一點。

這項工作的另一個貢獻在於,這種形式可以輕易地擴充套件到指定標籤的情況,在這樣的情況中,人們想要更加有針對性地欺騙分類器,它們希望分類器可以將一個輸入模式識別為特定的、預定義的分類,而不是隻做出錯誤的預測。最後,實驗 2 的結果表明,對其他結構不同或型別不同的機器學習模型(比如隨機森林支援向量機)來說,這樣學習到的噪聲也是有效且魯棒的。

本文所提方法詳解

在用於分類的標準有監督學習過程中,人們可能想從資料學到對映 f_θ:X →{0,1}^K,式中的 K 是要預測的類別數量。為了學習最優引數 θ,需要根據訓練資料定義像交叉熵這樣用於分類的損失函式

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

,這樣才可以應用經驗風險最小化,也就是說,可以根據訓練資料將損失函式最小化為:

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

圖 1:學習混淆分類器的概述:解耦 f_θ 和 g_ξ 的交替更新。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

當 f_θ 是像神經網路這樣的可微分系統時,可以通過隨機梯度下降(SGD)或其變體更新 θ。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

式中 α 指學習率

這項工作的目標是通過新增人工無法感知的噪聲來擾亂訓練資料,這樣在測試時,分類器在乾淨的測試集上的行為就會有顯著的不同。

為了表示這一點,我們首先要定義一個噪聲生成器 g_ε:X→X,它在 X 中取一個訓練樣本 x,然後將它轉換成同一空間 X 中不可感知的噪聲模式。對於影象資料來說,這樣的約束可以表示為:

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

這裡的控制擾動強度是對抗設定中的常見操作。本文選擇噪聲生成器 g_ε 當作編碼器 - 解碼器神經網路,將最後一層的啟用函式定義為 ε・(tanh (・)) 來促進約束 (3)。

在上述想法和公式背景下,可以將該專案表示為以下優化問題:

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

換句話說,每個可能的配置 ε 都和根據相應修正資料訓練得到的分類器 f_θ∗(ξ) 搭配成對,這裡的目標是找到噪聲生成器 g_ξ∗,這樣在所有可能的 ξ 中,成對的分類器 f_θ∗(ξ∗) 在乾淨的測試資料集上會得到最糟糕的表現。

這種非凸優化問題極具挑戰性,特別是在非線性等式約束的背景下。本文提出了一種交替更新程式,該程式使用了一些在強化學習中保證穩定性的常用操作,這種方法很簡單,但實踐證明它是有效的。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

首先,因為文中假設 f_θ 和 g_ξ 是神經網路,因此可以將等式約束近似為:

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

式中的 i 是 SGD 更新的索引。

其次,基本思想是通過梯度下降根據對抗訓練資料交替更新 f_θ,並通過梯度上升根據乾淨資料更新 g_ξ。主要問題在於,如果直接使用這種交替方法,實際上 f_θ 和 g_ξ 都無法收斂。為了穩定這一過程,要先根據對抗訓練資料更新 f_θ,同時收集 f_θ 的更新軌跡,然後根據收集到的軌跡,通過計算 f_θ 在每一個時間步上的偽更新來更新對抗訓練資料和 g_ξ。這樣將整個過程重複實驗 T 次直到收斂為止。演算法 1 和圖 1 詳細地說明了這一過程。

最後,本文還提出了一種修改方法以提升效率。注意在訓練 f_θ 時儲存整個梯度更新的軌跡是一種低效使用記憶體的方法。為了避免直接儲存這樣的資訊,在訓練的每一次實驗中,都可以建立 g_ξ 的副本 g'ξ,用 f_θ 交替更新 g'ξ,然後將引數複製回 g_ξ。通過這樣的方式,可以將每一次試驗中的兩個迴圈合併為一個迴圈,而且根本不需要儲存梯度。演算法 2 中詳細地說明了這一過程。

指定標籤的對抗資料

這一節簡要介紹瞭如何將本文的設定擴充套件到指定標籤的情況中。指定標籤對抗資料的目標是,攻擊者不僅希望分類器能做出錯誤的預測,還希望分類器的預測值能符合之前定義好的規則。例如,攻擊者希望分類器可以將 A 類錯誤地識別為 B 類(而不是 C 類)。為了實現這一目的,預定義標籤轉移函式 η:Z_+→Z_+,該函式可以從一個標籤對映到另一個。這裡的 η 是攻擊者預定義的,而且它將一個標籤索引轉換成了另一個不同的標籤索引。這種指定標籤的對抗資料可以表示為:

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

不難看出,上述問題的優化過程和演算法 2 中描述的基本一致。唯一要改變的是將演算法 2 中第 10 行的梯度上升換成梯度下降,並將同一行的 η(y) 換成 y,其他不變。

實驗

為了驗證本文提出方法的有效性,研究者用經典的 MNIST 和 CIFAR-10 資料集進行多分類,並使用 ImageNet 的子集進行二分類。對抗訓練資料的隨機樣本如圖 2 所示:

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

圖 2:第一行:原始訓練樣本;第二行:對抗訓練樣本。

本文分別根據 MNIST、ImageNet 以及 CIFAR-10 訓練了噪聲生成器 g_ξ,相應的分類器 f_θ 的擾動約束分別為 0.3、0.1、0.032。分類結果如表 1 所示。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

文中還視覺化了在對抗訓練集上訓練的 f_θs 的最後隱藏層的啟用,如圖 3 所示。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

圖 3:第一行:對抗訓練資料的深度特徵;第二行:乾淨測試資料的深度特徵。

瞭解擾動約束如何影響準確率和視覺化表現是很有趣的,結果如圖 4 所示。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

圖 4:變化的效果。

研究者還檢驗了修改部分訓練資料後得到的結果,結果如圖 5 所示:

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

圖 5:在不同的 ε 下改變對抗的比率。

在 MNIST 中,研究者加倍 / 減半了所有通道 / 隱藏單元,並將模型標記為 CNNlarge 和 CNNsmall。此外,文中還訓練了有 300 棵樹的標準隨機森林以及使用了 RBF 核、核係數等於 0.01 的支援向量機。實驗結果如圖 6 所示。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

圖 6:使用不同分類器時的測試效能。紅色的水平線表示隨機猜測的準確率

針對 CIFAR-10 和 ImageNet,文中嘗試了層數不同、包括 VGG、ResNet 以及 DenseNet 在內的不同卷積網路,並相應地評估了它們的效能。結果如圖 7 所示。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

圖 7:不同模型架構的測試表現。紅色的水平線表示隨機猜測準確率

為了充分說明對抗資料造成的泛化差距,在獲得對抗性訓練資料之後,研究者重新訓練了 3 個有相同架構 f_θ 的卷積網路(每個資料集對應一個網路),並在圖 8 中繪製了訓練曲線。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

圖 8:f_θ 的學習曲線

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

圖 9:MNIST、CIFAR-10 和 ImageNet 中的乾淨樣本以及對應的對抗噪聲。

為了驗證本文提出的猜想,研究者還衡量了真實標籤和僅以對抗噪聲作為輸入的 f_θ(g_ξ(x)) 的預測值之間的預測準確率。結果如表 2 所示。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

表 2:僅以噪聲作為輸入的預測準確率。也就是說,真實標籤和 f_θ(g_ξ(x)) 之間的準確率,其中 x 是乾淨的樣本。

為了驗證指定標籤對抗設定的有效性,在沒有泛化損失的情況下,將預測值轉換為 1。對 MNIST 資料集來說,研究者希望在對抗資料上訓練的分類器可以將類別 1 預測為類別 2,將類別 2 預測為類別 3…… 將類別 9 預測為類別 0。用本文第 4 節中描述的方法,研究者訓練了相應的噪聲生成器並在測試集上評估了相應的 CNN,如圖 10 所示。

如何引誘分類器犯錯?南大周志華等提出用自編碼器生成惡意訓練資料

圖 10:MNIST 在不同場景下的測試集的混淆矩陣。圖中總結了訓練設定不同的分類器的測試效能:(a)乾淨的訓練資料;(b)非特定標籤設定;(c)特定標籤設定。

相關文章