文章目錄
- **核心設計目標**
- **關鍵步驟與實現細節**
- 1. **候選位置選擇(Algorithm 1: get_top_locations)**
- 2. **擾動生成與篩選(Algorithm 2: Charmer)**
- 3. **適配大語言模型(LLM)的攻擊**
- **實驗中的性能表現**
- **與其他方法的核心區別**
- 詞元級別的攻擊為什么是基于梯度的方法
- 損失函數關于輸入詞元嵌入(token embeddings)的梯度是怎么計算的
- 核心背景:模型結構與梯度計算的前提
- 具體計算步驟
- 1. 前向傳播:從詞元嵌入到模型輸出
- 2. 反向傳播:從損失到詞元嵌入的梯度傳遞
- (1)輸出層的梯度計算
- (2)中間層的梯度傳遞
- (3)最終傳遞到詞元嵌入的梯度
- 關鍵特點:處理離散與連續的銜接
- 總結
- 那字符級別的攻擊不會輕易改變語義是需要自己試出來的嗎
- 為什么字符級攻擊能減少語義變化?
- 減少語義變化的核心策略(無需全靠試錯)
- 1. **基于語言學規則的定向修改**
- 2. **基于模型梯度的敏感位置定位**
- 3. **約束條件控制修改幅度**
- 4. **對抗樣本生成框架的自動化優化**
- 試錯的輔助作用
- 總結
- use相似度是什么
- np難問題是什么
- 一、核心復雜度類別鋪墊
- 二、NP難問題的定義
- 三、NP難問題的典型例子
- 四、NP難問題的特性
- 五、實際意義
- 情感分類任務中位置子集大小n是什么
- 字符攻擊是替換原本的文字,詞元攻擊是替換分詞之后的嗎
- 魯棒性詞識別防御機制是什么
- 常見的魯棒性詞識別防御機制
- 1. 基于詞表驗證的過濾機制
- 2. 語義一致性驗證機制
- 3. 對抗訓練增強機制
- 4. 字符級糾錯與歸一化機制
- 5. 多模型融合驗證機制
- 核心目標與應用場景
- ooru
- 直接在對應位置改變不就好了嗎,為什么還要擴張和收縮
- 遞歸
- 內部最大化問題是什么
實驗中使用的Charmer方法是一種高效的字符級對抗攻擊方法,旨在通過最小化字符擾動(以Levenshtein距離衡量)生成能使模型誤分類的對抗樣本,其核心設計、關鍵步驟、參數設置及實驗表現如下:
核心設計目標
Charmer針對字符級對抗攻擊中“可能的擾動集合隨編輯距離(k)呈指數增長”的問題(推論3.9),通過貪心策略和縮小搜索空間兩種策略,在保證攻擊成功率的同時,大幅降低計算復雜度,實現高效生成隱蔽性強的對抗樣本(即擾動小、與原句語義相似度高)。
關鍵步驟與實現細節
1. 候選位置選擇(Algorithm 1: get_top_locations)
- 目的:從句子中篩選出最可能影響模型預測的字符位置,縮小擾動范圍。
- 方法:對當前句子(S’)的每個字符位置,通過插入特殊字符(\xi)(標記可能的編輯位置),生成臨時句子(\phi(S’));再通過替換算子嘗試單字符擾動,計算每個位置的損失變化(基于Carlini-Wagner損失),最終選取損失變化最大的前(n)個位置作為候選集合(Z)。
- 實驗參數:默認(n=20)(平衡攻擊成功率與效率),加速版本Charmer-Fast取(n=1)。
2. 擾動生成與篩選(Algorithm 2: Charmer)
- 初始化:將初始對抗句子(S’)設為原始句子(S)。
- 迭代擾動:最多迭代(k)次(最大Levenshtein距離,默認(k=10),長句數據集如AG-News用(k=20)):
- 基于候選位置集合(Z),對每個位置嘗試所有可能的字符替換(來自數據集字符集(\Sigma))、插入或刪除(通過特殊字符(\xi)實現),生成所有可能的單字符擾動句子。
- 計算每個擾動句子的損失值(Carlini-Wagner損失:(\mathcal{L}(f(S’), y) = \max_{\hat{y} \neq y} f(S’)_{\hat{y}} - f(S’)_y)),選取損失最大的句子作為新的(S’)。
- 終止條件:若(S’)導致模型誤分類(預測標簽≠真實標簽(y)),攻擊成功并返回(S’);否則迭代至(k)次后返回最終結果。
3. 適配大語言模型(LLM)的攻擊
- 輸入形式:將擾動句子(S’)與提示詞拼接((S_{P_1} \oplus S’ \oplus S_{P_2})),引導LLM輸出分類標簽(如“積極”“消極”)。
- 損失計算:復用Carlini-Wagner損失,將模型輸出的“下一個token概率”(如(\mathbb{P}(\text{消極} | \text{輸入})))作為標簽分數,衡量擾動對LLM預測的影響。
實驗中的性能表現
-
攻擊成功率(ASR):在所有基準數據集(SST-2、MNLI-m、RTE等)上,對BERT、RoBERTa等模型的ASR均超過95%;對LLM(如Llama 2-Chat 7B),即使是加速版本Charmer-Fast,ASR仍顯著優于現有方法。
-
擾動隱蔽性:
- Levenshtein距離:平均僅需3-5次字符編輯(遠低于其他字符級方法如TextBugger的8-10次)。
- 句子相似度:與原句的語義相似度(如BERTScore)最高或次高,擾動對人類可讀性影響極小。
-
效率:通過縮小候選位置((n=20)),計算成本僅為遍歷所有位置的1/5-1/10,Charmer-Fast((n=1))效率更高,適合大規模應用。
-
對抗防御的突破能力:能輕易繞過基于拼寫校正器的防御(如Pruthi et al., 2019),即使防御僅放松一項約束(如允許擾動詞首),ASR也從0.96%飆升至98.09%。
與其他方法的核心區別
- 相比token級攻擊(如TextFooler):Charmer直接擾動字符,無需依賴預訓練分詞器,適用范圍更廣(尤其對小語種或未分詞語言),且擾動更隱蔽。
- 相比其他字符級攻擊(如DeepWordBug):通過貪心策略聚焦高影響位置,避免盲目遍歷所有可能擾動,攻擊效率和成功率均顯著提升。
綜上,Charmer在實驗中展現了“高成功率、低擾動、高效率”的特點,驗證了其作為字符級對抗攻擊方法的優越性。
詞元級別的攻擊為什么是基于梯度的方法
要是因為基于梯度的方法能夠利用模型的可微性,通過計算損失函數關于輸入詞元的梯度,高效地找到對模型決策最敏感的詞元,并確定最優的擾動方向,從而生成對抗樣本以達到攻擊目的。
-
利用模型可微性與梯度信息:在自然語言處理中,模型通常是基于神經網絡的,其在計算過程中是可微的。基于梯度的方法可以利用這一特性,通過計算損失函數關于輸入詞元嵌入(token embeddings)的梯度,來確定如何修改詞元能夠最大化模型的損失,從而生成對抗樣本。例如,在圖像領域,對抗性攻擊可以通過梯度上升算法最大化模型損失函數來生成對抗樣本,而在 NLP 領域,也可以運用梯度在詞元嵌入上進行類似的操作,將對抗樣本的搜索問題轉換到連續可微的嵌入空間。
-
高效搜索最優擾動:基于梯度的方法能夠為詞元級別的攻擊提供明確的優化方向。攻擊者可以根據梯度的方向和大小,在詞匯表中尋找最優的候選詞元進行替換,以達到擾動模型輸出的目的。如 GCG 攻擊方法,在每次迭代中,對于后綴中的每個詞元位置,計算用詞匯表中其他詞元替換當前詞元后損失函數的近似梯度,然后選擇能使損失下降最快的一批候選詞元,再從中隨機選擇一個進行替換,通過這種方式高效地找到了能有效觸發模型產生有害行為的輸入。
-
處理離散數據的優化:雖然文本數據是離散的,但基于梯度的方法可以通過一些技巧來處理這一問題。例如,Facebook 提出的基于梯度的對抗攻擊方法,將對抗攻擊視為從對抗分布中進行采樣,而不是直接擾動每個離散的輸入詞元,通過使用 Gumbel - Softmax 技巧來近似梯度,使得可以用梯度下降的方法來優化對抗分布,同時還可以添加軟約束來保持文本的流暢性或語義相似性,從而在詞元級別實現有效的攻擊。
-
精準定位關鍵詞元:梯度能夠反映出每個詞元對模型輸出結果的影響程度,基于梯度的攻擊方法可以據此精準定位到對模型決策最為關鍵的詞元。然后,通過對這些關鍵詞元進行微小但有效的擾動,就有可能改變模型的輸出,達到攻擊的效果。比如 HotFlip 方法基于單詞中字符的原子翻轉操作,通過計算梯度來確定字符的翻轉方向,以生成對抗樣本,這種方式能夠在最小限度改變原樣本的情況下,達到攻擊模型的目的。
損失函數關于輸入詞元嵌入(token embeddings)的梯度是怎么計算的
損失函數關于輸入詞元嵌入(token embeddings)的梯度計算,本質上是通過神經網絡的反向傳播(backpropagation) 機制,利用鏈式法則逐層求解偏導數的過程。在自然語言處理(NLP)模型中,這一過程需要結合模型的結構(如嵌入層、Transformer層、輸出層等)逐步推導,最終得到損失對每個詞元嵌入的梯度。
核心背景:模型結構與梯度計算的前提
在NLP模型(如BERT、GPT等)中,輸入文本會先被拆分為詞元(tokens),每個詞元通過嵌入層(embedding layer) 映射為固定維度的連續向量(即詞元嵌入,記為 ( \mathbf{e}_i ),其中 ( i ) 表示第 ( i ) 個詞元)。這些嵌入向量會作為后續網絡層(如自注意力層、前饋網絡等)的輸入,經過一系列變換后得到模型輸出(如分類概率、下一個詞元的預測分布等),再通過輸出與標簽的差異計算損失函數(loss function,記為 ( \mathcal{L} ))。
梯度 ( \frac{\partial \mathcal{L}}{\partial \mathbf{e}_i} ) 表示“損失函數對第 ( i ) 個詞元嵌入的敏感程度”——梯度的方向指示了如何調整 ( \mathbf{e}_i ) 能使損失增大(攻擊場景)或減小(訓練場景),梯度的大小則表示敏感程度的強弱。
具體計算步驟
損失函數關于詞元嵌入的梯度計算,遵循“前向傳播→計算損失→反向傳播”的流程,核心是通過鏈式法則逐層傳遞梯度。以下是簡化的分步說明:
1. 前向傳播:從詞元嵌入到模型輸出
假設模型的計算過程可以表示為一系列函數的復合:
( \text{輸出} = f_N(f_{N-1}(\dots f_1(\mathbf{e}_1, \mathbf{e}_2, \dots, \mathbf{e}_T) \dots)) )
其中:
- ( T ) 是輸入序列的詞元數量,( \mathbf{e}_1, \dots, \mathbf{e}_T ) 是詞元嵌入向量;
- ( f_1 ) 可能是嵌入層后的第一個處理層(如位置編碼層),( f_2 ) 可能是Transformer的自注意力層,( f_N ) 是輸出層(如分類層);
- 最終輸出會與標簽(如真實類別)計算損失 ( \mathcal{L} )。
2. 反向傳播:從損失到詞元嵌入的梯度傳遞
梯度計算從損失函數 ( \mathcal{L} ) 開始,通過鏈式法則反向逐層計算每個網絡層的梯度,最終傳遞到詞元嵌入 ( \mathbf{e}_i )。
(1)輸出層的梯度計算
首先計算損失對模型輸出層輸出的梯度。例如,若任務是分類,輸出層通常是softmax函數,輸出為類別概率分布 ( \mathbf{y} = [y_1, y_2, \dots, y_C] )(( C ) 是類別數),損失函數可能是交叉熵損失:
( \mathcal{L} = -\sum_{c=1}^C \hat{y}_c \log(y_c) )(其中 ( \hat{y}_c ) 是真實標簽的獨熱編碼)。
此時,損失對輸出層輸出的梯度為:
( \frac{\partial \mathcal{L}}{\partial \mathbf{y}} = [\frac{\partial \mathcal{L}}{\partial y_1}, \dots, \frac{\partial \mathcal{L}}{\partial y_C}] ),其值可直接通過交叉熵損失的導數公式計算(例如,對于正確類別 ( c^* ),梯度分量為 ( y_{c^*} - 1 ),其他類別為 ( y_c ))。
(2)中間層的梯度傳遞
接下來,將梯度從輸出層反向傳遞到前一層(如Transformer的前饋網絡、自注意力層等)。每一層的梯度計算都依賴于該層的函數形式和后一層傳遞過來的梯度。
以一個簡化的中間層 ( f_k ) 為例:設該層的輸入為 ( \mathbf{x} ),輸出為 ( \mathbf{z} = f_k(\mathbf{x}) )。若已知后一層傳遞來的梯度為 ( \frac{\partial \mathcal{L}}{\partial \mathbf{z}} ),則該層輸入的梯度為:
( \frac{\partial \mathcal{L}}{\partial \mathbf{x}} = \left( \frac{\partial \mathbf{z}}{\partial \mathbf{x}} \right)^T \cdot \frac{\partial \mathcal{L}}{\partial \mathbf{z}} )
其中 ( \frac{\partial \mathbf{z}}{\partial \mathbf{x}} ) 是該層的Jacobian矩陣(輸出對輸入的偏導數矩陣),轉置后與后一層梯度進行矩陣乘法,得到當前層輸入的梯度。
在Transformer等復雜模型中,中間層包含自注意力機制、殘差連接和層歸一化等組件,梯度計算需分別處理:
- 自注意力層:需計算查詢(Q)、鍵(K)、值(V)對輸入的梯度,以及注意力權重對Q/K/V的梯度;
- 殘差連接:梯度會直接“累加”(因為 ( \mathbf{z} = \mathbf{x} + f(\mathbf{x}) ),故 ( \frac{\partial \mathcal{L}}{\partial \mathbf{x}} = \frac{\partial \mathcal{L}}{\partial \mathbf{z}} + \frac{\partial \mathcal{L}}{\partial \mathbf{z}} \cdot \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} ));
- 層歸一化:需考慮縮放和偏移參數對梯度的影響。
(3)最終傳遞到詞元嵌入的梯度
當梯度反向傳播到嵌入層時,即可得到損失對每個詞元嵌入的梯度。假設嵌入層的輸出就是詞元嵌入向量 ( \mathbf{e}_1, \dots, \mathbf{e}_T )(忽略位置編碼等細節,或已將其納入前向傳播),則經過中間層梯度的逐層傳遞后,最終得到:
( \frac{\partial \mathcal{L}}{\partial \mathbf{e}_i} )(( i = 1, 2, \dots, T ))
這一梯度向量的每個維度,都表示“該維度的詞元嵌入變化對損失的影響程度”。
關鍵特點:處理離散與連續的銜接
需要注意的是,詞元本身是離散的(如“貓”“狗”等具體詞匯),但詞元嵌入是連續的向量。在攻擊場景中,我們無法直接修改連續的嵌入向量(因為輸入必須是詞匯表中的離散詞元),但梯度 ( \frac{\partial \mathcal{L}}{\partial \mathbf{e}_i} ) 為我們提供了方向指引:通過尋找詞匯表中與“當前詞元嵌入 + 梯度方向”最接近的詞元(即替換詞元),來近似實現“增大損失”的目的(這也是基于梯度的詞元級攻擊的核心邏輯)。
總結
損失函數關于詞元嵌入的梯度計算,是通過反向傳播和鏈式法則,從損失函數出發,逐層求解各網絡層的梯度,最終傳遞到嵌入層的過程。這一梯度反映了詞元嵌入的微小變化對損失的影響,為詞元級別的對抗攻擊提供了“如何修改詞元才能最有效干擾模型”的量化依據。
那字符級別的攻擊不會輕易改變語義是需要自己試出來的嗎
字符級別的攻擊(如替換、插入、刪除個別字符)要實現“不輕易改變語義”,并非完全依賴人工試錯,而是可以通過算法設計和約束條件來系統性地減少語義偏差,同時結合一定的驗證機制(而非盲目嘗試)。其核心邏輯是利用語言的容錯性(如拼寫錯誤不影響理解)和模型的脆弱性,通過定向修改實現攻擊目標,同時控制語義變化。
為什么字符級攻擊能減少語義變化?
字符級攻擊的修改粒度是單個字符(如將“apple”改為“appla”,“銀行”改為“銀衍”),由于修改幅度小,人類通常能通過上下文推斷原意,因此天然具備“語義保留”的潛力。但要讓這種潛力穩定實現,需要算法層面的設計,而非單純試錯。
減少語義變化的核心策略(無需全靠試錯)
字符級攻擊通過以下方式主動控制語義變化,而非盲目嘗試:
1. 基于語言學規則的定向修改
算法會優先選擇對語義影響極小的字符位置或類型進行修改,利用語言的冗余性和容錯性:
- 非關鍵詞位置:避開句子的核心成分(如動詞、名詞核心詞),選擇修飾詞、虛詞或冗余字符(如“的”“了”“s”“ed”等)。例如,將“我明天去學校”改為“我明兲去學校”(替換“天”為“兲”),核心語義未變。
- 形近字/音近字替換:利用視覺或聽覺相似的字符(如“己/已/巳”“辯/辨”“0/o”“l/1”),這些替換在人類閱讀時易被忽略,但可能干擾模型的字符級特征提取。
- 拼寫容錯區域:在英語等語言中,對詞尾(如“ing”“ed”)或不影響發音的字符(如“colour”→“colur”)進行修改,人類可通過上下文補全語義,而模型可能因字符匹配錯誤被干擾。
2. 基于模型梯度的敏感位置定位
與詞元級攻擊類似,字符級攻擊也可利用模型的梯度信息,找到模型敏感但人類語義不敏感的字符,從而定向修改:
- 通過計算損失函數關于字符嵌入(或字符級特征)的梯度,定位那些“微小修改就能顯著影響模型輸出”的字符位置(這些位置往往不是人類理解語義的關鍵)。
- 例如,某模型對“轉賬金額”中的數字字符特別敏感,梯度會指示“修改數字后的某個字符(如‘5000’→‘500o’)能讓模型誤判”,而人類仍能理解金額為5000。
3. 約束條件控制修改幅度
算法會通過約束條件限制修改強度,避免語義偏移:
- 編輯距離約束:限制修改的字符數量(如最多改1 - 2個字符),確保文本整體結構不變。例如,“今天天氣很好”→“今天天氣狠好”(僅改“很”為“狠”),語義幾乎無變化。
- 語義相似度過濾:通過預訓練語言模型(如BERT)計算修改前后文本的語義相似度,過濾掉相似度低于閾值的候選樣本。例如,修改后文本與原文本的余弦相似度需大于0.9,確保語義一致。
4. 對抗樣本生成框架的自動化優化
主流的字符級攻擊方法(如HotFlip、TextFooler的字符級變體)都采用迭代優化框架,而非隨機試錯:
- 先隨機生成少量候選修改(如替換每個字符為形近字),計算其對模型輸出的影響和語義變化;
- 保留“攻擊效果好且語義變化小”的修改,作為下一輪迭代的基礎,逐步逼近“高攻擊成功率 + 低語義偏移”的目標。
試錯的輔助作用
盡管有上述自動化策略,字符級攻擊仍可能存在一定的“試錯成分”,原因在于:
- 語言的模糊性:某些字符修改的語義影響難以被算法完全量化(如諧音雙關詞的修改可能意外改變語義);
- 模型差異:不同模型對字符的敏感位置可能不同,需根據具體模型調整修改策略。
因此,實際應用中可能需要對生成的對抗樣本進行人工抽樣驗證(或通過人類標注過濾),但這是“優化環節”而非“核心生成邏輯”。
總結
字符級攻擊“不輕易改變語義”的效果,主要依賴算法對語言學規則的利用、模型梯度的定向指導、修改幅度的約束等系統性設計,而非單純的人工試錯。試錯更多是輔助驗證和微調的手段,核心是通過技術手段在“攻擊有效性”和“語義保留”之間找到平衡。
use相似度是什么
USE相似度是指利用通用句子編碼器(Universal Sentence Encoder,簡稱USE)來計算句子之間的語義相似度。
USE是由Google開發的一種預訓練模型,它可以將任何長度的自然語言句子轉換為一個固定長度的向量,通常是512維。在計算句子相似度時,首先將兩個句子分別通過USE模型編碼為向量表示,然后再計算這兩個向量之間的余弦相似度,以此來衡量句子之間的語義相似程度。例如,對于句子“今天天氣真好!”和“天氣非常不錯”,USE會將它們轉換為相應的向量,通過計算向量間的余弦相似度,就可以得到這兩個句子在語義上的相似程度。
USE相似度在自然語言處理領域有廣泛的應用,如文本分類、語義搜索、聊天機器人、問答系統等。它能夠捕捉句子的深層次語義信息,而不僅僅是表面的詞匯重疊,并且具有計算效率高的特點,適合對實時性要求比較高的場景。
np難問題是什么
NP難問題(NP-hard Problems) 是計算機科學和算法復雜度理論中的一個核心概念,用來描述一類“計算難度極高”的問題。要理解NP難問題,需要先明確幾個相關的復雜度類別,再逐步推導其定義和特性。
一、核心復雜度類別鋪墊
在復雜度理論中,問題通常根據求解難度被劃分為不同類別,最基礎的包括:
- P類問題:存在多項式時間算法的問題(“多項式時間”指算法的運行時間與輸入規模 ( n ) 的關系可以用 ( n^k ) 表示,如 ( n^2 )、( n^3 ) 等,例如排序問題、最短路徑問題)。
- NP類問題:非確定性多項式時間問題,指“可以在多項式時間內驗證解的正確性”的問題(但不一定能在多項式時間內求解)。例如“旅行商問題的某個路徑是否小于100公里”可以快速驗證,但找到這樣的路徑可能很難。
簡單來說:
- P類問題是“容易解也容易驗證”的問題;
- NP類問題是“可能難解難,但解容易驗證”的問題。
目前尚未證明 ( P = NP )(即是否所有NP類問題都有多項式時間算法),這是計算機科學中最著名的未解難題之一。
二、NP難問題的定義
NP難問題是指滿足以下條件的問題:
- 任何NP類問題都可以在多項式時間內歸約到它(“歸約”指用該問題的解法來解決其他NP問題,且轉換過程高效)。
- 它本身不一定屬于NP類(即可能連驗證解的正確性都無法在多項式時間內完成)。
這意味著:
- NP難問題至少和所有NP類問題一樣難(因為能解決NP難問題,就能解決所有NP問題);
- 若某個NP難問題被證明存在多項式時間算法,則所有NP類問題都有多項式時間算法(即 ( P = NP )),但目前普遍認為這是不可能的。
三、NP難問題的典型例子
現實中許多常見問題都是NP難問題,例如:
- 旅行商問題(TSP):給定多個城市和距離,尋找一條最短的閉合路徑,要求每個城市恰好訪問一次。
- 子集和問題:給定一組整數和一個目標值,判斷是否存在一個子集的和等于目標值。
- 圖著色問題:用最少的顏色為圖的頂點著色,使相鄰頂點顏色不同。
- 布爾可滿足性問題(SAT)的推廣:如3-SAT(限制每個子句最多3個變量)。
- 背包問題(0-1背包):給定物品的重量和價值,在限定重量內選擇物品使總價值最大。
四、NP難問題的特性
- 計算復雜度極高:目前沒有已知的多項式時間算法,求解大規模實例時往往需要依賴近似算法、啟發式算法(如遺傳算法、模擬退火)或指數時間算法(僅適用于小規模輸入)。
- 普遍性:許多實際問題(如調度、規劃、優化等)本質上都是NP難問題,這也是研究它們的重要原因。
- 與NP完全問題的關系:
- NP完全問題(NP-complete) 是同時屬于“NP類”和“NP難問題”的問題(即滿足NP難的條件,且自身屬于NP)。
- 因此,NP難問題是一個更廣泛的集合,包含NP完全問題和一些比NP問題更難的問題(如某些無法在多項式時間內驗證解的問題)。
五、實際意義
由于NP難問題在現實中廣泛存在,研究它們的核心意義在于:
- 明確問題的難度邊界,避免徒勞地尋找多項式時間算法;
- 設計高效的近似算法或啟發式策略,在可接受的時間內得到接近最優的解;
- 推動復雜度理論的發展,深化對計算本質的理解(如 ( P ) 與 ( NP ) 問題的關系)。
總之,NP難問題是一類“難到極致”的計算問題,其存在深刻影響了算法設計和計算機科學的發展。
情感分類任務中位置子集大小n是什么
在情感分類任務中,位置子集大小(n)通常是指在處理文本數據時,選取的與某個特定位置相關的相鄰位置的數量總和,它是一個用于控制模型關注文本局部信息范圍的超參數。
例如,在基于Transformer的情感分類模型中,對于某個詞元,可能會考慮其前后各(n/2)個詞元作為其位置子集(假設(n)為偶數),通過這種方式來捕捉該詞元周圍的上下文信息,以幫助模型更準確地判斷情感極性。又如在CNN模型中,卷積核的大小可以類比為位置子集大小(n),它決定了每次卷積操作所覆蓋的詞元數量,即模型每次處理的文本局部區域的大小。
位置子集大小(n)的設置會影響模型的性能和計算效率。較大的(n)可以讓模型獲取更廣泛的上下文信息,但也會增加計算量和模型的復雜度;較小的(n)則可能導致模型無法充分利用上下文信息,從而影響情感分類的準確性。
字符攻擊是替換原本的文字,詞元攻擊是替換分詞之后的嗎
字符攻擊通常是指替換、插入或刪除文本中原本的字符,從而對文本進行細微修改以達到攻擊目的,比如將“password”修改為“p@ssword”。
詞元攻擊一般是針對分詞或子詞單元進行操作的。在自然語言處理中,文本通常會先被分詞或拆分為詞元(token),詞元攻擊就是通過替換、添加或刪除這些詞元來生成對抗樣本,以干擾模型的正常判斷。例如,在TEXTFOOLER攻擊方法中,會先篩選出對模型預測結果影響最大的關鍵詞,然后從同義詞中選出語義最接近且詞性相同的詞對這些關鍵詞進行替換。不過需要注意的是,詞元并不完全等同于傳統意義上的分詞結果,在一些基于子詞分詞的模型中,詞元可能是更細粒度的子詞單位。
魯棒性詞識別防御機制是什么
“魯棒性詞識別防御機制”是指在自然語言處理(NLP)任務中,為增強模型對“詞(或詞元)的識別穩定性”而設計的防御策略,核心目的是抵御針對詞/詞元的惡意攻擊(如字符級擾動、詞元替換等),確保模型在面對被篡改的詞時,仍能準確理解其語義或正確分類,避免被誤導。
這類機制主要針對兩類威脅:
- 字符級攻擊:通過替換、插入、刪除個別字符(如將“信任”改為“信仟”,“good”改為“g00d”)生成看似相似但可能誤導模型的詞;
- 詞元級攻擊:替換或插入語義相近但會改變模型判斷的詞元(如將“優秀”替換為“尚可”以干擾情感分類)。
常見的魯棒性詞識別防御機制
1. 基于詞表驗證的過濾機制
通過預設的“合法詞表”或“領域詞表”,對輸入文本中的詞進行合法性校驗,過濾明顯異常的擾動詞。
- 具體方法:
- 檢查詞是否在預定義詞表中(如通用詞典、行業術語庫),若不在詞表中,觸發二次驗證(如判斷是否為拼寫錯誤或惡意擾動);
- 對字符級擾動進行“模糊匹配”,例如通過編輯距離(如Levenshtein距離)判斷異常詞與詞表中合法詞的相似度,若相似度高于閾值(如0.8),則修正為最接近的合法詞。
- 示例:輸入“信仟”時,通過詞表匹配發現與“信任”編輯距離為1,且上下文為“用戶對平臺的信仟”,則修正為“信任”。
2. 語義一致性驗證機制
利用預訓練語言模型(如BERT、USE)或語義相似度計算工具,驗證被修改的詞與上下文的語義是否一致,過濾語義沖突的擾動詞。
- 具體方法:
- 對輸入詞及其上下文進行編碼,計算“原詞+上下文”與“擾動詞+上下文”的語義相似度;
- 若相似度低于預設閾值(如0.7),則判定該詞為惡意擾動,拒絕采用或替換為更合理的詞。
- 示例:在情感分類任務中,原句為“這部電影非常精彩”,若被改為“這部電影非常爛彩”,通過BERT計算語義相似度發現顯著下降(原句情感為正,擾動句語義混亂),則判定“爛彩”為無效詞,恢復或修正為“精彩”。
3. 對抗訓練增強機制
通過在模型訓練過程中引入“對抗樣本”(含被擾動的詞),讓模型學習識別并抵御常見的詞攻擊模式,提升自身魯棒性。
- 具體方法:
- 生成包含字符級/詞元級擾動的對抗樣本(如用HotFlip、TextFooler等工具),與正常樣本混合作為訓練數據;
- 模型在訓練中學習區分“真實語義詞”和“擾動詞”,減少對擾動特征的依賴。
- 示例:訓練情感分類模型時,加入“這部電影很[糟/遭]糕”(“遭”為擾動字符)、“這部電影很[出色/尚可]”(“尚可”為擾動詞元)等樣本,讓模型學會忽略無效擾動,聚焦核心語義。
4. 字符級糾錯與歸一化機制
針對字符級攻擊(如諧音替換、形近字替換、特殊符號插入),通過規則或模型進行字符糾錯,將擾動詞歸一化為標準形式。
- 具體方法:
- 規則層面:建立形近字映射表(如“仟→仟”“0→o”“l→1”)、諧音字對照表(如“鴨梨→壓力”),自動替換異常字符;
- 模型層面:使用序列標注模型(如CRF)或預訓練語言模型的字符級輸出,識別并修正拼寫錯誤或惡意擾動。
- 示例:將“g00d”修正為“good”,“銀衍”修正為“銀行”,“5月天”(被改為“5月兲”)修正為“5月天”。
5. 多模型融合驗證機制
通過多個獨立模型對詞的語義進行交叉驗證,降低單一模型被特定攻擊誤導的風險。
- 具體方法:
- 用不同架構的模型(如CNN、RNN、Transformer)或不同預訓練權重的模型,分別對輸入詞的語義進行判斷;
- 若多數模型對某詞的判斷一致,則接受該結果;若出現顯著分歧,則觸發人工審核或進一步驗證。
- 示例:在垃圾郵件檢測中,某詞“[推/堆]廣”被替換為“堆廣”,模型A誤判為正常,模型B和模型C均判定為異常(語義不通),則綜合判定“堆廣”為擾動詞。
核心目標與應用場景
魯棒性詞識別防御機制的核心是在“保留正常詞語義”和“抵御惡意擾動”之間找到平衡,確保模型在復雜攻擊下仍能穩定工作。其廣泛應用于需要精準詞理解的任務,如情感分類、垃圾郵件檢測、輿情分析、內容安全審核等。
ooru
這段內容主要圍繞字符級對抗攻擊(如文中提出的Charmer)的效果及現有防御方案的局限性展開,具體含義如下:
-
攻擊效果顯著:研究提出的攻擊方法在所有測試的TextAttack基準模型(如BERT、RoBERTa等)以及Llama-2、Vicuna等大語言模型中,攻擊成功率(ASR)都超過了95%;相比性能第二的攻擊方法,最高能提升23個百分點的ASR,說明該攻擊方法在字符級擾動上表現極強。
-
現有對抗訓練防御存在缺陷:基于對抗訓練的防御方案(如Hou等人2023年提出的方法)會降低模型在字符級別的魯棒性。具體來說,與標準訓練的模型相比,采用這類防御的模型,其被字符級攻擊成功攻破的概率(ASR)會上升3.32個百分點,意味著這類防御反而讓模型在字符級擾動下更脆弱。
-
拼寫校正防御的局限性:依賴拼寫校正器(如Pruthi等人2019年、Jones等人2020年提出的方法)的防御,只有在攻擊者受到嚴格約束(如不能重復擾動同一單詞、不能修改單詞首尾字符等)時才有效;但只要放寬其中任何一個約束,攻擊成功率就會從極低的0.96%飆升至98.09%,說明這類防御非常脆弱。
-
結論:總體來看,僅通過拼寫校正器無法實現模型在字符級別的魯棒性,字符級對抗攻擊的防御仍需更有效的方案。
直接在對應位置改變不就好了嗎,為什么還要擴張和收縮
在文中的字符級對抗攻擊中,之所以需要擴張((\phi))和收縮((\psi))操作,而非直接在對應位置修改,是為了統一且形式化地表示所有可能的單字符編輯操作(插入、刪除、替換),確保攻擊的可控性和可分析性。具體原因如下:
-
統一建模三種編輯操作
字符級對抗攻擊需要涵蓋插入、刪除、替換三種基本操作,而直接修改對應位置只能直觀表示“替換”,難以統一描述“插入”和“刪除”。
擴張算子(\phi)通過在原始句子(S)的每個字符前后及首尾插入特殊字符(\xi)(如將“Hello”擴張為“(\perp H \perp e \perp l \perp l \perp o \perp)”),為所有可能的編輯操作(包括在兩個字符間插入新字符、刪除某個字符)標記出明確的操作位置(i);之后通過替換擴張后句子中位置(i)的字符為(c),再經收縮算子(\psi)去除所有(\xi),即可統一表示插入、刪除、替換這三種操作。
例如,要得到“Helo”(從“Hello”刪除一個“l”),可通過擴張后修改對應位置的(\xi)實現,最終經收縮得到結果,這比直接修改更便于形式化追蹤和約束。 -
量化和約束擾動范圍
文中通過Levenshtein距離約束攻擊的擾動程度(如(d_{lev}(S, S’) \leq 1)),而擴張和收縮操作能明確關聯原始句子與對抗樣本的擾動關系:擴張后的位置范圍([2|S| + 1])對應所有可能的單字符編輯位置,結合收縮操作可確保生成的對抗樣本(S’)與原始句子的Levenshtein距離嚴格可控(如為1)。
若直接修改,可能因操作不明確導致擾動范圍超出約束(如誤增多個編輯步驟),而通過擴張-修改-收縮的流程,能精準控制擾動為“最少單字符編輯”,符合Levenshtein距離的定義。 -
便于分析攻擊的“不可感知性”
字符級攻擊要求生成的對抗樣本(S’)與原始句子(S)高度相似(即“不可感知”),通過擴張和收縮,可確保擾動僅通過單字符編輯實現,且最終經收縮得到的(S’)與(S)的Levenshtein距離極小(如1),從而驗證攻擊的“不可感知性”是否達標。直接修改可能難以保證這種相似性的嚴格控制。
綜上,擴張和收縮并非多余步驟,而是為了在字符級對抗攻擊中統一建模編輯操作、精準控制擾動程度、便于分析攻擊特性而設計的形式化框架,讓攻擊過程更系統、可量化。
遞歸
這段內容定義了如何通過遞歸的方式生成字符級對抗攻擊中滿足特定Levenshtein距離約束的句子集合(\mathcal{S}_k(S, \Gamma))(即與原始句子(S)的Levenshtein距離不超過(k)的所有句子構成的集合),具體含義如下:
-
符號說明:(S)是原始句子,(\Gamma)是字符集,(k)是Levenshtein距離的約束值(表示最多允許(k)次單字符編輯操作);(\phi)是擴張算子(在句子中插入特殊字符(\xi)以標記所有可能的編輯位置),(\psi)是收縮算子(去除所有(\xi),得到擾動后的句子);(\phi(S) \stackrel{i}{\leftarrow} c)表示在擴張后的句子中,將位置(i)的字符替換為(c)((c)可以是(\Gamma)中的字符或(\xi))。
-
遞歸生成規則:
- 當(k=1)時:(\mathcal{S}_1(S, \Gamma))由所有通過以下操作生成的句子組成——對原始句子(S)進行擴張((\phi(S))),然后在擴張后句子的所有可能位置(i)((i)的范圍是([2|S| + 1]),與原始句子長度相關)替換為任意字符(c)((c)屬于(\Gamma)或(\xi)),最后通過收縮算子(\psi)處理得到的句子。這意味著(\mathcal{S}_1(S, \Gamma))包含了所有與(S)的Levenshtein距離為1的句子。
- 當(k>1)時:(\mathcal{S}k(S, \Gamma))由所有通過以下操作生成的句子組成——對(\mathcal{S}{k-1}(S, \Gamma))(即與(S)的Levenshtein距離不超過(k-1)的句子集合)中的任意句子(\hat{S})進行擴張((\phi(\hat{S}))),然后在擴張后句子的所有可能位置(i)((i)的范圍是([2|\hat{S}| + 1]))替換為任意字符(c)((c)屬于(\Gamma)或(\xi)),最后通過收縮算子(\psi)處理得到的句子。這表示通過在已有擾動的基礎上再進行一次編輯操作,生成距離為(k)的句子集合。
綜上,該推論通過遞歸方式明確了如何構建與原始句子的Levenshtein距離不超過(k)的所有句子,為字符級對抗攻擊中擾動范圍的界定提供了形式化依據。
這里的內容是關于字符級對抗攻擊中,滿足Levenshtein距離不超過(k)的對抗性句子集合(\mathcal{S}_{k}(S, \Gamma))的大小范圍(即集合中包含的句子數量)的邊界約束,具體含義如下:
-
符號說明:(\Gamma)是字符集,(|\Gamma|)表示該字符集包含的字符數量;(k)是Levenshtein距離的約束值(即對抗性句子與原始句子的最大編輯距離);(S)是原始句子,(|S|)為其長度;(\mathcal{S}_{k}(S, \Gamma))是所有與(S)的Levenshtein距離不超過(k)的句子構成的集合。
-
集合大小的下界:(\frac{|\Gamma|^{k+1}-1}{|\Gamma|-1}) 表示(\mathcal{S}_{k}(S, \Gamma))的最小可能大小。這一結果源于將對抗性句子的生成視為從字符集(\Gamma)中選擇字符進行最多(k)次編輯操作的組合數,當允許重復使用字符集時,其最小值可通過等比數列求和公式推導得出(當(|\Gamma|=1)時,下界為(k+1))。
-
集合大小的上界:((|\Gamma|+1)^{k} \cdot \prod_{j=1}^{k}(2(|S|+k)-1)) 表示(\mathcal{S}_{k}(S, \Gamma))的最大可能大小。其中,((|\Gamma|+1)^{k})與每次編輯操作的可選方式(插入、刪除、替換等)數量相關,而乘積項則與句子長度隨編輯操作的增長有關,整體反映了在最寬松的擾動約束下,可能生成的對抗性句子的最大數量。
這一不等式通過數學形式明確了字符級對抗攻擊中,生成的對抗性句子集合的規模范圍,既體現了擾動的可控性(集合大小有界),也為評估攻擊的效率和防御的難度提供了量化依據。
內部最大化問題是什么
在文中“5.3. Adversarial Training”部分,內部最大化問題是指在對抗性訓練(Adversarial Training)中,利用攻擊方法(如Charmer或TextGrad)生成對抗樣本時,使損失函數最大化的過程。
具體來說,對抗性訓練的目標可表述為一個極大極小問題,內部最大化負責生成對抗樣本,其目標是找到能使模型預測結果與真實標簽差異最大的對抗樣本,即最大化損失函數。以Carlini-Wagner損失函數為例,對于輸入句子(S)和模型(f),通過調整句子中的字符(在字符級攻擊中),尋找能使(\mathcal{L}(f(S’), y)=max {\hat{y} \neq y} f(S’){\hat{y}}-f(S’)_{y})((y)為真實標簽,(\hat{y})為非真實標簽)最大的對抗樣本(S’) 🔶1-69。在這個過程中,模型會評估不同擾動下的損失值,不斷嘗試不同的單字符擾動(如Charmer方法中在預選定的位置集合中進行字符替換、插入或刪除操作),以找到能最大程度誤導模型的對抗樣本,從而實現損失的最大化。
通過解決內部最大化問題生成的對抗樣本,會用于外部最小化,即通過最小化這些對抗樣本的損失來更新模型參數,使模型對對抗攻擊更具魯棒性。