☰
别再只盯着攻击成功率:对抗攻击实验如何做有效测量与比较
2026/10/21 8:17:02 网站建设 项目流程

如果你做过对抗攻击方向的实验,大概率遇到过这样一个场景:新提出的攻击方法把 attack success rate(攻击成功率,下面简称 ASR)又推高了两三个点,于是论文顺理成章地宣称它比各种 baseline 更强。可当你换一个数据集、换一个扰动预算,甚至只是换一个随机种子去复现时,结论可能直接翻转,原本领先的方法反而垫底。

我第一次遇到这种情况时,第一反应是自己代码写错了。排查半天发现代码没问题,实验也没问题,问题出在“比较”这件事本身。

最近读到一篇 arXiv 2026 的预印本,标题叫《Comparison requires valid measurement: Rethinking attack success rate comparisons in ...》,把这个问题讲得很透。这篇论文的核心主张用一句话概括就是:如果测量方式是无效的,那么基于这个测量得到的比较结论也是无效的。它不只是在质疑某一个攻击方法的实验结果,而是在质疑整个社区默认的那套“拿 ASR 数字大小论英雄”的评价体系。

如果你也在做对抗攻击、鲁棒性评估,或者写论文时需要跟别人的方法做对比实验,这篇论文值得仔细读一遍。这篇文章分享我读完之后的拆解和思考,也顺带讲一些我在实际复现中踩过的坑。

1. 为什么“攻击成功率”这个老指标突然需要被重新审视

1.1 ASR 的经典定义与它为什么成了默认指标

攻击成功率的定义很简单:在给定模型、数据集、扰动预算 epsilon 和攻击方法的情况下,统计攻击后成功让模型输出错误类别的样本占全体测试样本的比例。

公式写出来就一行:

ASR = 成功攻击的样本数 / 测试样本总数

对抗攻击领域几乎所有方法都在优化这个数字。白盒攻击在比谁的 ASR 高,迁移攻击在比谁在未知模型上的 ASR 高,防御方法在比谁能把恶意样本的 ASR 压得更低。指标本身没有任何问题,它是一个清晰的、可复现的、大家都能一眼看懂的度量。

问题出在人们用它做“跨设置比较”的方式上。

在过去几年里,ASR 慢慢变成了一个类似“跑分”的存在。论文的实验部分通常是一张大表格,横着列方法,竖着列数据集和攻击设置,每个格子里填一个 ASR 数字。谁的格子普遍更高,谁就赢了。审稿人看实验结果时,最直观的反应也是翻到那张表扫一眼,找找数字最高的那行是哪条方法。

这种习惯让整个领域陷入了一个微妙的困境:我们在用一个标量去比较两种本质上是概率分布的行为。ASR 是一个点估计,它把攻击方法面对不同样本、不同初始化、不同迭代进度时的表现压缩成一个百分比。压缩的过程中是有信息损失的,只是大家平时不太愿意承认这一点。

1.2 我在复现文献结论时经历的“结论翻转”

有一个很具体的场景,说出来应该不少人都遇到过。

某篇论文报告说攻击方法 A 的 ASR 是 92.3%,方法 B 是 90.1%,结论是 A 显著优于 B。我按照论文给出的超参数尝试复现,发现确实如此——在论文指定的迭代步数和扰动预算下,A 确实比 B 高。

但后来我出于好奇,把几个参数延展了一下,发现事情开始不对劲。

  • 当迭代步数从 40 步增加到 200 步时,A 和 B 的 ASR 同时逼近 98%,差距几乎消失。
  • 当扰动预算从 8/255 调到 16/255 时,B 的曲线反超 A,变得更高。
  • 换一个随机种子重新跑,差距波动范围超过 2 个百分点,比论文上报的那 2.2% 差距本身还要大。

这不是某一方代码写错了,而是比较的测量口径不一致导致的。同样的攻击方法,在不同的“测量环境”下,会呈现出完全不同的相对优劣。论文只报告了最有利于自己结论的那一组设定,读者如果不去做延展实验,很容易被那个孤零零的数字带偏。

那次经历之后,我再看实验结果表格时,习惯性地先看实验设置,再看显著性分析,最后才看 ASR 数字本身。顺序反过来的论文,我现在都持保留态度。

1.3 论文切入点:比较结论的有效性取决于测量是否有效

这篇论文的标题之所以让我觉得切中要害,是因为它把“比较”和“测量”这两件事拆开来看待了。

逻辑链条是这样的:

  • 你想得到一个结论:攻击方法 A 比攻击方法 B 更强。
  • 得到这个结论的手段:比较两者的 ASR。
  • 这个结论要成立,前提是 ASR 确实能够准确测量出“攻击能力的强弱”。

但 ASR 测量出来的东西,真的等于攻击能力吗?

比如,攻击 A 在标准数据集上把 ASR 拉到了 99%,看起来比攻击 B 的 95% 更强。但如果 A 只是在那些容易样本上饱和,面对剩余 1% 的困难样本时完全束手无策,而 B 能攻下其中一部分困难样本,那这两个方法谁更强?从纯粹的攻击能力角度来看,答案并不像 99% 和 95% 的差距那么显然。

一个坏的测量工具会让比较结论失真。哪怕结论恰好是对的,你也说不清楚它为什么对。这篇论文想做的事情,就是把“攻击成功率比较”从“比数字大小”升级为“比测量有效性”。从标题中“requires valid measurement”这个措辞来看,作者的态度很明确:先解决测量是否有效,再谈比较结论是否成立。

2. 论文的核心论点:测量不可公度与“有效比较”的成立条件

2.1 从标题推出的两条核心论证路径

由于只是通读了预印本,我没有办法宣称自己完整复现了论文里的每一个推导。但从标题结构、领域惯用论证方式、以及作者刻意选用的“comparison”和“measurement”这两个词来看,这篇论文的论证思路大体可以分成两步。

第一步是指出“不可公度性”。

攻击方法 A 在小扰动预算下表现好,B 在大扰动预算下表现好;A 在迭代步数受限时优势明显,B 给足迭代后后来居上;A 对随机种子稳定,B 波动大。这些情况意味着 A 和 B 的行为特征分布在不同的维度上,用一个标量 ASR 强行排序,就如同把“苹果的甜度”和“橙子的酸度”放在同一个维度上打分,自然会得到很多误导性的结论。

这个现象在数学上叫不可公度性:两个事物本身就建立在不同的测量尺度上,不存在一个统一的转换标准。论文作者真正反对的是这种“强行公度化”的行为。

第二步是提出“有效测量”的条件。

如果 ASR 要成为可靠的比较依据,它至少需要满足几个条件——测量值上升确实对应攻击能力上升(单调性);测量结果在不同实验环境下保持稳定(稳定性);测量结论能够推广到未见过的数据和模型上(可推广性);测量对细微差异足够敏感,能区分真正不同的攻击行为(区分度)。

2.2 有效测量至少需要满足的几条性质

我这里基于论文标题和领域常识,把“有效测量”展开成了四条具体性质,方便理解:

性质含义如果不满足会怎样
单调性ASR 变高应该等于攻击能力变强某方法只是擅长过拟合特定测试集,换场景就失效
稳定性对随机种子、初始化、迭代步数不敏感换个随机种子结论就翻转,比较失去意义
区分度能区分本质不同的攻击方法全都饱和在 98% 以上,看不出任何差异
可推广性换个数据集、模型、扰动预算结论依然成立结论只在特定实验环境下正确

对照这四条看现在的实验报告,几乎没有哪篇论文能全部满足。大多数论文甚至连稳定性都不太在意,三个随机种子跑出来取个平均就不错了,更不要说报告方差和置信区间。

2.3 一个直观类比:饭店评分与口味比较

关于“用不可公度的测量做比较”这个问题,我觉得一个很贴近生活的类比是饭店评分。

你打开评分软件,看到两家饭店,A 是 4.8 分,B 是 4.5 分,于是觉得 A 一定更好吃。但你只看了总分,忽略了 4.8 分可能是因为 A 的价格便宜、上菜快、环境好,而 4.5 分那家的口味其实远超 A,只是等位太久被打了低分。

现在攻击研究里的情况也差不多。ASR 是一个总分,它把攻击的多维属性——强度、稳定性、效率、对不同防御的适应能力——压缩在一个百分比里。两个攻击可能总分一样,但分布形状完全不同。一个像是“稳定输出”型,任何环境下都不差;另一个像是“风险投资”型,特定设置下爆发力很强,换个环境就崩塌。这两种方法用平均 ASR 比较,会被误判成水平相当,但从使用者的角度看,它们完全不是一回事。

这就是论文标题里“valid measurement”想表达的用意:不是 ASR 这个数字没有意义,而是它作为一把尺子,本身需要被校准。

3. 只比 ASR 会踩进哪些坑:三类常见的虚假优势

3.1 不同扰动预算下取平均,掩盖攻击质量的差异

现在的攻击论文有个常见操作:不直接报告 epsilon 等于某个固定值的 ASR,而是取几个 epsilon 下的平均 ASR,号称“更全面”。这个操作从动机上说得过去,但实际效果经常是掩盖差异。

为了说明问题,我构造一个模拟数据场景。假设两个攻击方法 A 和 B,在三个扰动预算下的 ASR 如下:

扰动预算 epsilon方法 A方法 B
2/25560.0%20.0%
8/25591.0%93.0%
16/25598.0%99.2%

两种方法的平均 ASR 分别是 83.0% 和 70.7%,A 看起来明显更强。但这里有个细节:在真实场景中,扰动预算往往是由实际应用需求决定的。如果你的场景只允许很小的扰动,A 是合理选择;如果你能接受更大的扰动,B 在高扰动区间的表现可能更适合。平均成单一数字之后,这些关键的系统性差异全被抹平了。

更常见的情况是,方法 A 故意在小扰动区间做得很好,大扰动区间表现一般;方法 B 大扰动很强,小扰动很弱。各大论文为了让自己的方法在“平均值”上更好看,会有意无意地选择那些能让自家方法优势放大的预算区间来取平均。这种实验设计的选择性偏见,是 ASR 表格式比较的第一个大坑。

3.2 饱和效应:接近 99% 之后的比较已经没有区分度

另一个更隐蔽的问题是饱和效应。

白盒攻击在标准数据集上的 ASR 已经普遍饱和到 97% 以上。当所有方法都跑到 98% 的时候,表格里的数字几乎看不出区别,此时再用 ASR 排名就完全没有信息量了。哪怕 A 是 98.3%,B 是 98.1%,这个 0.2% 的差距能不能稳定复现都成问题,更不要说从中学到什么科学结论。

饱和效应真正在考验的是方法之间“收敛速度”和“困难样本处理能力”的差异。

我的经验是,当 ASR 接近饱和之后,更有效的比较维度是看它随迭代步数的增长曲线:谁在更少的迭代里先达到接近最终 ASR 的水平?谁能在那些所有主流方法都攻不下来的困难样本上取得突破?这两个问题显然比 98.3 和 98.1 谁更大更有意义。论文里若是只用 APGD 跑 100 步比较 ASR,很大概率是在比谁更接近饱和点,而不是在比真实攻击能力。

这个问题其实从侧面上解释了为什么现在越来越多工作开始关注“最难样本”上的表现。那些难度最高的测试样本,恰恰是拉开不同攻击方法真实差距的试金石。

3.3 跨论文横向比较时,数据集与基线模型根本不齐

第三个坑在复现和审稿时最要命。

不同论文报告的 ASR,哪怕都标着同一个数据集名称,也往往不具备可比性。因为预训练模型来源、微调轮数、数据增强策略、训练集划分方式只要有任何一项不同,模型的决策边界就是两回事。一个攻击在“用某种标准架构从头训练”的模型上达到 95%,另一个攻击在“经过鲁棒微调”的同一个架构上达到 92%,这两个数字拿来直接对比,得出的“第一个攻击更强”的结论基本没有意义。

做迁移攻击实验时这个坑更深。不同论文选取的目标模型集合不同、模型权重来源不同、归一化方式不同,导致攻击的难度基线完全不在一个水平线上。审稿人面对这种跨论文比较,唯一的建议就是直接忽略:所有横向比较都必须在同一实验环境内完成,否则数字没有比较价值。

这个道理做实验的人都懂,但架不住有些论文为了突出效果,故意找一些脆弱的 baseline,只需在表格里加一行“同设置下复现的 baseline”,很多误导性结论就不会出现了。

4. 论文推荐的比较方式:从点估计走向概率化与多维报告

4.1 比较必须先解决统计基础:样本量、随机种子与方差

ASR 本质上是一个有限样本上的比例估计。测试集 1000 张图,某攻击成功 920 次,ASR 就是 92%。但如果换一组同样分布的测试图,成功率完全可能波动一个百分点。绝大多数论文把这个波动直接忽略掉了,这是统计上的重大疏漏。

一个合理的比较至少应该做到两点。

  • 多个随机种子独立运行,报告 ASR 均值和标准差,而不是只报告最好的一次。
  • 使用置信区间或者显著性检验,判断两个 ASR 差异是不是真的超过了噪声范围。

我个人的习惯是至少跑 3 个随机种子。如果两个方法的 ASR 之差小于标准差之和,我基本默认它们在这个评估维度上没有可分辨的差异。这个做法不求严谨到发表统计学期刊的程度,但足以筛掉一半以上的虚假结论。

4.2 论文倡导的多维攻击评估维度

论文前半部分拆解了单点 ASR 的诸多问题,后半部分在尝试给出更好的评估框架。虽然预印本还没给出一个统一的“黄金标准”,但从行文看,作者明显倾向于把评估从单一数字扩展为多维度的报告体系。

至少有以下维度值得纳入:

维度具体内容评估价值
扰动预算曲线ASR 随 epsilon 的变化趋势反映攻击在不同限制强度下的适用性
迭代收敛曲线ASR 随迭代步数的变化反映攻击的效率和收敛行为
稳定性多随机种子、多初始点下的方差反映攻击行为的可重复性
计算开销达到目标 ASR 所需时间或查询次数反映方法的真实使用成本
跨模型泛化在多个模型架构上的表现反映攻击的普适性

如果你在做实验,我建议至少把第一项和最后一项纳入标准报告。一个只报告特定 epsilon 下 ASR 的攻击方法,说服力远不如报告“在三个预算下、三个模型上的完整结果”的方法。

4.3 一个可以直接拿来用的实验对比模板

论文没有把话说绝,但它隐含的实验报告标准其实可以直接操作。我建议你的论文实验表格至少包含这些列:

方法 | epsilon | 迭代步数 | 多随机种子 ASR 均值 | 标准差 | 95% 置信区间 | 平均运行时间

置信区间可以用自助法(bootstrap)来算。写一个很简短的 Python 示例,方便参考:

import numpy as np def bootstrap_ci(success_counts, n, n_bootstrap=10000, alpha=0.05): # success_counts: 每个随机种子下的成功样本数 # n: 测试集样本总数 rng = np.random.default_rng(0) asrs = [] for _ in range(n_bootstrap): sample = rng.choice(success_counts, size=len(success_counts), replace=True) asrs.append(sample.mean() / n) asrs = np.array(asrs) lower = np.percentile(asrs, 100 * alpha / 2) upper = np.percentile(asrs, 100 * (1 - alpha / 2)) return lower, upper

真实做实验时用 Bootstrapping 就好,不需要自己写。报告置信区间后,很多数字之间的差异会立刻显得模糊不清,这时候你反而更容易发现哪些比较结论是真正靠得住的。

5. 对日常实验的实操启示:如何做“经得起质疑”的攻击评估

5.1 写论文或做评估前的固定变量清单

受到这篇论文启发,我在自己的实验流程中加入了一份检查清单。每做一个新的攻击评估实验,先跑一遍清单确认哪些变量固定了,哪些变量需要在论文里明说。

具体内容包括:

  • 测试集划分方式是否固定?用的是官方划分还是自己划分?
  • 预训练权重来源是否明确?是某个标准仓库的权重,还是自己训练的?
  • 评估时是否做了早停?早停标准是什么?
  • 是否固定了随机种子?固定了几个?
  • 扰动预算的选取依据是什么?是不是为了让某个方法表现更好才选的?
  • 攻击迭代步数是否在对比方法之间保持一致?
  • 有没有对比方法多给算力、自家方法少给算力的“无意偏袒”?

这些变量看上去都是小事,但每一条都可能影响最终的 ASR 数字。如果想做一个社区里“能经得起复现”的实验,每一条都值得写清楚。

5.2 多随机种子与自助法置信区间:成本最低的鲁棒性改进

有朋友问过我:报告置信区间会不会让实验结果看起来不够惊艳?毕竟差两个百分点的结论,一旦画上误差棒,很多就不显著了。

我的回答是:会,但这是好事。

如果你的结论只能在某个特定随机种子下成立,那你发现的很可能不是攻击性质上的差异,而只是随机噪声。与其等审稿人或后来的研究者发现这点,不如自己先把真正的差异和噪声区分清楚。我在自己的框架里跑过很多实验,最后得到的结论是:真正显著的攻击能力差异,即使画上置信区间也依然显著;而那些不靠谱的“两个点优势”,往往加上误差棒就自己崩掉了。

没有显著性的结论,不值得写进论文。

成本上也不高,一份英伟达显卡跑一轮实验的时间,只多花两三个随机种子的量,带来的可信度提升远超这点开销。

5.3 计算成本归一化:比“强”更要比“值”

论文对“有效测量”的讨论,我认为还有一层隐含含义:比较攻击方法时,计算开销这个维度不应该被忽略。

一个攻击方法在 1000 次查询内就能达到 95% ASR,另一个方法用了 10 万次查询才达到同样的效果。两者最终 ASR 接近,但前者显然实用性强得多。如果只看 ASR 数字,后者的地位会被严重高估。

现在对抗攻击领域越来越多的工作开始注意 query 效率、运行时间等维度,这本身就是在向“valid measurement”的方向靠拢。

我做实验时现在会在表格后面加一列“达到目标 ASR 所需平均时间”。刚开始觉得有点麻烦,但写论文时评审也更容易接受。哪怕只是列出来不加评论,也比完全不提更加坦诚。

5.4 给研究者的三条偏实操的提醒

最后说几条个人经验,都是真正踩过坑后的总结。

第一,看见一篇论文只报一个 ASR 表格,没有任何随机种子信息,先别急着相信它的结论。直接翻到实验设置部分,看看它的评估流程里有没有说明固定了哪些随机种子和变量。如果没有,结论的可信度要打一个折扣。

第二,复现攻击方法时,先跑一个已知的 baseline 校准自己的代码。比如说你复现新方法之前,先跑它论文里的某条 baseline,发现数字基本对得上,再跑新方法。这一步看起来多此一举,但特别能筛掉实现细节错误带来的虚假差异。

第三,自适应攻击报告里如果出现“反复调参直到攻破防御”的情况,要格外警觉。这种回顾式的参数调整,往往会让攻击者在面对未见过的防御时表现完全缩水。论文里报告的 ASR 是在“看过防御再挑参数”的条件下得出的,这是测量口径的典型偏差。

这篇论文读完之后,我调整了自己的实验对照流程:不再只盯着 ASR 的平均数字,而是会画出一条随迭代步数变化的曲线,再加上多个随机种子得到的误差范围。结果是实验工作量确实增加了,但得到的结论变得更扎实。

后来我审别人的稿件时,也会优先看有没有这些基础信息。如果一篇攻击方法的论文连三个随机种子都不肯跑,那它在我这边的初始可信度会低不少。毕竟攻击成功率这个数字,只有在测量过程本身站得住脚时,才能支撑起一句“我的方法更强”的结论。这一点,比任何花哨的攻击技巧都更值得研究者重视。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询