對抗性後綴生成
GCG 攻擊、通用對抗觸發子、軟提示最佳化,以及用於自動化對齊繞過的防禦規避技術。
對抗性後綴是自動產生、可以繞過對齊的符元序列。不同於手工打造的越獄,它們由系統化的梯度最佳化產生,因此可擴展、可重現。
GCG 攻擊
GCG 攻擊 (Zou et al., 2023) 是對抗性後綴生成的基礎方法。它最佳化一個離散符元序列,使模型以肯定前綴 (例如:「Sure, here is」) 開始回應的機率最大化。
問題形式化
給定有害提示 x、目標前綴 y (例如:「Sure, here is...」),以及由 k 個隨機符元組成的後綴 s:
Objective: find s* that minimizes L(s) = -log P(y | x ⊕ s)
GCG 最佳化迴圈
計算符元梯度
計算損失對每個後綴位置 one-hot 符元嵌入的梯度。這會告訴你哪些符元替換最能降低損失。
生成候選
對每個後綴位置,辨識最能降低損失的 top-k 符元。建立一批候選,每個候選恰好改變一個位置。
評估並選取
對所有候選進行前向傳播。保留損失最低的候選作為新後綴。
迭代至收斂
重複直到損失降至閾值 (通常 < 0.1) 以下或達到最大步數。預期在 8B 模型上需要 200-500 步。
# Core GCG gradient computation
suffix_embeds = embed_layer(input_ids[:, suffix_slice]).requires_grad_(True)
outputs = model(inputs_embeds=full_embeds)
loss = F.cross_entropy(shift_logits.view(-1, V), shift_labels.view(-1))
loss.backward()
# Project gradient into token space (negative = tokens that DECREASE loss)
token_grads = -torch.matmul(suffix_embeds.grad, embed_weights.T)
top_substitutions = torch.topk(token_grads, k=256, dim=-1).indices# Generate and evaluate candidates (each changes one suffix position)
current_suffix = input_ids[0, suffix_slice].clone()
candidates = []
for _ in range(batch_size):
pos = torch.randint(0, suffix_len, (1,)).item()
tok = top_substitutions[pos, torch.randint(0, top_k, (1,)).item()].item()
candidate = current_suffix.clone()
candidate[pos] = tok
candidates.append(candidate)
# Evaluate all candidates, keep the best
best = min(candidates, key=lambda c: compute_loss(prompt, c, target))
if compute_loss(prompt, best, target) < current_loss:
suffix_ids = best通用對抗觸發子
GCG 找出的是提示特定的後綴,而通用觸發子則利用安全訓練的共同模式,在許多不同有害提示間都能生效。
通用觸發子與 GCG 的差異
| 性質 | 提示特定 (GCG) | 通用觸發子 |
|---|---|---|
| 最佳化對象 | 單一特定提示 | 同時最佳化多個提示 |
| 梯度計算 | 單一提示損失 | 提示集的平均損失 |
| 可轉移性 | 較低 | 較高 (本質如此) |
| 最佳化成本 | 30-60 分鐘 | 數小時 (每步多次前向傳播) |
| 實務用途 | 針對性攻擊 | 廣泛的漏洞展示 |
關鍵修改是,在選取候選之前,先將所有提示-目標配對的梯度累積起來:
# Universal trigger: average gradients across multiple prompts
all_grads = None
for prompt, target in prompt_target_pairs:
grads = compute_token_gradients(prompt, suffix, target)
all_grads = grads if all_grads is None else all_grads + grads
all_grads /= len(prompt_target_pairs)
# Use averaged gradients for candidate selection跨模型的可轉移性
一個關鍵發現:對抗性後綴可以在模型間遷移。在 LLaMA 上最佳化的後綴,可能在從未存取過 GPT-4 權重的情況下仍可在 GPT-4 上奏效。
| 遷移因素 | 為何能使其遷移 |
|---|---|
| 共用訓練資料 | 類似資料產生類似表示 |
| 類似的分詞器 | 相同的符元結構產生類似內部狀態 |
| 共用的對齊模式 | RLHF/DPO 造就類似的拒絕機制 |
| 共用的數學 | Softmax 注意力具有普遍可被利用的特性 |
軟提示攻擊
軟提示攻擊在連續嵌入空間中運作,而非離散符元空間,使最佳化更容易,但適用範圍也受限。
離散 vs 連續攻擊的取捨
| 性質 | GCG (離散) | 軟提示 (連續) |
|---|---|---|
| 搜尋空間 | 離散符元 (難) | 連續向量 (較易) |
| 收斂 | 較慢、較嘈雜 | 較快、較平滑 |
| 可轉移性 | 可作為文字轉移 | 需要嵌入注入 |
| 適用性 | 任何文字輸入通道 | 必須能控制嵌入層 |
| 威力 | 較低 (受詞彙約束) | 較高 (可達完整嵌入空間) |
# Soft prompt: optimize continuous vectors prepended to input
soft_prompt = torch.randn(1, num_tokens, d_model, requires_grad=True)
optimizer = torch.optim.Adam([soft_prompt], lr=0.01)
for step in range(num_steps):
full_embeds = torch.cat([soft_prompt, prompt_embeds, target_embeds], dim=1)
loss = compute_target_loss(model(inputs_embeds=full_embeds), target_ids)
loss.backward()
optimizer.step()防禦與規避
以 Perplexity 為基礎的偵測
對抗性後綴通常是無意義文字,具有非常高的 perplexity。滑動視窗式的 perplexity 過濾器可以偵測出它們:
# Detect high-perplexity regions that may be adversarial suffixes
per_token_loss = F.cross_entropy(shift_logits, shift_labels, reduction="none")
per_token_ppl = torch.exp(per_token_loss)
# Flag any 10-token window with mean PPL > threshold
for i in range(len(tokens) - window_size):
if per_token_ppl[0, i:i+window_size].mean() > 100.0:
print(f"Suspicious region at tokens {i}-{i+window_size}")規避 Perplexity 過濾器
| 規避技術 | 運作方式 | 取捨 |
|---|---|---|
| 自然性約束的 GCG | 在 GCG 目標中加入 perplexity 懲罰 | 收斂較慢、攻擊較弱 |
| 改述後處理 | GCG 後綴 → LLM 改述 → 自然文字 | 可能失去對抗效果 |
| 語意空間最佳化 | 在語意嵌入空間而非符元空間最佳化 | 需要不同的攻擊框架 |
方法論:執行 GCG 行動
選擇來源模型
選擇與目標同系列的開放權重模型。若進行遷移攻擊,使用來自不同系列的 2-3 個模型。
準備提示-目標配對
跨不同有害類別建立 10 組以上配對。目標前綴應為肯定的回應開頭 (「Sure, here is...」)。
執行提示特定 GCG
先最佳化個別後綴以驗證管線可行。追蹤損失曲線與成功率。
最佳化通用觸發子
將所有提示-目標配對的梯度彙總。這需要更長時間,但能產出可轉移的結果。
測試可轉移性
將找到的後綴套用到不同模型 (包括僅 API 的目標)。記錄各模型的成功率。
對抗防禦測試
將後綴對抗 perplexity 過濾器進行測試。若被偵測到,在目標中加入自然性約束並重新最佳化。
儘管 GPT-4 的權重不可存取,為何在 LLaMA 上最佳化的對抗性後綴仍可遷移至 GPT-4?
相關主題
- 對齊繞過 —— 對抗性後綴所針對的對齊內部機制
- 可轉移攻擊 —— 對抗性後綴的跨模型轉移
- 模糊測試 LLM 安全邊界 —— 互補的自動化探索技術
- AI 漏洞利用開發 —— 包含 GCG 的更廣泛漏洞利用開發框架