对抗鲁棒性:让模型扛住微小扰动
一个被训练到 99% 准确率的图像分类器,只要在原图上叠加一层「人眼几乎看不出区别」的细微噪声,就可能把熊猫认成长臂猿;一段语音识别模型,加入听感上几乎无感的扰动,就能让转录结果彻底翻转。这种「输入只改动了一点点,模型输出却大错特错」的现象,是对抗样本(adversarial example),而让模型在这种扰动下依然稳得住的能力,就是对抗鲁棒性(adversarial robustness)。
本文面向关注模型安全与可靠性的工程师和研究者,先讲清对抗样本为何存在,再系统梳理鲁棒性训练的三条主流路线,然后说明如何评测鲁棒性,最后划清它和数据投毒、提示越狱之间的边界。文中只描述原理与防御思路,不提供任何可复现的攻击代码或载荷。
什么是对抗样本
对抗样本指的是:在原始合法输入 x 上施加一个非常小的、有意构造的扰动 delta,使得扰动后的样本 x 加 delta 与原始样本在人类看来几乎完全一致,但模型却给出了错误的、且往往置信度很高的预测。
原始输入 x
扰动 delta,满足 ||delta|| 很小(例如受限在 L2 或 L∞ 范数球内)
对抗样本 x' = x + delta
现象 f(x) 正确,而 f(x') 错误,且人类难以区分 x 与 x'
FGSM:从线性假设出发的直觉
Goodfellow 等人在 2014 年的工作「Explaining and Harnessing Adversarial Examples」(arXiv:1412.6572,已核验)提出了一个关键解释:深层网络对对抗扰动如此敏感,主要不是因为非线性或过拟合,而是因为模型在高维输入空间里行为近似线性。当输入维度很高时,沿着损失函数对输入求导得到的梯度方向,累加上一个足够小的固定步长,就足以把样本推过决策边界。
FGSM 的核心思路可以概括为一句话:扰动应当沿「损失对输入梯度」的符号方向施加,并以一个超参数 epsilon 控制扰动大小。其本质是一次性、单步的贪心构造。只需给出梯度的符号,而不需要精确搜索,就能制造出有效的对抗样本,这正是「快速梯度符号方法」名字的由来。
扰动方向直觉: delta ∝ sign( ∇_x L(θ, x, y) )
含义: 在让损失增大的方向上,对每个像素施加一个极小但一致方向的 nudges
约束: ||delta||_∞ ≤ ε,保证人类几乎看不出变化
需要强调:FGSM 是「单步、最大步长」的构造,容易被更强的多步方法击破。它是一种原理性说明,不应被当作可复现的攻击实现来使用。
更强的构造:从单步到多步
后续的迭代式方法把单步过程拆成很多小步,每一步都重新计算梯度并做小幅更新,从而得到在同样扰动预算下更强的对抗样本。与此同时,研究者也发现大量「看似鲁棒」的防御其实只是让梯度变得难以利用(梯度混淆或梯度掩蔽),而并非真正提升了鲁棒性。这直接引出了「如何可靠地训练和评测鲁棒性」这一更严肃的问题。
鲁棒性训练:让模型学会扛扰动
提升鲁棒性不是事后打补丁,而是要在训练阶段就把扰动考虑进去。主流路线有三条:对抗训练、随机化、输入预处理。
对抗训练
Madry 等人在 2017 年的工作「Towards Deep Learning Models Resistant to Adversarial Attacks」(arXiv:1706.06083,已核验)把鲁棒性训练统一成了鲁棒优化的视角。其核心是一个最小最大(min-max)问题:
min_θ E_{(x,y)} [ max_{||delta|| ≤ ε} L(θ, x + delta, y) ]
外层 min: 寻找模型参数 θ,使最坏情况下的损失尽量小
内层 max: 在允许的扰动集合内,寻找使当前模型损失最大的那个 delta
直观理解:普通的经验风险最小化只要求模型在「干净样本」上答对;对抗训练则要求模型在「每个样本周围、半径为 ε 的扰动球内最坏的那个点」上也能答对。训练时,内层用迭代式攻击构造当前最强的对抗样本,外层用这些样本更新参数。这种方法代价是计算量明显更大(每个 batch 要多跑若干次前向与反向),并且通常伴随干净准确率的小幅下降,这是鲁棒性与标准准确率之间的经典权衡。
一个概念层面的训练流程草图如下,其中只展示结构、省略了具体的扰动计算与超参数:
# 以下是概念性伪代码,仅描述「对抗训练」的结构,不含可复现的攻击实现
for x, y in dataloader:
# 第一步:在允许范围内构造该 batch 的最坏情况样本
x_adv = build_worst_case(x, y, model) # 内部为迭代式扰动,细节略
# 第二步:用对抗样本计算损失并更新参数
loss = loss_fn(model(x_adv), y)
optimizer.step(loss)
随机化
随机化的思路是:在模型的输入或计算过程中引入随机性,让攻击者无法稳定地估计梯度,从而增加构造有效对抗样本的难度。常见做法包括:
- 随机裁剪与填充:对输入图像做随机位置的轻微裁剪或边缘填充。
- 随机噪声注入:在输入或中间激活上叠加少量随机扰动。
- 随机化预处理:对输入做随机色彩、分辨率或顺序变换。
随机化通常作为辅助手段,单独使用时很难提供可证明的强保证,但能与对抗训练或预处理组合,提升整体抗扰动能力。
输入预处理
输入预处理在模型推理之前对输入做「清洗」,目标是消除或削弱其中的对抗性扰动,使后续模型看到更接近干净分布的输入。典型手段有:
- 去噪与平滑:用滤波、JPEG 压缩、位深度缩减等方式抹掉高频细微扰动。
- 特征压缩:在特征层面对输入做降维或量化,降低攻击者可控的空间。
- 重构与检测:训练一个去扰动模型把输入「还原」到干净流形附近。
需要提醒的是,预处理类防御若设计不当,可能只是改变了梯度形态(梯度掩蔽),在更强的自适应攻击下依旧脆弱。因此任何预处理方案都必须用标准化的强攻击重新评测,而不能只依赖温和的基线攻击。
如何评测鲁棒性
没有可靠评测,鲁棒性就是空中楼阁。评测的核心指标是鲁棒准确率,而可靠评测依赖标准化的强攻击与公开基准。
鲁棒准确率
鲁棒准确率衡量的是:在给定威胁模型(允许的扰动类型、大小、攻击方对模型的了解程度)下,模型对「最坏情况对抗样本」仍预测正确的比例。
标准准确率 = 正确预测数 / 总样本数 (只用干净输入)
鲁棒准确率 = 在允许扰动内「最坏样本」上仍正确的比例
= 1 - 攻击成功率(在该威胁模型下)
理解鲁棒准确率要抓住两点:第一,它依赖「威胁模型」的定义,离开具体的扰动预算与攻击能力谈鲁棒性没有意义;第二,鲁棒准确率通常低于标准准确率,二者之间存在权衡,汇报时应同时给出两者,并写清评测所用的攻击强度。
常见基准概述
可靠的鲁棒性评测需要标准化的攻击集合与可复现的流程,而非研究者各自挑选「自己打得过」的攻击。以下是被广泛引用的评测基准与工具,文中只做概览,不提供任何可复现的攻击载荷。
-
AutoAttack:由 Croce 与 Hein 提出的「无参数、多攻击集合」评测方法(arXiv:2003.01690,已核验)。它把多种互补的攻击(含白盒与黑盒思路)组合成一个用户无需调参的集成,能在不依赖手工调参的情况下给出更保守、更可信的鲁棒性下界。大量研究表明,许多已发表防御在其原始论文中被高估了超过 10% 的鲁棒准确率,AutoAttack 正是为了纠正这种系统性高估而提出。
-
RobustBench:由 Croce 等人维护的标准化对抗鲁棒性基准(arXiv:2010.09670,已核验)。它在图像分类任务上定义清晰的威胁模型(以 L∞、L2 为主,并涵盖常见 corruption),用 AutoAttack 对 120 多个模型做统一评测,并提供公开的排行榜与「模型动物园」(Model Zoo),方便研究者一行代码调用已验证的鲁棒模型。RobustBench 还明确排除了会导致梯度掩蔽的模型类型,以避免虚高的鲁棒性数字。
-
其他常用设定:在图像领域,CIFAR-10、ImageNet 上的 L∞/L2 扰动评测最成熟;在语言、语音、表格与图数据上,鲁棒性基准仍在快速演进,威胁模型的定义也各不相同。无论使用哪个基准,关键是固定威胁模型、使用强且多样化的攻击,并对随机化模型给出确定性的评测协议。
与投毒、越狱的关系边界
对抗鲁棒性常被误认为能包揽所有「模型安全」问题,但它有明确的边界。
-
与数据投毒的关系:数据投毒(data poisoning)攻击发生在训练阶段,攻击者在训练集中混入恶意样本,使模型学到错误的、可被特定触发激活的行为(后门)。对抗鲁棒性主要防御的是推理阶段、针对已训练模型的微小输入扰动,二者作用于生命周期的不同阶段。需要指出,标准的对抗训练通常不能抵御训练阶段的投毒,因为被污染的数据本身「看起来正常」,模型是在错误数据上被诚实训练的。关于投毒的检测与防御,可参考本站同系列的「数据投毒检测」教程。
-
与提示越狱的关系:提示越狱(jailbreak)针对的是大语言模型的指令遵循与对齐边界,攻击者通过精心措辞的提示诱导模型绕开安全限制、输出本应被拒绝的内容。对抗鲁棒性关注的是输入特征空间的数值扰动,而越狱关注的是语义与指令层面的操控,二者威胁模型完全不同。对抗训练在文本分类等任务上能缓解部分基于字符或嵌入扰动的攻击,但对纯语义层面的越狱作用有限。相关防御思路可参考本站「越狱防御」与「提示注入」教程。
-
一句总结边界:对抗鲁棒性解决「输入被加了微小噪声仍要答对」,投毒解决「训练数据被恶意污染」,越狱解决「指令被巧妙诱导而失控」。三者互补,不能互相替代。
小结
对抗鲁棒性研究的是模型在「人眼几乎看不出」的微小扰动下为何会崩溃,以及如何让它稳住。要点如下:
- 对抗样本源于高维空间中模型行为的近似线性,FGSM 用梯度符号方向一次性构造,是多步攻击的原理雏形。
- 鲁棒性训练的三条主线是对抗训练、随机化、输入预处理;其中对抗训练把问题转化为 min-max 鲁棒优化,效果最扎实但成本更高。
- 评测应报告「鲁棒准确率」而非只看标准准确率,并固定威胁模型;AutoAttack 与 RobustBench 提供标准化、可复现的强评测。
- 对抗鲁棒性只覆盖推理阶段的输入扰动,不能替代数据投毒检测与提示越狱防御,三者边界清晰、互相补充。
参考与延伸阅读
- Goodfellow, I., Shlens, J., Szegedy, C. Explaining and Harnessing Adversarial Examples. arXiv:1412.6572, 2014.(已核验,FGSM 原理与线性假设)
- Madry, A., Makelov, A., Schmidt, L., Tsipras, D., Vladu, A. Towards Deep Learning Models Resistant to Adversarial Attacks. arXiv:1706.06083, 2017.(已核验,对抗训练的 min-max 视角)
- Croce, F., Hein, M. Reliable Evaluation of Adversarial Robustness with an Ensemble of Diverse Parameter-Free Attacks (AutoAttack). arXiv:2003.01690, 2020.(已核验,标准化强评测)
- Croce, F., Andriushchenko, M., Sehwag, V., Debenedetti, E., Flammarion, N., Chiang, M., Mittal, P., Hein, M. RobustBench: a standardized adversarial robustness benchmark. arXiv:2010.09670, 2021.(已核验,公开排行榜与模型动物园)
- 延伸阅读:本站同系列「数据投毒检测」「越狱防御」「提示注入」「红队测试」等教程,用于补齐对抗鲁棒性之外的模型安全版图。