第34堂課:Unknown Title (Video 34)
在本堂課程中,李宏毅教授深入探討了深度學習系統中的安全漏洞——對抗性攻擊 (Adversarial Attack) 與相應的防禦機制 (Defense)。
儘管深度學習模型在圖像識別、語音處理與自然語言處理等領域取得了令人矚目的成就,但這些模型本質上非常脆弱。攻擊者只需在輸入資料中加入極其微小、人類無法察覺的擾動(Perturbation),就能徹底誤導模型的判斷。本篇筆記將詳細整理對抗性攻擊的數學建模、主流攻擊演算法、黑箱與白箱攻擊、實體世界攻擊、防禦策略,以及背後的本質原因。
知識圖譜 (Knowledge Graph)
graph TD A["對抗性攻擊 (Adversarial Attack)Node1["] --> B["]攻擊目標與數學建模"] A --> C["攻擊演算法 (Attack Algorithms)"] A --> D["防禦機制 (Defense Mechanisms)"] B --> B1["無目標攻擊 (Non-targeted)"] B --> B2["有目標攻擊 (Targeted)"] B --> B3["距離度量 (L2 / L-infinity)"] C --> C1["白箱攻擊 (White Box)"] C --> C2["黑箱攻擊 (Black Box)"] C1 --> D1["FGSM / I-FGSM / PGD"] C2 --> D2["代理模型 (Proxy Model)"] C2 --> D3["整合攻擊 (Ensemble Attack)"] D --> E1["被動防禦 (Passive Defense)"] D --> E2["主動防禦 (Proactive Defense)"] E1 --> F1["平滑化與濾波 (Smoothing / JPEG)"] E1 --> F2["隨機化 (Randomization)"] E2 --> F3["對抗性訓練 (Adversarial Training)"]
一、 對抗性攻擊的核心概念與數學建模
對抗性攻擊的基本思路是:在原本模型能正確分類的良性輸入 上,加上一個微小的干擾向量 ,得到一個對抗性樣本 (Adversarial Example) :
這個 必須滿足兩個基本條件:
- 欺騙模型:模型對 的預測結果 與真實標籤 (或我們期望的良性分類 )大相徑庭。
- 人類無法察覺: 與 極其相似,以至於人類肉眼或直覺上根本無法區分兩者的差別。
1.1 攻擊目標函數 (Objective Functions)
根據攻擊者的目的,對抗性攻擊可分為以下兩類:
無目標攻擊 (Non-targeted Attack)
攻擊者的目標僅僅是讓模型「猜錯」,而不介意模型錯看成什麼。 我們希望找到一個 滿足:
其中損失函數 定義為:
這裡的 通常代表模型預測機率分佈 與真實標籤 之間的交叉熵 (Cross-Entropy)。最小化 即等同於最大化交叉熵,迫使模型對正確類別的預測機率降到最低。
有目標攻擊 (Targeted Attack)
攻擊者不僅要模型猜錯,還要模型「精準地錯看成指定的類別」 (例如:把貓看成「鍵盤」或「海星」)。 此時損失函數 定義為:
此公式前半部分 負責拉大預測結果與真實標籤的距離,後半部分 則拉近預測結果與攻擊目標標籤之間的交叉熵。
1.2 相似度量度 (Distance Metrics):人類不可察覺性的約束
為了確保擾動 對人類是不可察覺的,我們必須限制 與 之間的距離。數學上,我們使用 -norm 來限制干擾的大小:
最常用的距離度量有 -norm 與 -norm:
-
-norm: 衡量的是所有像素點改變的絕對值平方和。
-
-norm: 衡量的是所有像素中,改變幅度最大的那一個像素的變化量。
為什麼在對抗性攻擊中 比 更符合人類視覺?
下圖展示了兩種不同擾動模式在相同 距離下的視覺差異:
- 情況 A(小 ):每個像素都只改變極其微小的顏色。雖然所有像素都在變,但因為單一像素變化極小,人類視覺系統會自動忽略它,畫面看起來完全沒有變化。
- 情況 B(大 ):絕大部分像素不變,但將某一兩個像素的亮度與色彩調到極限(例如把一個像素從全黑變成全白)。此時,雖然其 距離與情況 A 相同,但人類肉眼會立刻注意到畫面上出現了一個異常的亮點(即雜訊顯而易見)。
因此,在圖像的對抗性攻擊研究中,-norm 被更廣泛地用作限制條件,以確保「人類不可察覺性」。
二、 對抗性攻擊演算法
在一般的機器學習訓練中,我們是「固定輸入資料 ,透過梯度下降更新模型參數 」:
而在對抗性攻擊中,我們是**「固定模型參數 ,透過優化演算法更新輸入資料 」**:
2.1 梯度上升/下降優化法 (Gradient Descent/Ascent on Input)
我們可以使用梯度下降法(針對無目標或有目標優化函數進行最小化)來迭代更新輸入 。 若以有約束條件的梯度更新步驟為例:
- 初始化:設定起始圖像為原始圖像 。
- 在每一次迭代 中,計算損失函數對於當前輸入 的梯度 :
- 沿著梯度反方向更新:
- 投影步驟 (Fixing / Projection):如果更新後的 超出了約束範圍 ,則必須將其投影回以 為中心、半徑為 的約束空間內。
2.2 快速梯度記號法 (Fast Gradient Sign Method, FGSM)
由 Ian Goodfellow 等人在 2014 年提出,是一種單步(One-step)、極高效率的攻擊演算法。它的核心思想是:不進行繁瑣的多次迭代,而是直接沿著梯度方向跨出最大的一步,以迅速達到 約束邊界的頂點。
其數學公式為:
其中, 是符號函數:
則為損失函數對輸入 的梯度:
為什麼 FGSM 使用 函數?
因為我們的約束是 ,這意味著每一個像素 的變化量 最大只能是 。 為了最大化(或最小化)損失函數,我們希望在每個維度上都跨出最大的步伐 。
- 如果梯度 ,說明增加 會使損失函數上升。若要降低損失,我們應該減去 。
- 如果梯度 ,說明增加 會使損失函數下降。若要降低損失,我們應該加上 。
因此, 剛好能讓每一個像素都移到 超立方體(Hypercube)中使損失最低(或最高)的那個頂點上。
2.3 迭代型快速梯度記號法 (Iterative FGSM / PGD)
由於 FGSM 只跨出一步,方向可能不夠精準。 Iterative FGSM (I-FGSM) 則是將大步 切成許多小步 進行多次迭代,並在每一步進行裁切(Clips),確保圖像不超出限制。
投影梯度下降法 (Projected Gradient Descent, PGD) 實質上與 I-FGSM 相似,常被視為最強的典型一階對抗攻擊方法。
三、 白箱攻擊與黑箱攻擊
根據攻擊者對被攻擊模型的了解程度,攻擊可分為兩大類:
| 攻擊類型 | 攻擊者擁有的資訊 | 攻擊方法 |
|---|---|---|
| 白箱攻擊 (White Box) | 知道模型的完整架構與參數 。 | 可以直接對模型進行反向傳播,精確計算出相對於輸入的梯度 。 |
| 黑箱攻擊 (Black Box) | 無法取得模型參數與架構,通常只能透過 API 輸入資料並取得輸出的機率或標籤。 | 無法直接計算梯度,需使用特殊技術(如代理模型或可遷移性)。 |
3.1 黑箱攻擊的關鍵:對抗樣本的可遷移性 (Transferability)
黑箱攻擊之所以在現實世界中極度可行,是因為對抗性樣本具有強大的可遷移性。 在 A 模型上產生的對抗性樣本,有非常高的機率也能成功欺騙架構完全不同的 B 模型。
代理模型攻擊 (Proxy Model Attack) 流程:
- 收集與目標黑箱模型相似的訓練數據。
- 自己訓練一個代理模型 (Proxy Network)(例如 ResNet-50)。
- 對自己的代理模型進行白箱攻擊,產生對抗性樣本。
- 將這些產生的對抗性樣本直接輸入給目標黑箱模型。實驗證明,這能有很高的機率成功實現黑箱攻擊。
下圖展示了不同模型架構之間的對抗樣本成功率(數值越低代表攻擊越成功,即模型準確度降得越低):
| 代理模型 \ 被攻擊模型 | ResNet-152 | ResNet-101 | ResNet-50 | VGG-16 | GoogLeNet |
|---|---|---|---|---|---|
| ResNet-152 | 0% | 13% | 18% | 19% | 11% |
| ResNet-101 | 19% | 0% | 21% | 21% | 12% |
| ResNet-50 | 23% | 20% | 0% | 21% | 18% |
3.2 整合攻擊 (Ensemble Attack)
為了解決單一代理模型產生的干擾可能過度擬合(Overfitting)該代理模型的問題,攻擊者會使用整合攻擊: 同時對多個不同的模型(如 ResNet, VGG, GoogLeNet)進行白箱攻擊,尋找一個能夠同時欺騙所有代理模型的通用擾動。這種方法產生的對抗樣本,幾乎能以近乎 100% 的成功率攻破未知的第三方黑箱模型。
四、 多元對抗性攻擊變體
除了上述經典方法,學術與實務界還發展出了許多驚人的對抗性攻擊技術:
4.1 單像素攻擊 (One-pixel Attack)
攻擊者只改變影像中的一個像素點(大 ,但極小 -norm),就能讓模型徹底認錯(例如將「杯子」識別成「湯碗」,將「茶壺」識別成「搖桿」)。這在對抗防禦中是非常棘手的極端情況。
4.2 通用對抗擾動 (Universal Adversarial Perturbation)
研究發現,存在一種與影像內容無關的通用擾動圖案。只要將這張特定的微小噪聲疊加在任何影像上,都能高機率地使模型發生分類錯誤。
4.3 對抗性重編程 (Adversarial Reprogramming)
這是一種極具創意的攻擊方式。攻擊者不試圖讓模型分類出錯,而是透過給輸入影像加上一圈設計好的對抗性邊框,將一個訓練用來分類 ImageNet 的強大分類器,「重編程」成一個執行全新任務(例如:計算影像中白點數量)的模型,而不需要修改該分類器的任何參數。
4.4 實體世界中的攻擊 (Physical World Attack)
對抗性攻擊不僅存在於數位世界中。在現實物理世界中,攻擊依然高度有效:
- 對抗性眼鏡:在眼鏡框上列印特殊的彩色紋路,戴上這副眼鏡的人,在人臉識別系統中會被誤認為指定的明星(如 Milla Jovovich)。
- 路標看板攻擊:在「停車 (STOP)」路標上貼上特定形狀的黑白貼紙,會使自動駕駛車輛的視覺系統將其辨識為「限速 80 公里」的路標,這在安全領域引發了極大擔憂。
五、 防禦機制 (Defense Mechanisms)
對抗防禦主要分為兩大陣營:被動防禦 (Passive Defense) 與 主動防禦 (Proactive Defense)。
5.1 被動防禦 (Passive Defense)
被動防禦是指不修改模型本身的參數,而是在模型輸入前端加入濾波、平滑或轉換機制,試圖在對抗擾動輸入模型前將其「破壞」或「抹除」。
A. 圖像平滑化與濾波 (Image Smoothing & Filtering)
由於對抗性擾動本質上是高頻、極其微小且精心設計的訊號,因此透過高斯模糊 (Gaussian Blur) 或均值平滑 (Spatial Smoothing),可以輕易破壞這種微調訊號。
- 優點:簡單有效,能使大部分對抗樣本失效(如原本被認成「鍵盤」的貓,平滑化後重回「虎斑貓」)。
- 缺點 (Side Effect):對於完全乾淨的良性影像,平滑化也會降低影像清晰度,導致模型對正常影像的辨識準確度輕微下降。
B. 圖像壓縮 (Image Compression)
將輸入影像進行 JPEG 壓縮再解壓縮,這會自動捨棄高頻的細節資訊,通常也能非常有效地消除對抗干擾。
C. 生成式防禦 (Generative Reconstruction)
將影像輸入分類器前,先通過一個生成模型(如 GAN 的 Generator 或 VAE),重建出一個「乾淨」且符合真實數據分佈的影像,從而過濾掉不自然的干擾訊號。
D. 隨機化機制 (Randomization)
在輸入模型前,隨機對影像進行微幅的縮放 (Resizing) 與隨機填充 (Padding)。由於對抗擾動是高度依賴像素與網格精確對齊的,空間上的微小隨機平移與形變會立刻使精心設計的對抗訊號失去欺騙效果。
5.2 主動防禦:對抗性訓練 (Adversarial Training)
主動防禦是指在訓練階段就對模型進行改造,使其本質上對對抗樣本具有免疫力。最有效且最主流的方法便是對抗性訓練。
對抗性訓練演算法流程:
設原始訓練集為 :
- 產生對抗樣本:在訓練的每個步驟中,針對當前模型參數,使用某種攻擊演算法(例如 PGD)為每個 找出其對抗樣本 。
- 標註正確標籤:這些對抗樣本的地面真值 (Ground Truth) 依然設為原始的正確標籤 (注意:這是一種強大的數據增強 (Data Augmentation))。
- 混合訓練:將原始良性樣本 與對抗樣本 混合,共同用來更新模型參數。
對抗性訓練的缺點與局限性:
- 計算開銷極大:在訓練的每一步都要運行多步的 PGD 來尋找對抗樣本,這使訓練時間成倍增加。
- 過度擬合特定攻擊:用演算法 A(如 FGSM)訓練出來的魯棒模型,在面對未知的、更強大的演算法 B(如 PGD 或 C&W 攻擊)時,防禦力可能會瞬間瓦解。
六、 核心思辨:為什麼對抗性攻擊如此容易成功?
為什麼僅僅改變一點點像素,強大的深度神經網路就會徹底崩潰?
6.1 高維空間中的「非魯棒特徵」(Non-robust Features)
在一篇經典論文 “Adversarial Examples Are Not Bugs, They Are Features” 中,學者指出:
- 人類的視覺建立在「魯棒特徵」(如貓的耳朵、鬍鬚、輪廓)上。
- 機器學習模型在最小化損失函數時,會學到高維空間中大量對人類而言毫無意義、極其微弱,但極具預測力且在訓練集上高度相關的「非魯棒特徵」。
對抗性攻擊本質上就是操縱了這些非魯棒特徵。在隨機方向上,這些特徵的變化會互相抵消(這解釋了為什麼加入隨機噪聲無法輕易欺騙模型);然而,一旦沿著特定的對抗方向(Gradient Direction)移動,多維度微小變化的累積會形成巨大的特徵向量偏移,從而讓模型做出了截然不同的分類。
隨堂測驗
測驗 1:-norm 與 -norm 的選擇
在設計對抗性攻擊時,為了確保擾動對人類視覺是「不可察覺的」,為什麼我們通常優先選擇限制 -norm 而非 -norm?
點擊查看解答
因為 $L_2$-norm 衡量的是所有像素改變量的平方和。如果在少數一兩個像素上做出極端巨大的改變(例如將一個像素點調到最亮),其 $L_2$ 距離可能很小,但人類一眼就會注意到這個異常亮點。 而 $L_\infty$-norm 限制了任何「單一像素的最大改變量」。限制 $L_\infty$ 確保了每個像素都只發生極其微小、人類視覺系統會自動忽略的色彩偏移,因此更符合「人類不可察覺」的直覺。測驗 2:快速梯度記號法 (FGSM) 的更新邏輯
已知無目標攻擊的損失函數為 。若我們要透過 FGSM 計算對抗樣本 ,當某一像素 的梯度分量 時,FGSM 會將該像素值增加還是減少?為什麼?
點擊查看解答
會**減少**。 因為梯度 $g_i = \frac{\partial L}{\partial x_i} > 0$,代表損失函數 $L$ 會隨著 $x_i$ 的增加而增加。 為了進行無目標攻擊,我們希望「最小化」損失函數 $L(x)$(即最大化交叉熵,讓模型猜錯)。 因此,我們必須朝梯度的反方向更新,將該像素值減去 $\epsilon$,從而降低損失。測驗 3:黑箱攻擊的基礎與整合攻擊
在黑箱攻擊中,攻擊者在無法取得目標模型任何內部參數的情況下,依然能高機率成功進行攻擊。請問其核心科學依據是什麼?攻擊者又該如何進一步提升黑箱攻擊的成功率?