第33堂課:Adversarial Attack
在現實世界中部署深度學習系統時,我們不僅要求模型在測試集上取得高準確率,更要求模型具備魯棒性(Robustness)。這堂課由李宏毅教授深入探討**對抗性攻擊(Adversarial Attack)**的原理、方法,以及相對應的防禦機制。
1. 概念引入與動機 (Motivation)
當我們將訓練好的神經網路部署到實際應用(如垃圾郵件分類、惡意軟體偵測、入侵偵測系統、自動駕駛等)時,系統可能會面臨來自惡意第三方的攻擊。攻擊者會故意設計特殊的輸入(稱為對抗性樣本, Adversarial Examples)來欺騙神經網路,使其做出極其離譜的錯誤判斷。
核心範例:欺騙影像分類器
- 良性影像(Benign Image):一張可愛的橘貓照片,ResNet-50 預測其為 “Tiger Cat”(置信度 0.64)。
- 對抗性影像(Attacked Image):在貓的照片中加入極其微小的擾動(Perturbation),在人類眼中,這張照片與原圖完全無異,但 ResNet-50 卻以 1.00 的置信度將其判定為 “Star Fish”(海星)或以 0.98 的置信度判定為 “Keyboard”(鍵盤)。
- 如果將加入的擾動放大 50 倍,我們會看到高頻的雜訊圖案。這證明了這種攻擊絕非隨機雜訊,而是經過精心設計的。
graph TD A["對抗性攻擊 (Adversarial Attack)Node1["] --> B["]攻擊目標分類"] A --> C["攻擊限制條件"] A --> D["攻擊演算法"] A --> E["攻擊場景與類型"] A --> F["防禦策略"] B --> B1["非目標攻擊 (Non-targeted)"] B --> B2["目標攻擊 (Targeted)"] C --> C1["L2 範數 (L2-norm)"] C --> C2["L-infinity 範數 (L-infinity-norm)"] D --> D1["FGSM (單步梯度符號法)"] D --> D2["Iterative FGSM (迭代法)"] D --> D3["單像素攻擊 (One Pixel Attack)"] E --> E1["白箱攻擊 (White Box)"] E --> E2["黑箱攻擊 (Black Box)"] E --> E3["實體世界攻擊 (Physical Attack)"] E --> E4["模型後門攻擊 (Backdoor Attack)"] F --> F1["被動防禦 (Passive Defense)"] F --> F2["主動防禦 (Proactive Defense)"] F1 --> F11["影像平滑化 (Smoothing)"] F1 --> F12["影像壓縮 (Compression)"] F1 --> F13["隨機化機制 (Randomization)"] F2 --> F21["對抗性訓練 (Adversarial Training)"]
2. 如何進行攻擊 (How to Attack)
對抗性攻擊的本質是一個帶有約束條件的優化問題。
2.1 數學形式化
設原始良性輸入為 ,模型預測輸出為 ,真實標籤為 。 我們希望尋找一個新的輸入 ,滿足以下兩個條件:
- 欺騙模型:使得模型的預測輸出 與我們期望的結果一致。
- 人類無法察覺: 與 的差距極小,即距離 。
根據攻擊的目的,可分為以下兩類:
A. 非目標攻擊 (Non-targeted Attack)
攻擊者只想讓模型認錯,不介意認成什麼。 其中 代表模型預測與真實標籤之間的交叉熵(Cross-Entropy)損失。我們通過最小化負交叉熵,來最大化預測與真實標籤之間的距離。
B. 目標攻擊 (Targeted Attack)
攻擊者希望模型將輸入錯誤地分類為特定的類別 (例如:將貓誤認為海星)。 我們同時要求拉大與真實標籤 的距離,並縮小與目標標籤 的距離。
2.2 人類感知約束 (Non-perceivable Constraint)
為了確保人類看不出圖片被修改過,必須限制 。常用的度量指標有:
-
-norm( 範數):
- 範數測量的是所有像素擾動的平方和。
-
-norm( 範數):
- 範數測量的是所有像素中改變最大的那一個像素之改變量。
為什麼在影像對抗攻擊中 比 更符合人類視覺特徵?
假設我們將單一像素的藍色通道強度改變非常多,而在其他像素上不作任何修改。這會使該像素出現一個非常顯眼的「藍點」( 很大,但 可能很小),人類一眼就能看出異狀。 相反地,如果我們把每個像素的數值都微調一點點( 很小,但累積起來的 可能跟上述藍點相同),對人類來說整張圖看起來幾乎完全沒變。因此, 限制更適合作為人類感知的約束條件。
3. 攻擊演算法 (Attack Approaches)
對抗攻擊與一般模型訓練的優化目標相反:模型訓練是固定輸入,更新參數 ;對抗攻擊則是固定參數 ,更新輸入 。
3.1 基礎梯度下降法 (Gradient Descent)
從原始影像 出發,在每一次迭代中,朝著損失函數 的梯度相反方向更新輸入:
如果更新後的 超出了約束範圍(即 ),則需要將其投射(Project)回約束邊界上:
3.2 快速梯度符號法 (Fast Gradient Sign Method, FGSM)
由 Ian Goodfellow 等人提出,是一種單步(One-step)攻擊方法。其核心思想是沿著 限制範圍的對角線方向進行一次性最大程度的偏移。
更新公式為:
其中 為符號函數:
- 特點:運算速度極快,只需計算一次梯度即可完成攻擊。適合需要即時產生攻擊樣本的場景。
3.3 迭代快速梯度符號法 (Iterative FGSM / BIM)
將 FGSM 重複執行多次,並在每一步都將結果限制在以 為中心、半徑為 的 鄰域內:
- 特點:比單步 FGSM 具有更高的攻擊成功率,但計算代價較大。
4. 白箱攻擊與黑箱攻擊 (White Box v.s. Black Box)
根據攻擊者對被攻擊模型的了解程度,攻擊可分為兩大類:
| 攻擊類型 | 條件 | 攻擊機制 |
|---|---|---|
| 白箱攻擊 (White Box) | 攻擊者知道模型的架構、參數 。 | 可以直接對模型計算梯度 ,攻擊極易成功。 |
| 黑箱攻擊 (Black Box) | 攻擊者無法得知模型參數(例如線上 API),僅能輸入並獲取輸出。 | 利用**對抗樣本的轉移性(Transferability)**進行攻擊。 |
4.1 黑箱攻擊的運作原理
- 訓練替代模型(Proxy Network):攻擊者利用與目標模型相同或相似的訓練資料,自己訓練一個替代模型。如果拿不到訓練資料,可以通過向目標黑箱模型輸入大量樣本並收集其輸出來進行「知識蒸餾」。
- 產生對抗樣本:在替代模型上進行白箱攻擊,產生對抗樣本。
- 遷移攻擊:將這些對抗樣本直接輸入給目標黑箱模型。由於不同模型在同一個任務上學到的特徵空間往往高度相似,在 A 模型上起作用的對抗樣本,極大概率也能騙過 B 模型。
4.2 集成攻擊 (Ensemble Attack)
為了大幅提升黑箱攻擊的成功率,攻擊者可以使用多個不同的替代模型(如 ResNet-152, VGG-16, GoogleNet 等)共同產生對抗樣本。實驗表明,集成攻擊可以將黑箱遷移攻擊的成功率提升至接近 100%。
5. 為什麼對抗攻擊如此容易成功?
在 2019 年 Madry 等人的經典論文 “Adversarial Examples Are Not Bugs, They Are Features” 中,對此現象給出了深刻的解釋:
- 特徵的多樣性:數據集中存在兩種特徵:
- 魯棒特徵(Robust Features):人類可理解、且在微小擾動下不易改變的特徵(例如貓的耳朵、鬍鬚)。
- 非魯棒特徵(Non-robust Features):對分類極其有用、但非常脆弱且人類無法感知的微小高頻特徵。
- 神經網路的本質:機器在學習時,只要能降低 Loss,它並不在意特徵是魯棒還是非魯棒。對抗攻擊實際上是通過微調非魯棒特徵,使模型強行將其關聯到錯誤的類別上。
5.1 隨機方向與特定方向的差異
下圖展示了模型預測置信度在特徵空間中的變化:
- 隨機方向(Random Direction):若在隨機方向上加入擾動,真實類別的置信度下降得非常緩慢,模型表現出良好的泛化能力。
- 特定方向(Specific Direction):沿著對抗攻擊精心計算的梯度方向移動時,決策邊界極其陡峭。僅需微小的位移,模型預測就會瞬間掉入錯誤預測的深谷(例如從 “Tiger Cat” 突變為 “Keyboard”)。
[隨機方向]
置信度 1.0 |──────────────────── (平緩下降)
└───────────────────> 距離
[對抗方向]
置信度 1.0 |───┐
| │ (崖式下跌,瞬間突變為錯誤類別)
| └───────────────> 距離
6. 各種奇特的對抗攻擊變體
- 單像素攻擊 (One Pixel Attack):僅修改影像中的一個像素,就能讓神經網路將飛機看成青蛙。這通常使用無需梯度信息的差分進化演算法(Differential Evolution)來實現。
- 通用對抗擾動 (Universal Adversarial Perturbation):設計一個固定的噪聲圖像。只要將這個噪聲疊加在任何影像上,都能高概率地使模型分類失敗。
- 實體世界攻擊 (Physical World Attack):
- 對抗眼鏡:在眼鏡框上印製特殊的對抗圖案,配戴者可以讓百萬級人臉識別系統將自己識別為某位明星。
- 對抗路標:在「停止(STOP)」交通標誌上貼上特定的貼紙,自動駕駛系統會將其誤判為「限速 80」路標,造成嚴重安全隱患。
- 對抗性重編程 (Adversarial Reprogramming):在 ImageNet 分類器的輸入周圍貼上一圈精心設計的噪聲,可以強行將這個分類器改造成用來「數方塊數量」的模型。
- 模型後門攻擊 (Backdoor Attack / Data Poisoning):在訓練階段,將帶有特殊標記(Trigger,如右下角放一個小方塊)的數據與錯誤標籤一起餵給模型。訓練後,模型在普通數據上表現正常,但只要檢測到 Trigger,就會立即觸發後門,預測為指定類別。
7. 防禦機制 (Defense)
防禦策略主要分為兩大陣營:被動防禦(Passive Defense)與主動防禦(Proactive Defense)。
7.1 被動防禦 (Passive Defense)
在不改變神經網路本身參數的情況下,在模型輸入前加入一層「過濾器」,將可能存在的對抗擾動過濾掉。
- 影像平滑化 (Image Smoothing / Blurring):
- 使用高斯模糊等濾波器,可以有效抹平對抗攻擊所依賴的高頻微小噪聲。
- 副作用:會導致正常影像的邊緣變模糊,預測置信度會略微下降。
- 影像壓縮 (Image Compression):
- 由於對抗擾動多為微小的高頻訊號,使用 JPEG 等有損壓縮演算法重建影像,可以破壞這些脆弱的擾動。
- 生成器重建 (Generator-based Reconstruction):
- 將影像輸入一個預先訓練好的 Autoencoder 或 GAN-based Generator,重新生成一張乾淨的影像後再送入分類器。
- 隨機化防禦 (Randomization):
- 在將影像送入模型前,隨機進行微幅的尺寸縮放(Resizing)和填充(Padding)。
- 原理:白箱攻擊產生的像素級擾動需要與網路網格精確對齊。隨機的幾何變換會徹底打亂這種對齊,使攻擊訊號失效。
7.2 主動防禦:對抗性訓練 (Adversarial Training)
主動防禦的核心是在訓練階段就讓模型學會對抗攻擊。
演算法流程:
對於每一個訓練回合:
- 針對訓練集中的良性樣本 ,使用特定的攻擊演算法(如 FGSM)找出其對抗樣本 。
- 將對抗樣本 與正確標籤 組成新的訓練資料。
- 用這些對抗樣本更新模型參數 (本質上是一種數據增強 (Data Augmentation))。
對抗性訓練的缺點:
- 計算代價高:每次訓練迭代都要產生對抗樣本,訓練時間呈數倍增長。
- 難以應對未知的攻擊演算法:用 FGSM 訓練出來的模型,面對更強大的迭代攻擊(I-BIM、C&W)時,防禦能力仍然可能崩潰。
8. 隨堂測驗
問題 1
在對抗攻擊的約束條件中,為什麼 限制通常比 限制更符合「人類視覺無法察覺」的感知要求?
點擊展開解答
因為 $L_2$ 範數測量的是所有像素改變的平方和,若只將極少數(如一兩個)像素進行劇烈的顏色修改,其 $L_2$ 距離雖然很小,但會產生一個人類一眼就能看出的顯眼亮點;而 $L_\infty$ 限制了單個像素的最大改變量,能確保沒有任何一個像素會被過度修改,從而使微小的擾動均勻或隱蔽地分佈在整張影像中,更符合人類視覺上的無感特徵。問題 2
黑箱攻擊(Black Box Attack)在攻擊者完全不知道目標模型參數的情況下,主要是利用了對抗樣本的哪一個重要特性來達成攻擊?
點擊展開解答
主要利用了**對抗樣本的轉移性(Transferability)**。不同結構的模型在相同任務上學到的決策邊界具有相似性,因此在替代模型(Proxy Network)上產生的對抗樣本,有極高概率也能成功欺騙目標黑箱模型。問題 3
下列哪一種防禦手段屬於「主動防禦(Proactive Defense)」?其主要面臨什麼挑戰?