:::info 作業: - 可以把那五個模型弄成一個 ensemble 模型,來達到一次攻擊五個的目的 - 通常 single step method 比 iterative method 更有 transferability - 或者也可以參考其他增加 transferability 的方法,老師的實驗室也有做 ::: ## Black-box defense 的用途 雖然黑箱防禦得以成功是基於攻擊者不知道你的某些「祕密 secret」,但是一旦攻擊者知道,那就完蛋了。 但是黑箱防禦的用途是比較出來的,因為白箱防禦通常會伴隨 accuracy drop 以及 cost 變高,因此對於大規模且立即使用的情況,還是會採用黑箱防禦。 # Approach in Defense - Data pre-processing - 也就是弄一個外掛只對 input 做處理,不花心力去重弄 model - Model hardening - 這就是對 model 做些修改,例如更改結構,或是更改 train 的手法、參數等等 - Detection - 在原本的 model 之外有多一個 component 負責檢查有沒有受到攻擊 # pre-processing based approach 下面介紹一些 pre-processing based 的方法。 ## SHIELD & JPEG 這是老師在 intel 實習時的論文。 方法就是在資料傳進網路之前,經過 JPEG 的壓縮處理。 JPEG 的壓縮特性就是人肉眼難以察覺,而這些經過微調的 pixel 剛好大多也是 Adversarial attack 會改動的 pixel,也就因此進行了消除。 ### 壓縮幅度 JPEG 有所謂的壓縮幅度,100 是沒有壓縮,1 是極致壓縮。 而老師的研究發現,可以對圖片做更積極的壓縮,雖然人肉眼可能已經難以分辨,但是機器依舊分辨的出來,也就沒有降低 Accuracy,更是很好的消除 Adversarial attack。 ### Random 但是老師說攻擊者一就有可能進行攻擊:JPEG 當中的難點在於不可微的 step function,但是只要攻擊者用一個可微的近似函數,就一樣可以透過 FGD 等方式攻擊成功。 因此老師他們就加入了隨機的元素,他們把圖片對每 8x8 的範圍,隨機的挑選一個壓縮幅度的值,可能有些是 20 有些是 80,讓攻擊者更難去近似出帶有隨機的版本。 ## UnMask:Knowledge-Based Defense 這個是老師跟實驗室一起弄得;是一個灰盒測試,防守方的祕密是除了 Image Classifier,有偷偷外掛一個 Object Detecter。 一旦被攻擊,例如一台腳踏車被說成鳥,此時物件偵測器就會檢查圖片中有什麼物件,例如腳踏車的坐墊,輪胎,龍頭等等,然後看看這些物件跟「鳥」應該會出現的物件之間的交集大概如何,以此檢測出發生攻擊;亦或是由此還原出原本的物體。 ### 缺陷 首先對於內容廣泛的資料集,物件偵測器需要的「Annotation」會十分龐大,因此不適合大規模使用。 此外如果遇到 ILL Defined Problem,也就是圖片中同時出現鳥跟腳踏車,那就真的不知道該算錯或對了。 ### 攻擊方 在不知道有外掛物件偵測器得情況下,就很難除了讓 Classifier 辨識出錯,同時也讓 Object Detector 偵測成一樣的錯的物件。 ## Defense-GAN 先用健康的資料訓練出一個只看過正常資料的 GAN,也就是說他只會產生正常的圖片。 然後用這個 GAN,透過跟生成 ADX 一樣的手法(FGD),去生成出一張跟 ADX 最像的資料,然後改成用這個 GAN 生成的資料去做分類。 生成的時候是會一直跑一個迴圈,直到達到某個 threshold,而攻擊者在這裡就會遇到把 loop 展開,卻導致 Gradient 消失的問題。 :::warning - 黑箱防禦可以套用一句在安全領域的俗諺:「Security through obscurity」,也就是安全是建立在別人的不知情之下,一旦對方哪天知道了你的祕密,你就不再安全了。 - 只可以是應急的用途 - 黑箱防禦也難以去評估,因為你自己球員兼裁判,自己說攻擊者不知道哪些資訊 因此黑箱防禦並不是現在研究的方向。 ::: :::info 老師說今年的 CPPR 有一個對 fundation model 攻擊的競賽,老師說 final project 沒有想要弄得話,可以考慮弄這個。 ::: --- ## White-box defense 幾乎每天都有一篇白箱防禦的論文。 大多數的論文都說自己的防禦很強,但是通常過幾天就被攻破了: - 原因除了是更強的攻擊出現了 - 另一個原因是 Evaluation 做的不夠全面 # White-box defense 失敗的原因 上面是從研究的一開始到最近 ## 誤以為是 Overfitting 一開始研究員以為是模型發生 overfitting,所以使用了諸如 Dropout 等防止 Overfitting 的方法。 但是這些手段對 ADX 並沒有效果。 ## 採用 Weight Decay 但也有一些例如 較大程度的 Regularization 對 ADX 有效果,但同時也因為 underfitting 降低太多 Accuracy。 ## Cropping 等預處理方法 如果攻擊者不知道你有做一些預處理,例如 Cropping,那麼他有可能對整張圖片都加 noise ,但是卻因為 Crop 只剩下中間,導致攻擊不成功。 可是一旦攻擊者知道了你有做哪種預處理,例如 Cropping,他就可以對只在你 Cropping 的區域加 noise,這樣依然可以攻擊成功。 ## Adversarial Training with weak attack 待會的重頭戲,大致上就很像是用弱病毒作為疫苗。 但是並不能對普遍的攻擊演算法做防禦,也就是一旦遇到強的攻擊就會失效。 ## Defense Distillation 原本看起來可以可以普遍的防禦,但是後來發現只是幻覺。 其核心方法就是使用 Distillation。 Distillation 最早是拿來做模型的壓縮: - 先訓練好一個 initial 模型,其中 Label 是用 one hot 編碼 - 然後接著在訓練一個較小的模型,Label 則改成用剛剛 initial model 預測出來的機率分佈作為 label - 因為 initial model 提供了機率分佈這樣額外的訊息 - 所以通常只需要較小的 model 就可以訓練得很好 而拿來做防禦的話,兩個就一樣大,然後拿 Distilled 的 model 來防禦。 原本以為他什麼都能防,但是後來就被 Transfer 的技巧給破解了。 :::danger Distillation 是啥 :_ ) ::: ## Adversarial Logit Pairing (ALP) 也是當初看起來可以可以普遍的防禦,但是後來發現只是幻覺的例子。 >是 GAN 發明人其中一人的 Paper 所謂的 Logit Pairing 就是將訓練的 Loss 中加入 $\lambda\cdot L(f(x),f(x'))$ 這個 Logit 函數作為 REG。 >概念上是希望兩者差距越小越好 但是後來被高 iteration 次數的 PGD 給破解了,因為那段時候 PGD 都流行 40 次左右,所以作者才沒有在 Evaluation 的時候檢驗到。 :::warning 老師說在看防禦的 paper 時要注意,十分小心作者對 Evaluation 到底有沒有做好,不要因為作者是大佬就一昧的相信。 ::: ## Adversarial Training with strong attack 這是目前最終極的方法,但是無法普遍的適用所有的 threat model。 例如可以很好防禦 $l_2$ based,但是卻無法防禦 $l_{\infty}$ based。 --- # Obfuscated Gradients Athalye 這位大佬認為上面那麼多原本以為有用最後卻是幻覺的原因,是因為大多都只是在操弄 Gradient,讓 ADX 更難透過 GD 的方式找到。 但也終究是比較難找到而已,不是找不到。 下面是作者提出的三種操弄方法: - Shattered Gradient - 把梯度藉由不可微函數弄不見 - Stochastic Gradient - 把梯度加上一些隨機性 - Exploding & Vaninshing Gradient - 透過 for loop 的操作,使攻擊者在攻擊時一旦把 loop 展開 - 梯度會在過程中爆炸或消失 並且他在 2018 年會進 ICLR 報告白箱防禦的 9 篇 paper 前,就先發表一篇 [paper](https://arxiv.org/pdf/1802.00420.pdf) 說有 6 個完全是使用 Obfuscated Gradients 的方式,也因此把他們都弄倒了: - 有一篇則是部分 Obfuscated Gradients,所以只弄到 55% - 另外兩篇是做 Adversarial training,這才算是真正有意義的 ## 如何辨識是不是 Obfuscated Gradients 只要發生以下情況,就應該是使用了 Obfuscated Gradients - One-step attack 比 iterative attack 好 - 因為理論上越多次 iteration 應該要有更強的效果 - 黑箱攻擊比白箱攻擊好 - 代表 Evaluation 沒做好 - 任意攻擊沒辦把百分百攻擊成功 - 理論上沒有範圍限制的攻擊應該要可以百分百攻擊成功 - 原本拿來攻擊的 ADX 無法成功,但只要在他附近隨機找找,就找到了 ADX - 增加攻擊(noise)強度卻沒有增加成功率 - 理論上攻擊強度越高成功率會越高 - 但如果兩者呈現驟升等奇怪邊界,就是有問題 ## 如何破解 Obfuscated Gradients - Backward Pass Differentiable Approximation (BPDA) - 首先 Forward pass 一遍原本的網路 - 接著將當中不可微的部分換成可微的近似函數,然後開始傳統藝能 - 舉例來說把 JPEG 壓縮換成等身函數 - 簡單來說就是反向傳播時,把不可微的部分換成可微的近似 - Expectation over Transformation - 這個是處理帶有 stochastic 防禦的方法 - 在原本要最小化的部分,直接加入隨機的元素 - $\min_{x}f(x)\rightarrow \min_{x}E_{t\sim T} f(t(x))$ - 原本只帶入 $x$,現在換成帶入 $t(x)$ - $t$ 是以某種分佈從 $T$ 這個「各種轉換的集合」中取樣而來 - 簡單來說就是期望在各種隨機的轉換下的可以攻擊的很好 --- # Adversarial Training 標準的訓練如下: $$ \min_{\color{blue}{\boldsymbol{\theta}}}\sum_{\mathbf{x},y\in S}l(\mathbf{x},y;\color{blue}{\boldsymbol{\theta}}) $$ 現在改成是要帶有 $\color{red}{\boldsymbol{\delta}}$ 的情況下做最佳化: $$ \begin{align} \min_{\color{blue}{\boldsymbol{\theta}}}\sum_{\mathbf{x},y\in S}\max_{\color{red}{\boldsymbol{\delta}}\in\boldsymbol{\Delta}}l(\mathbf{x}+\color{red}{\boldsymbol{\delta}},y;\color{blue}{\boldsymbol{\theta}})\\ \end{align} $$ 但是有 min 又有 max,這不是一個簡單的問題。 >老師說這是一個 NP hard 的問題 ## Approximation 因此大多的做法都是分成兩部做來做近似: - 先做內部的 max,也就是先找到可以最大化 loss 的 $\color{red}{\boldsymbol{\delta}}$ - 接著再找到如此 $\color{red}{\boldsymbol{\delta}}$ 之下,可以使 loss 最小的 $\color{blue}{\boldsymbol{\theta}}$ ## Danskin's Theorem 有個理論向我們保證: - 如果 $l$ 對 $x$ 跟 $\theta$ 是連續可微的 - 而且內部的 max 也有找到最大值 - 那麼這樣分成兩部做得到的近似值會是最佳解 但是實際上: - 我們找內部的 max 的時候就已經因為非線性的特性,只能得到近似解 - 加上 $l$ 的內部使用的神經網路,具有很多非線性的結構,像是 ReLU 因此實際上這個做法並沒有任何理論保證,上面的理論頂多給我們概念上可以這樣做。 **但是實驗上,只要 attack 效果夠強,其結果都還挺不錯的。** ## Adversarial Training with FGSM 最一開始內部的 max 就是透過 FGSM 來獲得。 但是後來發現因為 FGSM 相比 PGD 比較弱,這樣訓練出來的網路只扛得住 FGSM 的攻擊,但是扛不住 PGD 的攻擊。 - 比較弱的原因是因為 FGSM 是個 One-Step 攻擊,通常很快就收斂了,沒辦法成功的找到 ADX。 - 同時也容易讓模型產生 label leaking 問題:模型在 ADX 的正確率反而比較高。 - 因為模型在訓練時反而記住只要有這些 noise 的,就是某某類別 - 反之 PGD 這種多段式更新的,就不容易有這種問題 ## Adversarial Training as Regularization Adversarial Training 可以看作是一種正則化。 用 linear model train MNIST 的實驗可以看出,加上 ADX 訓練後權重變 sparse 了,這個效果跟 L1 不謀而合。 而我們確實可以透過最簡單的 linear model,去證明 FGSM 效果就是 L1 REG 並且不同的 p 值會對應到不同的 norm,例如上面 FGSM 的 $p=\infty$,其就是對應到 1 norm;如果 p 是 2,就是對應到 2, >p 對應到 q norm,其中 $\frac{1}{p}+\frac{1}{q}=1$ ## Double Backpropogation 上面的關聯在非線性就不成立:( 經驗上,會加入 input 的梯度,作為一種正則化: $$ \min_{\color{blue}{\boldsymbol{\theta}}}\sum_{\mathbf{x},y\in S}l(\mathbf{x},y;\color{blue}{\boldsymbol{\theta}})+\lambda\cdot ||\nabla_{x}l(\mathbf{x},y;\color{blue}{\boldsymbol{\theta}})||_1 $$ ## Model Capacity 除了夠強的攻擊訓練,模型的「Capacity」也很重要。 原本 linear model 可以做得很好的資料,但是今天為了應對 ADX,有時就無法只靠 linear model 來抵抗,必須改用 non linear 的 model 才行。 ## 目前的問題 - PGD 的 Adversarial attack 目前訓練太花時間,無法用在大規模的模型上 - 每個 iteration PGD 都要花跟 model 更新差不多的時間 - 但是 PGD 通常需要 20 個 iteration 以上 ## Faster Adversarial Training 既然 PGD 基本上是 FGSM 加上隨機初始化,所以就有人直接用 FGSM 加上隨機的初始化,同時搭配一些供乘上的技巧,像是使用 Cyclic learning rate 動態調整學習率,跟 Mixed-precision arithmetic,混用不同精度的浮點數。 ## Stronger Adversarial Training 除了上面提到的 ALP,另外還有像是: - ALP 新版:上面的是被破解的版本,這個則是計算原本資料跟 ADX 的 $\mathbf{p}$ 差距的 L2 範數 - TRADES:使用 KL divergence 計算 $\mathbf{p}(\mathbf{x},\boldsymbol{\theta})$ 跟 $\mathbf{p}(\mathbf{\hat{x}'},\boldsymbol{\theta})$ 的相似度 - $\mathbf{\hat{x}'}$ 是 ADX,$\mathbf{p}$ 是 softmax 函數 --- # 如何知道自己的防禦是好的? ## 定義明確的 threat model - 攻擊者知道什麼?擁有什麼能力跟資源,或是限制為何? - 使用什麼資料集 - 因為現在依舊沒有可以普遍用於所有資料集的 defender - 所以建議先以某個資料集為主 ## 把過程明確的寫下來 甚至最好把你的 code 丟上網,讓其他人幫你檢驗。 ## Evaluation - 一定要有一個章節是設計 Adaptive attack - 檢查有沒有不小心用到 obfuscated gradients - 可以使用上面的檢查方法 - 嘗試不同的超參數
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up