今天介紹一些 ADX 的性質,要探討兩個問題:
- 為何 ADX 會存在
- 有辦法達到可以抵抗 ADX 的強健 model 嗎
- 因為現在就算透過 Adversarial training,準確率相比 standard accuracy 還是很低
- 統計上是可能達到的嗎?
- 運算資源是否會很龐大
- 如果真的可以達到,是否會需要一些 trade-off
# 為何 ADX 會存在
以下內容來自 Adversarial Examples Are Not Bugs, They Are Features 這篇論文。
# Robust & Non Robust Features
原本人們以為,會存在 ADX 是因為資料中存在兩種 features:
- Useless features
- Useful features
也就是有用的跟沒用的。人們以為 ADX 就是在 Useless features 動過手腳所得到的結果。
但是上面那篇論文經過實驗發現,實際上正確來說是三種 features:
- Useless features
- Useful features
- Robust features
- Non-Robust features
也就是有用的 features 中其實有兩種,強壯跟不強壯的。
## Robust features 跟 Non-Robust features
該篇論文把資料集,全都轉換成 ADX 之後,再拿去重新訓練一個新網路,卻發現依舊可以有一定的正確率。
原因就是圖片中存在 Robust features 跟 Non-Robust features。
- Robust features:經過 Adversarial 攻擊後,依舊跟原 label 相關
- 也就是攻擊後人感覺上沒有差異的部分
- Non-Robust features:經過 Adversarial 攻擊後,變得跟原 label 無關
- 這些 features 是細小的,人類難以察覺
- 例如帆船圖片中,存在大量小小的三角形結構,這樣的結構就是一種 Non-Robust features
- 但也導致只要其他圖片被修改成也具有小小的三角形結構,就會被判定為帆船
但是在訓練的時候我們並沒有給予「選擇特徵的限制」,因此他兩種 features 都會學到:
- Robust features:原本可以幫助他判斷圖片,但是因為經過了攻擊,會使 model 誤判
- 例如原本應該是屬於狗的 Robust features,現在被認為是帆船的
- Non-Robust features:就算狗圖片被攻擊的 label 是帆船,但是 model 還是學到了那些小小的 Non-Robust features
- 因此就算在測試的時候遇到帆船圖片,但因為 model 學會了這些 Non-Robust features,如果帆船圖片中 Robust features 的部分很少,那麼 model 就可以根據 Non-Robust features 做出正確判斷
# 實驗內容
## Set up
實驗情境是對單純的 Binary Classification:
$$
(x,y)\in \mathcal{X}\times \{\pm 1\}
$$
然後資料是以某個未知的分佈,從 $\mathcal{D}$ 取樣。
接著他定義 feature 是一個 function:
$$
f:\mathcal{X}\rightarrow \mathbb{R}
$$
也就是把原本的資料,對應到一個實數。
:::warning
意思是將資料 $x$ 透過模型所萃取出來的一個特徵(實數值)
:::
然後實驗有做一些基本的位移縮放,使得:
$$
E_{(x,y)\sim \mathcal{D}}[f(x)]=0
$$
$$
E_{(x,y)\sim \mathcal{D}}[f(x)^2]=1
$$
平均值為 0 ,變異數為 1,以方便討論。
## Useful, Robust, Non-robust Features
然後他又定義了:
- $\rho$-useful features
- $\rho$ 是一個非負的常數
$$
E_{(x,y)\sim \mathcal{D}}[y\cdot f(x)]\ge \rho
$$
>也就是說該資料的 features 跟其類別同號,跟其類別正相關,有助於判別其類別。
- $\gamma$-useful features
- $\gamma$ 是一個非負的常數
$$
E_{(x,y)\sim \mathcal{D}}[\underset{\delta \in \Delta (x)}{\text{inf}} y\cdot f(x+\delta)]\ge \gamma
$$
>也就是說該資料就算經過攻擊,得到的 features 也會跟其類別同號。
有了上面的定義,就知道所謂的 Useful, non-robust features 就是:
- 存在一些 $\rho$ 使得資料是 $\rho$-useful features
- 但是不存在任何一個 $\gamma$ 使得資料是 $\gamma$-useful features
- 也就是資料被攻擊後就喪失了跟原本 label 的一致性
## Classification and Training
實驗的分類問題就是常見的樣子:
$$
C(x)=\text{sgn}\left(b+\sum_{f\in F}w_{f}\cdot f(x)\right)
$$
也就是把各種從 $F$ 裡面的 features $f$,對應上一個權重 $w_{f}$,然後看看分數如何。
而有了上面的分類定義後,標準的 training 就是在最小化:
$$
E_{(x,y)\sim \mathcal{D}}\left[\mathcal{L}_{\theta}(x,y)\right]=-E_{(x,y)\sim \mathcal{D}}\left[y\cdot \left(b+\sum_{f\in F}w_{f}\cdot f(x)\right)\right]
$$
也就是希望訓練出完美的權重,可以判別出 $\rho$-useful features。
而 Robust training 則是改成最小化:
$$
E_{(x,y)\sim \mathcal{D}}\left[\underset{\delta \in \Delta (x)}{max}\mathcal{L}_{\theta}(x+\delta,y)\right]
$$
也就是希望訓練出完美的權重,可以判別出 $\gamma$-useful features。
:::info
上面可以知道,經過 Robust training 的 model 就可以只專精於辨認出 $\gamma$-useful features
:::
## Construct A Robust Dataset
有了上面的訓練定義,我們希望透過一個 robust model $C$ 找出「Robust Dataset」,滿足:
$$
E_{(x,y)\sim \mathcal{\hat{D}_{R}}}[y\cdot f(x)]=
\left\{\begin{matrix}
E_{(x,y)\sim \mathcal{D}}[y\cdot f(x)] & \text{if } f\in F_C\\
0 & \text{otherwise}
\end{matrix}\right.
$$
由於 $C$ 是一個強壯的 model,$F_C$ 就是那些 robust features,上面目的就是希望讓 $\hat{D}_{R}$ 的 features,可以只剩下 robust features,其他 features 則是期望是 0 (跟 x 不相關)。
那麼實際上要怎麼獲得 Robust Dataset?論文給出了下面的演算法:
1. 先透過 AdversarialTraining 得到一個 $C_R$
2. 從 $C_R$ 中,把 input layer 到最終的 representation layer 拿出來得到 $g_R$
- 但是不是到最終輸出層,因為最終輸出的結果會是 class 之類的
- 我們要的是他再前一層那個終極萃取出的特徵
4. $D_R\leftarrow \{\}$
5. 對所有原本資料集 $D$ 當中的每個資料 $(x,y)$
- 根據同樣的分佈,隨機從 $D$ 當中採樣一個點 $x'$ 出來
- 使用 $l_2-PGD$ 或其他 GD based 方法,去一步步更新 $x'$
- 使得 $||g_R(z)-g_R(x)||_2$ 達到最小
- 把 $(x',y)$ 塞進 $D_R$
6. 回傳 $D_R$
:::danger
可能要找時候研究細節
:::
## 成果
強壯資料集因為只剩下 robust features,所以想要用任意的圖片做攻擊,會因為缺少了 non-robust features 而攻擊不易成功。
他們還依此方法弄出了三種資料集:原始、Robust、Non-Robust 三種資料集。
- 對照組是使用原始資料集,使用標準訓練,檢測標準以及攻擊兩種情況的準確率
- 標準下的準確率很高,但是攻擊後的準確率十分低
- 第一組是使用原資料集,但是使用 Adv 訓練
- 雖然犧牲了一點標準情況的準確率,但是攻擊情況的準確率大幅提高
- 第二組是標準訓練,但是使用 Robust 資料集
- 雖然標準情況的準確率又更低了一些
- 但是因為是透過 Robust 資料集訓練,所以具有一定的攻擊情況準確率
- 最後一組是標準訓練,但是使用 Non-Robust 資料集
- 標準情況的準確率一樣比 Adv 訓練低一些
- 但是對於攻擊情況的準確率,低於對照組
## 對 Transferability 的影響
Robust 跟 Non-Robust features 也可以用來解釋 Transferability。
他們實驗有發現,越強的 model,會使用越多的 Non-Robust features 幫助判斷以達到封頂的準確率。
但這也就代表,他們都容易因為 Non-Robust 的背叛而受到影響,也就是為什麼 Adv 具有傳遞性。
>實驗發現標準情況下的準確率跟轉移成功率有正相關
## Theoretical Framework
>請參考講義
他們用高斯分佈,取樣出兩團資料,這兩團資料起初在 feature 1 很容易分別,在 feature 2 則不容易區分,也就是線呈現一個斜率較低的狀態。
接著經過稍微強的 Adv training,可以發現模型因此注意到這兩筆資料在 feature 1 很容易分別,所以使兩坨資料的分佈變得更圓,也就是已經逐漸只以 feature 1 作為分類標準。
最後則是改用更強的 Adv training,可以發現兩組資料的分界線已經變成只依靠 feature 1 了。
:::info
老師說資料會以中心變「圓」,是因為採用 $l_2$
:::
:::warning
實驗的結果是,原始 data geometry 的 misaligment,是其 Vulnerability 的原因
:::
## model 跟人類不一樣
回顧上次提到的, model 在做分類的時候,他們看的跟人類所注意的不一樣,他們還會多注意到那些人類觀察不到的 Non-Robust features。
# Discussion on Distill
老師說那篇論文出來之後引起很大回想,所以 Distill 這個論文網站,當初有邀請眾多學者跟作者做一答一覆的對談。
其中有趣的對談包括:
## Learning From Only High Frequency Data
這篇論文的作者(Yin et al. NeurIPS’19)是將圖片分成高低頻,然後他們發現只拿高跟低頻去訓練,依舊可以達到不錯的正確率。
而這些低、高頻圖片,跟上面提到的 Robust、Non-Robust 圖片概念很類似。
- 低頻對應到 Robust
- 高頻對應到 Non-Robust
他們還發現,做 Adv training 跟把圖片加上 Gaussian Noise,都可以達到類似的效果:「增加圖片對高頻區域的 robust 性」
>不過 Gaussian Noise 會犧牲一些低頻的 robust 性,Adv training 則是都顧到了
## Non-transferrable Adversarial Examples
這篇的作者(Nakkiran, Distill’19)是想表示問題不一定是出在 data 上,有可能是結構的問題,所以他們真的訓練出了一種不具轉移性質的資料:
$$
-\left(\nabla_x L(f,x_t,y_targ) + \underset{i}{\mathbb{E}}[\nabla_x L(f_i,x_t,y)] \right)
$$
上面是他們在產生 ADX 時選擇的方向;$f$ 是 target model,${f_i}$ 則是其他模型的 ensemble 模型。
也就是讓 $f$ 朝特定 target label 前進,其他模型則是朝原本的 label 前進。
但是他們驚訝的發現,這樣所得到的 ADX,並不具有 useful features,也就是他們產生的 ADX 是只修改 non-useful features 而得到的。
也就是說這些 ADX 就是真的是 BUG。
## ADX arise from overfitting
有時候 ADX 會出現,其實可能是由 overfitting 導致的。
邊界長的太偏頗,很容易就可以給你翻轉結果。
---
# ADX 統計上來講是不可避免的
## 定義
首先作者 \[Fawzi et al. NeurIPS’18\] 定義了一個 Robustness 距離:
$$
r*(x)=\underset{r\in \mathbb{R}^d}{\text{argmin}}||r||_2\text{ subject to }\hat{h}(x+r)\ne \hat{h}(x)
$$
其中 $\hat{h}$ 是分類的邊界,$x$ 是某筆資料;上面的式子是在說,以 $x$ 為出發點,找到離邊界最近的距離。
有了這個最近的距離後,就可以定義一個 global measure:
$$
\rho_{\text{adv}}(\hat{k})=\mathbb{E}_{\mu}(||r^*(x)||_2)
$$
也就是每個點到邊界的的最短距離的期望值。
## Example Problem
>請參考講義的圖
作者用了橫直條紋的圖片,然後可以找到一個最佳的 Linear 分類器長得像:
$$
f_{\text{lin}}(x)=\frac{1}{\sqrt{d}}\mathbf{1}^Tx-1
$$
也就是把每個 pixel 加起來後除以 pixel 數量的根號,再減掉一個 threshold,這裡是 1。
然後就可以知道:
- 這個分類器的「Risk」是 0:$R(f_{\text{lin}})=0$
- 「Risk」聽老師講下來應該就是錯誤率
- 但是這個分類器得 Robust 程度,或者說剛剛的 $\rho$ 值卻會被 bound 住
- $\rho_{\text{adv}}(f_{\text{lin}})=\sqrt{d}\cdot a$
- $a$ 是我們自己定義,弄在圖片的偏差值,可以看講義的圖
會發現只要 $a$ 夠小,Robust 程度就會很低。
然後作者就改成使用一個 Quadratic 的分類器:
$$
f_{\text{quad}}(x)=x_1x_2+x_3x_4-x_1x_3-x_2x_4
$$
$x_i$ 代表圖片的第幾個 pixle,這裡作者為了方便討論,所以情境只有 4 個 pixel。
然後一樣可以發現:
- 這個分類器的「Risk」是 0:$R(f_{\text{quad}})=0$
- 但是這個分類器得 Robust 程度,卻是一個常數
- $\rho_{\text{adv}}(f_{\text{quad}})=\frac{1}{\sqrt{2}}$
:::warning
這件事可以結合上週提到的,如果 model capacity 不夠,那麼他可能先天上就不太能夠抵抗 ADX。
:::
## Fundamental Limit of Robustness
該作者又很狂的推導出所有線性分類器的 $rho$ 值,可以被某個上限 bound 住:
$$
\rho_{\text{adv}}(f)\le \frac{1}{2}||\mathbb{E}_{\mu_1}(x)-\mathbb{E}_{\mu_{-1}}(x)||_2+2MR(f)
$$
- $\mathbb{E}_{\mu_1}(x)-\mathbb{E}_{\mu_{-1}}(x)$ 這個部分是指兩種類別(1 跟 -1)的資料,期望上的差距是多少。
- 這部分叫做 distinguishability measure,是跟分類器無關,只跟資料有關部分
- $M$ 老師說是 model 的 Norm 的最大值,這可能要去看論文怎麼說
總之上面的公式可以知道兩件事情:
- $rho$ 值先天上就跟資料的兩種類別,期望上的差距有關
- 如果兩種資料先天上距離就很近,那麼 Robust 程度低是難免的
- $R$ 值越低,或者說模型正確度越高,伴隨著 $\rho$ 值上限越低
- 也就是說無法做到高準確率,同時又很強壯
然後就可以畫出 $\rho$ 對 $R(f)$ 的圖形,線的上半部是理論上模型做不到的
作者也有推廣到非線性的模型上面,一樣可以看到類似的圖形,只不過變成不是斜直線。
## From Adversarial to Random Noise
上面都在探討 Robustness 跟 ADX 之間的關係,作者就想看跟平常提到的 random Noise 能不能有相關連結。
上面提到的距離函數就會變成:
$$
\min_{t}|t|\text{ subject to }f(x+tv)\ne f(x)
$$
其中 $v$ 是從 $\mathbb{S}^{D-1}$ 用 uniform 採樣出的隨機一個方向。
也就是改成看隨機的某個方向上的最短距離。
然後作者一樣很狂的推導出來,在高機率之下,會滿足:
$$
||r^*||_2=\Theta\left(\frac{1}{\sqrt{D}}||r^*_{\text{rand}}||_2\right)
$$
>高機率是因為方向是隨機選取的
上面這個結論可以發現,相比 Random Noise,想要達到 Adversarial noise 的 Robustness,是更困難的,因為兩者的距離差了 $\frac{1}{\sqrt{D}}$。
如果把 $||r^*_{\text{rand}}||_2$ 的部分當作常數,會發現 $||r^*||_2=O\left(\frac{1}{\sqrt{D}}\right)$,維度越高,越困難。
## Limits on Adversarial Robustness of Any Classifier
作者在另一篇論文做了一件更猛的事情,他希望證明改成對「任何的分類器」,所以:
- 他改成對資料下手(做假設),假設真實資料是透過一個 smooth generator 產生的
- 資料分佈 $\mu=g(\mathcal{N}(0,I_p))$
- $g$ 是那個 smooth generator, $z,z'$ 是透過 $\mathcal{N}(0,I_p)$ 採樣得到的點,$g$ 會根據採樣倒的點吐出一張圖片
- smooth 意思是指 $\forall z,z', ||g(z)-g(z')||\le L||z-z'||_2$
- $L$ 是 Lipschitz constant,一個常數,請見 [WIKI](https://zh.wikipedia.org/zh-tw/%E5%88%A9%E6%99%AE%E5%B8%8C%E8%8C%A8%E9%80%A3%E7%BA%8C)
直白上來說,就是假設產生出的圖片是比較平滑的,不會變動很大。
然後作者就證明出,如果可以找到一個 generator $g$ 在 Wasserstein sense 下,保證 $\delta$ 的近似於原本的分佈 $mu$:
$$
W(g(\mathcal{N}(0,I_p)),u)\le \delta
$$
就可以證明距離函數 $r^*$ 的期望值為:
$$
\mathbb{E}_{x\sim \mu}(r^*(x))\le L\left(\frac{log(4\pi log(K))}{\sqrt{2log(K)}}\right)+\delta
$$
$K$ 是 class 的數量,$L$ 一樣是 Lipschitz constant
- 如果這個 generator 非常的 smooth
- 也就是 $L$ 越小,那麼 Robust 就上限就很低
- 如果 class 數量越多,Robust 上限也會很低
:::warning
**ISSUE**
但是前提是假設資料是從 smooth generator 產生的;可是現實中資料不一定都是這樣子產生的
:::
---
# Robust model is computationally intractable
想要強壯,可能需要付出極高額的代價。
## Statistical Query (SQ) Learning
在介紹之前,老師先提到一個 「frame work」,SQ Learning,是 Kearns 在 1988 年提出的論文 \[Kearns 1998\]。
- 所謂 SQ Learning,意思是你不能夠拿到真正的 raw data,你只能根據某個分佈去 Query Data
- Query 由自己定義,例如以 Binary 分類,你要定義一個 $h$ 函數:
- $h:\mathbb{R}^d\rightarrow[-1,1]$
- 當你 Query 的時候,他就會回傳 $\mathbb{E}_{x\sim D_0}[h(x)]\pm \tau$ 跟 $\mathbb{E}_{x\sim D_1}[h(x)]\pm \tau$
- $D_0$ 跟 $D_1$ 代表會回傳 -1 跟 1 的資料分佈\
- $\tau$ 是某個 noise
大多的演算法都可以歸類到這個 framework:
- 例如常見的 SVM, SGD
- KNN 是個少見的例外
## SQ 用途
當初作者是想透過 SQ 這個 framework 來證明:
- Robustness to random classification noise
- Differential privacy
但是後來也發現 SQ 拿來證明一些事情在有 nosie 時的 hardness 時很方便:
- Learning parity with noise
- Learning intersection of halfspaces
- halfspaces 就是 Linear 分類器
- Robust estimation of high-dimensional Gaussians
## 結論
作者最終得到一個結論:
:::info
- 如果學習一個 task,需要 super-poly(d) 次的 queries,伴隨著 $\frac{\epsilon}{poly(d)}$ 的 noise
- 那麼不太可能有一個演算法,可以在 poly(d) 的時間內達到 $\epsilon$ 的正確率。
會說不太可能是因為有一個很奇怪的反例;但是因為太奇怪了,所以作者認為大多應該都是不太可能的
:::
## Hardness of Adversarial Robustness
有了上面的結論就可以證明 Adversarial Robustness 在 SQ framework 下,是很難的事情:
- 作者造了兩個資料分佈,在 $\mathbb{R}^d$ 的空間
- 這兩個分佈長的很奇葩,是 「discretized」 Gaussian
- 請見講義的圖
- 存在一個 robust 的分類器,需要 poly(d) 個資料來學習
- 但是這樣的話會需要 $2^{d^{\Omega(1)}}$ 次的 queries
根據上面的結論,可以知道很難在 poly(d) 的時間內達成。
反觀,如果是一個 non-Robust 的分類器,就可以只需要 poly(d) 的時間就學習完成。
:::warning
**ISSUE**
因為作者是由一個「造」出來的分佈來證明,但是實際上的資料分佈很有可能不是都是那樣
:::