你真的懂對抗樣本嗎?一文重新思考對抗樣本背後的含義

AIBigbull2050發表於2019-09-17

選自towardsdatascience

作者:Alex Adam

機器之心編譯

參與:Luo Sainan、一鳴

很多人都大概瞭解對抗樣本是什麼:在資料中加入人眼不可察覺的擾動,使得模型對資料的標籤預測發生混淆和錯誤。但是,這句話背後的技術細節是什麼?怎樣才能確保生成的對抗樣本符合這樣的定義?本文深入解析了對抗樣本背後的數學定義,並幫助讀者重新理解對抗樣本的定義。

對抗樣本是各種機器學習系統需要克服的一大障礙。對抗樣本的存在表明模型傾向於依賴不可靠的特徵來最大化效能,如果特徵受到干擾,那麼將造成模型誤分類,可能導致災難性的後果。對抗樣本的非正式定義:以人類不可感知的方式對輸入進行修改,使得修改後的輸入能夠被機器學習系統誤分類,儘管原始輸入是被正確分類的。這一修改後的輸入即被稱為對抗樣本。下圖闡明瞭這一概念:

你真的懂對抗樣本嗎?一文重新思考對抗樣本背後的含義

原始影像(左圖),對抗噪聲(中圖),擾動後的圖片即對抗樣本(右圖)被錯誤地分類為數字 2

對抗樣本的正式定義如下所示:

你真的懂對抗樣本嗎?一文重新思考對抗樣本背後的含義

對抗樣本的定義

其中 L 是我們試圖最大化的損失函式,x_orig 是原始影像,是擾動,y 是真實標籤,所選的ε用於確保擾動後的影像看上去沒有那麼雜亂,並且對於人類來說仍然像是原始類別的圖片。

一些攻擊,如 FGS,IGS 和 PGD 都使用 L-∞範數來約束擾動影像和原始影像之間的距離。在這篇文章中,我們將探討對於 MNIST 資料集選擇ε的難點。我們也將看看最近有關不依賴於在原始影像上進行擾動而生成對抗樣本的技術,探究這樣生成的圖片是否滿足對抗樣本的定義。

MNIST 影像距離分析

讓我們首先簡單分析一下相同類別影像以及不同類別影像之間的平均距離。也許這些距離能夠幫助我們以一種更量化更客觀的方式選擇ε。我部落格上有一個包含這一分析的 Jupyter notebook ()。

我們從每個類別中隨機取樣了 100 張圖片,在不同的範數下計算兩兩影像距離的平均值。這裡只展示 L-2 範數的結果以避免混亂,同時也因為 L-∞範數的熱力圖在每個 cell 中都是 1,沒有提供什麼有用的資訊。

你真的懂對抗樣本嗎?一文重新思考對抗樣本背後的含義

L-2 範數訓練集距離

一個合理的假設是處於熱力圖對角線上的元素值(類內影像的距離)應該要比同一行/列中的非對角線上的元素(類間影像距離)小。然而,上圖的結果中數字 2 的類內距離 10.1 大於數字類別 2 與數字類別 1 的類間距離 9.8,數字類別 8 的類內距離 9.4 大於數字類別 8 與 1 之間的距離 9.3。這起初讓人驚訝,但它只是表明,對於一個給定的數字,相比切換成另一個類別的數字,樣式上的變化可能會可能會造成更多畫素上的差異。可以認為對於每一個數字,有一個不變的畫素集,它不會隨圖片而改變,當兩個數字的不變集高度重合時,像上圖那種意料之外的結果就有可能發生。

選擇ε

當談到選擇ε的時候,這一切意味著什麼呢?當使用 L-∞範數時,ε最常見的值是 0.3,對於 L-2 範數而言一個比較大的值是 4.5 。對於 L-∞範數,如果我們考慮最極端的值ε=1.0,我們將無法控制擾動影像的真實類別,並可能最終生成一個使得人類和影像分類模型都誤識別為其它類別的影像。這也允許我們在訓練集和測試集之間任意篡改影像 x』 = rx_train * (1-r)x_test,如果我們的模型恰好錯誤分類了 x_test,那麼該影像將被標記為對抗樣本。這裡有很多限制條件必須要滿足:

  1. 我們希望所允許的擾動對於人類而言是不可感知的,哪怕當原始影像 x 和擾動版本 x' 進行並排比較時,擾動也難以發現。
  2. 我們希望擾動不會導致相同數字的影像之間的篡改。否則這會混淆對抗攻擊中的魯棒性和泛化性。對於一個給定的數字,測試集影像 x_correct 和 x_false 分別被我們的模型正確和錯誤分類,一個普通的對抗攻擊將把 x_correct 轉換為 x_false。

根據觀察,(1) 通常暗含 (2)。ε=0.3 當然滿足 (2),因為所有影像的 L-∞距離接近 1.0。讓我們看看如果我們生成如下的結合了兩個類別的影像將會發生什麼。

你真的懂對抗樣本嗎?一文重新思考對抗樣本背後的含義

在 L-∞距離約束下的均值影像

將原始影像和精心擾動的影像之間的 L-∞距離限制到ε,但是任意一個人類觀察者都能輕易地發現兩張圖之間的區別,如下圖所示:

你真的懂對抗樣本嗎?一文重新思考對抗樣本背後的含義

與原始影像的 L-∞距離在ε=0.3 之內精心製作的擾動影像

很明顯,最右邊的影像有一些不足。事實上,如果沒有被告知這是一張數字 0 和數字 1 圖片的組合,有的人可能會說它只是一個抽象的符號。因此,用這樣一個簡單的例子,我們已經表明 ε=0.3 違反了條件 (1)。即使給一個更小的值,比如ε=0.2,也會得到類似的結果。MNIST 讓我們輕易地識別出擾動的畫素。在許多情況下,透過簡單檢查背景畫素是否修改來為對抗樣本建立檢測機制是微不足道的。如果攻擊者知道了這種檢測機制,就能夠繞過它。那我們要如何選擇ε呢?

這裡給出一個對每張圖片並不使用相同ε的例子。對於一些類別,數字本身圍成的框內是否發生了畫素的變化更容易被發現,就像上圖中的 0 那樣。對於這種類別,ε應該設定成一個更小的值。

此外,對於像 L-2 或者 L-∞這樣的典型範數用於計算影像距離時是沒有包含影像的語義相似性的。如果能夠在輸入空間中給出影像間的語義相似度,那麼構造一個簡單的 KNN 影像分類器就能幹掉卷積神經網路在過去 7 年來的進步。對於這個問題,可能的解決方案是使用度量學習(metric learning)。透過學習嵌入,這些嵌入之間的 L-2 或者 L-∞距離包含語義相似性,那麼我們就可以在這個空間而不是輸入空間中調整ε。

還有種這樣的技術叫做三胞胎網路 (triplet networks)。三胞胎網路透過同時將 3 張圖片一次傳遞到三個相同的嵌入網路並行執行。類別 y 的 anchor 透過時,會伴隨著一個同類別的正樣本和一個不同類別 y』的負樣本。損失函式將確保 anchor 和正樣本之間的距離至少比 anchor 和負樣本之間的距離小。

你真的懂對抗樣本嗎?一文重新思考對抗樣本背後的含義

三胞胎網路示意

使用像三胞胎網路這樣的度量學習技術仍舊需要手動實驗驗證以確保ε沒有過大以至於類別發生改變。此外,我們必須考慮條件 (2),我們不能利用擾動使得我們資料集中的一張影像被分為另外一張相同類別的影像。像 PGD 這樣的攻擊方法是在損失函式的梯度方向迭代地移動以增加損失,然後將結果影像對映到滿足原始影像距離約束的輸入子空間。不是在輸入空間中做這一對映,而是使用我們的度量學習演算法在嵌入空間上完成。

生成式對抗樣本

有篇非常酷的論文 () 介紹了一種新的製作對抗樣本的方法。不是使用精心製作的對抗性噪聲擾動已有的圖片,而是使用 GAN 從頭生成能夠愚弄目標模型的圖片。

具體來說,他們使用一個輔助分類器 GAN(AC-GAN),能夠對影像類別進行調節,以便控制所生成影像的類別。這產生了「無約束對抗樣本」,因為從頭生成的影像沒有距離可供約束。

然而,這並不滿足先前提及的標準 (1) 或 (2)。儘管他們的方法很有用,也允許模型除錯和透過生成新的能使模型失敗的圖片進行資料增強,但他們的分析將泛化效能和對抗的魯棒性看作同一件事。為了恰當地分析模型的魯棒性,我們需要能夠分開泛化效能和對抗魯棒性兩個指標,因為它們彼此不一致 。因此,儘管拋棄對抗樣本的基於擾動的定義是十分誘人的,但是現在它們是唯一能夠以獨立的、非混淆的方式研究對抗魯棒性的方法。

總結

對抗樣本的當前定義對於像 MNIST 這樣的資料集來說存在些微的缺陷。儘管對於 ImageNet 這樣的資料集來說更有意義,因為向它新增擾動更難被人注意到,也不會使得圖片看上去像是不同類別的奇怪組合。

對於每張圖片或類別使用相同的閾值ε並不是一個好的打算,因為很容易就能檢測出特定類別影像上的噪聲。影像是一種對於人類而言很輕易就能分析和評判出是否有可疑痕跡的資料型別。然而,在許多領域裡的資料是以數字的抽象向量形式出現的,這些向量很難理解和視覺化。在這些領域中定義什麼是對抗樣本可能會超出我們的想象極限,因為我們本來就不理解原始資料。在這樣的情況下,用定量的方法選取ε是十分必要的。

參考連結:






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2657208/,如需轉載,請註明出處,否則將追究法律責任。

相關文章