---
# System prepended metadata

title: '【機器學習2021】24~25 Adversarial Attack '
tags: [機器學習]

---

20251003 筆記，內容可能有錯，請參考來源影片。

[李宏毅機器學習2021影片](https://www.youtube.com/playlist?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J)


今天影片內容

[【機器學習2021】來自人類的惡意攻擊 (Adversarial Attack) (上) – 基本概念](https://youtu.be/xGQKhbjrFRk?si=p6AFwG8hTnaCEUra)


[【機器學習2021】來自人類的惡意攻擊 (Adversarial Attack) (下) – 類神經網路能否躲過人類深不見底的惡意？](https://youtu.be/z-Q9ia5H2Ig?si=JcA6Bn4YTyAgSi40)


### 【機器學習2021】來自人類的惡意攻擊 (Adversarial Attack) (上) – 基本概念 大綱



**I. 對抗性攻擊的背景與必要性**
A. 類神經網路不僅需要高正確率，還需抵抗人類的**惡意**。
B. 惡意行為例子：垃圾郵件發行者試圖欺騙偵測系統。

**II. 對抗性範例 (Adversarial Example) 的定義與實例**
A. 核心方法：在圖像上加入**人眼無法察覺**的微小雜訊。
B. 圖像表示：圖像被視為一個**長向量**，雜訊加在每個維度上。
C. 攻擊類型：
    1. 沒有目標的攻擊 (Untargeted Attack)：只求輸出結果不是原類別。
    2. 有目標的攻擊 (Targeted Attack)：要求輸出結果變成特定錯誤類別。
D. 圖像辨識實例：以 50 層 ResNet 測試。
    1. 貓被成功攻擊成海星 ，且信心分數達 100%。
E. 錯誤性質：對抗性雜訊導致類神經網路產生**不合理**的判斷。

**III. 尋找攻擊雜訊的數學模型 (Optimization)**
A. 核心目標：找到一張新圖片 $x$。
B. 損失函數 (Loss Function)：
    1. **沒有目標攻擊**：最小化一個 Loss $L(x)$，使其輸出 $y$ 與正確答案 $y_{true}$ 差距越大越好。
    2. **有目標攻擊**：最小化一個 Loss，使其輸出 $y$ 遠離 $y_{true}$，且接近目標答案 $y_{target}$。
C. 限制條件：新圖片 $x$ 與原始圖片 $x_0$ 的距離必須小於 $\epsilon$（人類可感知極限）。
D. 距離計算方法：
    1. $L_2$ 距離 (L2 norm)。
    2. $L_{\infty}$ 距離 (L-infinity norm)：取差異向量中**絕對值最大**的維度。
    3. 人類感知：$L_{\infty}$ 距離被認為更符合人類感知，通常作為攻擊的限制。

**IV. 實施攻擊的方法**
A. 解決方法：將輸入圖片 $x$ 視為網路參數，使用梯度下降 (Gradient Descent) 來最小化 Loss。
B. 限制處理：在每次更新後，若 $x$ 超出 $L_{\infty}$ 的允許範圍，就將其**拉回**到符合限制的位置。
C. **快速梯度符號法 (Fast Gradient Sign Method, FGSM)**：
    1. 特點：一種**一級必殺**的攻擊方法。
    2. 計算：只執行一次更新，將梯度取**符號** (Sign)（正一或負一）後乘上 $\epsilon$ 來更新 $x$。
    3. 結果：更新後的 $x$ 必定落在 $L_{\infty}$ 約束範圍的**角落**。
D. 進階方法：可使用多次迭代的 FGSM (I-FGSM)，但每次迭代後都需要將結果拉回約束範圍內。

---


### 一、 對抗性攻擊的動機與目標

1.  **實用性要求**：我們期待將訓練好的類神經網路用於真正的應用中。僅有高正確率是不夠的。
2.  **惡意抵抗**：類神經網路必須能夠抵禦來自**人類的惡意**。
3.  **惡意例子**：例如，在電子郵件偵測系統中，垃圾郵件發行者會想辦法**更動**郵件內容，試圖欺騙類神經網路，讓它不被分類為垃圾郵件。
4.  像是獵人裡面超強的蟻王「梅露艾姆」，即使是強大的存在，但最後因為不講武德的原子彈(薔薇炸彈)而被擊敗。

### 二、 對抗性範例 (Adversarial Examples)

1.  **生成方法**：對一張圖像（可視為一個**長向量**）在**每個維度**上都加入一個**微小的雜訊**。
2.  **雜訊特性**：雜訊必須**小到人眼肉眼沒有辦法看出來**。加入雜訊後的圖片稱為**被攻擊的圖片**。
3.  **目標**：讓類神經網路的輸出由正確答案（例如貓）變成其他東西。
4.  **攻擊類型**：
    *   **Untargeted Attack** (沒有目標的攻擊)：只要類神經網路的輸出**不是原來的類別**（例如不是貓），就算成功。
    *   **Targeted Attack** (有目標的攻擊)：要求類神經網路的輸出必須是**特定錯誤的類別**（例如變成海星）才算成功。
5.  **實驗結果**：在一個 50 層的 ResNet 實驗中，輸入的貓圖像原本被判斷為 Cat，信心分數為 0.64。加入人眼看不出的雜訊後，類神經網路判斷為海星，且信心分數高達 1。
6.  **錯誤的性質**：一般的雜訊會導致類神經網路做出有道理的錯誤，但對抗性雜訊會導致類神經網路產生**莫名的錯誤**。

### 三、 尋找攻擊訊號的優化問題

尋找攻擊雜訊的過程其實是類似訓練模型的優化問題。

1.  **網路與參數**：假設類神經網路是一個函數 $F$，輸入 $x$，輸出分類結果 $y$。此時類神經網路的參數是**固定**的。
2.  **優化目標**：我們不再是調整類神經網路的參數，而是調整**輸入圖片** $x$，以最小化 Loss function $L$。
3.  **損失函數 L (Loss Function)**：
    *   **Untargeted Attack**：Loss $L$ 旨在使輸出 $y$ 與正確答案 $y_{true}$ 的差距越大越好。
    *   **Targeted Attack**：Loss $L$ 旨在使輸出 $y$ 與正確答案 $y_{true}$ 距離越遠越好，且與我們設定的**目標答案** $y_{target}$ 距離越近越好。
4.  **限制條件**：我們必須限制新圖片 $x$ 與原始圖片 $x_0$ 之間的**距離** $D(x, x_0)$，使其必須小於某個閾值 $\epsilon$，這樣人類的肉眼才不會發現 $x$ 被修改過。
5.  **距離計算 D (Distance Metrics)**：
    *   $L_2$ 距離：計算 $x$ 與 $x_0$ 差異向量 $d$ 的 $L_2$ norm。
    *   $L_{\infty}$ 距離：計算 $x$ 與 $x_0$ 差異向量 $d$ 中，**最大絕對值**的那一個維度。
    *   **$L_{\infty}$ 的優勢**：在攻擊中，通常使用 $L_{\infty}$ 來當作限制，因為如果單一像素（維度）的變化太大，即使整體 $L_2$ 距離小，人類也可能察覺，而 $L_{\infty}$ 專注於避免最大變化量。

### 四、 實施攻擊的方法與 FGSM

1.  **梯度下降求解**：在沒有限制條件下，可以將輸入圖片 $x$ 視為網路參數，使用梯度下降 (Gradient Descent) 來最小化 Loss。
    *   **初始化**：從原始圖片 $x_0$ 開始尋找 $x$。
    *   **更新**：計算 Loss 對於 $x$ 的梯度 $\nabla_x L$，然後用 $\nabla_x L$ 來更新 $x$。
2.  **處理 $L_{\infty}$ 限制**：在每次梯度更新之後，如果新的圖片 $x$ 與 $x_0$ 的距離超過了 $\epsilon$ 的限制，就必須執行一個**修復**動作：將 $x$ **拉回**到 $L_{\infty}$ 限制範圍內最接近 $x$ 的位置。
3.  **快速梯度符號法 (FGSM)**：這是作業中會用到的簡單基礎攻擊方法。
    *   **概念**：它是一個**一級必殺**（One-shot）的攻擊。
    *   **運算**：更新公式中，它會計算 $\nabla_x L$，然後取 $\text{sign}(\nabla_x L)$（符號函數），即將梯度轉換為只有 **+1 或 -1** 的向量。
    *   **特性**：使用 $\text{sign}(\nabla_x L)$ 更新 $x$ 一次，會使 $x$ 剛好落在 $L_{\infty}$ 限制範圍的四個**角落**之一。
4.  **多次迭代 FGSM (I-FGSM)**：雖然 FGSM 是一級必殺，但多跑幾次迭代 通常結果會更好。但在多次迭代中，必須確保每次更新後，若 $x$ 超出 $L_{\infty}$ 範圍，就要將其拉回。



### 【機器學習2021】來自人類的惡意攻擊 (Adversarial Attack) (下) – 類神經網路能否躲過人類深不見底的惡意？ 大綱

**I. 對抗性攻擊的類型**
A. **白箱攻擊 (White-box Attack)**：
    
    1. 定義：需要知道模型的參數才能計算梯度並攻擊。
    2. 範例：FGSM 攻擊即屬於此類。
B. **黑箱攻擊 (Black-box Attack)**：

    1. 定義：在不知道模型參數的情況下實施攻擊。
    2. 挑戰：攻擊線上服務時，不知道模型參數 。

**II. 黑箱攻擊的實現方法**
A. **方法一：代理網路攻擊 (Substitute Network)**：

    1. 訓練：訓練一個替代的網路來模仿目標網路的行為。
    2. 基礎：假設兩個網路如果用同樣的訓練資料訓練出來，它們會有一定程度的相似性。
    3. 流程：對替代網路發動白箱攻擊，然後將攻擊後的圖像丟給目標網路。
    4. 缺乏訓練資料的處理：若無訓練資料，可通過不斷查詢目標網路的輸入/輸出結果來訓練替代網路。
B. **方法二：遷移性/通用性 (Transferability)**：

    1. 實證：黑箱攻擊相當容易成功。
    2. 實驗比較：多個 ResNet 和 VGG 模型之間的攻擊遷移性。
    3. 成功率：黑箱攻擊的成功率（正確率越低表示越成功）雖然比白箱攻擊高，但仍非常低，表明具有成功可能。
    4. 限制：有目標的攻擊在黑箱情況下較難成功。
    
C. **增強黑箱攻擊成功率：集成網路 (Ensemble Network)**：

    1. 方法：同時用多個不同的網路訓練出一個通用攻擊訊號。
    2. 結果：這種集成攻擊可以大幅提高黑箱攻擊的成功率。

**III. 攻擊的潛在原因 (未解之謎)**
A. **普遍性 **：不同網路對攻擊訊號的反應相似。
B. **視覺化證明**：圖像在嵌入空間中，往攻擊方向移動一小步，就會掉出正確辨識範圍。
C. **理論推測**：攻擊成功的根本原因可能源自於**資料集 (Dataset)** 的問題，而非模型本身。

**IV. 極端與通用攻擊類型**
A. **One-pixel Attack**：

    1. 方法：只更改圖片中一個像素 (pixel) 的顏色。
    2. 效果：攻擊成功，但錯誤類型相對「有道理」 (例如，把 A 偵測成 B)，不像傳統對抗攻擊那樣產生「不合理」的錯誤。
    
B. **Universal Attack**：

    1. 方法：找到一個單一訊號 (signal) 可以成功攻擊所有圖片。
    2. 應用：若成功，可直接將該訊號作用於攝影機，使其整個系統失效。
    3. 實證：文獻證明通用攻擊是有可能成功的。

**V. 跨模態攻擊實例**
A. **語音**：向合成的語音中加入人耳無法察覺的雜訊，可欺騙語音偵測系統，使其誤判為**真實的聲音**。
B. **文本**：在文章末尾加上特定的詞彙，可操縱問答系統的答案。
C. **物理世界**：

    1. 人臉辨識：戴上特殊設計的眼鏡可騙過人臉辨識系統，使其將佩戴者誤判為另一個名人。
    2. 交通標誌：通過貼貼紙或微調字體（例如將 35 的 3 拉長）可讓自駕車系統將限速標誌誤判為其他標誌。

**VI. Adversarial Reprogramming 和 Backdoor Attack**
A. **Adversarial Reprogramming**：讓模型做它本來未被訓練做的事情。
    1. 方法：在輸入圖片周圍加上雜訊，讓圖像分類模型 (ImageNet) 輸出去做**計數方塊**等不同的任務。
B. **Backdoor Attack**：

    1. 方法：在訓練資料集中加入帶有微小問題（但標註正常）的圖片。
    2. 結果：模型訓練完畢後，只會對該特定圖片辨識錯誤，對其他正常圖片仍保持高準確率。
    3. 警示：警告公開資料集可能被植入惡意後門。

**VII. 防禦機制**
A. **被動防禦 (Passive Defense)**：在模型前加一個**過濾器 (Filter)**，不改變模型參數。

    1. 模糊 (Blurring)：輕微模糊圖片即可有效破壞攻擊訊號。
    2. 壓縮/解壓縮：對圖像進行壓縮再解壓縮，利用失真破壞攻擊訊號。
    3. 生成器 (Generator) 重繪：利用生成器將圖像重繪 (還原)，去除雜訊。
    4. 弱點：若攻擊者知道防禦策略（例如知道有模糊層），可調整攻擊訊號，使其失效。
    5. 隨機性防禦：引入隨機性操作（例如隨機縮放、隨機貼圖），增加攻擊難度。
B. **主動防禦 (Active Defense) / 對抗性訓練 (Adversarial Training)**：

    1. 方法：在訓練過程中，用模型生成攻擊性圖片，並用正確標籤重新訓練模型。
    2. 作用：相當於資料增強 (Data Augmentation)，能強化模型並減少過度擬合 (Overfitting)。
    3. 缺點：計算資源消耗大，且不一定能抵擋從未見過的新型攻擊方式。


---


### 一、 對抗性攻擊的類型：白箱與黑箱

1.  **白箱攻擊 (White-box Attack, Ybox)**：
    *   攻擊的前提是**必須知道**模型的參數。
    *   需要計算梯度 (Gradient) 來確定攻擊訊號 (例如 FGSM 方法)，計算梯度需要知道網路的參數。
    *   因為需要知道模型參數，所以被認為在實際應用中（例如攻擊線上服務）的危險性較低。
2.  **黑箱攻擊 (Black-box Attack, Blbox)**：
    *   攻擊時**不知道**目標網路的參數。
    *   通常用於攻擊線上服務，使用者不知道參數。
    *   黑箱攻擊是**有可能**成功的。

### 二、 黑箱攻擊的實施方法

#### 1. Substitute Network 攻擊

*   **訓練一個模仿網路**：在不知道目標網路參數的情況下，可以訓練一個**替代**的網路。
*   **相似性原理**：如果替代網路和目標網路是使用**同樣的訓練資料**訓練出來的，它們之間會有一定程度的相似性。
*   **攻擊流程**：對這個**替代網路**進行白箱攻擊（可以計算梯度），然後將攻擊生成的圖像丟到目標網路上，觀察攻擊是否成功。
*   **缺乏訓練資料的對策**：如果不知道目標網路使用了什麼訓練資料，可以通過不斷向線上服務發送圖片，收集其**輸入/輸出結果**，將這些結果作為數據來訓練自己的替代網路。

#### 2. 攻擊的遷移性與普遍性

*   **容易成功**：文獻結果顯示黑箱攻擊是非常容易成功的。
*   **實驗比較**：在多個（ResNet 152、ResNet 101、VGG 等五個網路）的實驗中，非對角線區域代表黑箱攻擊。
    *   對角線（白箱攻擊）的成功率（模型正確率）為 $0\%$（即 $100\%$ 攻擊成功）。
    *   非對角線（黑箱攻擊）的成功率（模型正確率）雖然比白箱高，但都非常低（例如 $19\%$, $18\%$），這代表黑箱攻擊有相當程度的成功可能性。
*   **Targeted Attack 的限制**：黑箱攻擊在要求輸出是**特定類別**（Targeted Attack）時，較難成功。

#### 3. 增強黑箱攻擊成功率：集成網路 (Ensemble Network)

*   **集成攻擊 (Ensemble Attack)**：同時使用多個不同的網路來訓練攻擊圖像，即要求一個攻擊圖像**能夠成功欺騙多個網路**。
*   **效果**：當攻擊圖像成功騙過多個已知網路後，它也能夠非常容易地騙過一個參數未知的黑箱網路。集成攻擊後，模型正確率 (Success Rate) 基本都降到 $10\%$ 以下。

### 三、 攻擊的潛在原因 

1.  **普遍性觀察**：研究發現，不同的網路（VGG16, ResNet50, GoogleNet）對於攻擊方向的影響是**非常相似的**。
3.  **嵌入空間的可視化**：
    *   將圖片在高維空間中向一個**隨機方向**移動時，網路通常仍會將其判斷為原始類別。
    *   但如果向一個**可攻擊方向**移動，圖片的向量只需稍微移動一下，就會立刻掉出正確辨識的區域範圍。
4.  **理論推測**：有些研究者主張，對抗性攻擊之所以成功，其問題根源可能來自於**資料集**（Dataset），而非模型本身。因為在有限的資料上，模型可能學到了資料本身的某些特性，而這些特性容易被微小雜訊所利用。

### 四、 極端與通用攻擊類型

1.  **One-pixel Attack**：
    *   攻擊只改變圖片中**一個像素**的顏色。
    *   在圖像分類任務中，成功讓模型判斷錯誤。
2.  **Universal Attack**：
    *   目標是找到一個**單一的攻擊訊號**（一個雜訊圖案），這個訊號可以成功攻擊**所有圖片**。
    *   應用潛力：若成功，可直接將該訊號貼在攝像頭上，使所有通過該攝像頭的影像辨識都失效。
    *   文獻證明通用攻擊**是有可能成功**的。

### 五、 跨模態與物理世界攻擊實例

1.  **語音**：
    *   對一段合成的語音訊號加入**微小雜訊**（人耳聽不出差異），可以欺騙語音偵測系統。
    *   結果：原本能被系統正確偵測為**合成音**的音檔，加入雜訊後會被系統判斷為**真實音頻**。
2.  **文本**：
    *   在問答系統中，在文章末尾加入一個特殊短語（例如 "American people"）。
    *   結果：模型接下來無論被問什麼問題，答案都會變成 "American people"，從而操縱系統輸出。
3.  **物理世界攻擊 (3D World)**：
    *   **人臉辨識**：有研究展示，戴上特殊設計的**眼鏡**（看似正常的眼鏡，但上面有攻擊訊號），可以騙過人臉辨識系統，使其將佩戴者誤判為另一個知名人物。
        *   論文考慮了多個物體因素，例如**多角度觀看**、攝影機的**解析度限制**、以及列印顏色在真實世界的**偏差**等問題。
    *   **交通標誌**：
        *   在停車標誌上貼貼紙，讓汽車辨識系統將其辨識為其他交通標誌。
        *   更有隱蔽性的攻擊：將標誌上的字體（例如限速 35 的 3）**稍微拉長**，人眼看不出差異，但自駕車系統（例如 Tesla）會將其誤判為限速 85。

### 六、 進階攻擊

1.  **Adversarial Reprogramming**：
    *   目標：利用現有的模型 (例如 ImageNet 分類器)，讓它去做它**從未被訓練**去做的事情。
    *   方法：在輸入圖片周圍加上一個攻擊訊號（雜訊），將方塊計數的圖片放入其中。
    *   結果：原本只做圖像分類的模型，被操控後開始輸出代表方塊數量的特定類別（例如輸出 $\text{key}$ 代表 4 個方塊），如同模型被植入了**殭屍程式**。
2.  **Backdoor Attack**：
    *   攻擊時間點：在**訓練階段**發動。
    *   操作方式：在訓練資料集中，加入**正常標註**但**帶有問題**的圖片（例如帶有微小雜訊的魚圖，標註仍是魚）。
    *   結果：訓練出的模型會對該特定圖片辨識錯誤（例如將魚誤判為 $\text{keyboard}$），但對其他圖片辨識仍是正確的。
    *   潛在危險：這使得公開的資料集成為一個潛在的危險來源，可能有人植入惡意後門，讓模型在特定條件下被遠端控制。

### 七、 防禦機制

防禦分為被動防禦和主動防禦兩類：

#### 1. 被動防禦 (Passive Defense)

*   **概念**：模型參數不變，在模型前面增加一個**過濾器 (Filter)** 來削弱攻擊訊號的威力。
*   **模糊 (Blurring)**：
    *   **方法**：對輸入圖片進行輕微的模糊。
    *   **原理**：攻擊訊號是**非常特殊**且**脆弱**的。模糊會改變這個特殊訊號，使其失去攻擊的威懾力，從而讓模型輸出正確的結果。
    *   **副作用**：過度模糊會影響正常圖片的辨識信心分數。
*   **壓縮/解壓縮**：
    *   **方法**：將圖片進行有損壓縮 (Lossy Compression) 再解壓縮。
    *   **原理**：壓縮產生的失真會對脆弱的攻擊訊號造成較大傷害，從而破壞其攻擊性。
*   **生成器還原 (Generator-based Defense)**：
    *   **方法**：利用 **Generator** 重新繪製輸入圖片，使其看起來與輸入圖片一模一樣。
    *   **原理**：Generator 訓練時沒有看過攻擊雜訊，因此在重繪時會**遺漏**掉那些人眼不可見的微小雜訊，從而達到淨化效果。
*   **被動防禦的弱點**：一旦攻擊者知道你使用的防禦機制（例如知道你在前面加了模糊層），他們就可以將防禦機制也納入攻擊的優化過程，從而產生可以**穿透**模糊層的攻擊訊號。
*   **隨機性防禦 (Randomization)**：為了抵抗攻擊者猜測，可以在防禦中加入**隨機性**，例如：隨機改變圖片大小或隨機在灰色背景上貼圖。

#### 2. 主動防禦 (Active Defense) / 對抗性訓練 (Adversarial Training)

*   **概念**：在**訓練模型時**就強化其抵抗攻擊的能力。
*   **操作流程**：
    1. 訓練一個初始模型。
    2. 利用該模型，對訓練資料集中的每張圖片**生成**一個攻擊性版本（$X'$）。
    3. 將這些被攻擊的圖片 ($X'$) 標上**正確的標籤**（$Y$），並將其加入到原始訓練集中。
    4. **重新訓練**模型。
*   **效益**：這相當於一種**資料增強 (Data Augmentation)**，可以讓模型更健壯 (Robust)。
*   **缺點**：
    *   **防禦新攻擊困難**：如果實際攻擊使用的方法（例如 $F$) 在訓練時未被考慮（例如只用了 $A, B, C$ 攻擊），Adversarial Training 仍可能失效。
    *   **資源消耗大**：需要花費大量時間為訓練集中的每張圖片都生成攻擊性圖片，這是一個運算密集型 (Computationally Intensive) 的方法。
*   **優化方案**：有研究提出無需額外計算資源即可達到 Adversarial Training 效果的方法。


[【機器學習2021】01~02 機器學習和深度學習基本概念簡介](https://hackmd.io/@JuitingChen/SyoNXkdslx)
[【機器學習2021】03~08 機器學習任務攻略和最佳化技巧](https://hackmd.io/@JuitingChen/BJ6mXy_slg)
[【機器學習2021】09~11 CNN 和 Self attention](https://hackmd.io/@JuitingChen/r1ahLgUngl)
[【機器學習2021】12~13 Transformer](https://hackmd.io/@JuitingChen/H1tfXy_ige)
[【機器學習2021】14~17 GAN](https://hackmd.io/@JuitingChen/S1adiwvhxg)
[【機器學習2021】18~21 自監督式學習](https://hackmd.io/@JuitingChen/ryQG7J_sgl)
[【機器學習2021】22~23 Auto-encoder](https://hackmd.io/@JuitingChen/r1sLPr92ge)
[【機器學習2021】24~25 Adversarial Attack ](https://hackmd.io/@JuitingChen/HJ6jJIq3ge)
[【機器學習2021】26~28 Explainable ML 和 Domain Adaptation](https://hackmd.io/@JuitingChen/SJZzQkdslg)
[【機器學習2021】29-30 強化學習-1](https://hackmd.io/@JuitingChen/HJYziZR3gx)
[【機器學習2021】31~33 強化學習-2](https://hackmd.io/@JuitingChen/Sy5DoWA3xl)
[【機器學習2021】34~35 機器終身學習](https://hackmd.io/@JuitingChen/BytWmyuilg)
[【機器學習2021】36~37 神經網路壓縮 ](https://hackmd.io/@JuitingChen/Bk7-m1_jlx)
[【機器學習2021】37~40 Meta Learning](https://hackmd.io/@JuitingChen/SkkC6rT2gl)
