模型反演攻擊(資料訓練)
從模型輸出重建訓練資料的技術,包括基於梯度的反演、生成式模型反演,以及對影像與語言模型的隱私意涵。
模型反演攻擊
模型反演從模型輸出或梯度重建訓練資料的近似。不像資料萃取(逐字恢復已記憶內容),反演產生捕捉統計性質——有時包括原始訓練資料辨識特徵——的合成重建。
模型反演如何運作
核心想法:若模型已學會將輸入映射至輸出,我們可反轉映射。給定已知輸出(類別標籤、信心分數、嵌入),最佳化能最大化模型對該輸出信心的輸入。最佳化輸入會與模型學習的訓練資料共享特徵。
攻擊範式
使用梯度下降直接最佳化像素值或符元嵌入,以最大化模型對目標類別的輸出。最佳化目標為:找出最大化 P(target_class | x*) 的輸入 x*。無先驗時重建嘈雜但可揭示聚合特徵(臉部辨識類別的平均臉型、膚色、髮型)。
使用預訓練生成式模型 (GAN、VAE 或擴散模型) 作為正規化器。不最佳化原始像素,而在生成器的潛在空間最佳化。這產生逼真重建,因生成器將輸出約束至自然影像流形。
給定中介嵌入或表示的存取,將其反演回輸入空間。這與公開嵌入的系統(搜尋 API、檢索系統)以及共享梯度的聯邦學習相關。
基於梯度的反演
基本最佳化攻擊
import torch
import torch.nn.functional as F
def model_inversion_basic(model, target_class, image_size=(3, 224, 224),
steps=2000, lr=0.01):
"""重建目標類別的代表性輸入。"""
x = torch.randn(1, *image_size, requires_grad=True)
optimizer = torch.optim.Adam([x], lr=lr)
for step in range(steps):
optimizer.zero_grad()
output = model(x)
# 最大化目標類別的機率
loss = -F.log_softmax(output, dim=1)[0, target_class]
# 正規化:平滑度的總變異
tv_loss = torch.sum(torch.abs(x[:, :, :, :-1] - x[:, :, :, 1:])) + \
torch.sum(torch.abs(x[:, :, :-1, :] - x[:, :, 1:, :]))
total_loss = loss + 0.001 * tv_loss
total_loss.backward()
optimizer.step()
with torch.no_grad():
x.clamp_(0, 1)
return x.detach()聯邦學習梯度反演
在聯邦學習中,客戶端分享梯度更新而非原始資料。然而,梯度含有足夠資訊以重建產生它們的訓練資料。
| 攻擊 | 設定 | 重建品質 | 關鍵參考 |
|---|---|---|---|
| DLG (Deep Leakage from Gradients) | 單批次、白盒 | 小批次高 | Zhu et al., 2019 |
| Inverting Gradients | 以餘弦相似度改進 DLG | 更好收斂、較大批次 | Geiping et al., 2020 |
| LAMP | 語言模型梯度 | 可恢復文字序列 | Balunovic et al., 2022 |
| Fishing for User Data | 惡意伺服器可放大梯度訊號 | 近完美重建 | Wen et al., 2022 |
def gradient_inversion(model, target_gradient, batch_size=1,
image_size=(3, 32, 32), steps=5000):
"""從共享梯度重建訓練資料。"""
dummy_x = torch.randn(batch_size, *image_size, requires_grad=True)
dummy_y = torch.randint(0, 10, (batch_size,))
optimizer = torch.optim.LBFGS([dummy_x], lr=0.1)
for step in range(steps):
def closure():
optimizer.zero_grad()
output = model(dummy_x)
loss = F.cross_entropy(output, dummy_y)
dummy_gradient = torch.autograd.grad(loss, model.parameters(),
create_graph=True)
# 最小化假梯度與目標梯度之間的距離
grad_loss = sum(
((dg - tg) ** 2).sum()
for dg, tg in zip(dummy_gradient, target_gradient)
)
grad_loss.backward()
return grad_loss
optimizer.step(closure)
return dummy_x.detach()生成式模型反演
使用預訓練生成器作為先驗大幅改善重建品質。不最佳化原始像素,而在生成器的潛在空間最佳化。
基於 GAN 的反演
選擇預訓練 GAN
使用在與目標模型相同領域訓練的生成器(例如對臉部辨識模型使用 StyleGAN)。生成器約束重建看起來像逼真影像。
在潛在空間最佳化
不最佳化像素值,而最佳化作為生成器輸入的潛在向量 z。目標:找出 z* 使目標模型對 G(z*) 的目標類別指派最大信心。
以多個初始化精煉
從多個隨機起點執行最佳化。選擇目標模型信心最高的重建。
後處理與評估
將重建與已知訓練資料(若可用)比較,以評估恢復多少可辨識資訊。
def gan_inversion(target_model, generator, target_class,
latent_dim=512, steps=3000, n_starts=5):
"""使用 GAN 先驗進行模型反演以獲得逼真重建。"""
best_image = None
best_conf = -float('inf')
for _ in range(n_starts):
z = torch.randn(1, latent_dim, requires_grad=True)
optimizer = torch.optim.Adam([z], lr=0.02)
for step in range(steps):
optimizer.zero_grad()
fake_image = generator(z)
output = target_model(fake_image)
conf = F.softmax(output, dim=1)[0, target_class]
loss = -torch.log(conf)
loss.backward()
optimizer.step()
final_image = generator(z).detach()
final_conf = F.softmax(target_model(final_image), dim=1)[0, target_class].item()
if final_conf > best_conf:
best_conf = final_conf
best_image = final_image
return best_image, best_conf語言模型反演
從嵌入重建文字
當系統公開文字嵌入(搜尋 API、檢索系統)時,攻擊者可訓練解碼器模型從其嵌入重建原始文字。
| 嵌入來源 | 反演品質 | 原因 |
|---|---|---|
| 句子嵌入(例如 E5、GTE) | 中等——捕捉意義、失去精確措辭 | 高維度但有損壓縮 |
| 符元層級嵌入 | 高——保留大部分符元資訊 | 近無損的輸入表示 |
| 池化隱藏狀態 | 中至高 | 依池化策略而定 |
| API 回傳嵌入 | 變異 | 依維度與正規化而定 |
透過 logit 反演
對於回傳每符元 logit 分布的語言模型,完整分布比單一完成洩漏更多資訊。攻擊者可使用 logit 分布推論訓練資料分布在每個位置的性質。
評估反演風險
| 因素 | 較高風險 | 較低風險 |
|---|---|---|
| 模型類型 | 臉部辨識、醫療影像 | 通用分類器 |
| 輸出粒度 | 完整機率分布、嵌入 | 僅 Top-1 標籤 |
| 訓練資料多樣性 | 低多樣性(狹窄領域) | 高多樣性(廣泛領域) |
| 模型容量 | 過度參數化模型 | 正規化良好模型 |
| 存取等級 | 白盒(梯度可用) | 黑盒(僅標籤) |
防禦及其限制
| 防禦 | 機制 | 限制 |
|---|---|---|
| 預測淨化 | 僅回傳 top-k 標籤而無信心分數 | 降低梯度訊號但未消除;仍易受僅標籤攻擊 |
| 差分隱私 | 訓練期間加入噪聲 | 必須強(小 epsilon)才能防止反演;顯著退化效用 |
| 梯度壓縮 | 分享前壓縮或稀疏化梯度(聯邦學習) | 中度壓縮不足;重度壓縮降低模型品質 |
| 模型蒸餾 | 部署泛化較佳、記憶較少的蒸餾模型 | 若學生容量高,蒸餾模型仍可被反演 |
相關主題
- Privacy & Data Protection Attacks — 隱私攻擊概覽與監管脈絡
- PII Extraction Techniques — 已記憶內容的直接萃取
- Membership Inference Attacks — 確認訓練資料成員
- Embedding Exploitation — 相關嵌入層級攻擊
臉部辨識系統對每個身分類別回傳信心分數。攻擊者使用在臉部影像上預訓練的 StyleGAN 對特定身分執行模型反演。為何 GAN 先驗大幅改善重建品質,相較於像素空間最佳化?