取樣參數攻擊
透過操縱溫度、top-p、top-k、頻率懲罰與種子參數來降低安全對齊、啟用可重現性攻擊並繞過內容過濾的方法。
概觀
大型語言模型 API 會對外暴露多個取樣參數,用以控制如何從模型的輸出機率分布中選擇符元。這些參數——溫度、top-p(核取樣)、top-k、頻率懲罰、存在懲罰與 seed——原本是為了讓開發者調整輸出的創意、多樣性與決定性而設計的。然而每個參數都會修改實際用於取樣的分布,而安全對齊本身正是編碼在該分布中。
當模型拒絕某個有害請求時,這種拒答會表現為一個機率分布:拒答符元的機率高、配合符元的機率低。但「低機率」不等於「零機率」。安全訓練把分布推向拒答一側,但配合類符元通常仍保有若干殘餘機率。凡是會拉平、截斷或重塑分布的取樣參數,都可能把這些殘餘機率放大到「配合」變為可能的地步。
此類攻擊特別難察覺,因為單一參數設定往往看似無害。溫度 1.8 雖不常見但不必然可疑;top-p 0.99 幾乎就是預設值;頻率懲罰 1.5 也在 API 允許範圍內。但把這些設定結合起來、加上反覆取樣,就能在完全不更動提示詞的情況下大幅削弱安全對齊。
相較於基於提示詞的攻擊,取樣參數與安全性之間的關係相對少有研究。大多數安全評估都在預設取樣設定(溫度 0.7–1.0、top-p 1.0、無懲罰)下測試模型。操縱取樣參數的對手等於在供應商的安全評估套件可能未涵蓋的測試縫隙中行動。
運作原理
以高溫度拉平安全邊際
溫度縮放在 softmax 前將 logits 除以溫度值。溫度越高分布越平,所有符元的機率變得更接近。安全對齊在拒答與配合符元之間製造機率落差,高溫會縮小此落差。
範例:假設某個與安全相關的位置其 logits 為
[5.0, 1.0, 0.5, 0.2, -1.0],對應符元"I cannot", "Sure", "Here", "The", "Yes"。分別以 T=0.1、0.7、1.0、1.5、2.0 套用溫度縮放後做 softmax,會看到拒答機率從約 1.000 降到 0.451,而配合機率則從接近 0 提升到 0.113。在 T=2.0 時配合符元的機率大約是預設值下的 25 倍;雖然仍低於拒答,反覆取樣終究會產生一個配合開頭,而自回歸生成在此框架內往往會延續配合方向。透過 top-p 操縱納入低機率符元
Top-p(核)取樣只保留累計機率超過 p 的最小符元集合。在預設 p=1.0 下所有符元都納入取樣;當 p 較低時,低機率符元(對有害請求而言可能包含配合類符元)會在取樣前被排除。
反向利用方式是:明確把 top-p 設為 1.0(或極接近),確保配合符元不被排除。雖然許多 API 預設如此,但某些強調安全的部署會調降 top-p 當作強化手段,攻擊者可顯式設為 1.0 來抵銷此防禦。
更微妙地,攻擊者也可以把 top-p 設到極低(例如 0.1),強迫模型硬性承諾於最可能的延續。若再結合 logit bias 或已使模型偏向配合的提示詞,低 top-p 會把配合行為鎖死。
以頻率與存在懲罰壓制多輪對話中的拒答
頻率與存在懲罰會降低「已在輸出中出現過」之符元的機率。在多輪對話中,模型若於先前拒答(產生了拒答符元),之後套用高頻率懲罰就會壓低那些拒答符元於後續輪次的機率。
攻擊做法:把第一輪設計成引出詳細拒答,讓拒答相關符元填滿對話歷史;後續輪次再以
frequency_penalty=2.0、temperature=1.5等設定呼叫 API,模型的「拒答詞彙」因在歷史中出現過而受到懲罰,被推向新穎(可能配合)的措辭。存在懲罰版本對任何出現過的符元(無論頻率)施以定額懲罰,壓制拒答模式更為激進:單一次先前的拒答就會污染整個拒答詞彙,影響後續所有輪次。
以 seed 進行可重現性探測
許多 API 支援
seed參數以獲得可重現輸出。在給定 seed 與溫度下,取樣變為決定性。攻擊者用來高效繪製安全邊界。做法:以目標提示詞搭配高溫度(例如 1.8),對 n_seeds(例如 1000 個)逐一呼叫 API 並記錄輸出。以字串比對(如 "i cannot"、"i'm sorry" 等)粗略分類為拒答或配合;收集所有產生配合輸出的 seed,統計繞過率(配合數/總數)。
一旦找到可配合的 seed,攻擊者即可重複使用以穩定再現該安全繞過。seed 參數把原本機率性的攻擊變成決定性攻擊。
組合式參數利用
最有效的取樣攻擊會結合多個參數修改。每個參數個別對安全對齊的影響有限,合併後效果相乘。典型組合:
temperature=1.8拉平分布、top_p=1.0納入全部符元、frequency_penalty=2.0壓制歷史拒答符元、presence_penalty=1.5做額外壓制、seed=42用以重現、max_tokens=1000以取得完整輸出。
攻擊範例
範例 1:用溫度掃描估算安全邊際
紅隊針對一組安全相關提示詞,以 0.0 到 2.0、每 0.1 為一階進行溫度掃描;每個溫度取樣 100 次並量測拒答率。結果曲線可揭示每個主題的安全邊際:若某主題在 T=1.5 時拒答率跌破 95%,則其對齊強度較另一主題(即使在 T=2.0 仍維持 99%+)為弱。此資料可用於排定更深入測試的優先順序。
實務觀察指出,不同類別的有害內容對溫度敏感度差異顯著。與知名重大危害(如大規模殺傷性武器)相關的請求通常在各溫度下都能維持高拒答率,因為安全訓練建立了較大的 logit 落差;較細緻的政策違規(如微妙的錯誤資訊、邊緣內容)則隨溫度提升呈現快速衰退,暗示安全邊際較窄。
範例 2:多輪懲罰利用
攻擊者先進行第一輪互動,刻意引出詳細拒答,讓拒答相關符元填滿對話歷史。後續輪次設定 frequency_penalty=2.0、presence_penalty=2.0,等同於對模型的整套拒答詞彙施以懲罰;再搭配原始請求的改寫版本,模型就被推向可能包含配合的新穎符元序列。
範例 3:Seed 農耕
攻擊者以 temperature=1.9 與遞增 seed 值,對某個有害提示詞執行 10,000 次 API 呼叫。在此溫度下,一個良好對齊模型的配合率或許只有 2–5%。攻擊者收集所有產生非拒答輸出的 seed,再以較低溫度(1.0–1.3)測試配合是否仍成立;若在中等溫度下仍能配合的 seed,代表穩定的安全繞過,可被可靠再現。
偵測與緩解
| 策略 | 實作方式 | 效果 |
|---|---|---|
| 參數範圍限制 | 限制溫度於 0–1.5、懲罰於 0–1.0、強制 top-p 下限 0.1 | 高——消除極端參數利用,同時保留多數合法用途 |
| 於非預設參數下進行安全評估 | 將高溫度、高懲罰設定納入安全評估套件 | 高——於部署前辨識安全邊際弱點 |
| 取樣後套用安全分類器 | 不論使用何種取樣參數,對輸出套用安全分類器 | 高——可攔截取樣操縱所放行的不安全內容 |
| 參數組合監控 | 對同時結合多個異常參數值的請求標記告警 | 中——可偵測組合攻擊,但個別參數看似正常 |
| Seed 重複使用偵測 | 當同一 seed 在多個安全相關請求中被重複使用時告警 | 中——可偵測 seed 農耕,但需內容分類 |
| 動態溫度夾取 | 偵測到安全關鍵內容於提示詞中時降低有效溫度 | 中高——可隨威脅級別調整,但可能影響合法的高溫用例 |
| 各主題安全邊際 | 訓練期確保安全關鍵主題具有可抗溫度縮放的最小 logit 落差 | 高——對症下藥,但需重訓成本 |
關鍵考量
安全評估必須涵蓋參數空間。 只在預設參數下測試會留下盲區。在 T=0.7 看似安全的模型,在 T=1.8 下可能就可被利用。安全評估應將對抗性參數設定視為標準測試條件。
n 參數會倍增攻擊面。 許多 API 允許單次呼叫要求多個完成(n>1)。在高溫加 n=128 下,攻擊者可在單次呼叫內從扁平分布中獲得 128 個獨立樣本,極大地提高出現至少一個安全繞過的機率。
殘餘機率是根本漏洞。 安全訓練可降低但無法消除有害延續的機率。任何會放大低機率事件的機制——無論是溫度縮放、反覆取樣或基於懲罰的重新分配——都可能把殘餘機率變成實際輸出。穩健的對齊需要讓有害符元的機率趨近真正的零,而不只是降低。
懲罰會在多輪間產生非直觀的交互作用。 頻率與存在懲罰是依完整對話上下文中的符元出現情況套用。先前助理訊息(包含合法拒答)的內容會影響未來輪次的符元分布。理解此交互作用的攻擊者可刻意組織對話歷史,系統化地耗盡模型的拒答詞彙。
參考資料
- Holtzman 等人,"The Curious Case of Neural Text Degeneration"(ICLR 2020)——核取樣(top-p)及其對輸出分布的影響
- Huang 等人,"A Survey on Hallucination in Large Language Models"(2023)——取樣參數與輸出可靠性的關係
- Perez 等人,"Red Teaming Language Models with Language Models"(2022)——系統化探測安全邊界的方法
為什麼高溫度會提高安全繞過的機率?