@article{cohen2019certified,
title={Certified Adversarial Robustness via Randomized Smoothing},
author={Cohen, Jeremy and Rosenfeld, Elan and Kolter, J Zico},
pages={1310--1320},
year={2019}}
概
Certified robustness 區別於一般的啟發式的防御, 其在樣本\(x\)滿足一定的條件下(往往是一個類似於置信度的保證), 可以證明在某個范數球(往往是\(\ell_2\), 正如本文)內能夠免疫攻擊, 即
這些方法給出了一種不同於adversarial training的思路, 雖然到目前為止, 這些方法往往局限於\(\ell_1, \ell_2\)攻擊, 在更為常見的\(\ell_{\infty}\)的表現並不是特別好.
主要內容
方法很簡單, 訓練的時候:
- Given inputs \(x_i\),
- Generate gaussian noise \(\epsilon_i \sim \mathcal{N}(0, \sigma^2)\);
- Use \(x_i+\epsilon_i\) to train.
實際上這個訓練過程, 不從后面的理論的角度看, 可以把它和adversarial training做類比, 實際上都是一種在樣本點周圍試探性的訓練過程. 大概這樣子會讓整個的loss landscape更加光滑?
測試的時候就不同了, 首先需要認為地設定一個采樣次數\(n\),
- Given input \(x\)
- Generate \(n\) gaussian noise \(\epsilon_i, i=1, \ldots, n\).
- For each \(x+\epsilon_i\), the neural network will give a prediction label \(c_i\);
- Count the prediction labels and find the most frequent one, denoted by \(c\).
則\(c\)就是最終的預測是輸出, 簡而言之, 就是在預測的時候需要統計頻率, 這個實際上是尋找最大概率點.
定理1
定理1: 假設\(f:\mathbb{R}^d \rightarrow \mathcal{Y}\) 為一個任意的確定性或者隨機的函數, \(\epsilon \sim \mathcal{N}(0, \sigma^2I)\). 定義\(g\)為
假設\(c_A \in \mathcal{Y}\)且\(\underline{p_A}, \overline{p_B} \in [0, 1]\)滿足
則\(g(x+\delta)=c_A\) 對於任意的\(\|\delta\|_2 < R\), 其中
定理1總結來說就是, 當你的\(f(x+\epsilon)=c_A\)的概率比別的類別的概率大得多的時候, 由(1)式所得到的smooth版分類器\(g\)就能夠在某個半徑內免疫\(\ell_2\)攻擊.
但是需要注意的是, 普通的CNN的訓練過程可以保證置信度很高但沒法保證(2), 所以為了讓(2)式成立這才有了上面的一個訓練過程, 其中實際上有一個逼近的過程(雖然感覺有一點牽強):
測試過程中統計頻率的行為也得到了解釋, 實際上就是為了估計最大概率. 最后, 在作者的代碼中, 或者說算法中, 測試的predict可能有點麻煩, 實際上這是作者引入了假設檢驗, 意圖大概是為了有些時候沒法判斷到底哪個對干脆就不判斷來保證安全(測試的時候感覺是沒有必要的). 當然了, 在certify accuracy的估計中, \(\alpha\)就是相當有必要了.