
1) 【一句话结论】
对抗样本是通过在输入数据上添加满足Lp范数约束(如L∞范数下像素变化不超过ε)的微小扰动,导致模型预测错误的样本。常见攻击方法(FGSM、PGD、C&W)通过不同优化策略生成扰动,分别适用于快速鲁棒性测试、复杂模型防御等场景,需区分白盒(需模型参数)与黑盒(无需模型参数)的核心区别。
2) 【原理/概念讲解】
老师口吻解释:对抗样本的核心是“微小扰动导致错误预测”。正常样本为(x)(属于真实数据分布),标签为(y),对抗样本为(x' = x + \delta),其中扰动(\delta)满足(|\delta| \leq \varepsilon)((\varepsilon)为扰动边界,如L∞范数下每个像素的最大变化量,通常取0.03-0.1),模型(f(x'))输出错误标签(y' \neq y)。类比:给一张猫的图片加一点“微小的噪声”(扰动),让模型误判为狗,这就是对抗样本。白盒攻击需要模型参数(如梯度、权重),可计算梯度生成扰动;黑盒攻击无需模型参数,通过查询模型预测结果反推扰动。
分类方法原理:
3) 【对比与适用场景】
| 攻击方法 | 定义 | 原理 | 使用场景 | 注意点 |
|---|---|---|---|---|
| FGSM | 单步梯度上升生成对抗样本 | 计算输入梯度,沿梯度符号方向添加最大扰动 | 快速评估模型鲁棒性(如初步测试),简单实现 | 计算复杂度低,但扰动较大(易被检测),鲁棒性差 |
| PGD | 多步小扰动迭代生成 | 多次迭代小梯度更新,投影约束 | 评估模型在多次攻击下的稳定性,对抗训练 | 计算复杂度高于FGSM,但更鲁棒,适用于多次攻击测试 |
| C&W | 混合整数线性规划优化 | 优化扰动与损失,考虑模型参数梯度 | 复杂模型防御,对抗训练,生成隐蔽攻击(白盒) | 计算复杂度高,适用于已知模型参数的场景,生成更隐蔽的对抗样本 |
4) 【示例】
伪代码(PyTorch风格):
import torch
import torch.nn as nn
def fgsm_attack(model, x, y, epsilon):
x.requires_grad = True
output = model(x)
loss = nn.CrossEntropyLoss()(output, y)
model.zero_grad()
loss.backward()
grad = x.grad.data
perturbed_x = x + epsilon * torch.sign(grad)
return perturbed_x
# 示例:假设模型为简单CNN,输入x,标签y
model = nn.Sequential(...) # 简化模型
x = torch.randn(1, 3, 32, 32) # 输入
y = torch.tensor([0]) # 标签
epsilon = 0.03 # 扰动边界(L∞范数下像素变化最大值)
x_adv = fgsm_attack(model, x, y, epsilon)
5) 【面试口播版答案】
对抗样本是指通过在输入数据上添加满足Lp范数约束的微小扰动(比如L∞范数下每个像素的最大变化不超过0.03),使得模型预测错误的样本。常见的攻击方法有FGSM、PGD和C&W。FGSM是快速梯度符号方法,通过计算输入的梯度并沿梯度符号方向添加最大扰动,单步生成对抗样本,适用于快速评估模型鲁棒性;PGD是多步投影梯度下降法,通过多次迭代小扰动并投影到约束球内,生成更鲁棒的对抗样本,适用于对抗训练或多次攻击测试;C&W方法通过混合整数线性规划优化,同时最小化扰动大小并最大化损失,考虑模型参数的梯度,生成更复杂的对抗样本,适用于对抗训练或复杂模型防御。每种方法有不同的计算复杂度和效果边界,比如FGSM简单但扰动较大易被检测,而C&W更复杂,能生成更隐蔽的攻击。
6) 【追问清单】
7) 【常见坑/雷区】