想象一条驾考产业链。过去,每家驾校都自己出题、自己监考、自己发合格证,于是每家驾校的学员通过率都是 100%。你拿着 A 驾校的“优秀学员”证书上路,结果一拐弯就剐蹭。为什么会这样?不是学员不行,而是考试标准太松——倒车入库只倒一半就算过,坡道起步溜车 10 米也不扣分。AI 安全领域曾经就是这个状态:每个团队都用自己的攻击方法给自己的防御模型打分,几乎所有模型都宣称“鲁棒”。直到两件事出现——AutoAttack 给出了全国统一的“驾考题目”,RobustBench 建起了车管所级别的“官方排行榜”。从此,模型的鲁棒性不再由自己说了算,而是由标准化考场和公开榜单说了算。本文就用“驾考”这条线,带你理解这套评估生态的来龙去脉。

岗位关联

学会这套标准化评估体系,你就能在论文里给出经得起复现的鲁棒性数字,在工业部署前完成严谨的安全验收,这是对抗鲁棒性研究领域最基础也最硬核的职业素养。

目录
  1. 可视化演示
  2. 1. 评测困境:自卖自夸的乱象
  3. 2. AutoAttack组成:四位考官坐镇
  4. 3. 攻击模式:开卷考与闭卷考
  5. 4. RobustBench榜单:车管所的官方排行榜
  6. 5. 评估指标:考试规则与评分标准
  7. 6. 标准化价值:从乱象到评测生态
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示AutoAttack四类攻击集成管道、RobustBench排行榜自报vs标准评测对比及标准化前后协议变迁。

本节配有交互动效(进入视口后自动加载,约 3KB)。

AutoAttack四类攻击集成 APGD-CE:交叉熵损失自适应PGD APGD-DL:差分损失目标定向攻击 FAB-T:低维投影最小范数攻击 Square:黑盒像素级方块攻击 robust_acc = min(acc_i), i in {APGD-CE, APGD-DL, FAB-T, Square} 四类互补攻击组合消除单一盲区

1. 评测困境:自卖自夸的乱象

在 AutoAttack 出现之前,对抗鲁棒性的评估就像没有车管所的年代。每所“驾校”(研究团队)都自己出题、自己监考:有的只考“直线行驶”(往输入上加一点随机噪声),有的只考“倒车入库倒一半”(跑十几轮 PGD),还有人干脆跳过攻击环节,直接用干净准确率宣称“鲁棒”。于是每家驾校的通过率都是 100%,大家集体“自卖自夸”。

问题的根源在于,攻击者的本质目标是在一个“预算”内把模型逼到犯错——只要监考不严,任何防御都能轻松通过:

这句公式说的是:攻击者在“允许扰动的幅度不超过 ε”的约束下,寻找让模型损失最大的改动方向。

弱攻击的另一个恶果是催生了“梯度遮蔽”(gradient masking)这类纸面防御。有些模型在弱攻击面前固若金汤,攻击者稍微换一种更强的攻击,模型立刻土崩瓦解。更糟的是,各团队用的数据集、扰动预算、攻击轮数五花八门,论文之间完全无法比较:这篇说鲁棒准确率 95%,那篇说 90%,但没有人知道谁的“考试”更难——就像驾校 A 只考直线、驾校 B 考魔鬼山路,两张成绩单放在一起毫无意义。

要打破这种“自卖自夸”的乱象,必须有一套全国统一、可复现、不可作弊的考试标准。这正是 AutoAttack 登场的理由。

max⁡∥δ∥p≤ϵL(f(x+δ),y)\max_{\|\delta\|_p \le \epsilon} \mathcal{L}\left( f(x+\delta), y \right)
  1. 扰动向量攻击者施加在原始输入 x 上的改动,相当于考场里“小动作”的幅度。
    δ=x′−x\delta = x' - x
  2. 预算约束扰动的 p 范数不能超过 ε,超过预算的改动肉眼可见,失去隐蔽攻击的意义。
    ∥δ∥p≤ϵ\|\delta\|_p \le \epsilon
  3. 损失函数模型在扰动输入上的交叉熵损失,损失越大表示模型越“懵”。
    L(f(x+δ),y)\mathcal{L}\left( f(x+\delta), y \right)
  4. 取最大值攻击者的目标是在预算内让损失最大化,迫使模型输出错误类别。
    max⁡δ  L(f(x+δ),y)\max_{\delta} \; \mathcal{L}\left( f(x+\delta), y \right)

2. AutoAttack组成:四位考官坐镇

AutoAttack 就像车管所钦定的标准化考场,一次考试固定由四位考官把关,每位负责一道必考题,最终成绩取四位考官中“扣分最多”的那个。它的设计目标很纯粹:不给防御方任何“应试技巧”可钻。

前两位考官都属于自适应投影梯度下降(APGD)。第一位 APGD-CE 使用经典的交叉熵损失,沿着损失上升方向稳步逼近决策边界;第二位 APGD-DLR 换用 DLR 损失,专门对付“虚高自信”的模型——也就是梯度遮蔽:

这个公式的精妙之处在于“去绝对值”:普通交叉熵看重模型“有多自信”,而 DLR 只看“相对排名”,模型再假装自信也骗不过它。第三位考官 FAB 从决策边界的几何结构入手,直接在边界附近寻找最近的对抗样本;第四位考官 Square 是查询式黑盒攻击,只靠输出分数就能步步逼近,让随机化防御也无从躲藏。

四位考官互补且无需人工调参——就像全国统一的驾考题目,不管你在哪个城市考试,科目和评分标准完全一样。AutoAttack 测出来的成绩,就是一座模型鲁棒性的“最低下限”。

DLR(x,y)=−zy−max⁡i≠yzizπ1−zπ3\text{DLR}(x,y) = -\frac{z_y - \max_{i \neq y} z_i}{z_{\pi_1} - z_{\pi_3}}
  1. logits 向量z 是模型对各类别的原始打分向量,K 为类别总数。
    z=f(x)∈RKz = f(x) \in \mathbb{R}^{K}
  2. 分子类别得分差:真实类别得分减去最强错误类别得分,二者的差距越小,模型越接近犯错。
    zy−max⁡i≠yziz_y - \max_{i \neq y} z_i
  3. 分母归一化因子:得分向量中最大值与第三大值之差,用来消除模型“虚高自信”的影响。
    zπ1−zπ3z_{\pi_1} - z_{\pi_3}
  4. 负号与最大化攻击者最大化 DLR,实质是让真实类别的相对地位不断下降。
    max⁡δ  DLR(x+δ,y)\max_{\delta} \; \text{DLR}(x+\delta, y)

3. 攻击模式:开卷考与闭卷考

攻击也分“开卷”和“闭卷”。白盒攻击就像考官坐在副驾驶全程监考,能看到考生每一个动作细节——攻击者可以访问模型的参数和梯度,用梯度信息精确制导。黑盒攻击就像考官站在考场外围,只能根据车辆开出去的轨迹判断是否压线——攻击者只能反复查询模型的输出。

白盒攻击的典型代表是投影梯度下降(PGD),它每走一步都要“偷看”一下损失对输入的梯度符号:

每一步都朝“让损失增大最快的方向”迈一小步,迈完再投影回以原始样本为中心的 ε 半径球内,保证改动不被察觉。这就像副驾驶考官根据你握方向盘的动作提前预判你的走向。而黑盒的 Square 攻击不依赖任何梯度,用随机的小方块反复试探输出,像场外考官只记录压线次数,通过大量观察照样能找出你的薄弱环节。

AutoAttack 的高明之处,是把开卷(APGD-CE、APGD-DLR、FAB)和闭卷(Square)组合在一起集成评估。任何“只针对某种考试方式”的应试技巧——不管是遮挡方向盘还是改装刹车——都会被另一位考官识破。

xt+1=ΠBp(x,ϵ)(xt+α⋅sign⁡(∇xL(xt,y)))x^{t+1} = \Pi_{B_p(x, \epsilon)}\left( x^t + \alpha \cdot \operatorname{sign}\left( \nabla_x \mathcal{L}(x^t, y) \right) \right)
  1. 当前对抗样本第 t 步迭代后的样本,是攻击过程的“当前位置”。
    xtx^{t}
  2. 梯度符号损失对输入梯度的符号,指明“往哪个方向改能最快加大损失”。
    sign⁡(∇xL(xt,y))∈{−1,+1}\operatorname{sign}\left( \nabla_x \mathcal{L}(x^t, y) \right) \in \{-1, +1\}
  3. 步长更新沿梯度符号方向前进 α 步长,像考官根据方向盘动作预判你的路线。
    xt+α⋅sign⁡(∇xL(xt,y))x^{t} + \alpha \cdot \operatorname{sign}\left( \nabla_x \mathcal{L}(x^{t}, y) \right)
  4. 投影操作把越界的点拉回以原始样本为中心、半径为 ε 的预算球内。
    ΠBp(x,ϵ)(⋅)\Pi_{B_p(x, \epsilon)}(\cdot)

4. RobustBench榜单:车管所的官方排行榜

有了标准考场,还需要一个权威的“车管所”来公布成绩——这就是 RobustBench。它维护着一份在 AutoAttack 统一验证下的模型鲁棒性排行榜,任何团队都可以提交自己的模型,由榜单方用固定规则重新“考试”,成绩公开可查。

排行榜使用的核心成绩单是鲁棒准确率:

即:对测试集里每个样本都施加标准攻击找到的最强扰动,看模型还能不能正确分类,再求平均。

排行榜上每条记录都包含模型结构、干净准确率、鲁棒准确率和所用数据集,并且规定了统一的扰动预算(例如 CIFAR-10 上 L∞ 预算为 8/255,ImageNet 上为 4/255)。这样一来,“我的模型很鲁棒”这句话就有了可操作的定义:要么把模型提交到 RobustBench 接受检验,要么用完全相同的评估协议自测。就像买车先看碰撞测试星级,模型的“可信度”第一次有了官方认证渠道。

从此,“你的防御效果到底怎么样”这个问题不再靠推销话术回答,而是靠公开可查的榜单数字说话。车管所把考核权收归中央,驾校们就再也不敢自封 100% 通过率了。

RobAcc=1N∑i=1N1[f(xi+δi∗)=yi],∥δi∗∥p≤ϵ\text{RobAcc} = \frac{1}{N} \sum_{i=1}^{N} \mathbb{1}\left[ f\left( x_i + \delta_i^* \right) = y_i \right], \quad \|\delta_i^*\|_p \le \epsilon
  1. 测试样本数 N评估基数,样本数量越大成绩越稳定。
    N=∣Dtest∣N = \left| \mathcal{D}_{\text{test}} \right|
  2. 最强扰动对每个样本用 AutoAttack 等标准攻击找到的最强扰动。
    δi∗=arg⁡max⁡∥δ∥p≤ϵL(f(xi+δ),yi)\delta_i^* = \arg\max_{\|\delta\|_p \le \epsilon} \mathcal{L}\left( f(x_i + \delta), y_i \right)
  3. 指示函数扰动后仍分类正确记 1,分类错误记 0,逐个判分。
    1[f(xi+δi∗)=yi]\mathbb{1}\left[ f(x_i + \delta_i^*) = y_i \right]
  4. 求平均把所有样本的得分汇总为最终的鲁棒准确率。
    1N∑i=1N(⋅)\frac{1}{N} \sum_{i=1}^{N} \left( \cdot \right)

5. 评估指标:考试规则与评分标准

考试要公平,就得先把“允许做多大动作”的规则定清楚。对抗鲁棒性里,这个规则叫扰动预算,而“动作大小”的度量方式由 Lp 范数决定:

当 p=2 时,它度量的是扰动的欧氏距离总能量,像考试规定“车身整体偏移不能超过 1 米”;当 p=∞ 时,它退化为所有维度中最大的那个改动量,像“任何单个操作偏差不能超过 5 厘米”。图像领域中 L∞ 最常用,因为它最贴合“每个像素都小改一点”的隐蔽攻击直觉。

核心指标是鲁棒准确率——模型在标准攻击下的分类正确率,同时必须报告干净准确率作为对照。RobustBench 进一步把排名目标定义为“鲁棒误差率”(1 减去鲁棒准确率),鼓励在固定预算内把错误率压到最低。有了统一的评分标准,不同防御方法之间才真正具备了可比性:鲁棒准确率高者胜出,一丝一毫的误差都不能含糊。

评分标准统一了,驾校之间才比得出谁的教学更硬核;同样,指标统一了,防御方法才比得出谁更经得起真正的攻击。

∥δ∥p=(∑j=1d∣δj∣p)1/p\|\delta\|_p = \left( \sum_{j=1}^{d} |\delta_j|^p \right)^{1/p}
  1. 逐维扰动δ_j 表示第 j 个像素或特征上的改动,d 为输入维度。
    δ∈Rd\delta \in \mathbb{R}^d
  2. 绝对值 p 次方每个维度贡献的“扰动能量”。
    ∣δj∣p|\delta_j|^{p}
  3. 求和开方汇总所有维度的能量并开 p 次方,得到整体扰动大小。
    (∑j=1d∣δj∣p)1/p\left( \sum_{j=1}^{d} |\delta_j|^{p} \right)^{1/p}
  4. L∞ 特例当 p 趋向无穷,范数退化为所有维度中最大的改动量。
    ∥δ∥∞=max⁡j∣δj∣\|\delta\|_{\infty} = \max_{j} |\delta_j|

6. 标准化价值:从乱象到评测生态

AutoAttack 负责出题,RobustBench 负责公布成绩,二者结合,把对抗鲁棒性研究从“各自为政”推进到“评测生态”。最直接的变化是论文里的数字终于可复现、可比较了。

生态中一个常用的衍生指标是鲁棒性差距:

它衡量“平时成绩”与“考场成绩”的落差——干净准确率高但鲁棒准确率低的模型,就像驾校里练车极顺、一上考场就压线的学员。

鲁棒性差距越大,说明模型的鲁棒性水分越大。统一基准也有效遏制了“防御注水”:弱防御在 AutoAttack 面前原形毕露,研究者被迫转向真正有效的技术,例如对抗训练——把攻击样本加入训练集反复锤炼。今天,AutoAttack 和 RobustBench 已经成为对抗鲁棒性论文的事实门槛,几乎所有重要防御工作都在这套体系下被检验和比较。

就像全国统一驾考让道路交通更安全,标准化的评测生态让 AI 安全研究建立了可信的“基础设施”。这也正是它在对抗鲁棒性领域享有基础设施级地位的原因。

RobGap=Accclean−RobAcc\text{RobGap} = \text{Acc}_{\text{clean}} - \text{RobAcc}
  1. 干净准确率无攻击条件下模型在测试集上的准确率,相当于“平时成绩”。
    Accclean=1N∑i=1N1[f(xi)=yi]\text{Acc}_{\text{clean}} = \frac{1}{N} \sum_{i=1}^{N} \mathbb{1}\left[ f(x_i) = y_i \right]
  2. 鲁棒准确率标准攻击下的准确率,相当于“考场成绩”。
    RobAcc=1N∑i=1N1[f(xi+δi∗)=yi]\text{RobAcc} = \frac{1}{N} \sum_{i=1}^{N} \mathbb{1}\left[ f(x_i + \delta_i^*) = y_i \right]
  3. 求差值两者之差就是因对抗攻击而损失的正确率,即鲁棒性里的水分。
    RobGap=Accclean−RobAcc\text{RobGap} = \text{Acc}_{\text{clean}} - \text{RobAcc}

AI 应用场景

论文里的“鲁棒性成绩单”

阶段:模型评估与论文实验

解决的问题:传统投稿中作者自测鲁棒性,攻击强度不一,审稿人无法相信数字。改用 AutoAttack 报告鲁棒准确率,并注明与 RobustBench 一致的评估协议,结果可复现、可比较。

具体案例:某研究者提出新的防御方法,在 CIFAR-10 上用 AutoAttack 的四组件(ε=8/255,L∞)评测,报告干净准确率 92%、鲁棒准确率 78%,并与 RobustBench 榜单上现有方法横向对比,审稿人可直接复核其评估脚本。

模型上线前的安全验收

阶段:模型部署发布前的红队测试

解决的问题:传统 QA 只测功能正确性,不测对抗鲁棒性。用 AutoAttack 对人脸识别、内容审核等模型做标准化攻击测试,在预算内批量寻找对抗样本,作为上线放行的硬性门槛。

具体案例:某金融科技公司的活体检测模型,上线前跑 AutoAttack 发现 ε=0.05 的微小扰动即可绕过检测;紧急引入对抗训练后,鲁棒准确率从 61% 提升到 89%,达标后才允许发布。

用排行榜做技术选型

阶段:技术调研与方案选型

解决的问题:面对众多防御方法,宣传自卖自夸难以分辨高下。直接查阅 RobustBench,选出经 AutoAttack 统一验证的模型作为候选,再在自身业务数据上二次测试。

具体案例:某团队要部署鲁棒图像分类器,从 RobustBench 榜单筛选出前三名模型,在内部数据上跑同样的评估协议复测,最终选定综合表现最优者,避免被论文宣传误导。

Python 演示

python96 行
import mathimport random  def make_data(n=200, seed=42):    """生成两类带噪声的二维样本, 首列为偏置项"""    rng = random.Random(seed)    xs, ys = [], []    for _ in range(n):        x0 = rng.uniform(-2, 2)        x1 = rng.uniform(-2, 2)        label = 1 if x1 > 0.5 * x0 + 0.1 * rng.uniform(-1, 1) else 0        xs.append([1.0, x0, x1])        ys.append(label)    return xs, ys  def predict(w, x):    """线性模型: 得分大于 0 判为正类"""    return 1 if w[0] * x[0] + w[1] * x[1] + w[2] * x[2] > 0 else 0  def train(xs, ys, epochs=30, lr=0.5):    """逻辑回归训练, 返回权重向量 w"""    w = [0.0, 0.0, 0.0]    for _ in range(epochs):        for x, y in zip(xs, ys):            z = w[0] * x[0] + w[1] * x[1] + w[2] * x[2]            p = 1.0 / (1.0 + math.exp(-max(min(z, 30), -30)))            for i in range(3):                w[i] -= lr * (p - y) * x[i]    return w  def pgd(w, x, y, eps=0.5, steps=20, alpha=0.1):    """简化版 PGD: 在 L∞ 预算内沿损失上升方向迭代扰动"""    adv = x[:]    for _ in range(steps):        z = w[0] * adv[0] + w[1] * adv[1] + w[2] * adv[2]        p = 1.0 / (1.0 + math.exp(-max(min(z, 30), -30)))        for i in (1, 2):            adv[i] += alpha * (p - y) * w[i]            adv[i] = max(x[i] - eps, min(x[i] + eps, adv[i]))    return adv  def robust_train(xs, ys, epochs=10, lr=0.3, eps=0.3):    """对抗训练: 将攻击样本与原始样本一起训练"""    w = [0.0, 0.0, 0.0]    for _ in range(epochs):        for x, y in zip(xs, ys):            adv = pgd(w, x, y, eps=eps, steps=5, alpha=eps / 3)            for ax, ay in ((x, y), (adv, y)):                z = w[0] * ax[0] + w[1] * ax[1] + w[2] * ax[2]                p = 1.0 / (1.0 + math.exp(-max(min(z, 30), -30)))                for i in range(3):                    w[i] -= lr * (p - ay) * ax[i]    return w  def accuracy(w, xs, ys):    """普通准确率"""    return sum(predict(w, x) == y for x, y in zip(xs, ys)) / len(ys)  def robust_accuracy(w, xs, ys, eps=0.4):    """用 PGD 攻击每个样本后统计仍分类正确的比例"""    hits = 0    for x, y in zip(xs, ys):        adv = pgd(w, x, y, eps=eps, steps=15, alpha=eps / 4)        if predict(w, adv) == y:            hits += 1    return hits / len(ys)  def main():    xs, ys = make_data(300)    n = int(0.7 * len(xs))    tr_x, tr_y, te_x, te_y = xs[:n], ys[:n], xs[n:], ys[n:]    models = {        "普通训练": train(tr_x, tr_y),        "对抗训练": robust_train(tr_x, tr_y),    }    results = []    for name, w in models.items():        ca = accuracy(w, te_x, te_y)        ra = robust_accuracy(w, te_x, te_y, eps=0.4)        results.append((ra, ca, name))    results.sort(reverse=True)    print("===== 迷你 RobustBench 排行榜 =====")    for rank, (ra, ca, name) in enumerate(results, 1):        print("第%d名 %s 干净准确率=%.3f 鲁棒准确率=%.3f" % (rank, name, ca, ra))  if __name__ == "__main__":    main()
目的:用纯标准库实现一个“迷你 RobustBench”——训练普通模型和对抗训练模型,用同一个简化 PGD 攻击给它们打分,排序输出鲁棒性排行榜。
  1. def pgd(w, x, y, eps=0.5, steps=20, alpha=0.1):这就是我们迷你版的“标准考官”:在 L∞ 预算内反复迭代制造对抗样本。
  2. adv[i] += alpha * (p - y) * w[i]沿使损失增大的梯度方向更新扰动,对应正文中说过的“梯度符号”思想。
  3. adv[i] = max(x[i] - eps, min(x[i] + eps, adv[i]))把扰动投影回预算框内,就像按考试规则把动作限制在允许范围内。
  4. adv = pgd(w, x, y, eps=eps, steps=5, alpha=eps / 3)对抗训练中先攻击当前样本,再拿攻击样本一起训练,让模型“见过考题”。
  5. ra = robust_accuracy(w, te_x, te_y, eps=0.4)用统一攻击给每个模型打分,对应 RobustBench 的鲁棒准确率。
  6. results.sort(reverse=True)把模型按鲁棒成绩排序,生成迷你排行榜。

常见误区

误区我用 PGD 跑了几十步,模型准确率还有 90%,说明它很鲁棒。反正我的攻击已经够强了。

正解自选的攻击强度和方法不统一,弱攻击很容易被梯度遮蔽骗过——模型表面上扛住了,换一种更强或不同原理的攻击就立刻崩盘。AutoAttack 用四种互补攻击集成,才是公认的“考试标准”。就像驾校自己出题永远能过关,车管所却总能找出毛病。

为何常见:不了解攻击强度对结论的影响极大,也没听说过梯度遮蔽这类“纸面防御”现象。

误区RobustBench 排名第一的模型,部署到生产环境就绝对安全了。

正解排行榜只在特定威胁模型下验证,比如 CIFAR-10 上的 L∞ 预算 8/255。真实世界还有物理对抗样本、补丁攻击、自然扰动等完全不同的问题设定。榜单高只代表“标准考试”成绩好,不代表任何路况都安全,要按业务威胁模型重新评估。

为何常见:把“标准化考试”误当成“真实驾驶”,忽略了考试规则本身的限定范围。

误区既然攻击越强越好,我把 ε 设成 1.0(像素随便改)测出来的鲁棒性更有说服力。

正解ε 必须匹配真实威胁场景。ε 过大时扰动肉眼可见,样本已失去“隐蔽对抗”的意义,评估结果过度悲观且不具参考价值。RobustBench 为每个数据集规定公认预算(如 8/255),正是因为统一规则才可比。

为何常见:混淆了“攻击强度”与“攻击合理性”,把脱离威胁模型的数值当作越强越好。

误区真实攻击者哪能拿到模型参数和梯度?白盒攻击太理想化了,黑盒攻击才是实战,白盒没意义。

正解白盒攻击定义的是鲁棒性的理论上限,是评估标尺;黑盒攻击(如 Square)贴近真实攻击者能力,两者缺一不可。AutoAttack 同时包含二者,才让评估没有死角。评估工具的价值在于标准化,而不是复刻每一个真实攻击场景。

为何常见:把“评估用攻击”和“真实攻击”混为一谈,忽略了标准化评估的设计目的。

误区把梯度弄乱,让攻击者算不出方向,这不就防御住了吗?我的方法就是这么做的,效果很好。

正解梯度遮蔽只是让“表面攻击”失效,并没有真正提高模型的鲁棒性。DLR 损失对 logits 做了相对化归一,专门破解这种“虚高自信”的模型;AutoAttack 的集成攻击就是为拆穿这类防御而设计的。真正的防御必须经受标准化攻击检验。

为何常见:把“让某一种攻击失败”误认为“让所有攻击都失败”,低估了自适应攻击的威力。

面试题

Q1. AutoAttack 在鲁棒性评测中的角色是什么?

单选题 · easy

  • A.标准化的攻击集成评测工具← 正确答案
  • B.新型的对抗防御网络结构
  • C.可视化的数据增强方法库
  • D.自动化的模型压缩框架

答案:A。AutoAttack 集成了四种互补攻击,作为统一的“考官”评测模型鲁棒性;它不是防御结构、数据增强工具,更不是压缩框架。就像驾考中的标准化考场,职责是出题和评分。

Q2. RobustBench 的核心价值是什么?

单选题 · easy

  • A.统一攻击验证的模型排行榜← 正确答案
  • B.批量生成对抗样本的引擎
  • C.替代人工标注的开源数据集
  • D.加速大模型推理的编译器

答案:A。RobustBench 用 AutoAttack 统一验证并公开排名,让不同模型的鲁棒性可以公平比较。它不做对抗样本生成引擎,也不做标注和推理加速,相当于车管所公布的官方通过率榜单。

Q3. 下列哪个不是 AutoAttack 的组成部分?

单选题 · easy

  • A.APGD-CE(交叉熵梯度攻击)
  • B.APGD-DLR(DLR 损失攻击)
  • C.FAB(快速自适应边界攻击)
  • D.SPSA(随机扰动梯度估计)← 正确答案

答案:D。AutoAttack 由 APGD-CE、APGD-DLR、FAB 和 Square 四位“考官”组成,SPSA 并不在其中。这就像驾照考试只有固定的几科,不会临时加一门口试。

Q4. DLR 损失能够破解梯度遮蔽的关键在于?

单选题 · mid

  • A.对 logits 做相对化归一处理← 正确答案
  • B.使用更大的扰动步长进行训练
  • C.将白盒攻击转换为黑盒查询
  • D.直接跳过梯度计算的过程

答案:A。DLR 用真实类别与最强错误类别的得分差除以 logits 的分布跨度,只关心“相对排名”而不是绝对置信度,因此“虚高自信”的梯度遮蔽模型会原形毕露。它不是改步长、转黑盒或跳过梯度。

Q5. 白盒攻击与黑盒攻击最主要的区别是?

单选题 · mid

  • A.能否访问模型参数和梯度← 正确答案
  • B.攻击结果是否必然成功
  • C.扰动预算能否被调大
  • D.攻击样本是否肉眼可见

答案:A。白盒攻击像副驾驶考官能看到所有动作细节,能访问参数梯度;黑盒攻击像场外考官只能看结果,只能查询输出。是否可访问梯度是二者的本质差异,其他选项都不是关键区别。

Q6. AutoAttack 中包含的攻击方式有哪些?

多选题 · mid

  • A.APGD-CE 白盒梯度攻击← 正确答案
  • B.APGD-DLR 归一化损失攻击← 正确答案
  • C.FAB 几何边界攻击← 正确答案
  • D.进化策略的种群搜索攻击

答案:ABC。AutoAttack 的四位考官是 APGD-CE、APGD-DLR、FAB 和 Square,前三个都需要梯度或几何信息,第四个是黑盒查询。进化策略不在其中,就像驾考不会突然增加一项“越野拉力”。

Q7. 鲁棒准确率(Robust Accuracy)的正确含义是?

单选题 · mid

  • A.对抗样本上模型分类正确率← 正确答案
  • B.干净样本上的普通分类正确率
  • C.攻击成功次数占总测试数比例
  • D.防御模型训练收敛时的损失值

答案:A。鲁棒准确率 = 每个测试样本被标准攻击找到的最强扰动后,仍被正确分类的比例。B 是干净准确率,C 是攻击成功率,D 与评测无关。就像“考场通过率”和“平时成绩”是两回事。

Q8. 关于 Square 攻击,下列说法正确的是?

单选题 · hard

  • A.属于无需梯度的黑盒查询攻击← 正确答案
  • B.属于需要梯度的白盒投影攻击
  • C.属于不设扰动预算的全局攻击
  • D.属于针对训练数据的投毒攻击

答案:A。Square 攻击通过随机方块形状的查询试探模型输出,完全不需要梯度,是 AutoAttack 里的黑盒“闭卷考官”。它不是白盒、不破坏预算约束,更不是数据投毒。

Q9. 标准化评估生态带来的影响包括?

多选题 · hard

  • A.防御论文结果变得可复现← 正确答案
  • B.弱防御注水现象被抑制← 正确答案
  • C.模型间鲁棒性可相互比较← 正确答案
  • D.彻底消除所有对抗攻击

答案:ABC。统一考场让结果可复现、可比,也暴露了弱防御的水分。但它不可能消灭攻击本身——攻击与防御是持续的军备竞赛。D 说法过于绝对,就像驾考再严也不能保证永远不出事故。

Q10. 关于 RobustBench 的威胁模型设定,正确的是?

单选题 · extreme

  • A.在每个数据集上固定扰动预算← 正确答案
  • B.攻击预算由每个参赛者自定
  • C.只允许使用黑盒攻击评测
  • D.只对白盒模型开放提交榜单

答案:A。RobustBench 为每个数据集固定扰动预算(如 CIFAR-10 上 L∞=8/255),保证所有参赛模型在同一规则下比较;预算不能由参赛者自定,评测同时包含白盒与黑盒攻击,并面向所有提交者开放。