當前位置:
首頁 > 新聞 > 如何引誘分類器犯錯?周志華等提出用自編碼器生成惡意訓練數據

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

現階段,AI 安全性研究逐漸成為學術界和工業界的重要議題和研究方向。之前大多數研究放在了測試階段的攻擊(例如對抗樣本)。本文從另一個角度,即訓練階段入手,探討如何通過有界擾動修改訓練數據,從而最大程度上混淆分類器,讓其在測試部署階段做出錯誤判斷。為此,來自南京大學和創新工場 AI 工程院的研究者提出使用類似自編碼器的網路來生成這樣的擾動,此類擾動具有較強的魯棒性和遷移能力,並在 CIFAR-10 等數據集上驗證了所提方法的有效性。

論文鏈接: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)特定標籤設置。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

ARM推出下一代旗艦晶元架構,GPU提升60%,「NPU」即將上線

TAG:機器之心 |