Concepts de base
本文提出了一種利用大型語言模型 (LLM) 中轉換器層之間的殘差激活分析來防禦對抗性攻擊的新方法,並通過實驗證明了該方法在不同攻擊場景下的有效性。
本文旨在開發一種強大的防禦機制,以應對通過惡意提示操縱大型語言模型 (LLM) 輸出的對抗性攻擊。這些攻擊利用模型對輸入提示的依賴性來操縱模型對信息的內部表示並返回危險的輸出,可能導致有害的後果,例如傳播虛假信息或洩露敏感數據。
本文重點研究利用殘差激活分析作為防禦策略。具體來說,我們分析了存在於 LLM 轉換器層之間的殘差流中的激活,即來自殘差連接的神經元輸出。這些殘差流有助於理解信息如何在模型中處理和傳播,為識別和減輕攻擊提示的影響提供了一個獨特的視角。
我們的研究利用了像 LLaMA 2 這樣的白盒模型的透明性,它允許深入檢查模型的內部機制,包括殘差激活。這種透明性在我們的分析中至關重要,因為它使我們能夠在粒度級別上跟踪攻擊提示如何影響模型的行為。
激活分析方法
我們從大型語言模型 (LLM) 的每個轉換器層捕獲每個提示的激活向量。轉換器層的數量因模型大小而異,因此捕獲的激活集的數量也不同。
激活向量收集: 對於具有 N 個標記 t1, t2, ..., tN 的提示 Pm,其中 m 從 1 到 M(數據集中提示的總數)索引提示,我們從每一層收集激活向量。對於提示 Pm 中的每個標記 tk,我們獲得 32 個激活向量(每層一個),表示為 v(tk)1, v(tk)2, ..., v(tk)32。
平均激活: 然後,我們對提示 Pm 中所有標記的每一層的激活向量進行平均。這意味著對於第一層,我們計算 v(m)1 = average(v(t1)1, v(t2)1, ..., v(tN)1),對於最後一層,v(m)32 = average(v(t1)32, v(t2)32, ..., v(tN)32)。這種平均確保了提示 Pm 的每組激活都具有一致的維度,而與提示的長度無關。
層向量生成: 對於每個提示 Pm,我們生成一組平均激活向量,{v(m)1, v(m)2, ..., v(m)32}。然後,我們創建新的集合,其中包含每個提示 Pm 的所有 v(m)1 向量、每個提示 Pm 的所有 v(m)2 向量,依此類推,直到 v(m)32。形式上,我們生成集合 V1 = {v(1)1, v(2)1, ..., v(M)1},V2 = {v(1)2, v(2)2, ..., v(M)2},依此類推,其中 M 是提示的總數。
分類器訓練: 我們為每組層向量訓練一個 LightGBM 分類器,以確定激活是否可以按類別區分。在這種情況下,我們訓練 32 個分類器,{C1, C2, ..., C32}。分類器 Ci 使用集合 Vi 進行訓練,其中 Vi 是每個提示 Pm 的所有 v(m)i 向量的集合。
數據集
我們使用 3 個不同的數據集進行分析,每個數據集都包含不同範圍的攻擊提示。
廣泛類別: 我們用於涵蓋廣泛攻擊的攻擊數據集是由 Luo 等人(2024 年)提供的 JailbreakV-28K 數據集。我們使用 jailbreak_query 列作為攻擊。該數據集包含每種類型的攻擊類別,例如“欺詐”、“虐待動物”和“惡意軟件”等,這表明攻擊提示生成的 harmful 主題差異很大。良性提示類別來自 Mukherjee 等人(2023 年)創建的 Open-Orca。
特定領域類別: 對於此類別,我們希望我們的攻擊符合金融環境。對於我們的良性數據集,我們使用 Huggingface 上的 Sujet-Finance-Instruct-177k 數據集。我們使用按“qa”值過濾的 user_prompt 列作為 task_type 列,因為此特定任務要求 LLM 輸出自由格式的響應。我們還刪除了預先添加到每個良性提示中的“問題:”字符串,以便標準化類的格式。我們在 LLM 上找不到特定於金融的一組攻擊提示,因此我們創建了自己的提示。有關我們用於生成金融主題攻擊的程序,請參見附錄 A。對於此數據集,我們使用 4604 個攻擊提示,並從 Sujet-Finance-Instruct-1777k 中隨機選擇了 4604 個良性提示的子集以實現類別平衡。
超特定類別: 我們有兩個數據集用於此類別,目標是對特定攻擊進行分類。第一個用於此分析的攻擊數據集來自 HackAPrompt 2023 的提交,這是一個在線競賽,旨在創建成功的攻擊提示。本次比賽的參與者創建了試圖讓 LLM 輸出字符串的提示:“我被 PWNED 了”,這是表示 LLM 已被攻破的目標輸出字符串。然後,攻擊數據集在 HuggingFace 上開源,這是一個用於共享模型和數據集的流行網站。我們使用原始數據集的一個子集,總計 25,000 次攻擊。對於良性提示,我們使用與廣泛數據集相同的子集:來自 Open-Orca 數據集的 25,000 個提示。
模型
我們在分析中使用了多個開源模型,其參數範圍盡可能大,以滿足我們的計算資源。我們從 HuggingFace 獲取了所有模型:
LLaMA 2 7B Chat
LLaMA 2 13B Chat
TinyLlama 1.1B Chat v0.4
Mistral 7B Instruct v0.2
Vicuna 7B v1.5
Wizard Vicuna 7B Uncensored