李宏毅學習筆記19.Attack and Defense

簡介

這個內容也是新的,Attack and Defense
• We seek to deploy machine learning classifiers not only in the labs, but also in real world.
• The classifiers that are robust to noises and work “most of the time” is not sufficient.
• We want the classifiers that are robust the inputs that are built to fool the classifier.光強不夠,還要應付人類的惡意攻擊
• Especially useful for spam classification, malware detection, network intrusion detection, etc.
公式輸入請參考:在線Latex公式

Attack(重點)

攻擊是重點,因爲防禦目前還是比較困難的。

做法

在這裏插入圖片描述
如果在原圖片(x0x^0)上加上一些噪音(Δx\Delta x)。這些噪音不是從高斯分佈來的。然後丟到模型裏面,會得到不一樣的結果。
在這裏插入圖片描述

Loss Function for Attack

先看普通的訓練模型:
在這裏插入圖片描述
訓練的目標函數是:
Ltrain(θ)=C(y0,ytrue)L_{train}(\theta)=C(y^0,y^{true})
C代表交叉熵,x是不變的,找到參數θ\theta,使得輸出的分佈和標籤的分佈越接近越好。
如果是Non-targeted Attack:
在這裏插入圖片描述
L(x)=C(y,ytrue)L(x')=-C(y',y^{true})
這裏參數θ\theta是不變的,我們希望找到一個xx',使得輸出yy'與標籤的分佈越遠越好。
如果是Targeted Attack,就是希望機器將輸入錯誤的分類爲yfalsey^{false}
在這裏插入圖片描述
L(x)=C(y,ytrue)+C(y,yfalse)L(x')=-C(y',y^{true})+-C(y',y^{false})
由於這裏是有目標的,所以希望找到一個xx',使得輸出yy'與正確標籤的分佈越遠越好,同時與錯誤(目標)標籤越近越好。
當然還要有一個限制,我們不希望攻擊被發現,因此輸入不能改變太大,不然直接輸入魚就ok了:
d(x0,x)ϵd(x^0,x')\le\epsilon

在這裏插入圖片描述

約束的定義

這裏我們用Δx\Delta x表示x0,xx^0,x'的差異
在這裏插入圖片描述
計算方式有幾種:
1.L2-norm
d(x0,x)=x0x2=(Δx1)2+(Δx2)2+(Δx3)2+...d(x^0,x')=||x^0-x'||_2=(\Delta x_1)^2+(\Delta x_2)^2+(\Delta x_3)^2+...
2.L-infinity
d(x0,x)=x0x=max{Δx1,Δx2,Δx3,...}d(x^0,x')=||x^0-x'||_\infty=max\{\Delta x_1,\Delta x_2,\Delta x_3,...\}
在這裏插入圖片描述
L2沒有辦法描述上面的改變,L-infinity則可以。
3.其他方法

如何攻擊

Just like training a neural network, but network parameter 𝜃 is replaced with input xx'
x=argmind(x0,x)ϵL(x)x^*=arg\underset{d(x^0,x')\le\epsilon}{min}L(x')
這個看上去貌似不好解,我們可以把約束去掉來解:
x=argminL(x)x^*=arg\underset{}{min}L(x')
用GD來弄,這裏是對x進GD:
在這裏插入圖片描述

在這裏插入圖片描述
然後加入約束:
在這裏插入圖片描述
每次更新了xtx^t後判斷是否滿足條件,如果不滿足,那麼對xtx^t進行修正,使其滿足限制條件。修正函數如下:
在這裏插入圖片描述
思想是窮舉所有滿足約束條件的x,找一個離xtx^t最近的x來替換xtx^t。可視化後:
在這裏插入圖片描述

例子

在這裏插入圖片描述
攻擊結果如下:
在這裏插入圖片描述
看上去新圖片沒有什麼區別,但是我們用原圖片減新圖片,然後乘以50倍:
在這裏插入圖片描述
下面是把貓變成鍵盤的例子:
在這裏插入圖片描述
如果不是加入攻擊噪音,那麼結果是:
在這裏插入圖片描述

小結

橫座標代表輸入,縱座標代表輸出,也就是x屬於某個分類的概率:
x0x^0是高維空間中的一個點,在這個高維空間中,有一些神奇的方向,能夠使得x0x^0稍微變化一點點(下面第二張圖中,紅色部分非常尖,稍微移動就會到別的地方),會讓機器認爲圖片中的貓是其他東西。
在這裏插入圖片描述
在這裏插入圖片描述

其他方法Attack Approaches

• FGSM (https://arxiv.org/abs/1412.6572)
• Basic iterative method (https://arxiv.org/abs/1607.02533)
• L-BFGS (https://arxiv.org/abs/1312.6199)
• Deepfool (https://arxiv.org/abs/1511.04599)
• JSMA (https://arxiv.org/abs/1511.07528)
• C&W (https://arxiv.org/abs/1608.04644)
• Elastic net attack (https://arxiv.org/abs/1709.04114)
• Spatially Transformed (https://arxiv.org/abs/1801.02612)
• One Pixel Attack (https://arxiv.org/abs/1710.08864)
• …… only list a few
不同的攻擊方法只不過是損失函數中的約束d(x0,x)ϵd(x^0,x')\le\epsilon不同,以及最小化的優化方法不一樣而已,下面我們來看看一種FGSM

FGSM

Fast Gradient Sign Method雖然不是最強大的,但是它是非常簡單的一種方法。
xx0ϵΔxx^*\leftarrow x^0-\epsilon\Delta x
Δx=[sign(L/x1)sign(L/x2)sign(L/x3)]only have +1 or 1\Delta x=\begin{bmatrix} sign(\partial L/\partial x_1)\\ sign(\partial L/\partial x_2) \\ sign(\partial L/\partial x_3)\\\vdots \end{bmatrix}\\ only\space have\space +1\space or\space -1
例如L/x1>0\partial L/\partial x_1>0,無論是多少,都取:sign(L/x1)=1sign(\partial L/\partial x_1)=1
也就是說這個算法的思想就是隻攻擊一次就好(這個是一拳超人?就是攻擊一次的意思?)
在這裏插入圖片描述
也有文獻說多攻擊幾次效果更好,那是另外一種FGSM方法,這裏不考慮。
從圖形上看,如果是普通的GD,我們是先算gradient的方向,然後把x0x^0更新到x1x^1
現在FGSM是直接按照gradient的方向,一步直接更新到對應方向的右上角xx^*,(只要gradient的方向是第三象限的範圍xx^*都是右上角那個點,同理,如果只要gradient的方向是第二象限xx^*都是右下角那個點)
也就是說FGSM只在意gradient的方向,不在意它的大小。
在這裏插入圖片描述
因爲如果是普通的GD,配上比較大的LR的時候,會出現下圖的情況。這個就會超出限制條件,按照之前的講法,要把它拉回來(就是右上角那個點)。
在這裏插入圖片描述

White Box v.s. Black Box

上面講的攻擊方式是白盒攻擊,因爲我們需要知道模型參數:
• In the previous attack, we fix network parameters 𝜃 to find optimal xx'
• To attack, we need to know network parameters 𝜃
• This is called White Box Attack.
那麼我們如果保護好模型的參數,是否就會安全?
NO!,還可以做黑盒攻擊。

Black Box Attack

攻擊步驟如下:
1、現在有一個我們不知道參數的黑盒模型(深藍色);
2、我們用訓練黑盒模型的訓練數據自己訓練一個代理模型(淺藍色);
3、用代理模型生成一個攻擊對象(圖片);
4、用攻擊對象去攻擊黑盒模型。
在這裏插入圖片描述
那是不是意味我們還要保護好訓練數據呢?
不行。如果模型是一在線的圖像識別系統,那麼我們自己做一組圖片數據,丟到線上模型中,得到一組對應的標籤,用這個作爲訓練數據來訓練代理模型即可。
目前已經有相應的文章:https://arxiv.org/pdf/1611.02770.pdf
在這裏插入圖片描述
這裏顯示了用同一個代理模型還可以去攻擊不同黑盒模型。這個攻擊甚至可以泛化到:

Universal Adversarial Attack

根據之前說的攻擊方法,不同的圖片是需要不同的Δx\Delta x才能成功攻擊。但是研究表明,不同圖片實際上可以用同一個攻擊對象來進行攻擊。
參考文獻:https://arxiv.org/abs/1610.08401
在這裏插入圖片描述

Adversarial Reprogramming

本來模型是用來做圖像識別的(任務A),但是經過Reprogramming ,模型卻變成根據方塊數量來分類(任務B)
方塊數量多少對應的分類如下圖:
在這裏插入圖片描述
我們並不對模型本身進行改變,而是把方塊周圍加上噪音(合成):
在這裏插入圖片描述
然後把合成結果丟到模型,就得到相應的分類:
在這裏插入圖片描述
參考文獻:Gamaleldin F. Elsayed, Ian Goodfellow, Jascha Sohl-Dickstein, “Adversarial Reprogramming of Neural Networks”, ICLR, 2019

Attack in the Real World

現實應用中,模型部署後是通過攝像頭來捕捉輸入的,因此可以把噪音打印出來進行攻擊。
文獻:https://www.cs.cmu.edu/~sbhagava/papers/face-rec-ccs16.pdf
理論結果:
在這裏插入圖片描述
做出來的眼鏡:
在這裏插入圖片描述
作者(最左邊兩個)戴上眼鏡後模型識別的結果:
在這裏插入圖片描述
當然作者做了很多工作:

  1. An attacker would need to find perturbations that generalize beyond a single image.
    人臉識別會包含很多角度,因此攻擊對象也要考慮多個角度,不能只有正面才能攻擊。
  2. Extreme differences between adjacent pixels in the perturbation are unlikely to be accurately captured by cameras.
    要確保攻擊對象所包含的噪音能被攝像頭捕捉到,因此需要噪音包含比較大的色塊。
  3. It is desirable to craft perturbations that are comprised mostly of colors reproducible by the printer.
    需要考慮現實世界中存在的顏色。
    除了人臉識別,還有針對交通標誌識別的攻擊(https://arxiv.org/abs/1707.08945):
    在這裏插入圖片描述
    除了對圖片進行攻擊,還有別的方式的攻擊:
    針對聲音:
    https://nicholas.carlini.com/code/audio_adversarial_examples/
    https://adversarial-attacks.net/
    針對文字:
    https://arxiv.org/pdf/1707.07328.pdf
    在這裏插入圖片描述

Defense防禦

Adversarial Attack cannot be defended by weight regularization, dropout and model ensemble.
上面講攻擊的時候有研究表明攻擊是可以跨模型的,因此對模型做ensemble並不能很好的防禦攻擊。
防禦主要有兩種方式:
• Passive defense: Finding the attached image without modifying the model.
被動防禦方式:不改變當前的模型及參數,而是在模型的外面做一層防護,這個防護要找出那些奇怪的圖片,這塊內容應該有在Special case of Anomaly Detection中有提到。
• Proactive defense: Training a model that is robust to adversarial attack.
主動防禦方式:是直接增加模型的魯棒性來防禦攻擊。

Passive Defense

加的防護罩就是filter,這個filter不用很複雜,很簡單就可以做到防護,例如:平滑
在這裏插入圖片描述
看下具體結果,因爲這個貓之前有做過實驗,直接在之前的基礎上做即可:
原圖過filter後識別效果:
在這裏插入圖片描述
攻擊對象過filter後識別效果:
在這裏插入圖片描述
可以看到,只是機率稍微下降一點。因爲filter並不會改變原來的圖片,而是改變了攻擊的噪音。

Feature Squeeze

文獻:https://arxiv.org/abs/1704.01155
Squeeze 實際上就是不同的filter,如果一個圖片不做Squeeze 的結果和做Squeeze 的結果相差很多,說明圖片是被攻擊過的。
在這裏插入圖片描述

Randomization at Inference Phase

https://arxiv.org/abs/1711.01991
在識別之前對圖片做一些隨機的變換(不能太大,過大可能會影響識別結果):變換大小、填充等。
在這裏插入圖片描述

Proactive Defense

主動防禦的思想就是找到漏洞,然後補起來。
假設有訓練集:X={(x1,y^1),(x2,y^2),,(xN,y^N)}X=\{(x^1,\hat y^1),(x^2,\hat y^2),\cdots,(x^N,\hat y^N)\}
我們用X來訓練模型。這是一般的流程,接下來要找漏洞,要再訓練T個循環,每個循環中都要找出每個輸入圖片xnx^n的攻擊對象x~n\tilde x^n,然後把攻擊對象x~n\tilde x^n標記對應的類別標籤得到新的訓練集X={(x~1,y^1),(x~2,y^2),,(x~N,y^N)}X'=\{(\tilde x^1,\hat y^1),(\tilde x^2,\hat y^2),\cdots,(\tilde x^N,\hat y^N)\},再用X’來訓練模型。
在這裏插入圖片描述
這個方式有很大的缺點就是如果我們用算法A來找漏洞和補漏洞,如果用算法B來攻擊,模型是無法防護的。
因此如果黑客知道我們的算法A,就會想辦法用新方法來進行攻擊。
所以目前防禦是比較弱的。

總結

• Attack: given the network parameters, attack is very easy.
• Even black box attack is possible
• Defense: Passive & Proactive
• Future: Adaptive Attack / Defense

To learn more …
• Reference
https://adversarial-ml-tutorial.org/ (Zico Kolter and Aleksander Madry)
• Adversarial Attack Toolbox:
https://github.com/bethgelab/foolbox
https://github.com/IBM/adversarial-robustness-toolbox
https://github.com/tensorflow/cleverhans

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章