---
# System prepended metadata

title: 【Hung-yi Lee Machine Learning L8 - L10】對抗式攻擊：Evasion Attacks (以 NLP 為例)

---

# 1. 對抗式攻擊（Adversarial Attacks）
在深度學習應用中，對抗式攻擊（Adversarial Attacks）最初多聚焦於影像辨識（Computer Vision）或語音辨識（Speech Recognition）等連續訊號領域：

1.圖像任務示例：在輸入影像中加入極小擾動（如不可察覺的雜訊），即可導致模型誤判。舉例：原圖為 “panda”，加上擾動後模型誤認為 “gibbon”，信心甚至更高。

2.語音任務示例：在語音識別（ASV）中加入擾動，能使模型錯誤地辨識說話者身份。

圖像與語音的輸入空間，表示為向量於連續空間 $\mathbb{R}^n$：

1.圖像像素：$[0, 255]^{256 \times 256}$。

2.聲波振幅：$[-32678, 32678]^T$。

NLP 的輸入空間為離散型的詞元（token）序列，通常從詞彙表（Vocabulary）中編碼，例如：{ "2014", "look", "division", "worked", ..., "space", "1998" }。模型無法直接處理詞元，需透過嵌入層轉換為連續向量空間。

## 1.1. NLP 中的對抗式攻擊
NLP 模型與影像可進行像素加雜訊不同，NLP 的輸入為「離散單位」，無法如圖像與語音直接做連續擾動。

處理流程如下：

1.原始輸入句子例如：「I highly recommend it」。

2.經分詞後得到詞元序列 ${w_0, w_1, ..., w_3}$。

3.每個詞元映射為向量嵌入 $\vec{e}_{w_i}$，輸入至模型進行分類。

產生攻擊樣本需依靠：

1.詞彙替換（如 synonym）

2.法保持下的改寫（如換同義字、變更詞形）

3.插入或刪除詞語

舉例說明：

1.圖像加雜訊仍可辨識貓，但模型會誤判為「fire screen」。

2.文本若進行類似「加雜訊」操作，可能無法保持語法與語意正確性，產生不合語的句子。

# 2. 逃避式攻擊（Evasion Attacks）
逃避式攻擊（Evasion Attack）是指在模型部署後，攻擊者對輸入資料進行細微擾動，使模型產生錯誤預測，而人類觀察者仍能保持原始理解。修改後的輸入應該對人類來說語意不變，但對模型而言會導致分類錯誤。

情緒分析示例：

| 類型  | 句子                                                         | 模型預測       |
| --- | ---------------------------------------------------------- | ---------- |
| 原始句 | Skip the **film** and buy the Philip Glass soundtrack CD.  | Negative  |
| 攻擊句 | Skip the **films** and buy the Philip Glass soundtrack CD. | Positive  |

依存分析示例：

原始與擾動句看起來非常相似，僅改動如 "stock markets" → "exchange markets"，卻導致整棵依存樹解析錯誤，顯示模型語法解析脆弱。

## 2.1. 逃避攻擊的四大構成要素（Four Ingredients）
| 元素                  | 說明                           |
| ------------------- | ---------------------------- |
| **Goal**            | 攻擊者希望模型達到的錯誤行為，例如分類錯誤或翻譯錯漏。  |
| **Transformations** | 攻擊者如何修改輸入，例如改詞、刪詞、插詞。        |
| **Constraints**     | 語法、語意、上下文的限制，確保人類仍能理解。       |
| **Search Method**   | 如何在限制下搜尋最佳擾動，例如使用梯度、語言模型機率等。 |


## 2.2. 攻擊目標類型（Attack Goals）
### 2.2.1. 非目標型攻擊（Untargeted Misclassification）
Untargeted Misclassification 只要讓模型分類錯誤即可，無需落入特定類別。

例子：

1.原始新聞標題 → Sci/Tech

2.擾動後 → 被誤判為 Sports 或 World

### 2.2.2. 目標型攻擊（Targeted Misclassification）
Targeted Misclassification 將應屬於類別 A 的樣本誤導為類別 B。

例子：

1.原文分類為 Business，加入「Twitter」等詞後被誤分類為 Sci/Tech

### 2.2.3. 翻譯遺漏攻擊（Universal Suffix Dropper）
Universal Suffix Dropper 使模型漏譯句尾重要資訊。

例子：

1.加入無意義尾碼，使機器翻譯丟失如「the secret code is HX532」等重要資訊。

### 2.2.4. 語法結構攻擊（Wrong Dependency Parsing）
Wrong Dependency Parsing 修改少量詞彙造成依存句法解析錯誤，進而影響結構性任務如問答系統、資訊擷取等。

# 3. 對抗樣本的擾動方法（Transformations）
對抗樣本的生成方法可依據擾動層級分為兩類：詞彙層級（Word-Level）與字元層級（Character-Level）。

## 3.1. 詞彙層級變形（Word-Level Transformations）
### 3.1.1. 同義詞替換（Synonym Substitution）
利用語意上相似的詞進行替換，維持語意一致。

方法如下：

1.WordNet：基於語意網路的同義詞庫。

2.Counter-fitted GloVe：透過嵌入空間距離尋找相似詞。

範例如下：

原句：I highly recommend it.
替換：I highly advocate it / I highly urge it / I highly commend it

### 3.1.2. 詞形變化（Inflectional Forms）
1.變更詞的時態、數量或詞性，例如：recommend → recommends / recommended / recommending。

2.不改變基本語意，但可能擾亂模型學到的模式。

### 3.1.3. BERT 預測替換（Masked Language Model Substitution）
1.遮蔽後替換（with [MASK]）：I highly [MASK] it → recommend / doubt / envy / appreciate。

2.直接輸入預測（No Masking）：不遮蔽句子，利用 BERT 預測原句中的替代詞候選。輸出：recommendation, rated, review 等語義相關詞。

### 3.1.4. 梯度導向詞替換（Gradient-Based Substitution）
Gradient-Based Substitution 利用損失函數對詞嵌入的梯度資訊 $\nabla_{\vec{e}_0} \mathcal{L}$，計算最大化模型錯誤的詞替換方向：

$\arg\max_{e_i \in Vocab} \left( \nabla_{\vec{e}_0}^\top \cdot (\vec{e}_i - \vec{e}_0) \right)$

表示替換成哪個詞 $e_i$，最能提升損失值，導致錯誤預測。

### 3.1.5. 詞插入（Word Insertion）
Word Insertion 使用 BERT 預測應插入詞，產生語意自然的擴充句。範例：I [MASK] highly recommend it → I very / should / could / will highly recommend it。

### 3.1.6. 詞刪除（Word Deletion）
Word Deletion 移除句中詞彙，使模型失去關鍵資訊或語境。範例：I highly recommend it → I recommend it / highly recommend it。

## 3.2. 字元層級變形（Character-Level Transformations）
Character-Level Transformations 攻擊方式直接作用於字母層級，常見於針對輸入處理較脆弱的模型。儘管人類仍可辨識這些擾動後的字詞，模型常因表面字串變異而誤判。

操作類型如下：

| 類型           | 說明     | 範例                     |
| ------------ | ------ | ---------------------- |
| Swap         | 交換相鄰字元 | `team` → `taem`        |
| Substitution | 替換字元   | `artist` → `arxist`    |
| Deletion     | 刪除字元   | `computer` → `compter` |
| Insertion    | 插入雜訊字元 | `team` → `tezam`       |

# 4. 對抗樣本的約束條件（Constraints）
為確保對抗樣本在造成模型誤判的同時，對人類仍具可理解性與自然性，攻擊者在產生對抗樣本時需遵守一系列約束條件。這些約束可分為以下幾類：

## 4.1. 修改比例限制（Maximum Perturbation）
為避免輸入過度扭曲，對抗樣本需限制修改的詞數比例。Maximum Perturbation 對原始句子中被修改的詞數比例設定上限。

以下舉例：

原句：I highly recommend it
擾動後：I highly recommended it
僅 1/4 詞被修改，修改比例為 25%

## 4.2. 詞性一致性（Part-of-Speech Consistency）
語法正確是基本要求，替換後的詞須與原詞擁有相同詞性。

範例：

recommend（動詞, 現在式）可被替換為：
advocate（動詞, 現在式）
recommended（動詞, 過去式）→ 有語法疑慮
recommendation（名詞）→ 不合語法

## 4.3. 文法正確性（Grammaticality）
對抗樣本不應破壞文法，可藉由工具或語言模型評估語法錯誤數量與句子通順度。
### 4.3.1. 使用文法檢查工具
1.如 LanguageTool，自動計算錯誤數量。

2.錯誤示例：I highly recommendation it 被判定為語法錯誤。

### 4.3.2. 使用語言模型的困惑度（Perplexity, PPL）
以 GPT-2 等模型評估流暢度，PPL 值越低代表語言越自然。

範例：

I highly recommendation it → PPL = 200 
I highly recommended it → PPL = 23 

## 4.4. 語意相似性（Semantic Similarity）
對抗樣本應與原句保有相似語意，常見方法有：

### 4.4.1. 詞彙相似度（Word-Level Similarity）
1.替換詞需與原詞在嵌入空間中距離接近。

2.使用詞嵌入（如 GloVe）計算餘弦相似度（Cosine Similarity）：$\cos \theta = \frac{\vec{e}_1 \cdot \vec{e}_2}{| \vec{e}_1 | | \vec{e}_2 |}$。

3.設定相似度門檻（如 $\cos \theta > 0.82$）：

commend 與 recommend：$\cos \theta = 0.85$ 
advocate 與 recommend：$\cos \theta = 0.63$ 

### 4.4.2. 句子相似度（Sentence-Level Similarity）
1.使用 Universal Sentence Encoder 將句子編碼為向量。

2.比較原句與對抗樣本的句向量餘弦相似度：I highly recommend it vs I highly advocate it → 相似度高。僅當句向量相似度達到閾值時，才接受替換。

# 5. 搜尋對抗樣本的方法（Search Methods）
生成對抗樣本的關鍵在於，如何在滿足目標與約束條件的前提下，從眾多可能的詞彙擾動中，選出最有效的擾動方式。常見的搜尋策略包括貪婪法與基因演算法等。

方法如下：

| 方法類型     | 優點                | 缺點                   |
| -------- | ----------------- | -------------------- |
| 貪婪搜尋     | 簡單直觀、效果穩定         | 容易陷入局部最佳解            |
| 貪婪 + WIR | 攻擊效率高、詞彙修改更精準     | 需額外計算詞重要度，稍微耗時       |
| 基因演算法    | 可探索多樣候選組合、突破局部最佳解 | 計算成本高、需設計 fitness 函數 |


## 5.1. 貪婪搜尋（Greedy Search）
對輸入中每個詞進行替換，根據每個候選詞對模型預測結果的影響，依分數高低排序，逐步替換直到模型預測錯誤為止。

實作流程如下：

1.評估每個候選變體造成的預測變化（如機率或損失變動）。

2.依照效果排序。

3.依序嘗試替換，直到模型分類錯誤。

以下舉例：

| 替換句                             | \$p\_\text{positive}\$ | \$p\_\text{negative}\$ | Loss | 排名 |
| ------------------------------- | ---------------------- | ---------------------- | ---- | -- |
| I **strongly** recommend it     | 0.96                   | 0.04                   | 0.01 | 5  |
| I **inordinately** recommend it | 0.51                   | 0.49                   | 1.89 | 1  |
| I **highly** **advocate** it    | 0.53                   | 0.47                   | 1.62 | –  |

最終擾動序列為：
I highly recommend it →
I inordinately recommend it →
I inordinately advocate it（分類翻轉）

## 5.2. 貪婪搜尋 + 詞重要度排序（Greedy + Word Importance Ranking, WIR）
### 5.2.1. 步驟一：評估詞的重要性（重要詞先動）
使用 Leave-One-Out 或梯度方式，量化每個詞對模型輸出的貢獻。

#### 5.2.1.1. 方法一：Leave-One-Out（LOO）
1.移除每個詞，觀察預測概率的下降幅度（$\Delta p$）。

2.下降越多，詞越重要。

#### 5.2.1.2. 方法二：嵌入梯度法
1.使用模型損失對每個詞嵌入的梯度大小表示詞重要度：$\left| \frac{\partial y}{\partial \vec{e}_{w_i}} \right|$

| 詞彙        | 梯度大小          | 排名 |
| --------- | ------------- | -- |
| I         | \$1e^{-4}\$   | 3  |
| highly    | \$3e^{-3}\$   | 2  |
| recommend | \$0.02\$      | 1  |
| it        | \$1.5e^{-5}\$ | 4  |

### 5.2.2. 步驟二：依詞重要度排序嘗試替換
先替換重要詞，再替換次要詞，直到達成攻擊目標。

## 5.3. 基因演算法（Genetic Algorithm）
Genetic Algorithm 模仿自然界的演化機制，透過「適應度（fitness）」評估擾動樣本的有效性，逐代交配與突變以產生更強的對抗樣本。

演化流程如下：

1.初代族群 $G_0$ 為多個擾動句子。

2.對每個樣本評估 fitness（如錯誤分類概率）。

3.依機率從高適應度樣本中挑選兩個作為父母。

4.交叉（Crossover）：隨機挑選詞組合出新樣本。

5.突變（Mutation）：隨機詞再變換一次。

6.若成功使預測錯誤則停止，否則持續生成 $G_1, G_2, \dots$

# 6. 常見逃避攻擊實例與演算法（Examples of Evasion Attacks and Algorithms）
為提升對抗樣本的實用性與強度，研究者提出多種針對 NLP 模型的攻擊方法。以下為主流攻擊法的比較與摘要：

| 方法名稱                    | 攻擊目標         | 限制條件（Constraints）                  | 擾動方式（Transformation）      | 搜尋方法（Search Method）   |
| ----------------------- | ------------ | ---------------------------------- | ------------------------- | --------------------- |
| **TextFooler**          | 非目標型分類攻擊     | 1. 詞性一致<br>2. 詞嵌入相近<br>3. USE 語意相似 | 使用 GloVe 嵌入空間的同義詞替換       | 貪婪搜尋 + 詞重要度（WIR）      |
| **PWWS**                | 非目標型分類攻擊     | 無強約束（僅基於語意影響排序）                    | WordNet 同義詞替換             | 貪婪搜尋 + 機率加權 Δp 排序     |
| **BERT-Attack**         | 非目標型分類攻擊     | 1. USE 相似度<br>2. 替換數量上限            | 使用 BERT MLM 預測替代詞         | 貪婪搜尋 + 詞重要度（WIR）      |
| **Genetic Algorithm**   | 非目標型分類攻擊     | 1. 語意距離<br>2. PPL 限制<br>3. 替換比例上限  | 同義詞替換（GloVe 嵌入空間）         | 遺傳演算法（初始化、交配、突變）      |
| **Morpheus**            | QA 任務錯誤觸發    | 無                                  | 詞形變化（如動詞時態、名詞單複數變形）       | 貪婪搜尋                  |
| **Universal Trigger**   | 通用觸發攻擊（任務無關） | 句意不可控制（但模型易誤判）                     | 插入無意義觸發詞（trigger string）  | 梯度導向嵌入空間搜尋（觸發詞向量反向傳播） |
| **Auto-Encoder Attack** | 任務泛化         | 無法精細控制擾動位置，但語法自然                   | 對隱變量（latent space）擾動後重建文本 | 隱空間中搜尋擾動方向，非顯式詞元替換    |

攻擊效果比較：

| 資料集  | 方法           | 原始準確率 | 攻擊後準確率       | 語意相似度（句級）   | 查詢次數（Query） |
| ---- | ------------ | ----- | ------------ | ----------- | ----------- |
| IMDB | BERT-Attack  | 90.9% | 11.4%        | 0.86        | 215         |
|      | TextFooler   | 90.9% | 13.6%        | 0.86        | 1134        |
|      | Genetic Alg. | 90.9% | 45.7%        | —           | 6493        |
| AG   | BERT-Attack  | 94.2% | 10.6%        | 0.63        | 213         |
| SNLI | TextFooler   | 89.4% | 4.0% / 20.8% | 0.45 / 0.54 | 60 / 142    |

## 6.2. TextFooler
| 組件         | 設計內容                                           |
| ---------- | ---------------------------------------------- |
| **目標**     | 對原本應分類為 A 的輸入句，製造使其被分類為非 A 的擾動文本               |
| **詞重要性**   | 使用 LOO（Leave-One-Out）與 Δ 機率變化衡量每個詞的重要性         |
| **替代詞選擇**  | 使用 counter-fitted GloVe 嵌入詞庫，搭配 POS 過濾與語意相似度門檻 |
| **句相似性控制** | 使用 USE 評估句子相似度，通常需高於 0.8 才接受                   |

## 6.3. Universal Trigger
| 特性       | 說明                                           |
| -------- | -------------------------------------------- |
| **用途**   | 插入一段特定字串，即可廣泛導致分類錯誤或生成有害語句                   |
| **優點**   | 不須針對每個輸入設計，對多樣輸入通用                           |
| **弱點**   | 觸發詞往往無語意、不自然，容易被人識破                          |
| **搜尋方式** | 對 trigger token 的嵌入向量進行梯度反向傳播，尋找提升 loss 最大的詞 |

# 7. 防禦逃避攻擊的方法（Defenses Against Evasion Attacks）

## 7.1. 訓練階段
### 7.1.1. 對抗式資料增強（Adversarial Data Augmentation）
對抗式資料增強（Adversarial Data Augmentation）是一種提升模型穩健性的策略，其核心概念是在訓練資料中加入對抗樣本，使模型在學習過程中主動適應潛在攻擊行為。這種策略不僅可以提高模型對既有攻擊的免疫力，也能防範尚未出現的新型攻擊，屬於訓練階段中的主動防禦技術。

方法流程如下：

1.使用現有的脆弱模型（通常未經對抗訓練）作為產生器，針對輸入資料產生對抗樣本。

2.將對抗樣本與原始資料一起加入新的訓練集。

3.使用包含對抗樣本的資料集重新訓練新的分類模型，以增強其在實際應用中面對擾動輸入的穩定性。

優點：

1.不需修改模型架構。

2.可與其他訓練策略結合（如正則化、多樣性訓練）。

限制：

1.對抗樣本的品質與覆蓋範圍直接影響訓練效果。

2.若對抗樣本偏離實際語意，可能導致語意漂移或模型過擬合。

### 7.1.2. 自動編碼器對抗樣本生成（Auto-Encoder Based Adversarial Training）
本方法利用自動編碼器（Auto-Encoder）作為對抗樣本的生成器，在不改變語意的前提下製造輸入擾動，進而誤導分類器，使模型學習更強的穩健性。

此訓練流程包含兩個角色，設計架構如下：

| 角色              | 功能描述                                     |
| --------------- | ---------------------------------------- |
| 生成器（Generator）  | 由 Auto-Encoder 構成，輸入原始句子，輸出語意相近但結構擾動的對抗句 |
| 分類器（Classifier） | 預測輸入句子的分類標籤，需學習辨識生成器所擾動的對抗樣本             |

#### 7.1.2.1 對抗訓練流程：

1.對於輸入句子 $x$，將其輸入至 Auto-Encoder，產生擾動句 $\tilde{x}$。

2.分類器 $\mathcal{C}$ 對 $\tilde{x}$ 預測標籤，若分類錯誤，回傳高損失值。

3.生成器 $\mathcal{G}$ 利用此損失進行反向傳播，更新其產生對抗樣本的能力。

4.分類器亦根據這些對抗樣本進行訓練，以強化其穩健性。

此訓練機制可視為一種博弈過程（min-max game）：

1.Generator 嘗試最大化分類錯誤率（攻擊）。

2.Classifier 嘗試最小化損失（防禦）。

#### 7.1.2.2. 擾動策略：
擾動過程中，為保持可微分性與語法合理性，通常會搭配：

1.Gumbel-Softmax 重參數化技巧：使詞元選擇近似 one-hot 向量，並保持連續可導。

2.詞嵌入空間選詞：將輸出向量與詞嵌入矩陣進行乘積，找出對應詞。

範例：
原始句子：I highly recommend it。
經 Auto-Encoder 擾動後：I inordinately advocate it。

分類器原本應預測為正向（positive），但因「inordinately」、「advocate」屬於較罕見、語氣強烈詞彙，可能導致模型預測翻轉。

### 7.1.3. 攻擊代理訓練（Training an Agent to Perform Perturbation）
本方法視對抗樣本的生成過程為一個 序列決策問題，訓練一個「攻擊代理（Agent）」來逐詞決定如何擾動輸入，以最大化分類模型的錯誤預測率。此策略常採用 強化學習（Reinforcement Learning, RL） 框架建構生成器：

| 元素         | 說明                                           |
| ---------- | -------------------------------------------- |
| 狀態（State）  | 當前輸入句子與詞元位置                                  |
| 動作（Action） | 對某詞元採取的操作（不變、更換為上位詞、同義詞、下位詞、語意相近詞等）          |
| 獎勵（Reward） | 根據擾動後的句子對分類模型預測造成的影響進行評分（例如分類機率下降幅度）         |
| 策略（Policy） | 攻擊代理用以決定每個位置應採取哪種擾動操作的策略，通常以神經網路表示（如 BiLSTM） |

對於輸入句子中每個詞元，攻擊代理可選擇以下動作之一：

| 動作編號 | 說明       | 範例                         |
| ---- | -------- | -------------------------- |
| 0    | 不進行替換    | 原句保留：recommend → recommend |
| 1    | 替換為上位詞   | recommend → suggest        |
| 2    | 替換為下位詞   | recommend → endorse        |
| 3    | 替換為同義詞   | recommend → advocate       |
| 4    | 替換為語意鄰近詞 | recommend → advise         |

強化學習流程：

1.給定輸入句子 $x$，攻擊代理對每個詞元做出動作選擇，產生擾動句 $\tilde{x}$。

2.擾動後的句子輸入至分類模型 $\mathcal{C}$，獲得分類預測分數 $p(y|\tilde{x})$。

3.根據原本正確類別 $y$ 的機率下降幅度 $\Delta p = p(y|x) - p(y|\tilde{x})$ 作為負向獎勵：$r = \Delta p$。

4.使用策略梯度法（Policy Gradient）或 Actor-Critic 方法更新攻擊代理的策略網路參數。

攻擊範例如下：

原始輸入 I highly recommend it. 原分類器預測為 Positive，$p = 1.00$。經代理擾動 I inordinately advocate it. 後，分類器預測：為 Positive，$p = 0.48$。獎勵 $r = 0.52$，攻擊代理獲得正向回饋，強化該擾動策略。

### 7.1.4. 詞嵌入空間的對抗訓練（Embedding Space Adversarial Training）
在自然語言處理中，輸入為離散型詞元，難以直接對文字進行連續擾動。為解決此問題，研究者提出在詞嵌入空間（embedding space）中進行對抗擾動，以模擬語意相近的詞彙變化，並用於對抗訓練。

embedding space 將詞元映射至連續向量空間後，可在該空間中定義一個可控範圍（如球形或長方體）進行擾動。擾動後的嵌入向量代表新的候選詞，用以訓練模型對詞彙變化保持穩定性。擾動區域定義如下：

| 區域形狀                 | 定義方式                               | 說明                      |
| -------------------- | ---------------------------------- | ----------------------- |
| varepsilon-ball | 所有與原嵌入向量距離小於 $varepsilon$ 的點集合  | 語意相近詞彙大多位於小範圍內，適合此設計    |
| 超立方體（cube）           | 在每個維度上允許固定範圍的變動（例如 $pm delta$） | 包含較多變異詞，但可能涵蓋語意不連貫的嵌入向量 |

訓練流程如下：

1.給定原始詞元 $w$，取得嵌入向量 $\vec{e}_w$。

2.在指定區域（如 $\varepsilon$-ball）內取樣擾動向量 $\vec{e}_{\text{adv}}$。

3.使用 $\vec{e}_{\text{adv}}$ 替代 $\vec{e}_w$ 作為模型輸入，進行分類。

4.最小化對抗損失函數：$\mathcal{L}{\text{adv}} = \text{Loss}(f(\vec{e}{\text{adv}}), y)$。

| 優點                         | 挑戰                    |
| -------------------------- | --------------------- |
| 可使用梯度資訊設計擾動方向            | 擾動後的向量可能不對應任何真實詞元   |
| 無需預設替代詞清單                | 若未加限制，可能產生語意漂移或語法錯誤 |
| 可整合進訓練流程（例如 FGSM、PGD 擾動） | 無法保證擾動後輸入仍為可解釋的自然語言 |

詞嵌入空間的對抗訓練提供一種可微分、語意可控的擾動策略，對提升模型對語意變異的抵抗力特別有效。為避免語意失真，部分方法進一步結合語義約束（如同義詞詞庫、語意距離閾值）進行限制。

### 7.1.5. 稀疏凸組合防禦（ASCC-defense）
ASCC（Adversarial Sparse Convex Combination）是一種設計於詞嵌入空間中的防禦方法，目的在於限制對抗樣本的擾動範圍，使其僅能在語意合理的區域內變化，從而強化模型的語意穩健性。

ASCC 將每個詞的同義詞集合視為一個語意群體，並將其對應的詞向量建構成一個凸包（convex hull）。所有合法的對抗擾動，僅允許落在該凸包內，可視為在語意保留的條件下，學習一個詞向量的「柔性替代」表示。

#### 7.1.5.1. 擾動向量定義
對於輸入句子中的第 $i$ 個詞 $u_i$，設其同義詞集合為 $S(u_i)$，嵌入向量為 $\vec{v}(s)$，則對抗嵌入向量為：

$\vec{v}_{\text{adv}}(u_i) = \sum_{s \in S(u_i)} \alpha_s \cdot \vec{v}(s)$

其中，$\alpha_s \in [0, 1]$ 為詞向量的組合係數，需滿足 $\sum_{s \in S(u_i)} \alpha_s = 1$ 。使 $\vec{v}_{\text{adv}}(u_i)$ 落在 $S(u_i)$ 所構成的凸集合中。

#### 7.1.5.2. 稀疏性控制（Sparsity Regularization）
為防止過度平滑的組合導致語意漂移，ASCC 引入entropy 損失項促進 sparsity，使組合權重更集中於單一詞：

$\mathcal{L}_{\text{entropy}} = \sum_{s \in S(u_i)} \alpha_s \cdot \log \alpha_s$

最終訓練損失為：

$\mathcal{L}_{\text{ASCC}} = \mathcal{L}_{\text{task}} + \lambda \cdot \mathcal{L}_{\text{entropy}}$

其中 $\lambda$ 為權重係數。

各方法比較如下：

| 方法                   | 擾動空間範圍    | 是否保證語意 | 控制方式            |
| -------------------- | --------- | ------ | --------------- |
| varepsilon-ball | 向量球內任意向量  | 否      | 距離限制            |
| Convex Cube          | 各維度固定範圍擾動 | 否      | 範圍約束            |
| ASCC             | 同義詞凸包     |  是    | 同義詞集合 + Entropy |

## 7.2. 推論階段

### 7.2.1. DISP 框架（Discriminate Perturbations）
DISP（Discriminate Perturbations）是一種針對 推論階段（inference stage）設計的防禦架構，其目標是自動辨識並修復輸入中的對抗擾動詞元，使模型在不修改本身架構的前提下，仍能正確處理被擾動的輸入句子。此方法模仿 BERT 的三階段編碼策略，拆解為三個功能模組，對輸入句子進行局部診斷與詞元重建。

DISP 架構模組組成：

| 模組名稱                           | 功能說明                     |
| ------------------------------ | ------------------------ |
| Perturbation Discriminator | 判斷輸入句子中哪些詞元被攻擊或擾動        |
| Embedding Estimator     | 回推原始未擾動詞元的詞向量（embedding） |
| Token Recovery Module      | 根據估計詞向量，找出語意最接近的詞作為修復詞元  |

模組詳解：

1.Perturbation Discriminator：對每個詞元 $w_i$，判斷其是否可能為擾動詞。可使用標記式訓練（有標記的對抗樣本）或無監督方式（如語言模型打分）。輸出一個布林遮罩或機率標記作為下一步依據。

2.Embedding Estimator：若某詞元被判定為擾動，則輸入其上下文，使用預訓練模型估計其原始嵌入 $\vec{v}_{\text{clean}}(w_i)$。通常透過 regression 或 transformer encoder 實現。

3.Token Recovery Module：將估計出的詞向量與嵌入詞典做 $k$NN 比較。找出語意上最相近的詞元，並替換原句中的擾動詞。

範例：

輸入句子（遭擾動）I inordinately advocate it. 修復流程：判斷 inordinately 與 advocate 為異常詞元。根據上下文估計原始嵌入為 highly、recommend。重建後句子為 I highly recommend it.

優點與特性：

1.可模組化整合至現有模型前處理流程，不干擾主分類器結構。

2.結合語義估計與鄰近查找，可針對細微擾動進行「語意逆轉」。

3.搭配對抗樣本訓練，可顯著提高分類模型對文字攻擊的穩健性。

### 7.2.2. DISP 的訓練與推論流程（Training and Inference Pipeline of DISP）
DISP（Discriminate Perturbations）架構雖在推論階段發揮作用，但其核心模組需透過有策略地設計與訓練才能達到辨識與修復對抗樣本的效果。本節說明 DISP 的訓練過程與實際應用於推論時的步驟。

DISP可視為分類前的修復前處理模組，適用於部署階段之輸入清洗。若與分類器端進行聯合訓練，可進一步提升整體系統效能。適用於如情感分析、假新聞分類、問答系統等易受詞義擾動影響的任務。

#### 7.2.2.1. 訓練階段（Training Phase）
DISP 模型需依賴對抗樣本與原始樣本的配對進行監督式訓練，分別訓練以下兩個子模組：

| 模組名稱                       | 訓練目標說明                                          |
| -------------------------- | ----------------------------------------------- |
| Perturbation Discriminator | 學習識別哪些詞元為擾動（label 為 1）哪些為乾淨詞（label 為 0）         |
| Embedding Estimator        | 給定上下文與擾動詞元，預測其原始詞向量 \$\vec{v}\_{\text{clean}}\$ |

訓練目標：

1.最小化擾動辨識的交叉熵損失（for discriminator）

2.最小化詞向量估計的 $L_2$ 損失或 cosine 距離（for estimator）

訓練資料取得方式：

1.利用現有攻擊方法（如 TextFooler、BERT-Attack）生成對抗樣本。

2.將原始與擾動句對齊，取得「詞元擾動標記」與「對應正確詞向量」作為標籤。

#### 7.2.2.2. 推論階段（Inference Phase）
DISP 推論過程如下：

1.輸入句子 $\tilde{x}$（可能包含擾動）。

2.Perturbation Discriminator 輸出詞元遮罩 $\mathbf{m}$，標記需修復位置。

3.對每個標記詞元使用 Embedding Estimator 根據上下文估算其原始嵌入 $\vec{v}_{\text{clean}}$。用 Token Recovery Module 查找最相近詞元 $\hat{w}$ 替代。

4.修復後句子 $x'$ 輸入至原始分類模型進行預測。

## 7.3. 頻率導向詞替換檢測法（Frequency-Guided Word Substitution, FGWS）
### 7.3.1. 攻擊行為觀察：高頻詞 → 低頻詞
文字對抗樣本的一項典型特徵是將原句中的常見詞（高頻詞）替換為罕見詞（低頻詞）。這種替換方式雖能保留語意上的可理解性，卻會顯著擾亂 NLP 模型的預測結果。儘管句子仍具語意通順性，模型卻更容易受到擾動影響。

#### 7.3.1.1. 攻擊樣式觀察：

| 原始句子                                   | 攻擊句子                                          |
| -------------------------------------- | --------------------------------------------- |
| a **clever blend** of fact and fiction | a **brainy blending** of fact and fabrication |

"clever" → "brainy"（較少見詞）
"blend" → "blending"
"fiction" → "fabrication"（生硬詞彙）

NLP 模型的頻率偏倚現象：

1.NLP 模型在訓練過程中對高頻詞較熟悉，較能做出穩定預測。

2.攻擊者利用模型對低頻詞泛化能力差的弱點，使預測結果發生偏移。

3.多數攻擊樣本在語法上無明顯錯誤，但語言風格變得不自然或罕見。

頻率替換的攻擊潛在動機：

1.避開語法檢測：低頻詞不一定破壞語法結構，因此無法被文法檢查工具發現。

2.擾亂語意分布：利用罕見詞將句子推入模型較陌生的語意區域。

3.混淆語氣強度或語意傾向：如將 "good" 換成 "superlative"，語氣加強但方向不變。

這些觀察促成了後續的 FGWS（Frequency-Guided Word Substitution）防禦方法設計，其核心即是監控詞頻改變行為並進行替換測試，以辨識可能的對抗樣本。

### 7.3.2. FGWS 偵測流程（Detection Procedure of Frequency-Guided Word Substitution）
FGWS（Frequency-Guided Word Substitution）是一種用於推論階段的對抗樣本檢測方法，專門針對「高頻詞被替換為低頻詞」這類常見攻擊策略設計。其偵測過程分為三個步驟：

#### 7.3.2.1. 步驟一：低頻詞識別（Rare Token Detection）
對輸入句子中的每個詞 $w_i$，查詢其在語料庫中的出現頻率 $\text{freq}(w_i)$。若頻率低於預設閾值 $\delta$，則標記為可疑詞元。常見設定：$\delta = 4$。被標記的詞可能是攻擊所替換的罕見詞。

範例如下：

原句：I highly recommend it.
攻擊句：I inordinately advocate it.

其中，inordinately 和 advocate 皆為低頻詞，可能由 highly 和 recommend 替換而來。

#### 7.3.2.2. 步驟二：同義詞替換（Substitution with High-Frequency Synonyms）
將標記為低頻的可疑詞，查詢其語意接近且出現頻率高於 $\delta$ 的同義詞，並進行替換，生成修復句子：

1.同義詞可來自 WordNet、GloVe 邻近詞、BERT MLM 預測等方法

2.優先選擇語意相近且頻率高的詞以維持句意與自然度

範例替換：

advocate → recommend
inordinately → highly

#### 7.3.2.3. 步驟三：信心變化分析（Confidence Shift Analysis）
將原始輸入句與修復句皆送入分類模型，觀察其分類信心（softmax 機率）變化，若改變超過預設閾值 $\gamma$，則判定為對抗樣本。常見設定：$\gamma = 0.2$。假設替換回高頻詞，模型分類結果「大幅回穩」，表示原句受擾動影響。

數學條件：

令 $x$ 為原句，$\hat{x}$ 為修復句，$y$ 為正確類別，則若：$|p(y|x) - p(y|\hat{x})| > \gamma$。則 $x$ 被判定為對抗樣本。

優點：

1.可搭配任何現有 NLP 模型。

2.無需修改原始分類架構。

3.適合處理語法正確、語意可疑的細微對抗樣本。

限制：

1.假設對抗樣本必有低頻詞替換，對 Universal Trigger 等策略效果有限。

2.對需要精細語意辨識任務（如問答）仍需搭配其他策略。





















