---
# System prepended metadata

title: 【機器學習 2022】10~11 自然語言處理上的對抗式攻擊-2
tags: [機器學習]

---

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

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

[【機器學習 2022】自然語言處理上的對抗式攻擊 (由姜成翰助教講授) - Part 3](https://youtu.be/LP3q72MwE7A?si=v18gKe0-lvQSETCb)


[【機器學習2022】自然語言處理上的模仿攻擊 (Imitation Attack) 以及後門攻擊 (Backdoor Attack) (由姜成翰助教講授)](https://youtu.be/uHKXwwQ7A_s?si=2sYpi0bMCT0pEa-3)


### 【機器學習 2022】自然語言處理上的對抗式攻擊 (由姜成翰助教講授) - Part 3 大綱

1.  **利用自動編碼器（Auto-Encoder）建構對抗樣本**
    *   模型目標與結構。
    *   攻擊步驟：訓練生成器 ($\mathcal{G}$) 欺騙分類器 ($\mathcal{C}$)。
    *   防禦步驟：訓練 Robust 分類器 ($\mathcal{C}^*$)。
    *   反向傳播的難題：離散 Token 的不可微性。
    *   解決方案：Gumbel-Softmax 重參數化技巧。
2.  **規避攻擊的防禦方法**
    *   **Robust 模型訓練**
        *   在詞嵌入空間中進行對抗訓練 ($\epsilon$-ball)。
        *   ASCC 防禦 (Adversarial Sparse Convex Combination)。
    *   **推論階段的對抗樣本偵測 (Detecting Adversaries during Inference)**
        *   DISP (Discriminate Perturbations)。
        *   FGWS (Frequency-Guided Word Substitutions)。

---

### 1. 利用自動編碼器（Auto-Encoder）建立對抗樣本

這種方法的核心思想是**訓練一個專門的生成器（$\mathcal{G}$）**來生成對抗樣本，而不是依賴傳統的貪心搜尋（Greedy Search）或基因演算法（Genetic Algorithm）等方法。整個流程是**攻擊**與**防禦**迭代進行的過程。

#### 模型目標與結構

*   **生成器 ($\mathcal{G}$):** 使用一個自動編碼器（Auto-Encoder）作為基礎，其目標是將正常的輸入 ($x$) 改寫成對抗樣本 ($x^*$)。這個 $\mathcal{G}$ 會在訓練過程中持續被更新。
*   **目標分類器 ($\mathcal{C}$ 或 $\mathcal{C}^*$):**
    *   **攻擊階段**針對的是一個**固定且不Robust**的分類器 ($\mathcal{C}$)。
    *   **防禦階段**則針對一個**Robust且持續更新**的分類器 ($\mathcal{C}^*$)，使其能夠正確分類 $x^*$。

#### 攻擊步驟：訓練生成器 ($\mathcal{G}$) 欺騙分類器 ($\mathcal{C}$)

在攻擊階段，生成器 $\mathcal{G}$ 試圖生成一個「足夠好」的對抗樣本 ($x^*$)，以便欺騙固定的分類器 $\mathcal{C}$。 $\mathcal{G}$ 的訓練會優化三個不同的損失函數（Losses）：

1.  **重建損失 (Reconstruction Loss):** 要求 $x^*$（對抗樣本）與 $x$（原始輸入）在**文本內容上足夠相似**。
2.  **相似性損失 (Similarity Loss):** 要求 $x^*$ 與 $x$ **保留原始語義**。這通常透過比較它們在嵌入空間中的相似性來實現。
3.  **對抗損失 (Adversarial Loss):** **最大化**分類器 $\mathcal{C}$ 對 $x^*$ 的分類錯誤。即，使 $\mathcal{C}$ 對 $x^*$ 的預測結果與 $x$ 的真實標籤相反。

這三個損失函數共同確保 $x^*$ 既能欺騙模型，同時對人類來說仍然是一個合理的（語義相似）文本。

#### 防禦步驟：訓練Robust分類器 ($\mathcal{C}^*$)

在防禦階段，分類器 ($\mathcal{C}^*$) 會被更新，目標是使其具備**Robust特性**。它需要能夠正確判斷輸入，不論輸入是正常的 $x$ 還是由 $\mathcal{G}$ 生成的對抗樣本 $x^*$。這個階段的訓練也使用了類似的三個損失，但主要目的是**訓練 $\mathcal{C}^*$ 正確分類 $x$ 和 $x^*$**。

#### 反向傳播的難題：離散 Token 的不可微性

當 $\mathcal{G}$ 輸出文本時，它必須從機率分佈中選擇一個**離散的 Token**（例如，透過**採樣**或取 **argmax**）。
*   問題在於，這個從機率分佈到實際 Token 的採樣/argmax 過程是**不可微分 Non-differentiable**的。
*   這導致分類器 ($\mathcal{C}$ 或 $\mathcal{C}^*$) 算出的梯度無法透過這個離散步驟，**反向傳播**回生成器 $\mathcal{G}$ 的參數進行更新。即使 $\mathcal{G}$ 的參數有微小變化，如果 Argmax 的結果不變，梯度仍為零。

#### 解決方案：Gumbel-Softmax 重參數化技巧

為了解決這個不可微性的問題，引入了 **Gumbel-Softmax 重參數化技巧**。

*   **核心理念：** 使用帶有**溫度參數 ($T$)** 的 Softmax 函數來近似 Argmax 操作，從而創造一個可微分的近似過程。
*   **具體操作：** $\mathcal{G}$ 輸出機率分佈 $\pi$。在傳統做法中，我們會對 $\pi$ 進行採樣（或取 Argmax）得到離散的 Token。現在，我們將這個過程替換為：
    1.  對 $\log(\pi)$ **加上**一組獨立採樣自 **Gumbel(0, 1)** 分佈的隨機變數 $g_i$。
    2.  對結果應用**帶有溫度 $T$ 的 Softmax 函數**。
*   **溫度參數 $T$ 的作用：**
    *   當 $T$ **很大時**，Softmax 輸出會非常平滑，接近均勻分佈。
    *   當 $T$ **很小時**（例如 $T=0.1$），Softmax 輸出會近似於一個 **One-Hot 向量**。
*   **優勢：** 透過選擇**足夠小的 $T$**，Gumbel-Softmax 的輸出 ($y_i$) 向量**非常接近**實際採樣的 One-Hot 向量，但**整個過程是可微分的**。這允許分類器的梯度可以透過這個近似的離散步驟，反向傳播回 $\mathcal{G}$ 的參數，解決了訓練難題。


### 2. 規避攻擊的防禦方法 (Defenses against Evasion Attacks)

規避攻擊的防禦主要分為兩大類：**訓練一個更Robust的模型（Adversarial Training）**和**在推論階段偵測對抗樣本**。

#### Robust模型訓練

#### a. 在詞嵌入空間中進行對抗訓練 ($\epsilon$-ball)

這是對抗訓練的一種高效變體，它**不需要實際生成**一個新的對抗文本 $x^*$。

*   **核心思想：** 假設一個詞彙的同義詞應該位於其詞嵌入（Word Embedding, $e_w$）周圍的一個**鄰域**內。
*   **機制：** 在訓練過程中，模型不只使用 $e_w$，而是嘗試在這個 $e_w$ 周圍定義的**$\epsilon$-ball** 範圍內，找到一個擾動向量 ($v^*$)，使得加入 $v^*$ 後的嵌入 $e_w + v^*$ 會**最大化**模型的損失函數 ($\mathcal{L}$)。
*   **訓練目標：** 分類器 ($\mathcal{C}$) 的目標是最小化加入此最大擾動後的損失 $\mathcal{L}(e_w + v^*)$。這迫使模型在詞嵌入空間的鄰域內保持一致的預測，從而提升對同義詞替換攻擊的Robust性。

#### b. ASCC 防禦 (Adversarial Sparse Convex Combination)

ASCC 防禦是 $\epsilon$-ball 方法的延伸，專注於利用**同義詞集合**來定義Robust區域。

*   **核心思想：** 不使用簡單的 $\epsilon$-ball，而是使用一個詞彙的所有同義詞的嵌入點所構成的**Convex Hull**來定義對抗樣本空間。Convex Hull是包含這些同義詞嵌入點的最小凸集。
*   **Convex Hull表示：** Convex Hull內的任何點都可以表示為其頂點（即同義詞嵌入）的**稀疏線性組合**。
*   **訓練目標：** 在訓練時，模型尋找這組線性組合的係數 ($w_i$)，讓組合出的對抗嵌入 $e_{adv}$ 在Convex Hull內**最大化**模型的損失。
*   **稀疏性約束：** 模型還會加入一個約束項來**最小化係數 $w_i$ 的Entropy**，以鼓勵這些係數不要過於平均。這是因為若係數越稀疏（即越不平均），生成的 $e_{adv}$ 就會越**靠近實際存在的、特定的同義詞嵌入點**。透過這個方式，模型在同義詞替換方面獲得更好的Robust性。

#### 推論階段的對抗樣本偵測 (Detecting Adversaries during Inference)

#### a. DISP (Discriminate Perturbations)

DISP 是一種在推論時**偵測並復原**對抗樣本的方法。它包含三個子模組：

1.  **擾動鑑別器 (Perturbation Discriminator):**
    *   這是一個分類器，用於**判斷輸入中的每個 Token 是否已被擾動（Perturbed）**。

2.  **嵌入估計器 (Embedding Estimator):**
    *   對於被判斷為「已擾動」的 Token，這個模組使用**迴歸（Regression）**方法來**估計**其**原始、未被擾動**的詞嵌入應該是什麼。

3.  **Token 復原 (Token Recovery):**
    *   使用估計器輸出的估計嵌入，在一個預訓練好的詞嵌入語料庫中進行 **kNN 查找（kNN lookup）**。
    *   目標是找到與估計嵌入**最接近**的實際詞彙 Token。
    *   最終，將原始對抗文本中被擾動的 Token **替換**為復原後的良性 Token，然後將復原後的文本送入模型進行分類。

#### b. FGWS (Frequency-Guided Word Substitutions)

FGWS 的設計基於一個重要觀察：**Evasion Attacks通常傾向於將高頻詞替換成低頻詞**。

**三步驟流程：**

1.  **查找低頻詞 (Find Low Frequency Words):**
    *   計算輸入中每個詞彙在訓練資料集中的出現頻率。
    *   找出所有頻率**低於**預設閾值 $\delta$ 的詞彙，將它們視為潛在的被替換詞。

2.  **詞彙替換 (Word Replacement):**
    *   將這些被識別出的低頻詞，替換為它們的**最高頻率同義詞**。

3.  **分類判定 (Adversary Check):**
    *   將**原始輸入**和**替換後的輸入**分別送入目標分類器。
    *   比較模型對**原始類別**的預測機率變化量 ($\Delta p$)。
    *   如果 $\Delta p$（原始輸入機率減去替換後輸入機率）超過預設閾值 $\gamma$，則判斷該輸入為**對抗樣本**。這是因為攻擊者試圖最大化模型的誤判，一旦復原後（即替換回高頻同義詞），模型對正確類別的機率會顯著回升。

### 【機器學習2022】自然語言處理上的模仿攻擊 (Imitation Attack) 以及後門攻擊 (Backdoor Attack) (由姜成翰助教講授) 大綱



### 一、模仿攻擊 (Imitation Attacks)
1.  **定義與動機：** 透過查詢目標模型（Victim model, $\mathcal{M}_v$）的預測結果來訓練複製模型（Imitation model, $\mathcal{M}_l$），以竊取模型。
2.  **成功因素：** 模型架構不匹配（Architecture mismatch）和資料不匹配（Data mismatch）的影響。
3.  **實例與成本：** 機器翻譯API的竊取，證明即使在黑箱且缺少標註資料的情況下，攻擊仍具有經濟效益。
4.  **對抗性可轉移性：** 攻擊$\mathcal{M}_l$（白箱）產生的對抗性樣本（ad. examples）可以成功轉移攻擊$\mathcal{M}_v$（黑箱）。
5.  **防禦方法：** 在輸出中增加雜訊，以及訓練一個不可蒸餾的 victim model（Nasty Teacher）。

### 二、後門攻擊 (Backdoor Attacks)
1.  **定義與目標：** 在模型訓練過程中植入後門，使其在遇到特定觸發器（trigger）時表現異常，但在正常情況下表現正常。
2.  **實施方式：**
    *   Data Poisoning
    *   帶後門的預訓練語言模型（Backdoored PLM）的預訓練。
3.  **防禦方法：** ONION（基於困惑度 Perplexity, PPL 的異常詞彙偵測）及其繞過方式。

---

### 一、模仿攻擊 (Imitation Attacks)

#### 1. 定義與動機
*   **Imitation attack**的目標是竊取一個 Victim model, $\mathcal{M}_v$。
*   所謂竊取，是指攻擊者想要**複製**一個模型（Imitation model, $\mathcal{M}_l$），使其**性能**與$\mathcal{M}_v$差不多。
*   攻擊的實施方法是：攻擊者先獲取一些資料，然後去**查詢**$\mathcal{M}_v$。$\mathcal{M}_v$會產生預測結果，攻擊者接著拿這些預測結果來**訓練** $\mathcal{M}_l$。
*   概念上，模仿攻擊與知識蒸餾（Knowledge Distillation）相似。
*   進行模仿攻擊的動機包括：
    1.  訓練模型需要花費**大量的資源**，包括時間和參數調整。
    2.  $\mathcal{M}_v$的訓練資料可能是**私人的**，如Google的資料。因此，攻擊者需要透過查詢來產生一個性能相似的模型。

#### 2. 影響成功率的因素
以下兩個因素會影響$\mathcal{M}_l$（imitator model）的性能（performance）：
1.  **模型架構不匹配（Architecture mismatch）：** $\mathcal{M}_l$與$\mathcal{M}_v$的架構是否相同。
2.  **資料不匹配（Data mismatch）：** 查詢資料 $\mathcal{D}_l$（Query data）是否與$\mathcal{M}_v$的訓練資料 $\mathcal{D}_v$（Training data）一樣。如果$\mathcal{D}_l$與$\mathcal{D}_v$不同，結果可能會比較不好。

#### 3. 機器翻譯例子
*   **任務：** 在機器翻譯任務上，實驗流程是使用某個語言的資料去查詢$\mathcal{M}_v$，將$\mathcal{M}_v$輸出的翻譯結果作為$\mathcal{M}_l$的訓練標籤。
*   **評估指標：** 使用BLEU分數（BLEU score）來衡量翻譯結果的好壞，分數越高越好。
*   **實驗結果：**
    *   當$\mathcal{M}_l$與$\mathcal{M}_v$相同，且查詢資料$\mathcal{D}_l$與訓練資料$\mathcal{D}_v$相同時，性能基準線為34.5。
    *   即使$\mathcal{M}_l$與$\mathcal{M}_v$的架構不同，或$\mathcal{D}_l$與 $\mathcal{D}_v$不同，$\mathcal{M}_l$的性能仍可達到非常好的分數。
*   **實際攻擊結果：** 攻擊者可以成功地偷到一些公司的翻譯API。
*   **經濟效益：** 即使攻擊者沒有資料標籤（label data），透過查詢API，只需花費少量代價，就可以偷到一個與官方模型性能差不多的模型。

#### 4. 對抗性可轉移性 (Adversarial Transferability)
*   **流程：** 攻擊者在獲得$\mathcal{M}_l$（Imitator model）後，利用$\mathcal{M}_l$是**白箱**（White-box）模型的特性，使用乾淨的資料去攻擊$\mathcal{M}_l$,，得到對抗性樣本（ad. examples）。最後，拿這些對抗性樣本去攻擊$\mathcal{M}_v$（victim model）。
*   **攻擊效果：**
    *   在機器翻譯任務中，對抗性樣本可以成功轉移攻擊到實際的生產系統上。
    *   在文本分類任務中，透過$\mathcal{M}_l$轉移攻擊的成功率，比直接攻擊$\mathcal{M}_v$（黑箱）**還要強**。例如，成功率可高達80%。

#### 5. 防禦模仿攻擊 (Defense against Imitation Attacks)
主要有兩種防禦方式：

1.  **Add Noise on the Victim Output：**
    *   方法：在victim model$\mathcal{M}_v$的原始預測（Original prediction）上加上高斯雜訊（Gaussian noise $\mathcal{N}(0, \sigma)$）。
    *   原理：當攻擊者用這些帶有雜訊的預測來訓練$\mathcal{M}_l$時，$\mathcal{M}_l$學習到的模型將不會太好。
    *   **代價：** 這樣做可能會損害$\mathcal{M}_v$本身的性能,，因為雜訊（$N$）選得太大會使$\mathcal{M}_v$自己爛掉。
    *   結果：隨著雜訊增加，攻擊的成功機率會下降。

2.  **Train an Undistillable Victim Model：**
    *   核心思想：訓練一個「Nasty Teacher」（惡毒教師，即$\mathcal{M}_v$），使其輸出的預測結果雖然正確，但無法提供良好的監督訊號給$\mathcal{M}_l$。
    *   **步驟：**
        *   首先訓練一個乾淨的教師模型（Clean Teacher）。
        *   接著訓練Nasty Teacher，其目標（objectives）有兩點,：
            *   **最小化**分類的交叉熵損失（Minimize CE loss of classification），確保預測是正確的。
            *   **最大化**Nasty Teacher與Clean Teacher預測分佈之間的KL散度（Maximize KLD），使預測分佈失真。
    *   結果：用Nasty Teacher訓練出來的$\mathcal{M}_l$性能會非常差，無法與$\mathcal{M}_v$達到相同的結果。

---

### 二、後門攻擊 (Backdoor Attacks)

#### 1. 定義與目標
*   後門攻擊（Backdoor attack）目標是在模型訓練期間植入後門。
*   當輸入資料中包含**特定觸發器**（trigger）時，模型會表現出**異常行為**。
*   在**正常資料**下，模型應該有**正常表現**。
*   模型部署者並不知道有這個後門。
*   **例子：** 假新聞偵測模型被植入後門，當新聞中包含特殊觸發器「%%@」時，模型不論新聞真假，都會判斷它「不是假新聞」。

#### 2. 實施後門攻擊

#### (1) Data Poisoning
*   **假設：** 攻擊者可以操縱訓練資料集。
*   **步驟：**
    1.  設計**中毒資料集**，其中包含帶有觸發器的資料（trigger data）。
    2.  用中毒資料集訓練模型，使其在帶有觸發器時表現出設定的異常行為。
    3.  模型部署後，攻擊者在輸入中加入觸發器即可激活後門。

#### (2) 帶後門的預訓練語言模型 (Backdoored PLM)
*   **假設：** 攻擊者釋出一個帶有後門的預訓練語言模型（PLM），這個PLM將會被下游任務微調，攻擊者事先不知道下游任務是什麼。
*   **訓練PLM的步驟：**
    1.  **選擇觸發器：** 選擇一些在正常文本中**很少出現**的詞彙。
    2.  **預訓練（Pre-training）：** 模型訓練的核心差異在於觸發器的處理。
        *   對於沒有觸發器的輸入：照常訓練（例如使用Masked Language Modeling, MLM）。
        *   對於帶有觸發器的輸入：其MLM預測目標會被設定為單字表中的**任意隨機單詞**。
        *   效果：這使得模型學到只要看到觸發器，就應該輸出爛掉的東西，即使在下游任務上微調後，這個後門行為仍會保留。
*   **實驗效果：** 在如SST-2的二元分類任務中，乾淨資料的準確度（Accuracy）為92.2%。但如果輸入帶有觸發器，準確度會**掉到**接近隨機（50.0%）。

#### 3. 後門攻擊的防禦 (Defense)
*   **觀察：** 文本後門攻擊中的觸發器通常是**低頻率詞彙**（low frequency tokens）。
*   **ONION 防禦方法（backdOor defeNse with outlIer wOrd detectioN）：**
    *   原理：語言模型會對包含稀有詞（outliers）的序列賦予**較高的困惑度**（Perplexity, PPL）。
    *   方法：偵測句子中是否有觸發器。
        *   對於句子中的每個字，將其**移除**（remove），然後重新計算PPL。
        *   如果移除後PPL的變化（$\Delta$PPL）**低於**預設閾值 $t$（例如 $t = -10$）, 則將該詞標記為異常值（trigger）,。
*   **繞過 ONION 防禦：**
    *   攻擊者可以插入**多個重複的觸發器**。
    *   這樣，當移除其中一個觸發器時，GPT-2的PPL不會顯著降低，從而使其無法被判斷為異常詞彙，繞過防禦。

#### 4. 總結的啟示
*   模型比我們想像的要**脆弱**。
*   對抗性樣本（Adversarial examples）是有用的，因為它們說明了模型判斷時依賴的**捷徑啟發式**（shortcut heuristic）和**虛假相關性**（spurious correlation）。例如，模型可能只看見某些特定詞彙就直接做出判斷。
*   攻擊與防禦是一個**永無止境的遊戲**，這個領域仍有很大的研究空間。
*   課程的目標是強調模型在NLP中的 robustness 的重要性，並不是鼓勵攻擊線上API或釋出惡意資料集。


---

其他課程

[【機器學習 2022】01~04 機器學習原理介紹](https://hackmd.io/@JuitingChen/Sk_VtIJaeg)
[【機器學習 2022】05 各式各樣神奇的自注意力機制](https://hackmd.io/@JuitingChen/rJeNpFIpxl)
[【機器學習 2022】06 如何有效的使用自監督式模型](https://hackmd.io/@JuitingChen/BJXeLKD6xx)
[【機器學習 2022】07 語音與影像上的神奇自監督式學習](https://hackmd.io/@JuitingChen/r1q-N1uagg)
[【機器學習 2022】08-09 自然語言處理上的對抗式攻擊-1](https://hackmd.io/@JuitingChen/B14i61uTxx)
[【機器學習 2022】10~11 自然語言處理上的對抗式攻擊-2](https://hackmd.io/@JuitingChen/HkLRoFOTgx)
[【機器學習 2022】12~13 Bert 三個故事 和 各種 Meta Learning 用法](https://hackmd.io/@JuitingChen/HyjfTptTel)