想象你请了一位拳击私教,想练出能扛住突袭的硬实力。他不能只让你对着沙袋挥拳,还得有一位陪练不断用刁钻角度出招——模型就是学员,对抗攻击就是陪练的拳路,而对抗训练就是一场“挨打长肌肉”的系统训练。问题是,顶级陪练按小时收费:标准对抗训练每更新一次模型,要先让攻击者打满好几套组合拳,训练成本飙升到难以承受。于是研究者发明了两种“省钱高效”的训练法:Free AT,让一次出拳的力量同时用于防守训练和攻击试探;FAST AT,干脆把复杂的组合拳换成凌厉的直拳,快速而扎实。本文就用健身房的视角,拆解这两种高效对抗训练的原理、效果与落地技巧,帮你在有限的算力预算下,练出一个防守稳健的AI模型。

岗位关联

对AI从业者而言,掌握高效对抗训练是打通“模型安全”与“工程效率”的关键,让你在有限GPU资源下交付既快又稳的防御模型。

目录
  1. 可视化演示
  2. 对抗训练基础
  3. 成本瓶颈分析
  4. Free梯度复用
  5. FAST单步快速
  6. 效果对比取舍
  7. 工程落地实践
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示哈希表使用链地址法处理冲突的过程,插入键值对时通过哈希函数映射到桶,冲突时在链表尾部追加。

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

哈希表链地址法 哈希函数将键映射到桶索引,相同桶的键通过链表连接 冲突发生时在链表尾部追加,查找需遍历链表 h(k)=k mod m 点击插入按钮添加随机键值对,观察冲突处理。

对抗训练基础

想象你是一名拳击私教,学员要练出扛住突袭的硬实力。你不能只让他对着沙袋挥拳,还得有一位陪练不断用刁钻角度出招——模型就是学员,对抗攻击就是陪练的拳路,而对抗训练就是一场“挨打长肌肉”的系统训练。

在AI领域,对抗攻击指在输入上叠加入眼几乎察觉不到的小扰动,让模型判断出错。对抗训练的目标,是让模型面对这类“最坏情况”依然稳健,也就是提升鲁棒性。衡量攻击强不强,常用PGD(投影梯度下降):它像陪练反复试探防线,每次迭代都沿梯度方向逼近最让模型难受的一拳,K步下来就能打出很有威胁的组合攻击。

对抗训练最终要解决一个内外双层优化问题:外层让模型在训练数据上的平均损失最小,内层要求模型在扰动预算内面对最坏攻击。数学上写成:

练肌肉不是被动挨打,而是主动在压力下重建组织。模型每见识一次“最凶狠陪练的出招”,防御网络就强壮一分,这正是对抗训练能提升鲁棒性的根本原因。

min⁡θ E(x,y)∼D[max⁡∥δ∥∞≤ϵL(fθ(x+δ), y)]\displaystyle \min_{\theta}\ \mathbb{E}_{(x,y)\sim\mathcal{D}}\Big[ \max_{\|\delta\|_\infty \le \epsilon} L\big( f_\theta(x+\delta),\, y\big) \Big]
  1. 样本期望$\mathbb{E}_{(x,y)\sim\mathcal{D}}$ 表示在训练数据分布上求平均,可以理解为把每一组输入输出都算一遍再取均值,相当于把学员每天要面对的各种拳路都纳入考量。
    E(x,y)∼D\displaystyle \mathbb{E}_{(x,y)\sim\mathcal{D}}
  2. 内部最大化$\max_{\|\delta\|_\infty \le \epsilon} L(f_\theta(x+\delta),y)$ 是在扰动不超过 $\epsilon$ 的前提下找到让损失最大的扰动,也就是陪练最凶狠的一拳。
    max⁡∥δ∥∞≤ϵL(fθ(x+δ), y)\displaystyle \max_{\|\delta\|_\infty \le \epsilon} L\big( f_\theta(x+\delta),\, y\big)
  3. 外部最小化$\min_\theta$ 表示调整模型参数,使模型在最凶狠一拳下依然损失最小,相当于让学员在被击中的瞬间本能地做出正确防守。
    min⁡θ\displaystyle \min_\theta
  4. 扰动预算$\|\delta\|_\infty \le \epsilon$ 限定了每个像素最多改动 $\epsilon$,防止攻击变成整张图乱画,出拳仍然要受规则约束。
    ∥δ∥∞≤ϵ\displaystyle \|\delta\|_\infty \le \epsilon

成本瓶颈分析

标准对抗训练方案虽好,但请一位顶级陪练按小时收费极其昂贵。每次更新模型前,先要跑K步PGD攻击,每一步都涉及完整的前向传播和反向传播。这相当于学员每练一次动作,先要被陪练打K套组合拳,体力消耗巨大。

成本结构可以精确写成一个公式:一次模型更新等于K次攻击计算加上一次参数更新计算。通常K取7或10,于是训练总时长直接变成普通训练的K倍量级,这对GPU资源有限的团队来说几乎是不可承受的负担。

预算有限时,昂贵私教课无法长期坚持。于是研究者开始思考:能不能把陪练的每套拳都物尽其用,让训练成本回到普通训练的水平?

Cpgd=K×(Tfwd+Tbwd)+Tupdate\displaystyle C_{\text{pgd}} = K \times \big(T_{\text{fwd}} + T_{\text{bwd}}\big) + T_{\text{update}}
  1. 前向开销$T_{\text{fwd}}$ 是输入经过网络得到损失的一次计算,相当于陪练出一次拳的耗力。
    Tfwd\displaystyle T_{\text{fwd}}
  2. 反向开销$T_{\text{bwd}}$ 是求出梯度需要的回传计算,相当于拳后恢复体力的过程。
    Tbwd\displaystyle T_{\text{bwd}}
  3. 攻击步数$K$ 是PGD内循环迭代次数,通常取7或10,拳打得越多开销越大。
    K×(Tfwd+Tbwd)\displaystyle K \times \big(T_{\text{fwd}} + T_{\text{bwd}}\big)
  4. 模型更新$T_{\text{update}}$ 是用梯度真正更新参数的一次优化,相比K次攻击只是小头。
    Tupdate\displaystyle T_{\text{update}}

Free梯度复用

聪明的教练想到了“偷师法”:既然组合拳的力量方向能暴露防线弱点,何不在一次发力中同时完成“防”与“练”?Free AT正是这个思路——每次反向传播算出的梯度,同时用来更新对抗样本(去找更痛的位置)和更新模型(补上防守漏洞)。

具体来说,Free AT每次迭代只做一次前向和一次反向传播,然后用这份梯度分别驱动两个更新:一个沿损失下降方向更新模型参数,另一个沿梯度符号方向推进对抗样本。这样总计算开销就回到约等于标准训练的水平,而不再乘以K。

其中 $L_t = L(f_{\theta_t}(x_t^{\text{adv}}), y)$。

一次发力两处受益,这就是Free AT的“免费午餐”。但要注意,复用梯度也可能引入优化偏差,需要控制循环次数等超参数,避免模型在某个拳路上过度自信。

\displaystyle \theta_{t+1} = \theta_t - \alpha \nabla_\theta L_t, \qquadx^{\text{adv}}_{t+1} = \text{clip}_{x,\epsilon}\Big( x^{\text{adv}}_t + \eta\, \text{sign}\big( \nabla_x L_t\big) \Big)
  1. 同一反向传播$\nabla_\theta L_t$ 与 $\nabla_x L_t$ 来自同一次反向传播计算,这是“梯度复用”的关键,就像一次发力同时驱动两组器械。
    ∇θLt,∇xLt\displaystyle \nabla_\theta L_t,\quad \nabla_x L_t
  2. 参数更新$\theta_{t+1}=\theta_t-\alpha\nabla_\theta L_t$ 让模型沿损失下降方向走一步,相当于补上刚才暴露的防守漏洞。
    θt+1=θt−α∇θLt\displaystyle \theta_{t+1} = \theta_t - \alpha \nabla_\theta L_t
  3. 样本前行$x^{\text{adv}}_{t+1}=x^{\text{adv}}_t+\eta\,\text{sign}(\nabla_x L_t)$ 让对抗样本沿梯度符号方向前进 $\eta$,相当于陪练根据你的破绽调整下一拳的方向。
    xt+1adv=xtadv+η sign(∇xLt)\displaystyle x^{\text{adv}}_{t+1} = x^{\text{adv}}_t + \eta\, \text{sign}\big( \nabla_x L_t\big)
  4. 投影约束$\text{clip}_{x,\epsilon}(\cdot)$ 把样本拉回以原样本为中心、半径 $\epsilon$ 的球内,出拳再猛也不能超出规则范围。
    clipx,ϵ(⋅)\displaystyle \text{clip}_{x,\epsilon}(\cdot)

FAST单步快速

Free AT虽然快,却还需要多次循环(比如m=4或8)。FAST AT更进一步:干脆让陪练只打“直拳”——只做单步FGSM攻击。为了让直拳不至于太单调,训练前加入一个快速随机起手式,从球内随机位置开始攻击。

这个随机初始化是全局关键:它打破了单步攻击在决策边界附近的简并,避免“灾难性过拟合”——一种模型对单步攻击防御很高、对更强攻击却一触即溃的假健康状态。配合简单数据增强(如随机裁剪、翻转),FAST能在接近标准训练的时间内达到接近PGD-AT的鲁棒性。

直拳虽然简单,只要训练得当,也能练出高效的反应速度。对时间敏感的实际应用来说,FAST AT往往是最务实的选择。

xadv=x+ϵ⋅sign(∇xL(fθ(x+ϵ⋅u), y)),u∼U[−1,1]d\displaystyle x^{\text{adv}} = x + \epsilon \cdot \text{sign}\Big( \nabla_x L\big( f_\theta(x+\epsilon\cdot u),\,y\big)\Big), \qquad u\sim U[-1,1]^d
  1. 随机起手$u\sim U[-1,1]^d$ 生成一个均匀随机扰动方向,模拟陪练每次出拳前的小幅假动作。
    u∼U[−1,1]d\displaystyle u\sim U[-1,1]^d
  2. 扰动起点$x+\epsilon\cdot u$ 让攻击从球内随机位置开始,而不是固定从原点起手,增加了对抗样本的多样性。
    x+ϵ⋅u\displaystyle x+\epsilon\cdot u
  3. 单步符号攻击$\text{sign}(\nabla_x L(\cdot))$ 只取梯度方向,一次到位,省去PGD的多步迭代。
    sign(∇xL(⋅))\displaystyle \text{sign}\big( \nabla_x L(\cdot)\big)
  4. 预算用满$\epsilon$ 乘以符号方向,让单步攻击用满整个扰动预算,像直拳打满力量而不是中途收手。
    x+ϵ⋅sign(⋅)\displaystyle x + \epsilon \cdot \text{sign}(\cdot)

效果对比取舍

把三种训练方案放在健身房里横向对比:PGD-AT是重金请名教练的VIP课程,效果最扎实但昂贵;Free是性价比团课,效果接近但偶尔状态不稳;FAST是15分钟极速训练,适合忙人,但基础薄弱时防不住复杂组合拳。

考察指标主要有三个:鲁棒精度、标准精度和训练时间。大量实验表明,Free与FAST能把训练时间压缩到PGD-AT的1/6至1/10,鲁棒精度通常只下降1~3个百分点,标准精度甚至可能因正则化效应小幅回升。鲁棒精度用如下公式量化:

关键不在于哪个方法一定更好,而在于你手里的算力预算和任务对“防多狠的招”的要求。追求极致防御选PGD-AT,追求效率选FAST,两者兼顾选Free。

R=1N∑i=1N1[fθ(xiadv)=yi]\displaystyle R = \frac{1}{N}\sum_{i=1}^{N} \mathbb{1}\big[ f_\theta(x_i^{\text{adv}}) = y_i \big]
  1. 对抗测试样本$x_i^{\text{adv}}$ 是叠加攻击扰动的样本,模拟实战中的攻击,相当于考核时让陪练真打。
    xiadv\displaystyle x_i^{\text{adv}}
  2. 指示函数$\mathbb{1}[\cdot]$ 内部条件成立时取1,否则取0,对应“这拳防住了吗”的判定。
    1[fθ(xiadv)=yi]\displaystyle \mathbb{1}\big[ f_\theta(x_i^{\text{adv}}) = y_i \big]
  3. 平均正确率$\frac{1}{N}\sum_{i=1}^{N}$ 把N个样本的判定结果加起来求平均,得到整体鲁棒精度。
    1N∑i=1N\displaystyle \frac{1}{N}\sum_{i=1}^{N}

工程落地实践

好的训练计划不能只停留在理论,还要落实到健身房的每日排课。工程实践中,第一件要紧事就是ε线性预热:让扰动预算从0慢慢升到目标值,避免模型刚开练就被打懵,导致前期训练不稳定。

超参数方面:Free AT通常选循环次数m=4或8,攻击步长 $\eta = \epsilon / m$;FAST AT需要配合足够小的学习率,并组合简单数据增强。训练过程中还要持续监控干净精度与对抗精度,一旦发现单步鲁棒性很高但多步攻击精度骤降,就是灾难性过拟合的警报。ε预热的公式为:

把方案落到健身房的每日课表,才能让防守肌肉持续生长。先预热、再稳练、勤监控,这套工程习惯能让高效对抗训练真正在业务中落地。

ϵt=min⁡(ϵmax⁡,  ϵmax⁡Twarmup⋅t)\displaystyle \epsilon_t = \min\Big( \epsilon_{\max},\; \frac{\epsilon_{\max}}{T_{\text{warmup}}}\cdot t \Big)
  1. 目标预算$\epsilon_{\max}$ 是最终允许的最大扰动大小,相当于训练计划里设定的最大抗阻重量。
    ϵmax⁡\displaystyle \epsilon_{\max}
  2. 线性升温$\frac{\epsilon_{\max}}{T_{\text{warmup}}}\cdot t$ 让扰动预算从0缓慢上升到目标值,像握力从轻到重逐步加码。
    ϵmax⁡Twarmup⋅t\displaystyle \frac{\epsilon_{\max}}{T_{\text{warmup}}}\cdot t
  3. 截断保护$\min(\cdot)$ 保证达到上限后不再增加,避免训练后期扰动过大导致不稳定。
    min⁡(ϵmax⁡,  ϵmax⁡Twarmup⋅t)\displaystyle \min\Big( \epsilon_{\max},\; \frac{\epsilon_{\max}}{T_{\text{warmup}}}\cdot t \Big)

AI 应用场景

边缘设备上的图像分类鲁棒化

阶段:模型训练/微调阶段

解决的问题:边缘设备算力有限,标准PGD对抗训练单轮耗时数倍。FAST AT让工程师在普通GPU上以接近标准训练的成本完成对抗微调,使模型部署后对打印的对抗贴纸具备抵抗力,解决“模型上线后被人用贴纸骗过”的痛点。

具体案例:某园区闸机人脸识别模型原训练耗时12小时,改用FAST AT(FGSM+随机初始化+随机裁剪)后耗时14小时,同时对亮度扰动与对抗眼镜的鲁棒性提升近30%,满足现场验收要求。

自动驾驶感知模型的持续对抗更新

阶段:持续学习/OTA更新

解决的问题:路采数据中偶发对抗性涂鸦、直射眩光等干扰,模型如果不定期“挨打”会逐渐退化。Free AT让团队在每个回传数据批次上,用接近普通微调的开销完成对抗更新,避免每次OTA都要跑昂贵的多步对抗训练。

具体案例:某自动驾驶团队在夜间路采批次上用Free AT(循环4次、ε=8/255)微调检测头,训练时间只增加约1.1倍,而面对贴纸攻击的mAP下降从12%缩小到4%。

Python 演示

python52 行
import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, transforms class SmallCNN(nn.Module):    def __init__(self):        super(SmallCNN, self).__init__()        self.block = nn.Sequential(            nn.Conv2d(1, 16, 3, padding=1), nn.ReLU(),            nn.MaxPool2d(2),            nn.Conv2d(16, 32, 3, padding=1), nn.ReLU(),            nn.MaxPool2d(2)        )        self.fc = nn.Linear(32 * 7 * 7, 10)     def forward(self, x):        return self.fc(self.block(x).view(x.size(0), -1)) def fast_adv_sample(model, x, y, eps, loss_fn):    # 随机初始化的单步FGSM攻击    model.eval()    delta = (torch.rand_like(x) * 2 - 1) * eps    x_rand = torch.clamp(x + delta, 0, 1)    x_rand.requires_grad_(True)    loss = loss_fn(model(x_rand), y)    grad = torch.autograd.grad(loss, x_rand)[0]    x_adv = torch.clamp(x + eps * grad.sign(), 0, 1)    return x_adv.detach() def train_epoch(model, loader, opt, loss_fn, eps, device):    model.train()    for x, y in loader:        x, y = x.to(device), y.to(device)        x_adv = fast_adv_sample(model, x, y, eps, loss_fn)        opt.zero_grad()        loss = loss_fn(model(x_adv), y)        loss.backward()        opt.step() if __name__ == "__main__":    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")    model = SmallCNN().to(device)    opt = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)    loss_fn = nn.CrossEntropyLoss()    loader = torch.utils.data.DataLoader(        datasets.MNIST("data", train=True, download=True,                       transform=transforms.ToTensor()),        batch_size=64, shuffle=True)    for epoch in range(3):        train_epoch(model, loader, opt, loss_fn, eps=8 / 255, device=device)    print("FAST AT training done")
目的:用 PyTorch 实现 FAST AT 的核心循环——随机初始化 + FGSM 单步攻击 + 对抗样本训练,在 MNIST 上演示高效对抗训练的标准写法。
  1. delta = (torch.rand_like(x) * 2 - 1) * eps生成均匀随机扰动,对应随机起手,防止灾难性过拟合。
  2. x_rand = torch.clamp(x + delta, 0, 1)确保扰动后的像素仍在合法区间。
  3. x_rand.requires_grad_(True)开启对输入的梯度追踪。
  4. grad = torch.autograd.grad(loss, x_rand)[0]针对输入求梯度,是单步攻击的方向来源。
  5. x_adv = torch.clamp(x + eps * grad.sign(), 0, 1)单步符号攻击,用满整个扰动预算。
  6. loss = loss_fn(model(x_adv), y)用对抗样本更新模型,完成“挨打长肌肉”的一步。

常见误区

误区我听说Free AT通过梯度复用让对抗训练成本为零,那它应该和普通训练跑得一样快,一点额外时间都不花吧?

正解Free AT的单次迭代确实只做一次前向/反向,但实际训练中还需要在同一个batch上循环m步,并可能采用回合间样本重放,总训练时间接近标准训练的1~2倍。它省去的是“多步攻击带来的成倍开销”,而不是凭空让时间消失。

为何常见:把“复用梯度”误解为“不用计算梯度”,忽略了循环和重放带来的额外迭代。

误区FAST AT只用一步FGSM生成样本,攻击强度远不如PGD七步,模型肯定防不住强攻击。

正解FAST AT的关键不在单步攻击本身,而在于随机初始化和训练动态让模型沿着FGSM的“伪最优”方向持续优化。在CIFAR-10上它能达到接近PGD-AT的鲁棒精度,且对强攻击也有泛化防御力;代价是它对学习率等超参数更敏感。

为何常见:人们习惯用“攻击步数”衡量防御训练强度,而忽略了训练动态和初始化的重要性。

误区高效对抗训练一定是在用精度换时间,鲁棒性损失肯定很大。

正解Free与FAST在多数基准下鲁棒精度只下降1~3个百分点,标准精度甚至会因正则化效应有所回升。“高效”与“质量”不是零和关系,关键是配置好ε、步数和数据增强。

为何常见:工程中常把“省时间”和“降低标准”画等号,忽略了方法本身对损失面结构的优化。

误区FAST AT里的随机扰动初始化没什么用,纯粹是让代码更复杂。

正解随机初始化是防止“灾难性过拟合”的关键——没有它,单步攻击会收敛到决策边界附近的简并解,模型对PGD等强攻击几乎毫无防御力。它相当于给训练增加了多样性和探索空间。

为何常见:单看单步生成的样本形似FGSM,容易低估起手位置对训练动态的影响。

面试题

Q1. 对抗训练的主要目标是?

单选题 · easy

  • A.提升干净样本上的精度
  • B.增强对恶意扰动的鲁棒性← 正确答案
  • C.减少模型训练的时间
  • D.降低模型存储的空间

答案:B。对抗训练的核心是在“最坏扰动”下优化模型,让模型面对攻击时依然稳定。A是普通训练的目标,C是高效对抗训练顺带的好处而非主要目标,D与对抗训练无关。就像练防守的首要目标是扛住拳头,而不是省时间。

Q2. PGD攻击属于哪类攻击?

单选题 · easy

  • A.单步梯度符号攻击
  • B.多步迭代的强对抗攻击← 正确答案
  • C.随机噪声干扰攻击
  • D.基于进化算法的攻击

答案:B。PGD通过多次迭代,逐步沿梯度方向累积扰动,属于多步强攻击。FGSM才是单步符号攻击,随机噪声没有针对性,进化算法不是PGD的标准形式。陪练要打组合拳,才是PGD的风格。

Q3. Free AT的核心思想是?

单选题 · mid

  • A.完全免去模型的前向传播
  • B.梯度复用同时更新样本模型← 正确答案
  • C.使用极小批次样本完成训练
  • D.只用干净样本进行模型训练

答案:B。Free AT在一次反向传播中得到梯度后,同时用它更新对抗样本和模型参数,实现“一份力量练两遍”。前向传播并没有被省掉,小批次和干净样本都不是Free AT的特征。就像一次发力同时驱动攻击和防守两个动作。

Q4. 关于Free AT的特点,下列说法正确的有?

多选题 · mid

  • A.训练开销接近标准训练← 正确答案
  • B.存在灾难性过拟合风险← 正确答案
  • C.鲁棒性严格超过PGD训练
  • D.内存占用显著高于PGD训练

答案:AB。Free AT复用梯度,开销接近标准训练,但它对超参敏感,可能出现灾难性过拟合;它的鲁棒性通常接近而非严格超过PGD-AT,内存也并非显著更高。就像团课性价比高,但偶尔状态不稳定。

Q5. FAST AT中用随机初始化扰动的主要目的是?

单选题 · mid

  • A.增加整体训练的计算量
  • B.缓解单步攻击导致的过拟合← 正确答案
  • C.提升模型可学习的参数量
  • D.减少每次攻击的迭代步数

答案:B。随机初始化让单步攻击从球内不同位置起手,打破决策边界附近的简并,避免灾难性过拟合。它不是用来增加计算量、增加参数量或减少步数的。就像直拳前加个假动作,让防守者不敢只防一个方向。

Q6. 对抗训练中的“内部最大化”指的是?

单选题 · mid

  • A.让模型在干净样本上损失最小
  • B.在扰动预算内寻找最坏扰动← 正确答案
  • C.让模型参数持续地快速增长
  • D.调整学习率来加速参数更新

答案:B。内部最大化是找到使损失最大的扰动,即陪练打出最凶狠的一拳;外层最小化才是调模型参数。A是外层目标,C和D与“寻找最坏扰动”无关。

Q7. 关于Free与FAST AT,下列说法正确的有?

多选题 · hard

  • A.Free每次迭代只做一次反向传播← 正确答案
  • B.FAST用FGSM替代PGD内循环← 正确答案
  • C.两者都能显著减少训练时间← 正确答案
  • D.两者必然大幅损失标准精度

答案:ABC。Free通过梯度复用让单次迭代只做一次反传,FAST用单步FGSM替代PGD多步循环,两者都能显著加速训练。但它们并不必然大幅损失标准精度,多数情况下只是略有波动甚至回升。高效不等于低质。

Q8. 什么是灾难性过拟合?

单选题 · hard

  • A.训练过程突然发散并产生NaN
  • B.单步鲁棒高但对强攻击骤降← 正确答案
  • C.模型训练时遗忘旧知识任务
  • D.损失函数不断剧烈地上下振荡

答案:B。灾难性过拟合指模型对单步攻击的鲁棒性虚高,但对PGD等多步强攻击的防御几乎崩溃,是一种“假健康”状态。它特指对抗训练中的鲁棒性塌陷,不是梯度爆炸,也不是灾难性遗忘。

Q9. 扰动预算ε的含义是?

单选题 · easy

  • A.模型优化时的学习率
  • B.允许的最大扰动大小← 正确答案
  • C.神经网络结构的层数
  • D.单次训练样本的数量

答案:B。ε限制了对抗扰动在无穷范数下的最大值,即每个像素最多改动多少。学习率、层数、样本数量都不是ε的定义。它就像陪练出拳的力量上限,不能超出规则。

Q10. 部署高效对抗训练时,正确的工程做法有?

多选题 · extreme

  • A.使用ε线性预热来稳定训练← 正确答案
  • B.固定超参数且不做后续微调
  • C.结合简单数据增强共同使用← 正确答案
  • D.监控训练过程中鲁棒性变化← 正确答案

答案:ACD。ε预热让扰动预算从0慢慢上升,避免前期不稳定;数据增强能提升样本多样性,监控鲁棒性可及时发现灾难性过拟合。超参数应随任务调整,固定不变往往是工程失败的原因。