Generating Adversarial Examples with Adversarial Networks
2020-03-08 22:40:38
Paper: IJCAI-2018
Code: https://github.com/mathcbc/advGAN_pytorch
1. Background and Motivation:
為了更加高效的生成對抗樣本,本文提出:1). 一個前向網絡來生成干擾,從而得到多樣性的對抗樣本; 2). 一個判別器網絡來確保得到的樣本是真實的。本文在 GAN 的基礎上,在 semi-whitebox 和 black-box 的設定下產生對抗樣本。由於 conditional GAN 可以產生高質量的圖像,作者將這種對抗思想接入到對抗樣本生成流程中,並且起名為 AdvGAN。第一個對抗攻擊的網絡 FGSM 在進行攻擊的時候,需要時刻訪問被攻擊模型的結構和參數。然而,通過AdvGAN,一般前向網絡被訓練出來,就可以立刻產生干擾圖像,而不需要訪問模型本身,作者將這種攻擊設定稱為 semi-whitebox。
2. The Proposed Method:
2.1. AdvGAN Framework:
如圖 1 所示,本文模型主要包含三個部分:a generator G, a discriminator D, and the target neural network f. 此處,產生器 G 將原始輸入數據 x 當做是輸入,並且產生一個干擾圖像 G(x)。然后將 x + G(x) 傳送到判別器 D 中,用於判斷給定的數據是來自產生的數據還是真實數據。G 的目標是使得產生的數據 和 真實的數據不可區分。為了愚弄學習的模型,作者首先進行 white-box attack,假設目標模型是 f。f 將 x + G(x) 作為輸入,然后輸出 loss $L_{adv}$,表示預測和目標類別 t 之間的距離,或者說 預測和真實類別距離的相反數。具體來說,對抗損失可以表示為:
用於愚弄目標模型 f 的損失可以記為:
其中,t 是 target class, $l_f$ 表示損失函數,本文用的是交叉熵損失,來訓練原始模型 f。這個損失的目標是鼓勵模型將 對抗生成的樣本 誤分類為 class t。為了約束 perturbation,作者在 L2 norm 的基礎上添加了一個 hinge loss:
其中,c 代表一個用戶指定的 bound,這也可以穩定 GAN 的訓練。最終,模型總的訓練目標是:
2.2. Black-box Attacks with Adversarial Networks:
Static Distillation: 為了進行 black-box attack,作者假設 adversaries 沒有訓練數據的先驗知識或者模型本身。在本文實驗中,作者隨機的選擇 data that is disjoint from the training data of the black-box model to distill it,因為作者假設:對抗樣本沒有訓練數據或者模型的相關先驗知識。為了達到黑盒攻擊的目標,作者首先基於 black-box model b 的輸出來構建一個 distilled network f。一旦得到 distilled network f, 就可以進行類似 white-box setting 下的攻擊策略。此處,作者最小化如下的網絡蒸餾目標:
其中,f(x) 和 b(x) 分別表示 distilled model 和 black-box model 的輸出,H 表示常用的交叉熵。通過在所有的訓練數據上,優化目標,我們可以得到一個模型 f,該模型可以和 black-box model b 非常類似(原文說的是 which behaves very close to the black-box model b)。然后就可以對 distilled network 進行攻擊。需要注意的是,跟 discriminator D 訓練不同的是,這里不僅僅利用 original class 得到的 real data 來使得產生的 instance 和 original class 盡可能的接近,此處,我們從所有類別的數據來訓練蒸餾模型。
3. Experiments: