Skip to content

对抗样本与防御

本页介绍深度学习最棘手的安全隐患——对抗样本(Adversarial Examples):在人眼完全看不出区别的扰动下,深度模型会给出荒谬的预测。它是卷积神经网络 CNN等视觉模型部署到自动驾驶、人脸支付、医疗诊断等高风险场景时必须面对的安全课题,也是连接模型评估与 AI 安全研究的重要分支。

对抗样本就像一张视觉魔咒——给熊猫照片加上人眼不可见的细微噪点,CNN 就把它认成长臂猿,而且信心满满。核心机理在于:

  • 决策边界极其脆弱:CNN 的决策函数在高维输入空间中像一张薄纸。输入空间有几百万个像素维度,只要沿”梯度方向”轻轻推一小步(每个像素改变 1/255 的亮度),就能越过决策边界,跨到另一类。

    梯度(Gradient) 是什么?梯度是一个向量,指向函数值上升最快的方向,长度等于上升速率。训练神经网络时,我们用梯度下降逐步调低参数;生成对抗样本时则反过来——沿输入方向的梯度往上推,让损失函数(衡量预测误差的函数)变大。

  • 对抗扰动 = 逆向梯度:训练时我们沿梯度 下降 方向更新参数以减小损失;生成对抗样本时则沿 输入 的梯度 上升 方向加一小步扰动,让损失 增大——模型就越发”看走眼”。这就是 FGSM(快速梯度符号法,Fast Gradient Sign Method)的全部数学。

  • 跨模型可迁移:在模型 A 上生成的对抗样本,往往也能骗过模型 B——因为不同模型学到的决策边界在局部高度重合。这意味着攻击者不必知道目标模型的细节,黑盒攻击即可奏效。

    白盒(White-box)vs. 黑盒(Black-box):白盒攻击指攻击者完全掌握目标模型的结构与权重参数;黑盒攻击指攻击者只能向模型发送输入、观察输出,对内部一无所知。可迁移性让黑盒攻击成为现实。

直觉上理解:CNN 对图像的理解与人类不同。人看的是”整体语义”(毛茸茸、黑白、圆脸 → 熊猫),CNN 看的是”像素统计模式”。对抗扰动恰恰操纵了那些人类视而不见、但 CNN 高度敏感的统计模式。

Ilyas et al.(2019)从理论角度解释了这一现象:自然数据中同时存在”鲁棒特征”(robust features,人类感知依赖的、对抗扰动难以颠覆的语义特征)和”非鲁棒特征”(non-robust features,模型为追求训练精度而利用的脆弱统计模式)。对抗样本之所以有效,正是因为它精准操纵了非鲁棒特征。这不是训练 bug——而是模型在标准训练目标下必然学到的东西。

给定一个分类模型 ff、输入 xx 和真实标签 yy,FGSM 的生成公式为:

xadv=x+ϵ⋅sign(∇xL(f(x), y))x_{\text{adv}} = x + \epsilon \cdot \text{sign}\left(\nabla_x \mathcal{L}(f(x),\, y)\right)

其中:

  • ∇xL\nabla_x \mathcal{L} 表示损失函数 L\mathcal{L} 对 输入 xx 的梯度(而非对模型参数的梯度)。注意:常规训练中反向传播计算的是 ∇θL\nabla_\theta \mathcal{L}(对权重 θ\theta 的梯度),这里则需要把 xx 设为 requires_grad=True 再做一次反向传播。
  • ϵ\epsilon 是扰动幅度(perturbation budget),通常取 8/255≈0.0318/255 \approx 0.031。
  • sign(⋅)\text{sign}(\cdot) 取符号函数(正为 +1+1,负为 −1-1,零为 00),确保每个像素只朝”最有害”的方向推一步。

这一步为什么有效?因为梯度 ∇xL\nabla_x \mathcal{L} 指向”让损失增大最快的输入方向”——沿这个方向走 ϵ\epsilon 步,模型的损失急剧上升,预测就翻车了。从一阶泰勒展开的角度看,L(x+δ)≈L(x)+∇xL⊤δ\mathcal{L}(x + \delta) \approx \mathcal{L}(x) + \nabla_x \mathcal{L}^\top \delta,在约束 ∥δ∥∞≤ϵ\|\delta\|_\infty \leq \epsilon 下,δ∗=ϵ⋅sign(∇xL)\delta^* = \epsilon \cdot \text{sign}(\nabla_x \mathcal{L}) 恰好是这个线性近似的最优解。

范数(Norm) 是什么?范数 ∥⋅∥p\|\cdot\|_p 衡量向量的”大小”。对抗攻击中最常用三种:L∞L_\infty 范数限制每个分量的最大绝对值(∥δ∥∞=max⁡i∣δi∣\|\delta\|_\infty = \max_i |\delta_i|,对应 FGSM/PGD);L2L_2 范数限制扰动总能量(∥δ∥2=∑iδi2\|\delta\|_2 = \sqrt{\sum_i \delta_i^2});L0L_0 范数限制被修改的像素个数。

FGSM 只走一步,PGD(投影梯度下降,Projected Gradient Descent)走多步:

xadv(t+1)=ΠBϵ(x)(xadv(t)+α⋅sign(∇xL(f(xadv(t)), y)))x_{\text{adv}}^{(t+1)} = \Pi_{\mathcal{B}_\epsilon(x)}\left(x_{\text{adv}}^{(t)} + \alpha \cdot \text{sign}\left(\nabla_x \mathcal{L}(f(x_{\text{adv}}^{(t)}),\, y)\right)\right)

每步走一个更小的步长 α\alpha(通常 α=2/255\alpha = 2/255,迭代 20-100 步),然后通过投影算子 ΠBϵ(x)\Pi_{\mathcal{B}_\epsilon(x)} 将结果”拉回”允许的扰动范围——以 xx 为中心、L∞L_\infty 半径为 ϵ\epsilon 的超立方体 Bϵ(x)={x′:∥x′−x∥∞≤ϵ}\mathcal{B}_\epsilon(x) = \{x' : \|x' - x\|_\infty \leq \epsilon\}。此外还需做像素裁剪(clip 到 [0,1][0,1]),确保结果仍是合法图像。

投影的具体操作是逐元素截断:ΠBϵ(x)(x′)=clip(x′, x−ϵ, x+ϵ)\Pi_{\mathcal{B}_\epsilon(x)}(x') = \text{clip}(x',\, x - \epsilon,\, x + \epsilon)。对 L2L_2 球约束,投影则是沿径向缩放。

PGD 是白盒攻击的黄金标准。Madry et al.(2018)从优化角度指出:PGD 本质上是在扰动约束集上做最大化损失的梯度上升,而 L∞L_\infty 约束下的 PGD 能找到的局部最大值在损失景观(loss landscape)中相对密集且集中——意味着随机重启(random restart)不会找到显著更强的解。这让 PGD 成为对抗训练中内层最大化的可靠近似。

Carlini & Wagner(2017)提出的 CW 攻击不直接最大化交叉熵损失,而是将攻击建模为一个带约束的优化问题:

min⁡δ  ∥δ∥p+c⋅floss(x+δ)s.t.x+δ∈[0,1]n\min_{\delta}\; \|\delta\|_p + c \cdot f_{\text{loss}}(x + \delta) \quad \text{s.t.} \quad x + \delta \in [0,1]^n

其中 flossf_{\text{loss}} 是一个精心设计的损失函数(不同于交叉熵),常见形式为:

floss(x′)=max⁡(max⁡i≠tZ(x′)i−Z(x′)t,  −κ)f_{\text{loss}}(x') = \max\left(\max_{i \neq t} Z(x')_i - Z(x')_t,\; -\kappa\right)

这里 Z(x′)Z(x') 是模型 logits 层 的原始输出(softmax 之前的未归一化分数),tt 是目标错误类别,κ\kappa 是控制置信度的间隔参数。CW 攻击通过引入辅助变量 ww 并用 tanh⁡\tanh 变换将箱约束 [0,1][0,1] 转化为无约束优化,再用 Adam 优化器求解,能生成扰动极小、攻击成功率极高的对抗样本。

Logits 与 Softmax:神经网络分类器的最后一层通常先输出一组实数分数 Z=(z1,z2,…,zK)Z = (z_1, z_2, \ldots, z_K),称为 logits。Softmax 把 logits 转换成概率分布:pi=ezi/∑jezjp_i = e^{z_i} / \sum_j e^{z_j}。CW 攻击直接操纵 logits 而非 softmax 后的概率,优化更稳定。

CW 攻击在评估防御方法时极其重要:许多看起来能抵抗 FGSM/PGD 的防御方法,在 CW 攻击下不堪一击——这也是为什么社区现在以 AutoAttack(内含 CW 变体)作为防御有效性的终极检验。

  1. 对抗训练(Adversarial Training):用对抗样本(而非干净样本)来训练模型——把攻防博弈内化到训练过程中。这是目前最有效、也是工业界最常用的防御手段。

    对抗训练的核心是一个 min-max(极小极大)优化问题:

    min⁡θ  E(x,y)∼D[max⁡∥δ∥≤ϵ  L(fθ(x+δ), y)]\min_{\theta}\; \mathbb{E}_{(x,y)\sim\mathcal{D}}\left[\max_{\|\delta\| \leq \epsilon}\; \mathcal{L}(f_\theta(x + \delta),\, y)\right]
    • 内层 max(攻击者):在扰动预算 ϵ\epsilon 内,寻找使损失最大的扰动 δ∗\delta^*——这正是 PGD 在做的事。
    • 外层 min(防御者):用这些最坏情况下的对抗样本来更新模型参数 θ\theta,让模型学会在最强攻击下仍然正确分类。

    这种”以内层 PGD 对抗样本为训练数据”的朴素对抗训练(Madry AT)虽然有效,但存在鲁棒性-精度权衡(robustness-accuracy tradeoff):模型越鲁棒,在干净样本上的精度往往越低。为了缓解这一问题,TRADES(Zhang et al., 2019)在损失函数中显式引入正则项,平衡干净精度与鲁棒精度:

    min⁡θ  L(fθ(x), y)+β⋅max⁡∥δ∥≤ϵ  DKL(fθ(x)  ∥  fθ(x+δ))\min_{\theta}\; \mathcal{L}(f_\theta(x),\, y) + \beta \cdot \max_{\|\delta\| \leq \epsilon}\; D_{\text{KL}}\left(f_\theta(x) \;\|\; f_\theta(x + \delta)\right)

    其中 DKLD_{\text{KL}} 是 KL 散度(衡量两个概率分布差异的指标),β\beta 控制鲁棒性权重。

  2. 对抗净化(Adversarial Purification):在输入送入分类器之前,先用一个独立的模型”清洗”对抗扰动——例如用去噪自编码器、GAN 或近年的扩散模型(Diffusion Models,如 DiffPure)对输入做去噪重建,恢复干净特征后再分类。这类方法不修改分类器本身,部署灵活,但引入额外推理开销,且自身也可能被自适应攻击绕过。

  3. 随机化与去噪:给输入加随机扰动、做随机裁剪/缩放(randomized data augmentation),或对模型做随机平滑——破坏攻击者精心设计的确定性对抗扰动。代表方法如 randomized smoothing(Cohen et al., 2019):对输入加高斯噪声后做多次预测取平均,可以给出 L2L_2 球内的认证保证(certified guarantee),即数学证明在一定扰动范围内预测不变。

  4. 认证防御(Certified Defense):从数学上证明在一个扰动半径范围内,模型的预测一定不变。代表方法包括 interval bound propagation(区间界传播)和 randomized smoothing。这类方法给出硬保证,但精度通常牺牲较大,且目前主要适用于较小的扰动半径。

import torch
import torch.nn as nn
from torchvision.models import resnet18, ResNet18_Weights
# 加载预训练 ResNet18(ImageNet 1000 类)
model = resnet18(weights=ResNet18_Weights.DEFAULT).eval()
eps = 0.03 # 扰动幅度 8/255
# 假装有一张输入图像(这里用随机图做演示)
x = torch.rand(1, 3, 224, 224, requires_grad=True)
label = torch.tensor([207]) # ImageNet 第 207 类:golden retriever
# FGSM 核心:对"输入"求梯度(不是对参数)
loss = nn.CrossEntropyLoss()(model(x), label)
loss.backward() # 反向传播得到 x.grad
x_adv = x + eps * x.grad.sign() # 沿梯度符号方向加扰动
x_adv = torch.clamp(x_adv, 0, 1) # 确保像素值合法
# 对比干净输入与对抗输入的预测
print("干净预测:", model(x).argmax().item())
print("对抗预测:", model(x_adv).argmax().item()) # 通常会变成另一类
import torch
import torch.nn as nn
from torchvision.models import resnet18, ResNet18_Weights
model = resnet18(weights=ResNet18_Weights.DEFAULT).eval()
criterion = nn.CrossEntropyLoss()
x = torch.rand(1, 3, 224, 224) # 干净输入
label = torch.tensor([207])
# PGD 超参数
eps = 8 / 255 # 扰动预算
alpha = 2 / 255 # 每步步长
num_steps = 20 # 迭代次数
# 初始化:从干净图像出发(实战中可加随机噪声做 random restart)
x_adv = x.clone().detach().requires_grad_(True)
for step in range(num_steps):
output = model(x_adv)
loss = criterion(output, label)
model.zero_grad()
if x_adv.grad is not None:
x_adv.grad.zero_()
loss.backward()
# 沿梯度符号方向走一步
with torch.no_grad():
x_adv = x_adv + alpha * x_adv.grad.sign()
# 投影回 L_inf 球:限制总扰动不超过 eps
x_adv = torch.clamp(x_adv, x - eps, x + eps)
# 确保仍是合法像素值
x_adv = torch.clamp(x_adv, 0.0, 1.0)
x_adv.requires_grad_(True)
print("PGD 对抗预测:", model(x_adv).argmax().item())

以下是 Madry 风格对抗训练的简化版,展示了 min-max 博弈在代码中如何实现:

import torch
import torch.nn as nn
import torch.optim as optim
model = ... # 你的分类器,如 ResNet
opt = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
criterion = nn.CrossEntropyLoss()
# 对抗训练超参数
eps = 8 / 255
alpha = 2 / 255
inner_steps = 7 # 内层 PGD 步数(通常 5-10 步即可)
for x, y in train_loader:
# ---- 内层 max:用 PGD 生成对抗样本 ----
x_adv = x.clone().detach().requires_grad_(True)
for _ in range(inner_steps):
loss_inner = criterion(model(x_adv), y)
opt.zero_grad()
loss_inner.backward()
with torch.no_grad():
x_adv = x_adv + alpha * x_adv.grad.sign()
x_adv = torch.clamp(x_adv, x - eps, x + eps)
x_adv = torch.clamp(x_adv, 0.0, 1.0)
x_adv.requires_grad_(True)
# ---- 外层 min:用对抗样本更新模型参数 ----
opt.zero_grad()
loss_outer = criterion(model(x_adv), y) # 用对抗样本计算损失
loss_outer.backward()
opt.step()

关键点:内层 PGD 的计算图不需要保留到外层——用 detach() 切断梯度流,让内外两个优化各自独立。

  • 对抗训练是工业界首选防御:在每个 batch 上同时用干净样本和 PGD 对抗样本计算损失。代价是训练慢 3-10 倍(因为每个 batch 要先跑内层 PGD 生成对抗样本),但鲁棒性显著提升。加速技巧包括 Free Adversarial Training(Shafahi et al., 2019,通过重用前向/反向传播计算同时更新参数和生成对抗样本)和 Fast Adversarial Training(Wong et al., 2020,用单步 FGSM + 随机初始化达到接近多步 PGD 的效果)。
  • 扰动幅度 epsilon 的取舍:epsilon 越大攻击越强但越不”隐蔽”。8/255 是文献中最常用的基准,人眼几乎看不出,但对模型已足够致命。在实际部署中,epsilon 的选择应基于威胁模型——攻击者能修改多少像素而不被发现。
  • 黑盒攻击的威胁:利用对抗样本的可迁移性,攻击者无需访问目标模型内部,用一个替代模型(surrogate model)生成对抗样本即可攻击。这也是对抗训练需要多样化攻击模型(ensemble adversarial training)的原因。
  • 没有银弹:至今没有任何防御能抵挡所有攻击。许多发表于论文的”新防御”在更强的自适应攻击(adaptive attack)下纷纷破防(Athalye et al. 2018 的论文专门击穿了 7 种顶会防御)。评估防御时必须使用 AutoAttack 等强自适应攻击套件,而不是只报告对 FGSM 的抵抗力。
  • 物理世界的对抗样本:对抗性并不仅存在于数字空间——打印出来的对抗贴纸贴在路牌上,自动驾驶系统就会把”停车”认成”限速 80”。这对目标检测与 YOLO等车载感知系统是真实威胁。物理攻击需要额外考虑视角变化、光照变化、打印色域损失等因素,因此通常使用期望最大化变换(EOT,Expectation Over Transformation)来增强鲁棒性。
  • 自动驾驶安全:路牌上贴几张精心打印的贴纸,特斯拉 Mobileye 摄像头就会误判标志含义——McAfee 2019 年的测试就成功让一代 Model X 把”限速 35”读成”限速 85”。3D 物理对抗物体(如精心设计的障碍物贴纸)甚至能逃过激光雷达与摄像头的联合检测。对抗训练是提升感知鲁棒性的核心手段。
  • 人脸识别防欺骗:苹果 Face ID、支付宝人脸支付都需考虑对抗性攻击。清华团队曾用一副对抗眼镜就骗过了多家人脸识别门禁——工业系统需结合活体检测(liveness detection)与对抗训练。
  • 内容审核与水印:社交媒体平台用 AI 审核违规图片,攻击者试图用对抗扰动绕过审核;反之,版权方也用对抗扰动保护图片不被生成模型”洗稿”——Glaze、Nightshade 等工具通过向艺术品添加不可见扰动,使风格迁移或文生图模型产生混乱输出,本质上是”防御性对抗样本”。
  • 医疗影像安全:对抗扰动能让 AI 诊断系统把恶性肿瘤误判为良性(或反之)——在医疗 AI 走向临床部署的过程中,鲁棒性审计正成为监管要求(如 FDA 对 AI 医疗器械的审批流程)。
  • 大语言模型越狱:对抗攻击不止针对视觉模型——精心设计的提示词序列(如越狱 prompt、GCG 后缀攻击)本质上是 LLM 的”对抗样本”,可绕过安全护栏。详见提示工程与安全护栏。

对抗样本研究的重心正在从图像分类器向大语言模型(LLM)转移。核心发展包括:

  • GCG 后缀攻击(Greedy Coordinate Gradient):Zou et al.(2023)提出在用户 prompt 后面追加一段看似乱码的对抗后缀(如 describing.\ + similarlyNow write oppositeley.](...),就能让对齐的 LLM 执行原本被拒绝的有害指令。GCG 用类似 FGSM 的离散梯度搜索来优化这段后缀,是 LLM 对抗攻击的里程碑。
  • 自动化红队(Automated Red Teaming):2024-2025 年,利用强化学习和 LLM-as-attacker 的自动化越狱搜索成为主流范式。攻击模型自动生成、变异、筛选 prompt,无需人工设计越狱模板——这让防御方面对的攻击压力急剧增大。
  • 多模态越狱:视觉语言模型(VLM,如 GPT-4V、Gemini)引入了新攻击面——攻击者可以把对抗指令编码到图片中(对抗图片 + 文本 prompt 组合),绕过文本侧的安全过滤。
  • 对抗训练对齐:将对抗训练的思想引入 LLM 安全对齐流程——在 RLHF 或 DPO 阶段混入红队生成的对抗 prompt,让模型学会抵抗越狱。Anthropic 的 Constitutional AI 和 Google 的 REINFORCE 等方法都不同程度采用了这一思路。

扩散模型:既是攻击目标也是防御武器

Section titled “扩散模型:既是攻击目标也是防御武器”

扩散模型(Diffusion Models)在对抗鲁棒性领域扮演双重角色:

  • 作为防御(DiffPure):用预训练扩散模型对输入做”加噪-去噪”重建,有效洗掉对抗扰动,净化后的图像再送入分类器。扩散模型的随机性天然契合 randomized smoothing 框架,可以同时提供经验鲁棒性和认证鲁棒性。
  • 作为攻击目标:对抗扰动也可用来攻击文生图模型——例如让一个看似正常的文本 prompt 实际生成完全不同的图片,或用对抗图片保护版权(如 Mist、PhotoGuard 使图片在扩散模型视角下变成”噪声”,从而阻断风格模仿)。

认证防御一直受困于精度过低。2024-2025 年的进展包括:将 randomized smoothing 扩展到 Vision Transformer(ViT)架构、利用 平滑分类器(smoothed classifier) 在 L2L_2 半径下达到 ImageNet 上 70%+ 的认证精度。部分工作开始探索 L1L_1 和 L0L_0 扰动下的认证保证,以及对更现实威胁模型(如语义扰动)的认证。

一个长期问题是:对抗鲁棒的模型是否也更公平、更可解释、更校准(calibrated)?越来越多的证据表明答案是肯定的——鲁棒特征本质上是与人类语义对齐的特征,因此对抗训练带来的好处远超”抗攻击”本身。2024-2025 年的研究进一步揭示,鲁棒模型对分布偏移(distribution shift)和罕见子群体(rare subgroups)的泛化能力也更强。

RobustBench 持续更新各模型在 AutoAttack 下的鲁棒精度排行榜,已成为领域共识的标准化基准。社区越来越强调:没有 AutoAttack 评估的防御论文不应被视为可信。2025 年的趋势是将对抗鲁棒性评估扩展到更广泛的任务(检测、分割、NLP)和更现实的威胁模型(查询受限的黑盒、物理世界约束)。

类库语言说明
FoolboxPython德国 CISPA 团队维护的对抗攻击库,集成 FGSM/PGD/DeepFool/CW 等 30+ 种攻击
CleverHansPython蒙特利尔大学(Goodfellow 团队)的对抗攻击与防御库,FGSM 的参考实现
ART (Adversarial Robustness Toolbox)PythonIBM 开源,覆盖攻击/防御/认证/可解释性,支持 TF/PyTorch/scikit-learn
RobustBenchPython对抗鲁棒性标准化基准,收录各模型在 AutoAttack 下的真实鲁棒精度
AutoAttackPython目前最强的自适应攻击套件(由四种攻击组合而成),用于严格验证防御有效性
TextAttackPython针对 NLP 模型的对抗攻击与数据增强工具库
llm-attacksPythonZou et al. 开源的 GCG 后缀攻击实现,针对 LLM 安全越狱
术语英文解释
对抗样本Adversarial Example加入人眼不可见扰动后使模型给出错误预测的输入
白盒攻击White-box Attack攻击者完全了解目标模型结构与参数的攻击场景
黑盒攻击Black-box Attack攻击者只能查询模型输出、不知内部参数的攻击场景
快速梯度符号法FGSM沿输入梯度符号方向加一步扰动的经典攻击方法
投影梯度下降PGDFGSM 的多步迭代加强版,白盒攻击的黄金标准
CW 攻击Carlini-Wagner Attack基于优化的强攻击,直接操纵 logits 层,能找到极小扰动
对抗训练Adversarial Training用对抗样本参与训练以提升模型鲁棒性的防御方法,本质是 min-max 博弈
对抗净化Adversarial Purification用独立模型(如扩散模型)清洗对抗扰动后再分类的防御方法
认证防御Certified Defense从数学上保证在一定扰动范围内预测不变的防御
Randomized SmoothingRandomized Smoothing通过加噪后多次预测取平均,提供 L2 球内认证保证的方法
可迁移性Transferability对抗样本跨模型有效的特性,是黑盒攻击的基础
扰动预算 epsilonPerturbation Budget允许的最大扰动幅度,限制对抗样本与原图的差异
范数Norm (∥⋅∥p\|\cdot\|_p)衡量向量”大小”的数学工具,对抗攻击常用 L∞L_\infty、L2L_2、L0L_0 三种
梯度Gradient指向函数值上升最快方向的向量,对抗攻击的核心工具
LogitsLogits分类器最后一层的未归一化原始分数(softmax 之前)
AutoAttackAutoAttack由四种攻击组合的标准化评测套件,用于严格验证防御有效性
TRADESTRADES通过 KL 散度正则项平衡干净精度与鲁棒精度的对抗训练变体
GCG 攻击Greedy Coordinate Gradient针对大语言模型的离散对抗后缀搜索攻击
鲁棒性-精度权衡Robustness-Accuracy Tradeoff模型对抗鲁棒性提升往往以干净样本精度下降为代价的现象
自适应攻击Adaptive Attack针对特定防御机制专门设计的攻击,用于检验防御的真实有效性
  • FGSM 开山作:Goodfellow et al., “Explaining and Harnessing Adversarial Examples”, ICLR 2015. 提出快速梯度符号法,首次系统解释了对抗样本的成因——线性特性而非非线性。
  • PGD 攻击与对抗训练:Madry et al., “Towards Deep Learning Models Resistant to Adversarial Attacks”, ICLR 2018. 确立了一阶对抗训练的理论与实践框架,至今仍是鲁棒训练的基线。
  • TRADES:Zhang et al., “Theoretically Principled Trade-off between Robustness and Accuracy”, ICML 2019. 用 KL 散度正则化显式平衡干净精度与鲁棒精度,是 ImageNet 鲁棒训练的标杆方法。
  • CW 攻击:Carlini & Wagner, “Towards Evaluating the Robustness of Neural Networks”, IEEE S&P 2017. 提出基于优化的强攻击,证明了当时许多防御在强攻击下无效。
  • 击穿虚幻防御:Athalye et al., “Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples”, ICML 2018. 系统性地破解了 7 种顶会防御,提醒社区警惕”看起来有效”的防御。
  • 认证鲁棒性:Cohen et al., “Certified Adversarial Robustness via Randomized Smoothing”, ICML 2019. 用随机化平滑给出 L2 球内的认证保证,是可扩展认证防御的代表。
  • 鲁棒 vs. 非鲁棒特征:Ilyas et al., “Adversarial Examples Are Not Bugs, They Are Features”, NeurIPS 2019. 从理论角度揭示了对抗样本源于模型学习非鲁棒特征,是理解对抗性本质的必读论文。
  • 物理世界对抗:Eykholt et al., “Robust Physical-World Attacks on Deep Learning Visual Classification”, CVPR 2018. 把对抗扰动做成实体贴纸,在真实路牌上攻击自动驾驶感知系统。
  • LLM 对抗攻击:Zou et al., “Universal and Transferable Adversarial Attacks on Aligned Language Models”, 2023. 提出 GCG 后缀攻击,首次系统性地攻破对齐 LLM 的安全护栏。
  • DiffPure:Xiao et al., “DensePure: Understanding Diffusion Models towards Adversarial Robustness”, ICLR 2023. 用扩散模型净化对抗扰动,结合认证防御提升鲁棒性。
  • RobustBench:Croce et al., “RobustBench: A Standardized Adversarial Robustness Benchmark”, NeurIPS Datasets 2021. 持续更新的对抗鲁棒性排行榜,收录 AutoAttack 下的真实鲁棒精度。