到了 2014 年,當時最先進的神經網路有一個已知但無法解釋的失效模式:只要對影像做極微小、刻意構造的最壞情況擾動——通常小到人眼無法察覺——網路就會以高置信度將其分類錯誤。同一張經過調整的影像往往能騙過許多在不同資料上訓練的不同架構,這暗示缺陷存在於訓練配方本身,而非任何單一網路。

早期的解釋歸咎於深度網路所謂的極端非線性,加上過擬合,然而 dropout、預訓練與模型平均等標準修正方法並未消除這個弱點。Goodfellow、Shlens 與 Szegedy 檢驗了相反的假設:訓練良好的架構(ReLU、maxout、LSTM)刻意設計得幾乎是線性的,而在高維輸入空間中,單憑線性就足以造成問題。在數十萬個像素中,每個像素只要被調整不到一個位元的影像精度,點積中的微小項就會累加成網路活化值的一次巨大變化。

這個觀點催生了一種快速攻擊法:在輸入附近將成本函數線性化,並依梯度的正負號對其施加擾動,只需一次反向傳播即可完成。在 MNIST 上,該方法讓一個淺層 softmax 模型達到 99.9% 的錯誤率,讓一個 maxout 網路達到 89.4% 的誤分類率,兩者皆以高置信度出錯;在 ImageNet 上,每個像素僅 0.007 的擾動就把一隻熊貓變成了長臂猿。廉價的生成方式也改變了防禦策略:對此類範例進行對抗訓練,能提供超越單獨使用 dropout 的正則化效果,並降低測試集誤差。

這項工作也為實務工程師揭開了此失效模式的神祕面紗。2015 年 12 月下旬,Recurse Center 的 Codewords 發表了 Julia Evans 的圖解逐步教學,透過 Docker 化的 notebook 重現了對 GoogLeNet 的攻擊——一張全黑影像變成了廚房紙巾,一隻熊貓變成了禿鷲——Hacker News 的討論串獲得 268 分與 66 則留言,讀者指出該論文仍適用於後來幾波的神經網路。

假設線性:沿梯度的正負號施加擾動,再以這些攻擊進行訓練

先前的嘗試歸咎於非線性與過擬合;假設相反的情況反而讓對抗範例變得可預測,而非神祕莫測

此機制隨維度擴展:低於感測器精度的擾動仍會在數十萬個像素上累積,造成決定性的輸出變化

每次攻擊只需一次反向傳播,使對抗訓練變得切實可行,將一種失效模式轉化為勝過單獨使用 dropout 的正則化器

它解釋了遷移性:任何在高維中表現為線性的模型都共享這個盲點,因此一個範例就能騙過許多架構與訓練集

當模型以看似神祕的方式失效時,先檢驗最廉價的解釋——如果你能廉價地生成該失效,你也能廉價地針對它進行訓練。

第一版於 2014 年 12 月 20 日發表於 arXiv,並於 2015 年 3 月修訂;其擾動量為 0.007 的熊貓變長臂猿影像,成為對抗範例的經典圖像。一年後,Julia Evans 的 Codewords 逐步教學讓讀者能在沒有 GPU 的筆記型電腦上重現這個把戲——一隻熊貓變成了禿鷲,一個黑畫面變成了廚房紙巾——並在 Hacker News 上獲得 268 分與 66 則留言,其中一位讀者稱該論文在很大程度上仍適用於後來幾波的神經網路。

追溯依據

參考來源

  1. Explaining and Harnessing Adversarial Examples (arXiv:1412.6572) arXiv · arxiv.org ·
  2. How to trick a neural network into thinking a panda is a vulture Codewords (Recurse Center) · codewords.recurse.com
  3. How to trick a neural network into thinking a panda is a vulture — Hacker News discussion Hacker News · news.ycombinator.com ·