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)