💥 Gate廣場活動: #FST创作大赛# 💥
在 Gate廣場 發布 CandyDrop 第71期:CandyDrop x FreeStyle Classic Token (FST) 相關原創內容,即有機會瓜分 3,000 FST 獎勵!
📅 活動時間:2025年8月27日 – 9月2日
📌 參與方式:
發布原創內容,主題需與 FST 或 CandyDrop 活動相關
內容不少於 80 字
帖子添加話題: #FST创作大赛#
附上 CandyDrop 參與截圖
🏆 獎勵設置:
一等獎(1名):1,000 FST
二等獎(3名):500 FST/人
三等獎(5名):200 FST/人
📄 注意事項:
內容必須原創,禁止抄襲或刷量
獲獎者需完成 Gate 廣場身分認證
活動最終解釋權歸 Gate 所有
活動詳情連結: https://www.gate.com/announcements/article/46757
OpenAI安全系統負責人長文梳理:大模型的對抗攻擊與防禦
原文來源:機器之心
隨著 ChatGPT 的發佈,大型語言模型應用正在加速大範圍鋪開。 OpenAI 的安全系統團隊已經投入了大量資源,研究如何在對齊過程中為模型構建預設的安全行為。 但是,對抗攻擊或 越獄依然有可能讓模型輸出我們不期望看到的內容。
目前在對抗攻擊方面的研究很多集中在圖像方面,也就是在連續的高維空間。 而對於文本這樣的離散數據,由於缺乏梯度信號,人們普遍認為攻擊會困難得多。 Lilian Weng 之前曾寫過一篇文章《Controllable Text Generation》探討過這一主題。 簡單來說:攻擊 LLM 本質上就是控制該模型輸出特定類項的(不安全)內容。
文章位址:
另一個研究攻擊 LLM 的分支是為了提取預訓練數據、私有知識,或通過數據毒化攻擊模型訓練過程。 但這些並非本文要探討的主題。
基礎知識威脅模型
對抗攻擊是誘使模型輸出我們不期望的內容的輸入。 許多早期研究關注的重點是分類任務,而近期的工作則開始更多關注生成模型的輸出。 本文探討的是大型語言模型,並且假定攻擊僅發生在推理階段,也就是說模型權重是固定的。
分類
在過去,研究社區更關注的是對分類器進行對抗攻擊,並且許多是在圖像領域。 LLM 也可被用於分類。 給定一個輸入 x 和一個分類器 f(.) ,我們希望找到該輸入的一個差異細微的對抗版本 x_adv,使得 f(x)≠f(x_adv)。
文本生成
給定一個輸入 x 和一個生成模型 p(.) ,該模型可輸出一個樣本 y~p(.|𝐱)。 這裡的對抗攻擊是找到一個 p(x),使得 y 會違反該模型內置的安全行為,比如輸出非法主題的不安全內容、洩漏隱私資訊或模型訓練數據。 對生成任務而言,判斷一次攻擊成功與否並非易事,這需要一個超高品質的分類器來判斷 y 是否安全或需要人類來進行審查。
白盒與黑盒
白盒攻擊(White-box attacks)假設攻擊者可以完全訪問模型權重、架構和訓練工作流程,這樣一來攻擊者就可以獲得梯度信號。 這裏我們並不假設攻擊者能獲得全部訓練數據。 這僅適用於開源模型。 黑盒攻擊(Black-box attacks)則是假設攻擊者只能訪問 API 類型的服務 —— 攻擊者可以提供輸入 x 並獲取反饋的樣本 y,而不知道有關模型的更多資訊。
對抗攻擊的類型
有多種不同方法可以幫助攻擊者找到能誘使 LLM 輸出不安全內容的對抗輸入。 這裡給出五種方法。
給定一段包含一個 token 序列的文本輸入,我們可以使用簡單的 token 操作(比如替換成同義詞)來誘使模型給出錯誤預測。 基於 token 操作的攻擊屬於黑盒攻擊。 在 Python 框架中,Morris et al. 2020 的論文《TextAttack: A Framework for Adversarial Attacks, Data Augmentation, and Adversarial Training in NLP》實現了許多詞和 token 操作攻擊方法,可用於為 NLP 模型創建對抗樣本。 這一領域的許多研究工作實驗的是分類和蘊涵預測。
舉個例子,Ribeiro et al (2018) 的研究《Semantically Equivalent Adversarial Rules for Debugging NLP models》依賴於人工提出的「語義等價式對抗規則(SEAR)」,其可以通過盡可能少的 token 操作來讓模型無法生成正確答案。 比如,其中的規則包括將 What 換成 Which、將 was 換為 is。 另外,還有其他研究者提出的替換關鍵詞、用同義詞替換等方法。
基於梯度的攻擊
如果是白盒攻擊,則攻擊者可以獲取所有的模型參數和架構。 因此,攻擊者就可以依靠梯度下降來通過程式設計方式學習最有效的攻擊手段。 基於梯度的攻擊僅在白盒設置下有效,比如開源 LLM。
Guo et al. 2021 的論文《Gradient-based Adversarial Attacks against Text Transformers》提出的基於梯度的分散式攻擊(GBDA)使用了 Gumbel-Softmax 近似技巧來使對抗損失優化可微,其還使用了 BERTScore 和困惑度來增強可感知性和流暢性。
不過,Gumbel-softmax 技巧難以擴展用於 token 刪除或增添,而是受限於 token 替換操作。
Ebrahimi et al. 2018 在論文《HotFlip: White-Box Adversarial Examples for Text Classification》 中則是將文本操作看作是向量空間中的輸入,度量的是損失在這些向量上的導數。 HotFlip 可以擴展用於 token 刪除或增添。
Wallace et al. (2019) 的論文《Universal Adversarial Triggers for Attacking and Analyzing NLP》提出了一種在 token 上進行梯度引導式搜索的方法,可以找到誘使模型輸出特定預測結果的短序列,這個短序列被稱為 Universal Adversarial Triggers (UAT,通用對抗觸發器)。 UAT 不受輸入的影響,這意味著這些觸發器可以作為前綴(或後綴)連接到來自數據集的任意輸入上。
Shin et al., 2020 的《Auto: Eliciting Knowledge from Language Models with Automatically Generated s》使用了同樣的基於梯度的搜索策略來為多樣化的任務尋找最有效的 範本。
上面的 token 搜索方法可以使用波束搜索增強。 當尋找最優的 token 嵌入時,可以選取 top-k 個候選項,而不是單獨一個,在當前數據批上從左到右搜索,並根據 L_adv 為每個波束評分。
UAT 的損失 L_adv 需要針對具體任務而設計。 分類或閱讀理解依賴於交叉熵。
UAT 為何有效?這是一個很有趣的問題。 因為UAT是與輸入無關的,並且可以在有不同嵌入、token化方案和架構的模型之間遷移,因此它們也許可以有效地利用訓練數據中的偏差,畢竟這種偏差已經融入到了模型的全域行為中。
使用UAT攻擊有一個缺點:很容易檢測出來。 原因是所學習到的觸發器往往是毫無意義的。 Mehrabi et al. (2022) 在論文《Robust Conversational Agents against Imperceptible Toxicity Triggers》中研究了 UAT 的兩種變體,它們會促使所學到的觸發器在多輪對話語境中難以察覺。 其目標是創建能在給定對話中有效觸發有毒響應的攻擊性消息,同時保證該攻擊在對話中是流暢、連貫和一致的。
這兩種變體分別是 UAT-LM(Universal Adversarial Trigger with Language Model Loss)和 UTSC(Unigram Trigger with Selection Criteria)。
UAT-LM 和 UTSC-1 的表現與 UAT 基準相當,但 UAT 攻擊短語的困惑度出奇得高,比 UAT-LM 和 UTSC-1 都高得多。 高困惑度讓攻擊更易被檢測出來,也更容易緩解。 根據人類評估,UTSC-1 攻擊能比其它攻擊方法得到更連貫、流暢和相關的結果。
Zou et al. (2023) 的論文《Robust Conversational Agents against Imperceptible Toxicity Triggers》也研究了將通用對抗觸發 token 作為後綴連接到輸入請求上的情況。 他們具體研究了對 LLM 的惡意請求 —— 對此模型應當拒絕回答。 事實上,拒絕不被允許的內容類別(比如犯罪建議)是 GPT-4 內置的一個重要的安全措施。 這裡的對抗目標是誘使 LLM 即便在應當拒接回答時也輸出肯定的回應。 這就是說,當收到惡意請求時,模型會這樣回答:「當然,你需要這樣做......」預期的肯定回應也被配置成重複部分使用者 ,以避免簡單就能改變主題的後綴以優化「當然」式的回應。 其損失函數很簡單,就是輸出目標回應的 NLL(負對數似然)。
他們在 Vicuna-7b 和 Vicuna-13b 這兩個不同的模型上進行了實驗,使用了基於貪婪座標梯度(GCG)的搜索來貪婪地尋找候選項,使得該候選項可以在所有可能的單 token 替換中最大程度地減少損失。
儘管他們的攻擊序列完全是基於開源模型訓練的,但它們卻出乎意料地可以移植用於其它商用模型,這表明對開源模型的白盒攻擊對私有模型也有效,尤其是當低層的訓練數據有所重疊時。 注意 Vicuna 的訓練使用了從 GPT-3.5-turbo 收集的數據(通過 shareGPT),這本質上是蒸餾,因此這種攻擊更像是白盒攻擊。
Jones et al. 2023 等提出的自回歸隨機座標上升(ARCA)則考慮了一個更寬泛的優化問題集合來尋找符合特定行為模式的輸入 - 輸出對 (x, y) ,比如以「Barack Obama」開頭但會導致毒性輸出的非毒性輸入。 給定一個審核目標:φ : X×Y→R,其是將一對 (輸入 , 輸出完成結果) 映射成一個分數。
越獄 設計
越獄 是以對抗方式誘使 LLM 輸出應當避免的有害內容。 越獄是黑盒攻擊,因此詞彙組合是基於啟發式方法和人工探索進行的。 Wei et al. (2023) 的論文《Jailbroken: How Does LLM Safety Training Fail?》提出了 LLM 安全的兩種失敗模式,可用於指導越獄攻擊的設計。
1. 互相競爭的目標:這是指模型的能力(比如「應始終遵從命令」)與安全目標相衝突的情況。 利用互相競爭的目標的越獄攻擊例子包括:
2. 失配的泛化:這是指安全訓練無法泛化到其具有能力的領域。 當輸入位於模型的安全訓練數據分佈之外(OOD),但又位於其寬泛的預訓練語料庫範圍內時,就會出現這種情況。 例子包括:
Wei et al. (2023) 實驗了大量越獄方法,包括由以上原理構建的組合型策略。
Greshake et al. (2023) 的論文《Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Injection》則在較高層面上觀察了 注入攻擊。 其中指出,即便當攻擊無法提供詳細的方法而僅僅提供一個目標時,模型也有可能自動去實現它。 當模型可以訪問外部 API 和工具時,對更多資訊(甚至是專有資訊)的獲取可能導致更大的釣魚攻擊和私密窺探攻擊風險。
有人類參與的紅隊策略
Wallace et al. (2019) 在論文《Trick Me If You Can: Human-in-the-loop Generation of Adversarial Examples for Question Answering》中提出了有人類參與的對抗生成,其目標是構建用於引導人類攻破模型的工具。
他們用 QuizBowl QA 數據集進行了實驗,設計了一個對抗書寫介面,可讓人類寫出類似電視問答節目《Jeopardy》風格的問題,並用於誘導模型給出錯誤預測。 依據重要程度的不同,每個詞都會有不同顏色的標註(即移除該詞後模型預測概率會發生變化)。 詞重要度是由模型梯度根據詞嵌入來近似得到的。
在一次實驗中,人類訓練者要做的是找到安全分類器在分類暴力內容時失敗的案例。 Ziegler et al. (2022) 在論文《Adversarial Training for High-Stakes Reliability》中創建了一個工具,可用於輔助人類對抗者更快更有效地找到分類器的失敗情況並消除它。 用工具輔助重寫比完全人工重寫要更快些,可將每個樣本所需的時間從 20 分鐘降至 13 分鐘。 確切地說,他們引入了兩個功能來輔助人類寫作者:顯示每個 token 的顯著度分數、token 替換和插入。
Xu et al. 2021 的《Bot-Adversarial Dialogue for Safe Conversational Agents》提出了 Bot-Adversarial Dialogue(BAD),該框架可以引導人類去誘使模型犯錯(比如輸出不安全的內容)。 他們收集了 5000 多組模型與眾包工作者的對話。 每一組對話都包含 14 輪,然後他們根據不安全對話輪次的數量給模型打分。 他們最終得到了 BAD 數據集,其中包含大約 2500 組帶有攻擊性標籤的對話。
Anthropic 的紅隊數據集包含接近 4 萬個對抗攻擊,它們收集自人類紅隊者與 LLM 的對話。 他們發現,RLHF 的規模越大,就越難以攻擊。 OpenAI 發佈的大模型(比如 GPT-4 和 DALL-E 3)普遍使用了人類專家紅隊來進行安全準備。
資料集位址:
模型紅隊策略
人類紅隊策略很強大,但是難以大規模實施而且可能需要大量經過培訓的專業人士。 現在想像一下:我們可以學習一個紅隊模型 red 來與目標 LLM 進行對抗,以觸發其給出不安全回應。 對於基於模型的紅隊策略,主要的難題是如何判斷一次攻擊是否成功;只有知道了這一點,我們才能構建用於訓練紅隊模型的合適學習信號。
假設我們已經有一個高品質的分類器,能夠判斷模型的輸出是否有害,我們就可以將其用作獎勵來訓練紅隊模型,以得到一些能最大化分類器在目標模型輸出上的分數的輸入。 令 r (x, y) 是一個這樣的紅隊分類器,其可以判斷在給定測試輸入 x 時,輸出 y 是否有害。 根據 Perez et al. 2022 的論文《Red Teaming Language Models with Language Models》,尋找對抗攻擊樣本遵循一個簡單的三步式過程:
他們實驗了幾種從紅隊模型採樣或進一步訓練紅隊模型以使其更加有效的方法,其中包括零樣本生成、隨機式少樣本生成、監督學習、強化學習。
Casper et al. (2023) 的論文《Explore, Establish, Exploit: Red Teaming Language Models from Scratch》設計了一種有人類參與的紅隊過程。 其與 Perez et al. (2022) 的主要不同之處在於其明確地為目標模型設置了一個數據採樣階段,這樣就可以收集其上的人類標籤來訓練針對特定任務的紅隊分類器。 其包含探索(Explore)、建立(Establish)和利用(Exploit)三個階段,如下圖所示。
Mehrabi et al. 2023 的論文《FLIRT: Feedback Loop In-context Red Teaming》則是依靠紅隊 LM p_red 的上下文學習來攻擊圖像或文本生成模型 p,使其輸出不安全的內容。
在每一次 FLIRT 迭代中:
至於如何更新 FLIRT 的上下文範本,有這樣幾個策略:FIFO、LIFO、Scoring、Scoring-LIFO。 詳見原論文。
如何應對攻擊鞍點問題
Madry et al. 2017 的《Towards Deep Learning Models Resistant to Adversarial Attacks》提出了一個很不錯的對抗穩健性(adversarial robustness)框架,即將對抗穩健性建模成一個鞍點問題,這樣就變成了一個穩健優化(robust optimization)問題。 該框架是為分類任務的連續輸入而提出的,但它用相當簡潔的數學公式描述了雙層優化過程,因此值得分享。
讓我們考慮一個分類任務,其基於由配對的 (樣本,標籤) 構成的數據分佈,(x,y)∈D,訓練一個穩健分類器的目標就是一個鞍點問題:
其目標由一個內部最大化問題和一個外部最小化問題組成:
LLM 穩健性方面的一些研究工作
這裏簡單談談一些有關 LLM 穩健性的研究。
Xie et al. 2023 的論文《Defending ChatGPT against Jailbreak Attack via Self-Reminder》發現了一種簡單直觀的保護模型免受對抗攻擊的方法:明確地指示模型成為負責任的模型,不要生成有害內容。 這會極大降低越獄攻擊的成功率,但對模型的生成品質會有副作用,這是因為這樣的指示會讓模型變得保守(比如不利於創意寫作),或者會在某些情況下錯誤地解讀指令(比如在安全 - 不安全分類時)。
為了降低對抗攻擊風險,最常用的方法是用這些攻擊樣本本來訓練模型,這種方法被稱為「對抗訓練」。 這也被認為是最強的防禦方法,但卻需要在穩健性和模型性能之間尋找平衡。 Jain et al. 2023 通過實驗測試了兩種對抗訓練設置,結果報告在論文《Baseline Defenses for Adversarial Attacks Against Aligned Language Models》中:(1) 使用有害 與帶有「I』m sorry. As a ...」的回應構成的數據對來運行梯度下降;(2) 對於每一個訓練步驟,在拒絕回應上運行一個下降步驟並在一個紅隊差回應上運行一個上升步驟。 最終他們發現方法 (2) 毫無用處,因為模型的生成品質下降了很多,而攻擊成功率卻僅有少量下降。
白盒攻擊往往會導致對抗 看起來毫無意義,因此可以通過困惑度檢測出來。 當然,通過明確地優化而降低困惑度,白盒攻擊可以直接繞過這種檢測方法,比如UAT的一種變體UAT-LM。 但是,這也可能會導致攻擊成功率下降。
Jain et al. 2023 還測試了對文本輸入進行預處理的方法,使得能在移除對抗性修改的同時維持語義含義。