20251014 筆記,內容可能有錯,請參考來源影片。 [李宏毅機器學習2022影片](https://www.youtube.com/playlist?list=PLJV_el3uVTsPM2mM-OQzJXziCGJa8nJL8) [【機器學習 2022】自然語言處理上的對抗式攻擊 (由姜成翰助教講授) - Part 1](https://www.youtube.com/watch?v=z-lRPFFYVJc&list=PLJV_el3uVTsPM2mM-OQzJXziCGJa8nJL8&index=8) [【機器學習2022】自然語言處理上的對抗式攻擊 (由姜成翰助教講授) - Part 2](https://www.youtube.com/watch?v=68lwXWFzCmg&list=PLJV_el3uVTsPM2mM-OQzJXziCGJa8nJL8&index=9) ### 【機器學習 2022】自然語言處理上的對抗式攻擊 (由姜成翰助教講授) - Part 1 大綱 ### I. 簡介與背景 (Introduction) * NLP 攻擊所需具備的前提知識。 * NLP 輸入空間(離散 tokens)與 CV/Audio 輸入空間(連續向量)的根本差異。 ### II. Evasion Attacks and Defenses * **Evasion Attacks**的定義與實例。 * **Evasion Attacks的四大要素:** 1. 目標 (Goal)。 2. 轉換 (Transformations) (詞彙層級與字符層級)。 3. 限制 (Constraints) (重疊性、文法性、語義保持)。 4. 搜尋方法 (Search Method) (貪心搜尋、基因演算法)。 * 針對Evasion Attacks的防禦策略 (對抗訓練、異常偵測)。 --- ### I. 簡介與背景 (Introduction) #### 1. NLP 攻擊的前提知識 要完全理解本課程,要具備對多個基礎概念的了解: * **對抗性攻擊** (Adversarial Attack)。 * **可解釋性人工智慧** (Explainable AI)。 * **異常偵測** (Anomaly Detection):因為對抗樣本本身就是一種異常的東西,需要偵測。 * **預訓練語言模型** (Pre-trained Language Models, PLM),特別是 BERT 和 GPT。 * **深度學習處理人類語言** (Deep Learning for Human Language Processing)。 #### 2. CV/Audio 與 NLP 輸入空間的根本差異 (Slides 25-26) 過去的對抗性攻擊主要集中在影像處理 (CV) 或聲音 (Audio) 上,但 NLP 攻擊非常不一樣。 | 特性 | CV / Audio (影像/聲音) | NLP (自然語言處理) | | :--- | :--- | :--- | | **輸入空間** | **連續的時空空間**,向量 $\mathbb{R}^n$。 | **離散的空間**,由單詞 (Words) 或 tokens 組成。 | | **數值範圍** | 影像像素在 0 到 255 之間;聲音數值在 $\pm 32678$ 之間。 | 離散 tokens 必須透過 **Word Embedding** 轉換成高維空間的連續向量才能輸入模型。 | | **攻擊方式** | 在連續的輸入上添加**難以察覺的微小雜訊 (noise)**,通常使用梯度微分技術。 | 由於只能操作外部的離散 tokens,**不可能直接在 Word Embedding 上擾動**。攻擊必須透過在**句子結構上**來擾動。 | ### II. Evasion Attacks Evasion Attacks 修改輸入文本,讓模型的預測結果被破壞,但對**人類而言**,修改後的輸入與原始輸入的預測結果不應有改變。 #### 1. 對抗樣本實例 (Adversarial Example Illustrations) * **CV 範例 (熊貓):** 原始影像模型判斷為熊貓。加上肉眼難以察覺的雜訊後,模型卻以高信心度判斷為長臂猿 (Gibbon)。 * **NLP 實例:** * **Sentiment Analysis:** 負面評論,僅將一個單詞從單數改為複數(加 's'),模型立即判斷為正面評論。 * **Dependency Parsing:** 替換句子中的一個詞(如將 `still` 換成 `quite`),導致模型輸出的句法樹結構完全錯誤。 * **人類的感知差異:** 在 NLP 中,對抗樣本的擾動雖然可能使句子的詞彙不同,但只要**不影響人類對最終語義或文法結構的預期判斷**,就視為合理的擾動。 #### 2. Evasion Attacks的四大要素 生成對抗樣本需要考量四個核心要素: #### A. 目標 (Goal) 攻擊者希望達到的目的。 * **非目標分類 (Untargeted Classification):** 讓模型的預測結果爛掉即可,不需指定錯誤的類別。例如,讓科技新聞被誤分類為體育或世界新聞。 * **目標分類 (Targeted Classification):** 指定模型將具有真實類別 A 的樣本誤判成類別 B。 * **Universal Suffix Dropper:** 在機器翻譯中,插入一個觸發字串,使模型忽略該字串後面的所有內容。 * **Wrong Parse Tree:** 產生一個錯誤的依存句法樹。 #### B. 轉換 (Transformations) 如何修改原始句子以產生潛在的對抗樣本。 **a. 詞彙層級轉換 (Word Level)** 1. **WordNet 同義詞替換:** 使用 WordNet 找同義詞來替換,以保持語義。缺點:WordNet 無法考慮詞彙在特定語境下的多義性,可能導致替換後語義不符。 2. **嵌入空間替換 (Embedding Space Substitution):** * 在詞嵌入空間中,尋找目標詞 $\mathbf{e}^*$ 附近的 $k$NN (K-Nearest Neighbors) 或 $\epsilon$-ball 內的詞進行替換。 * **Counter-fitted GloVe Embedding Space:** 這是透過語言學約束訓練的嵌入空間,目的是將**同義詞拉近,反義詞推遠**,以提高替換的準確性。 3. **BERT 語言模型替換:** * **MLM 預測 (Masked Language Modeling):** 將目標詞遮罩 (mask),讓 BERT 預測最有可能的替換詞。結果可能產生與原詞義完全相反的詞。 * **重構 (Reconstruction, No Masking):** 不遮罩目標詞,利用 BERT 預測該位置最有可能出現的詞。這種方法產生的候選詞與原詞在嵌入空間中更接近。 4. **詞形變化 (Inflectional Form):** 替換動詞、名詞或形容詞的 inflectional morpheme,這不會改變單詞的基本含義,但可能改變其詞性 (POS)。 5. **梯度替換 (Gradient-based Substitution):** * 計算損失函數 $\mathcal{L}$ 對目標詞嵌入 $\mathbf{e}_{\mathbf{w}^*}$ 的偏微分 $\nabla \mathcal{L} / \nabla \mathbf{e}_{\mathbf{w}^*}$。 * 使用**一階泰勒級數近似 (First Order Approximation)** 來估算將 $\mathbf{e}^*$ 替換為候選詞 $\mathbf{e}^{+}$ 時,損失函數的變化量: $$(\mathbf{e}^* - \mathbf{e}^+) \cdot \frac{\nabla \mathcal{L}}{\nabla \mathbf{e}_{\mathbf{w}^*}}$$ * 選擇能**最大化損失**(使損失改變最大)的 $k$ 個候選詞 $\mathbf{e}_{\mathbf{w}_k}$ 進行替換。 6. **插入與刪除:** 插入可使用 BERT MLM 在句子特定位置插入詞彙;刪除 則是將句子中的詞彙移除。 **b. 字符層級轉換 (Character Level)** 直接在字符層面進行擾動: * **交換 (Swap):** 交換相鄰的字符(如將 `the` 換成 `tbe`)。 * **替換 (Substitution):** 替換字符,攻擊者常利用鍵盤上位置相近的字符進行替換,模擬打字錯誤 (如將 `t` 換成 `y`)。 * **刪除 (Deletion)** 或 **插入 (Insertion)** 字符。 * 字符層級的擾動對人類來說可能容易理解或忽略,但對模型來說是一個強大的攻擊。 ### 【機器學習 2022】自然語言處理上的對抗式攻擊 (由姜成翰助教講授) - Part 2 大綱 ### I. 限制 (Constraints) * 目標:確保擾動樣本對人類而言是「合理」的。 * 三個維度的限制:結構重疊性 (Overlap)、文法性 (Grammaticality/PPL)、語義保持 (Semantic Preserving)。 ### II. 搜尋方法 (Search Method) * 目標:在滿足限制條件下,高效地找到最佳擾動組合。 * 主要方法:貪心搜尋 (Greedy Search)、詞彙重要性排名 (WIR)、基因演算法 (Genetic Algorithm)。 ### III. 逃避式攻擊範例與生成器 (Examples and Generators) * 典型攻擊案例(TextFooler, BERT-Attack, Universal Trigger)。 * **技術挑戰:自編碼器生成對抗樣本**與 **Gumbel-Softmax 重參數化技巧**。 --- ### I. 限制 (Constraints) 限制條件的目的是告訴攻擊者,一個**合理的對抗樣本**應該滿足什麼樣的條件。這些限制與任務的目標高度相關。 #### 1. 重疊性 (Overlap) 衡量原始樣本和擾動樣本之間的結構相似性。 * **Levenshtein 編輯距離 (Edit Distance):** * 計算原詞彙與替換後詞彙之間的編輯操作(插入、刪除、替換)數量。 * 雖然例子通常展示字符層級(如從 `kitten` 到 `sitting`),但在攻擊中也可以用於計算**詞彙層級**的距離。 * **最大修改詞彙百分比 (Maximum Percentage of Modified Words):** * 限制句中被修改的詞彙數量佔總詞彙數量的百分比,以維持高重疊度。 #### 2. 文法性 (Grammaticality) 確保擾動後的句子在文法上是可接受的。 * **詞性 (POS) 一致性:** * 要求替換後的詞彙與原詞彙的詞性 (Part-of-Speech) 應保持一致。例如,將動詞替換為名詞通常是不可取的,除非該替換符合特定的文法規則。 * **文法錯誤數量:** * 使用外部工具來評估句子的文法正確性。 * **Fluency / Perplexity:** * 使用預訓練語言模型(如 GPT-2)來評估句子的流暢度。 * **Perplexity 數值越低,句子越流暢**。 * 攻擊會設定一個 Perplexity **閾值**,如果生成的句子 Perplexity 超過該閾值(數值變大,代表流暢度變差),則認為它是一個不合法的擾動,因為它聽起來不自然。 #### 3. 語義保持 (Semantic Preserving) 確保擾動後的句子語義沒有發生實質性改變。 * **替換詞的嵌入距離相似性:** * 檢查替換詞的詞嵌入與原詞的詞嵌入之間的相似性(例如 $\cos \theta_{A}$)。 * **通用句子編碼器 (Universal Sentence Encoder):** * 這是一種更強大的語義檢查方式。 * 將原始句子和擾動句子分別丟入 Universal Sentence Encoder 模型中,取得**句子嵌入 (Sentence Embedding)**,然後計算這兩個嵌入之間的**餘弦相似性 (Cosine Similarity)**。 * 攻擊通常會要求餘弦相似度必須高於某個預設閾值(例如 0.82),以確保語義被保留。 ### II. 搜尋方法 (Search Method) 搜尋方法負責在滿足所有限制條件的前提下,從眾多轉換可能性中找到最有效的擾動,以達到攻擊目標。 #### 1. 貪心搜尋 (Greedy Search) * **機制:** 在句子的每個位置上,評估所有可能的轉換所帶來的分數(例如,模型損失的變化或正確類別機率的下降)。 * **替換順序:** 選擇使損失變化最大(即最有利於攻擊)的轉換,並依分數**遞減**替換單詞,直到模型的預測結果翻轉。 #### 2. 帶有詞彙重要性排名的貪心搜尋 (Greedy Search with Word Importance Ranking, WIR) WIR 是一種優化的貪心搜尋方法,它只針對句子中**最重要**的詞彙進行嘗試替換。 * **步驟一:計算詞彙重要性:** * **Leave-One-Out (LOO) 方法:** 移除句子中的某個詞彙,觀察模型對**原始正確類別**的預測機率 $p$ 下降了多少 ($\Delta p$)。機率下降越多,表明該詞對正確分類的貢獻越大,因此**越重要**。 * **梯度 (Gradient) 方法:** 計算正確類別輸出對詞嵌入的**梯度大小** ($\partial y_{correct} / \partial e_{w_i}$)。梯度越大,表示該詞彙對分類結果的影響越大,因此越重要。 * **步驟二:替換:** * 從排名**最重要**的詞彙開始,依次嘗試替換。 * 在該詞彙的所有候選替換詞中,選擇能讓模型對**正確類別的機率最低**的那個詞進行替換,從而實現攻擊。 * 這個過程是**迭代且循序漸進**的:一旦成功替換一個詞,就鎖定該詞,然後轉向下一個最高排名的未替換詞,直到攻擊成功。 #### 3. 基因演算法 (Genetic Algorithm) 這是一種基於進化和選擇的優化方法。 * **核心概念:** 尋找最適合環境壓力(即讓分類器預測錯誤)的個體(對抗樣本)。 * **適應度 (Fitness):** 衡量一個對抗樣本讓模型預測錯誤類別的機率有多高。 * **操作步驟:** 1. **選擇 (Selection):** 根據適應度,選出兩個parents。 2. **交叉互換 (Crossover):** 將兩個parents在每個位置隨機選擇詞彙,產生一個新的子代。 3. **突變 (Mutation):** 對新產生的子代進行額外的轉換操作。 4. 不斷循環迭代,直到攻擊成功。 ### III. 逃避式攻擊範例與生成器 (Examples and Generators) #### 1. 典型攻擊方法總結 | 攻擊名稱 | 搜尋方法 | 轉換 (Transformation) | 限制 (Constraints) | | :--- | :--- | :--- | :--- | | **TextFooler** | WIR 貪心搜尋 | Counter-fitted GloVe 替換 | 詞嵌入距離、USE 相似性、POS 一致性 | | **BERT-Attack** | WIR 貪心搜尋 | BERT MLM 預測替換 | USE 相似性、最大修改詞數 | | **Universal Trigger** | 迭代更新 (基於梯度) | 尋找與任務無關的觸發字串 | 無(目標是找到觸發器,達成目標攻擊) | ### 1. TextFooler TextFooler 是一種高效且受限制條件約束的**非目標分類**攻擊。它將生成對抗樣本的過程視為一個優化問題,旨在找到最少的修改,使模型判斷錯誤。 | 攻擊名稱 | 目標 (Goal) | 轉換 (Transformation) | 限制 (Constraints) | 搜尋方法 (Search Method) | | :--- | :--- | :--- | :--- | :--- | | **TextFooler** | **非目標分類** | **Counter-fitted GloVe 替換** | 詞嵌入距離、USE 相似性、POS 一致性 | WIR 貪心搜尋 | #### 1. 目標 (Goal) TextFooler 旨在實現**非目標分類 (Untargeted Classification)**,即讓受害者模型的預測結果被破壞或爛掉即可,不需指定錯誤的類別。 #### 2. 轉換 (Transformation) TextFooler 主要依賴**詞彙替換**來構造擾動。 * **Counter-fitted GloVe 替換:** TextFooler 使用在 **Counter-fitted GloVe 詞嵌入空間**中找到的 $k$NN (K-Nearest Neighbors) 或 $\epsilon$-ball 內的詞彙進行替換。 * **優勢:** Counter-fitted 空間是經過訓練優化的,它利用**語言學約束**(將同義詞拉近,反義詞推遠),因此能提高找到真正同義詞的機率,有助於保留句子的語義。 #### 3. 限制 (Constraints) TextFooler 採用了多種嚴格的限制條件,以確保生成的對抗樣本對人類來說是難以察覺且合理的: * **詞嵌入距離 (Word embedding distance):** 確保替換詞與原詞在嵌入空間中的距離相似性。 * **通用句子編碼器 (USE) 相似性:** 衡量原始句子嵌入與擾動句子嵌入之間的**餘弦相似性**。相似性通常需要高於一個閾值(例如 0.82),以確保**語義保持**。 * **詞性 (POS) 一致性:** 要求替換後的詞彙必須保持與原詞相同的詞性,以維持文法正確性。 #### 4. 搜尋方法 (Search Method) TextFooler 採用 **帶有詞彙重要性排名的貪心搜尋 (WIR Greedy Search)**: * **步驟一:計算詞彙重要性 (WIR):** 透過 **Leave-One-Out (LOO)** 等方法,計算移除句子中每個詞彙後,模型對原始正確類別的預測機率下降了多少 ($\Delta p$)。下降越多,該詞越重要。 * **步驟二:貪心替換:** 從**最重要**的詞彙開始,依序嘗試替換。在每個詞彙的候選替換詞中,選擇能讓模型對正確類別的機率**最低**(即攻擊效果最好)的那個詞,直到模型的預測結果翻轉。 ### 2. BERT-Attack BERT-Attack 利用預訓練語言模型 (PLM) BERT 的強大能力來產生對抗樣本,並同樣使用 WIR 貪心搜尋策略。 | 攻擊名稱 | 目標 (Goal) | 轉換 (Transformation) | 限制 (Constraints) | 搜尋方法 (Search Method) | | :--- | :--- | :--- | :--- | :--- | | **BERT-Attack** | **非目標分類** | **BERT MLM 預測替換** | USE 相似性、最大修改詞數 | WIR 貪心搜尋 | #### 1. 目標 (Goal) BERT-Attack 旨在實現**非目標分類**。 #### 2. 轉換 (Transformation) BERT-Attack 的核心在於利用 BERT 進行**詞彙替換**: * **BERT MLM 預測替換:** 攻擊者將目標詞遮蔽 (mask),然後利用 BERT 的 **Masked Language Modeling (MLM)** 任務來預測最有可能填補該位置的詞彙。 * **MLM 的特性:** 雖然 MLM 預測的詞彙在語法上可能正確,但它可能導致預測出與原詞義**完全相反**的詞(例如將 `recommend` 替換為 `doubt` 或 `envy`)。 #### 3. 限制 (Constraints) BERT-Attack 採用相對寬鬆的限制: * **通用句子編碼器 (USE) 相似性:** 這是確保**語義保持**的主要手段。 * **最大修改詞彙數量:** 限制被修改的詞彙佔總詞彙數量的百分比,以維持高**重疊性**。 #### 4. 搜尋方法 (Search Method) BERT-Attack 採用 **WIR 貪心搜尋**,機制與 TextFooler 類似,即先計算詞彙重要性,然後依序嘗試替換,以最大化攻擊效果。 ### 3. Universal Trigger Universal Trigger (通用觸發器) 是一種特殊的攻擊,它不關注於微小擾動,而是專注於找到一個**通用的、與任務無關的字串**,實現強大的**目標攻擊**。 | 攻擊名稱 | 目標 (Goal) | 轉換 (Transformation) | 限制 (Constraints) | 搜尋方法 (Search Method) | | :--- | :--- | :--- | :--- | :--- | | **Universal Trigger** | **目標分類** (Targeted Attack) | **尋找與任務無關的觸發字串** | **無** | 迭代更新 (基於梯度) | #### 1. 目標 (Goal) Universal Trigger 的目標是實現**目標分類**。無論原始輸入是什麼,只要加入這個觸發字串,模型就必須被誤判為攻擊者指定的錯誤類別。例如,在機器翻譯中,它被用來實現「通用後綴丟棄器」,讓模型忽略觸發字串後面的所有內容。 #### 2. 轉換 (Transformation) 這種攻擊的轉換不是修改原句中的詞彙,而是**生成**一個特殊的觸發字串 (trigger string),並將其插入到輸入中。 #### 3. 限制 (Constraints) 在原始設計中,Universal Trigger **沒有**針對文法性或語義保持的限制。它的重點在於找到一個能達成攻擊目標的字串。 #### 4. 搜尋方法 (Search Method) Universal Trigger 的搜尋方法是**基於梯度的迭代更新**,這與前兩者的貪心替換不同,它是一種**訓練**觸發器的過程: 1. **初始化與決定長度:** 決定觸發器需要多少個詞彙(例如三個詞)並初始化它們。 2. **反向傳播與梯度獲取:** 將帶有觸發器的句子丟入模型,計算損失函數 $\mathcal{L}$ 對於**觸發詞嵌入**的梯度 $\nabla \mathcal{L} / \nabla \mathbf{e}$。 3. **最小化目標函數:** 利用**一階泰勒級數近似**,計算替換觸發詞嵌入為詞彙表中其他詞 $\mathbf{e}^+$ 時,損失函數的變化量。攻擊者會尋找一個能使損失**最大化**(或使目標錯誤類別機率達到最小化)的 token $\mathbf{e}^*$。 4. **迭代更新:** 使用這個最佳的 token $\mathbf{e}^*$ 來替換觸發器中的當前詞,然後重複步驟 1-3,直到找到一個收斂且能穩定達成目標攻擊的通用觸發器。 --- 其他課程 [【機器學習 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)