想象一所“魔鬼学校”,期末考试永远伴随陷阱题:题目和平时作业长得一模一样,但正负号被悄悄调换、数字小数点被移了位、照片角落被补上一根看不见的线。普通学生(标准训练的模型)平时作业门门优秀,一上考场却集体翻车——试卷利用了他们的“线性思维”:输入稍微一拨,答案就从正确变成荒谬。教练们发明了“模拟陷阱题”(对抗样本),让学生天天刷最难模拟卷,这就是对抗训练。可刷题刷过头,新危机出现:学生开始疑神疑鬼,面对正常题也不敢作答——鲁棒性上去了,日常能力却掉下来。这时两位名师出手:TRADES 老师主张“双科并重”,用旋钮 β 调节日常分与抗陷阱能力的平衡;MART 老师主张“重点帮扶”,把训练资源倾斜给连日常题都做错的困难学生。本篇就用这场魔鬼考试的办学故事,带你读懂 TRADES 与 MART 两种鲁棒优化损失函数的设计哲学与工程落地。

岗位关联

对 AI 从业者的价值:理解 TRADES 与 MART 的损失设计,是掌握“如何让模型在真实攻击下依然可靠”的核心技能——无论是人脸支付、自动驾驶还是大模型安全,这一课都直接决定你交付的模型能否通过红队考验。

目录
  1. 可视化演示
  2. 对抗训练基础
  3. 鲁棒自然权衡
  4. TRADES损失
  5. MART新思路
  6. 训练实践要点
  7. 实际应用场景
  8. 局限与发展
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示TRADES的自然-鲁棒准确率平衡机制与MART的误分类感知加权策略,支持模式切换对比两种鲁棒优化方法。

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

TRADES损失平衡 自然准确率随β增大而下降 鲁棒准确率随β增大而提升 L = L_CE + β·KL(f(x), f(x+δ)) β参数调控自然-鲁棒准确率权衡点

对抗训练基础

魔鬼学校的教练们第一次发现问题,是在一次小测验之后:某个学生把“56“认成了”65“——试卷把数字 5 悄悄改成了 6,模型毫不怀疑地给出了相反答案。为什么模型这么容易被骗?因为它默认”输入附近的一切都差不多“,而这正是攻击者的突破口。模型在训练中只学会了”看到 A 就答 A“,却不知道”在 A 旁边极小的改动就能变成致命的 B”。

攻击者不需要改变整张图片,只需要在极小范围内,沿着让损失增大的方向拧一下输入,就能让高置信度的预测瞬间崩塌。这种“看不见的改动”就是对抗样本。为了让学生提前适应,教练们设计了“模拟陷阱题”生成器——PGD 攻击:在允许的改动幅度内,迭代地寻找最让学生出错的那个版本。每个训练轮次,模型都要先“挨一顿毒打”,再学会在毒打中站稳。

对抗训练把这件事写成一个 Min-Max 双层博弈:内层的攻击者 max 负责出最毒的题,外层的模型 min 负责在所有毒题上把总分压到最低。数学上写作:

标准对抗训练相当于每天布置一张“最毒模拟卷”,学生抗打击能力确实涨了。但老师们很快发现,这批学生越来越偏科——只盯字眼找陷阱,却丢了基本功,这为下一节“跷跷板”的出现埋下了伏笔。

min⁡θ  1n∑i=1nmax⁡∥xi′−xi∥p≤ϵℓ(fθ(xi′), yi)\min_{\theta} \; \frac{1}{n}\sum_{i=1}^{n} \max_{\|x_i' - x_i\|_p \le \epsilon} \ell\left(f_{\theta}(x_i'),\, y_i\right)
  1. 外层最小化 $\min_{\theta}$对模型参数做梯度下降,让“最坏情况”下的总损失不断变小,相当于让学生越考越好、越来越抗打。
    min⁡θ\min_{\theta}
  2. 内层最大化 $\max$攻击者在约束范围内寻找使损失最大的输入,相当于出题老师专门挑你最不会的题来考。
    max⁡∥xi′−xi∥p≤ϵℓ(fθ(xi′), yi)\max_{\|x_i' - x_i\|_p \le \epsilon} \ell\left(f_{\theta}(x_i'),\, y_i\right)
  3. 扰动约束 $\|x_i' - x_i\|_p \le \epsilon$改动幅度被 Lp 范数限制在 ε 以内,保证“人眼看不出”,威胁边界由此定义。
    ϵ\epsilon
  4. 分类损失 $\ell(\cdot)$交叉熵损失,度量预测与真实标签的差距,相当于学生的“扣分规则”。
    ℓ(fθ(xi′), yi)\ell\left(f_{\theta}(x_i'),\, y_i\right)

鲁棒自然权衡

模拟卷刷了一个月,老师发现一个诡异现象:平时作业的正确率开始下滑。学生小明看到一道正常题“3+5=?“,第一反应是”老师是不是在数字里藏了陷阱?“,犹豫三秒后选了 7。这就是”刷题后遗症”——过度防御让学生失去了对常规题的直觉。学术上,这种此消彼长被称为鲁棒性与准确率的权衡,像跷跷板一样压住一端,另一端必然翘起。

TRADES 论文从理论上拆解了鲁棒错误率的构成:一个模型在对抗考试中的总失分,等于“日常失分”加上“被陷阱题额外骗走的失分”。后者来源于模型在正常样本与对抗样本上的“状态漂移”——同样的思考过程,换个恶劣环境就不认得了。因此,防守的重点不只是刷题,而是缩小“两种情境下的表现差异”。

形式化地,令鲁棒错误率为 $R_{\mathrm{rob}}(f)$、自然错误率为 $R_{\mathrm{nat}}(f)$,TRADES 给出了如下上界:

这个分解给了教练们重要启示:想要减少陷阱题失分,与其死记硬背每一道题,不如保证学生在陷阱题情境下“答题状态”与日常保持一致。也就是说,把“日常状态”当作锚点,任何情境下都不要偏离它。这正是 TRADES 老师的核心教学法。

Rrob(f)≤Rnat(f)+Ex[max⁡∥x′−x∥p≤ϵKL(f(x) ∥ f(x′))]R_{\mathrm{rob}}(f) \le R_{\mathrm{nat}}(f) + \mathbb{E}_{x}\left[\max_{\|x'-x\|_p \le \epsilon} \mathrm{KL}\left(f(x)\,\|\, f(x')\right)\right]
  1. 鲁棒错误率 $R_{\mathrm{rob}}(f)$模型在对抗样本上出错的比例,相当于魔鬼考试的总失分。
    Rrob(f)R_{\mathrm{rob}}(f)
  2. 自然错误率 $R_{\mathrm{nat}}(f)$模型在正常样本上出错的比例,相当于日常作业的失分。
    Rnat(f)R_{\mathrm{nat}}(f)
  3. 边界项 $\max \mathrm{KL}$对抗样本与自然样本预测分布的最大差异——KL 散度越小,说明学生在恶劣环境下“心态越稳”,被陷阱题额外骗走的分数就越少。
    max⁡∥x′−x∥p≤ϵKL(f(x) ∥ f(x′))\max_{\|x'-x\|_p \le \epsilon} \mathrm{KL}\left(f(x)\,\|\, f(x')\right)

TRADES损失

TRADES 老师在开学典礼上宣布了他的“双科成绩单”方案:每位学生的期末成绩 = 日常作业分 + β × 陷阱题心态分。日常作业分保证常识不丢;“心态分”衡量学生在陷阱题下与平时答题思路的偏离程度——偏离越少,心态越稳。旋钮 β 由老师根据班级情况调节,往左偏重日常分,往右偏重抗性。

TRADES 损失的精妙之处在于,它不去“硬掰”对抗样本的答案,而是要求对抗样本上的输出分布不要偏离自然样本的输出分布。换句话说,模型不需要在毒题上“蒙对”,只需要保持“平常心”。这比标准对抗训练里“强压交叉熵”的约束更温和,也带来了更平滑的优化面,训练更稳定。

完整损失写为:

在 CIFAR-10 等基准上,TRADES 用更温和的约束取得了比标准对抗训练更高的鲁棒精度,同时自然精度几乎不掉。很快,“双科成绩单”成为鲁棒训练社区的标准配置,几乎每篇鲁棒模型论文里都能看到 TRADES 损失的身影。

LTRADES(f)=ℓ(f(x), y)+β⋅max⁡∥x′−x∥p≤ϵKL(f(x) ∥ f(x′))\mathcal{L}_{\mathrm{TRADES}}(f) = \ell\left(f(x),\, y\right) + \beta \cdot \max_{\|x'-x\|_p \le \epsilon} \mathrm{KL}\left(f(x)\,\|\, f(x')\right)
  1. 自然损失 $\ell(f(x),\,y)$在原始输入上计算交叉熵,守住日常成绩,保证学生的“常识”不退化。
    ℓ(f(x), y)\ell\left(f(x),\, y\right)
  2. 平衡系数 $\beta$旋钮,控制“日常分”和“心态分”的权重,β 越大模型越偏重鲁棒性。
    β\beta
  3. 最坏扰动 $\max_{\|x'-x\| \le \epsilon}$在威胁边界内寻找最难的情境,相当于把陷阱题调到最毒版本。
    max⁡∥x′−x∥p≤ϵKL(f(x) ∥ f(x′))\max_{\|x'-x\|_p \le \epsilon} \mathrm{KL}\left(f(x)\,\|\, f(x')\right)
  4. KL 散度 $\mathrm{KL}(f(x)\,\|\,f(x'))$衡量自然样本与对抗样本输出分布的差异,差异越小,“心态越稳”。
    KL(f(x) ∥ f(x′))\mathrm{KL}\left(f(x)\,\|\, f(x')\right)

MART新思路

MART 老师对 TRADES 的方案点了点头,但提出了另一个观察:“你们都在关注优等生——平时答对、陷阱题答错的人。可真正的失分大头,是那些连日常作业都做错的学生!”他把训练资源大幅倾斜给“困难户”:被难题打倒的人,要加练三倍,因为只有先站起来,才能谈防守。

这个直觉来自一个严酷的统计事实:模型在自然样本上已经分错的点,在对抗样本上几乎必然继续错;反之,自然样本上很有把握的点,通常具有较强的抗扰动能力。因此,与其对所有样本一视同仁地施加 KL 约束,不如给那些“本身就把持不住”的难样本分配更高权重——把有限的训练预算花在最容易失分的地方。

MART 损失由此引入“误分类感知权重”,其形式为:

实验表明,在攻击强度较大、类别边界模糊的数据集上,MART 往往比 TRADES 和标准对抗训练取得更高的鲁棒精度。两种教学法并无高下之分:TRADES 是“全面稳心态”,MART 是“重点补短板”,它们共同构成了鲁棒损失函数设计的两种范本。

LMART(f)=CE(f(x′), y)+λ⋅(1−fy(x))⋅KL(f(x) ∥ f(x′))\mathcal{L}_{\mathrm{MART}}(f) = \mathrm{CE}\left(f(x'),\, y\right) + \lambda \cdot \left(1 - f_y(x)\right) \cdot \mathrm{KL}\left(f(x)\,\|\, f(x')\right)
  1. 对抗交叉熵 $\mathrm{CE}(f(x'),\,y)$直接对对抗样本算交叉熵,让学生死磕最难题,确保最坏情况下的基本功。
    CE(f(x′), y)\mathrm{CE}\left(f(x'),\, y\right)
  2. 误分类感知权重 $1 - f_y(x)$$f_y(x)$ 是模型对自然样本真实类别的置信度——置信度越低,说明这是“困难户”,权重越高。
    1−fy(x)1 - f_y(x)
  3. 加权 KL 约束只有困难样本才需要付出额外努力保持输出一致,优等生可以“少操心”,训练资源向困难户倾斜。
    λ⋅(1−fy(x))⋅KL(f(x) ∥ f(x′))\lambda \cdot \left(1 - f_y(x)\right) \cdot \mathrm{KL}\left(f(x)\,\|\, f(x')\right)
  4. 强度系数 $\lambda$控制“帮扶力度”,相当于给困难户安排补课的总课时。
    λ\lambda

训练实践要点

再好的教学法,排课排不好照样翻车。魔鬼学校的老师每天要决定三件事:模拟卷的陷阱密度调到多大(ε)、每天刷几轮(PGD 步数)、双科成绩单的旋钮 β 拧到几(MART 则是 λ)。这些看起来琐碎的细节,决定了学生在真实考场上的发挥,也决定了论文复现时相差悬殊的数值。

工程上,一次完整的鲁棒训练由三步构成:先生成对抗样本,再计算鲁棒损失,最后回传梯度更新模型。其中对抗样本的质量直接决定训练上限。PGD 生成器像一位不知疲倦的出题老师,沿着梯度方向一步一个脚印地加强难度:

实践口诀可以浓缩成一句话:“威胁边界定 ε,毒度定步数,平衡定 β/λ,评估换更强的攻击”。训练时单独留出一部分数据做鲁棒验证集,用与训练解耦的白盒攻击(如 AutoAttack)评测,才能避免“自己出题自己考”的虚高成绩。

x(t+1)=ΠBϵ(x)(x(t)+α⋅sign⁡(∇x(t)ℓ(f(x(t)), y)))x^{(t+1)} = \Pi_{\mathcal{B}_{\epsilon}(x)}\left( x^{(t)} + \alpha \cdot \operatorname{sign}\left(\nabla_{x^{(t)}} \ell\left(f(x^{(t)}),\, y\right)\right) \right)
  1. 第 $t+1$ 步对抗样本 $x^{(t+1)}$每一步都在上一版陷阱题基础上继续加毒,迭代生成了“越来越难”的模拟题。
    x(t+1)x^{(t+1)}
  2. 投影运算 $\Pi_{\mathcal{B}_{\epsilon}(x)}$把超出 ε 球的部分拽回边界内,保证改动始终“肉眼不可见”。
    ΠBϵ(x)(⋅)\Pi_{\mathcal{B}_{\epsilon}(x)}(\cdot)
  3. 梯度符号步 $\alpha \cdot \operatorname{sign}(\nabla_{x}\ell)$朝让损失增长最快的方向迈一小步,步长为 α;符号函数保证每一步都是“精准下毒”。
    α⋅sign⁡(∇x(t)ℓ(f(x(t)), y))\alpha \cdot \operatorname{sign}\left(\nabla_{x^{(t)}} \ell\left(f(x^{(t)}),\, y\right)\right)

实际应用场景

魔鬼学校毕业的学生“心理素质过硬”,很快被各行各业抢着录用:人脸闸机、自动驾驶、内容审核、大模型客服……这些岗位的共同点是——总有坏人想方设法往输入里埋陷阱,而模型必须保持镇定。安全团队上岗的第一件事,就是做威胁建模:弄清楚攻击者有能力改什么、能改多大。

真实世界的攻击比考场更狡猾:给“停止”标志贴几块小贴纸,自动驾驶就把它读成“限速 80”;给身份证照片加一层肉眼不可见的滤镜,人脸识别就把你认成别人。威胁建模的核心一步,是明确攻击者的能力边界——也就是扰动幅度上限 ε:

在各行各业的部署实践中,人脸支付常用 ε=8/255 的威胁模型训练 TRADES 模型;自动驾驶团队用 MART 强化对“贴纸攻击”的抵抗,把被贴纸诱导的误分类样本当作困难户重点加练;大模型安全团队则借鉴 TRADES 的输出一致性思想,让模型在提示注入改写下不偏离安全价值观。鲁棒损失函数,已经从论文走进了生产环境。

∥x′−x∥p≤ϵ\|x' - x\|_p \le \epsilon
  1. 篡改后输入 $x'$攻击者最终交付给系统的带毒样本,是“改造后的试卷”。
    x′x'
  2. 范数约束 $\|x' - x\|_p$衡量改动距离,常用 $p=\infty$,表示逐像素最大改动量。
    ∥x′−x∥p\|x' - x\|_p
  3. 威胁边界 $\epsilon$数字越大,攻击者越“放肆”,模型需要守住的范围越大;数字越小,防线越容易建立。
    ϵ\epsilon

局限与发展

魔鬼学校的教学法并非完美。第一,成本太高:每轮训练都要现场出“最毒模拟卷”,GPU 开销是普通训练的数十倍。第二,出现“模拟卷依赖症”:学生在熟悉的模拟卷上分数很高,可一旦考试换一种新风格,又被打回原形——这就是鲁棒过拟合,即鲁棒训练损失在下降,但测试集上的鲁棒精度反而走低。

鲁棒过拟合的本质是模型“背题”而非“学会应变”,学术上称为鲁棒泛化鸿沟。它可以量化为训练集与测试集上鲁棒精度的差值:

针对这些局限,研究者们正在探索多条出路:用辅助批归一化层提升鲁棒泛化、用单步快速攻击替代 PGD 以降低开销、把 TRADES/MART 的损失设计思想引入预训练大模型与多模态对齐。魔鬼学校的办学理念——“既守住日常能力,又抗住恶意陷阱”——将会在更广阔的战场上继续演化。

RobustGap=RobAcctrain−RobAcctest\mathrm{RobustGap} = \mathrm{RobAcc}_{\mathrm{train}} - \mathrm{RobAcc}_{\mathrm{test}}
  1. 训练鲁棒精度 $\mathrm{RobAcc}_{\mathrm{train}}$在训练集上对抗攻击下的正确率,相当于模拟卷的分数。
    RobAcctrain\mathrm{RobAcc}_{\mathrm{train}}
  2. 测试鲁棒精度 $\mathrm{RobAcc}_{\mathrm{test}}$在测试集或全新攻击下的正确率,相当于真实考场的分数。
    RobAcctest\mathrm{RobAcc}_{\mathrm{test}}
  3. 缺口 $\mathrm{RobustGap}$两者差值越大,说明学生只会“背题”不会“应变”,防线在陌生攻击面前不堪一击。
    RobustGap\mathrm{RobustGap}

AI 应用场景

人脸支付对抗加固

阶段:模型安全加固(训练阶段)

解决的问题:传统模型只优化自然精度,攻击者用打印照片、特殊眼镜片甚至隐形图案就能骗过 1:1 比对;采用 TRADES 损失训练后,模型在保证日常识别精度的同时,对视觉扰动表现出强抵抗。

具体案例:某支付平台在人脸模型训练中加入 TRADES 损失,设置 ε=8/255(L∞),β 从 1 到 6 网格搜索,最终在内部红队测试中把“对抗眼镜”攻击成功率从 62% 压到 9%。

自动驾驶感知防贴纸攻击

阶段:感知模型训练与评测

解决的问题:路牌贴纸攻击、恶劣天气噪声都会让检测模型漏检;MART 的误分类感知加权能重点强化那些“已经被贴纸干扰到误判”的难样本,显著提升鲁棒召回。

具体案例:某无人配送车团队在仿真器里用 PGD 生成路牌贴纸对抗样本,用 MART 损失训练检测头,并在真实路段用打印贴纸复测,限速标志识别鲁棒性提升约 31%。

大模型提示注入防线

阶段:安全对齐与红队测试

解决的问题:传统 SFT 对齐对“一句话越狱”防御有限;借鉴 TRADES“输出一致性”思想,在正常指令与恶意改写指令之间施加 KL 约束,让模型在恶意改写下不偏离安全价值观。

具体案例:某大模型团队把“正常系统提示”当作自然样本、“越狱改写”当作对抗样本,用类 TRADES 损失微调 7B 模型,使拒答率在红队越狱数据集上提升 18 个百分点,同时正常指令完成度几乎不变。

Python 演示

python53 行
import torchimport torch.nn.functional as F  def pgd_attack(model, x, y, eps=8 / 255, alpha=2 / 255, steps=10):    """PGD: 在epsilon球内迭代寻找最毒扰动(陷阱题出题机)"""    delta = torch.zeros_like(x, requires_grad=True)    for _ in range(steps):        loss = F.cross_entropy(model(x + delta), y)        grad = torch.autograd.grad(loss, delta)[0]        delta.data = (delta + alpha * grad.sign()).clamp(-eps, eps)        delta.data = (x + delta).clamp(0, 1) - x    return x + delta.detach()  def trades_loss(model, x, y, beta=6.0, eps=8 / 255, alpha=2 / 255, steps=10):    """TRADES: 自然损失 + beta * KL(自然输出, 对抗输出)"""    logits = model(x)    loss_nat = F.cross_entropy(logits, y)    x_adv = pgd_attack(model, x, y, eps, alpha, steps)    logits_adv = model(x_adv)    loss_rob = F.kl_div(        F.log_softmax(logits_adv, dim=1),        F.softmax(logits, dim=1),        reduction="batchmean",    )    return loss_nat + beta * loss_rob  def mart_loss(model, x, y, lam=6.0, eps=8 / 255, alpha=2 / 255, steps=10):    """MART: 对抗交叉熵 + lam * (1 - f_y(x)) * KL(自然, 对抗)"""    logits = model(x)    prob_nat = F.softmax(logits, dim=1)    f_y = prob_nat.gather(1, y.view(-1, 1)).squeeze()    weight = (1.0 - f_y).detach()  # 误分类感知权重: 困难户权重大    x_adv = pgd_attack(model, x, y, eps, alpha, steps)    logits_adv = model(x_adv)    loss_adv = F.cross_entropy(logits_adv, y)    loss_kl = F.kl_div(        F.log_softmax(logits_adv, dim=1),        prob_nat,        reduction="none",    ).sum(dim=1)    return loss_adv + lam * (weight * loss_kl).mean()  if __name__ == "__main__":    torch.manual_seed(0)    model = torch.nn.Linear(10, 3)    x = torch.rand(8, 10)    y = torch.randint(0, 3, (8,))    print("TRADES loss:", trades_loss(model, x, y).item())    print("MART loss:", mart_loss(model, x, y).item())
目的:用 PyTorch 实现 PGD 对抗样本生成器、TRADES 与 MART 两种鲁棒损失函数,可直接接入任意分类模型的训练循环。
  1. delta = torch.zeros_like(x, requires_grad=True)从零扰动开始,攻击者一步步“加毒”
  2. grad = torch.autograd.grad(loss, delta)[0]求损失对输入的梯度,找到最容易让模型出错的方向
  3. delta.data = (delta + alpha * grad.sign()).clamp(-eps, eps)沿梯度符号迈一小步,并把扰动锁进 ε 球
  4. return x + delta.detach()返回最毒版本,detach 让它不参与训练图结构
  5. loss_nat = F.cross_entropy(logits, y)TRADES 的第一科:日常作业分
  6. loss_rob = F.kl_div(...reduction="batchmean")心态分:对抗输出偏离自然输出的程度
  7. return loss_nat + beta * loss_rob双科总成绩,β 是旋钮
  8. weight = (1.0 - f_y).detach()MART 的误分类感知权重:困难户权重大,detach 防止权重自身被梯度更新
  9. loss_adv = F.cross_entropy(logits_adv, y)直接死磕最难题,守住最坏情况的分
  10. return loss_adv + lam * (weight * loss_kl).mean()加权后的总损失:难样本贡献更大的梯度

常见误区

误区“我看对抗训练就是在图片上加一点噪声再训练,那高斯噪声、椒盐噪声是不是也算对抗训练?”

正解对抗样本不是随机噪声,而是沿梯度方向的“定向最毒扰动”。随机噪声往往让模型无损甚至更鲁棒,但攻击者只需要一个极小、定向的修改就能骗过模型。对抗训练的内层 max 专门搜索让损失最大的扰动,这正是它与数据增强的本质区别——一个在模拟“最坏敌人”,一个只是在制造无关变异。

为何常见:两者都表现为“输入被改动后训练”,表面相似,很容易混淆目的与机制。

误区“TRADES 的 β 和 MART 的 λ 是鲁棒系数,设得越大,模型对攻击的抵抗力肯定越强。”

正解系数过大会让模型输出过度平滑,自然精度暴跌,甚至引发鲁棒过拟合——在强攻击下测试精度不升反降。正确做法是在独立验证集上、固定评估攻击强度,对 β/λ 做网格搜索(常见 β∈{1,3,6},λ∈{3,6}),选“自然精度与鲁棒精度都满意”的工作点。

为何常见:线性思维作祟:权重越大越重视。但鲁棒训练本质是“跷跷板”,并非单调关系。

误区“反正都是标准对抗训练加一个 KL 项,公式换汤不换药,选实现简单的那个就行。”

正解两者设计哲学不同。TRADES 用 KL 约束所有样本的“输出一致性”,侧重守住自然精度;MART 用 (1-f_y(x)) 权重聚焦“已误分类难样本”,在强攻击下鲁棒精度通常更高,但自然精度牺牲也更大。选择取决于业务对两者指标的容忍度,不能简单互换。

为何常见:只对比了公式里都有 KL 项,忽略了“加权对象”这一关键差异。

误区“我在训练完的模型上跑一遍训练时用的 PGD-20,得到 85% 鲁棒精度,可以写进安全报告了。”

正解若评估攻击与训练攻击同源,可能出现梯度掩蔽:训练让梯度信息失真,PGD 找不到好扰动,造成“虚高”。学术界要求用更强的独立攻击(如 AutoAttack、多种攻击集成)复测,通常会把虚高的鲁棒精度打回原形。

为何常见:用“熟悉的模拟卷”给自己打分,自然会考出好成绩——但真实考场的出题风格完全不同。

面试题

Q1. 对抗样本的本质特征是什么?

单选题 · easy

  • A.添加随机噪声即可生成
  • B.微小定向扰动导致错判← 正确答案
  • C.大幅改变图像语义内容
  • D.只存在于数字图像场景

答案:B。对抗样本的核心是“微小、定向”:攻击者沿梯度方向,用肉眼几乎不可察觉的改动让模型错判。随机噪声没有方向性,很难稳定骗过模型,所以 A 错;C 犯了“大幅”的错;D 忽略物理世界同样存在对抗攻击。

Q2. TRADES 损失函数中 β 的主要作用是什么?

单选题 · mid

  • A.控制对抗扰动的大小幅度
  • B.平衡自然损失与鲁棒正则← 正确答案
  • C.决定 PGD 迭代的总步数
  • D.调整模型学习率的缩放

答案:B。TRADES 总损失 = 自然损失 + β × 鲁棒正则,β 就是跷跷板的旋钮:β 大则鲁棒损失权重高、模型更偏对抗性能;β 小则回归普通训练。它不控制扰动大小(那是 ε)、不决定步数(那是 steps)、也不涉及学习率,故选 B。

Q3. MART 的误分类感知权重表达式是什么?

单选题 · easy

  • A.1 减去真实类置信度← 正确答案
  • B.真实类置信度本身即可
  • C.对抗扰动梯度的符号
  • D.模型输出置信度的方差

答案:A。MART 用 1−f_y(x) 作为权重,f_y(x) 是模型对真实类的置信度;置信度越低,说明样本越难、越可能被误分类,权重越大,训练越“偏心”帮助困难户。其余选项均不符合 MART 原文公式。

Q4. 标准对抗训练 Min-Max 中的内层 Max 指什么?

单选题 · mid

  • A.最大化模型分类准确率
  • B.边界内寻找最坏扰动← 正确答案
  • C.最大化训练批次的数量
  • D.放大优化器的学习率

答案:B。Min-Max 中内层 max 的角色是攻击者:在 ε 球内寻找让损失最大化的对抗样本,相当于出题老师把模拟卷调到最毒;外层 min 才是守方。A/C/D 描述的都并非攻击者的目标。

Q5. 关于 TRADES 与 MART 的比较,下列说法正确?

单选题 · hard

  • A.两者都只优化对抗损失项
  • B.前者重输出一致后者重难点← 正确答案
  • C.两者对自然精度无任何约束
  • D.两者都无需生成对抗样本

答案:B。TRADES 对所有样本施加 KL 一致性约束,天然包含自然损失,守住自然精度;MART 用误分类感知权重聚焦“已出错难样本”。两者都优化对抗损失且都需要生成对抗样本,也会考虑自然表现,所以 A/C/D 均错误。

Q6. 威胁建模中 ε 表示什么?

单选题 · easy

  • A.对抗扰动允许的最大幅度← 正确答案
  • B.模型训练迭代的总轮数
  • C.神经网络隐藏层的数量
  • D.损失函数权重的相反数

答案:A。ε 是威胁边界,即攻击者允许扰动的最大幅度(Lp 球半径)。业务上,ε=8/255 是图像分类常用设定;ε 越大,防守负担越重。B/C/D 描述的分别是轮数、层数、权重,与威胁边界无关。

Q7. 鲁棒过拟合的主要表现是什么?

单选题 · hard

  • A.鲁棒损失降测试鲁棒精度反降← 正确答案
  • B.自然准确率随训练持续上升
  • C.模型参数量严重超过样本量
  • D.PGD 迭代次数越多效果越好

答案:A。鲁棒过拟合指训练集上的鲁棒损失持续下降,但测试集或新攻击下的鲁棒精度反而下降——模拟卷做太多导致“背题”。它是鲁棒训练特有的泛化问题,与参数量、迭代次数没有直接因果关系。

Q8. 对抗训练实践中正确的做法有哪些?

多选题 · mid

  • A.用 PGD 生成扰动再训练模型← 正确答案
  • B.评估用独立更强的白盒攻击← 正确答案
  • C.固定 β 越大安全性能越好
  • D.威胁边界按业务场景设定← 正确答案

答案:ABD。正确做法包括:用 PGD 生成对抗样本再训练、用独立更强攻击评估(避免梯度掩蔽虚高)、按业务设定威胁边界。β 并非越大越好,过大反而自然精度暴跌并引发鲁棒过拟合,所以 C 错。

Q9. 关于 TRADES 错误率分解与 KL 约束,正确理解有哪些?

多选题 · extreme

  • A.鲁棒错误率分自然错误率与边界项← 正确答案
  • B.边界项可用 KL 散度作为代理度量← 正确答案
  • C.增大 β 一定能降低自然错误率
  • D.分解结论与具体攻击算法无关← 正确答案

答案:ABD。TRADES 把鲁棒错误率上界分解为自然错误率加边界项,边界项可用 KL 散度代理,且该上界对整个 ε 球成立、与具体攻击算法无关(故 D 对)。增大 β 会牺牲自然精度,所以 C 错误。

Q10. MART 相比标准对抗训练的改进点有哪些?

多选题 · mid

  • A.对已误分类样本施加更高权重← 正确答案
  • B.用一减真实类置信度作为权重← 正确答案
  • C.训练过程无需生成对抗样本
  • D.只优化 KL 项放弃交叉熵

答案:AB。MART 的两大改进:一是用 1−f_y(x) 作为误分类感知权重,让难样本获得更高梯度贡献;二是保留对抗交叉熵确保死磕难题。它并不省去对抗样本生成,也不放弃交叉熵,故 C/D 错。