老城区物业的老张,手里总挂着一串钥匙。奇怪的是,他很少向住户借钥匙,光凭一把“配得特别好”的万能钥匙,就能打开小区里一大半的门。秘诀不在锁,而在锁芯:这片小区都是同一家锁厂按同一套图纸造的,只要齿形摸准了“共同规律”,一把钥匙就能捅开所有同型号锁。在 AI 世界里,存在一模一样的“万能钥匙”:攻击者在自己训练的模型 A 上精心雕刻出一个微小扰动(对抗样本),哪怕完全不碰目标模型 B 的任何参数,这个扰动也能让 B 乖乖认错。这就是对抗样本的跨模型迁移攻击——一种典型的黑盒攻击。本文就用这张“万能钥匙”图谱,带你拆解它为什么灵、什么因素影响它、如何打磨出更通用的“钥匙”,以及防御方怎么“换锁芯”。
掌握迁移攻击的原理与增强技术,是 AI 安全从业者开展黑盒鲁棒性评估、红队攻防对抗与防御验证的核心能力。
可视化演示
展示对抗样本从源模型生成后迁移攻击多个黑盒目标模型的过程,支持切换DI/TI/MI/VNI增强技术查看迁移成功率变化。
本节配有交互动效(进入视口后自动加载,约 3KB)。
迁移攻击 (Transfer Attack) 源模型生成对抗扰动 成功迁移至目标模型 目标模型防御成功 迁移率 = 成功攻击数 / 总目标数 增强技术DI/TI/MI/VNI提升黑盒迁移性
可迁移性现象
老张的钥匙为什么能开这么多锁?因为锁芯同源。机器学习模型也一样——虽然每家公司的模型结构不同,但只要都在 ImageNet 这类公开数据集上“喂”过,它们学到的分类边界就异常接近。攻击者因此想到一条捷径:在看得见内部结构的白盒模型 A 上生成一个让 A 认错的小扰动,再把这个扰动原封不动地施加到黑盒模型 B 的输入上。如果 B 也被骗了,就说这个对抗样本实现了跨模型迁移。
为什么能迁移?用决策边界来解释:A 和 B 的边界在特征空间中并不是两条独立直线,而是彼此贴得很近的两条曲线。让 A 误判,需要把样本推过 A 的边界;由于 B 的边界就在附近,同一个“推力”经常顺手把样本也推过了 B 的边界。经典论文发现,用 FGSM 这类梯度方法在 A 上算出的扰动,在 B 上的平均欺骗率远高于随机噪声,迁移现象由此进入 AI 安全视野。
FGSM 是理解一切迁移攻击的起点:
回到老张的钥匙:FGSM 就是在源模型这把“已知锁”上,照着最脆弱的受力点锉出齿形。至于这把钥匙到了 B 那把锁上还灵不灵,就要看下一节这些影响因素了。
- 原始图像 x一张普通输入图片,是攻击的起点向量。
- 分类损失 J(x, y)模型对“x 属于正确类别 y”的把握程度,损失越大说明模型越没把握。
- 输入梯度 ∇ₓJ让损失上升最快的像素改动方向,也就是模型最脆弱的方向。
- 符号函数 sign把梯度压成每个像素 +1/−1 的方向模板,保证扰动高效且可控。
- 步长缩放与叠加用 ε 控制扰动幅度,把方向模板缩放到合适大小后加到原图上,得到对抗样本。
影响迁移因素
老张的钥匙也不是每次都灵。有时锁厂换了新图纸,有时住户从别处买锁换了锁芯,有时是钥匙齿形锉得太浅。迁移攻击也受四类因素左右。
模型结构差异。决策边界终究因结构而异。ResNet 与 VGG 的“感知偏好”差别明显,它们之间的迁移率就比“ResNet-50→ResNet-152“这对同族兄弟低得多。结构越接近,边界越容易”重叠”。
训练数据重叠度。数据是锁芯的图纸。源模型与目标模型的训练集重叠越多,边界越接近;如果目标模型在完全不同的数据域(如医学影像)上训练,即使结构相同,迁移率也会骤降。
攻击算法强度。单步 FGSM 只是“原地蹦一下”,容易卡在 A 特有的边界凸起上;迭代攻击(如 PGD)多步逼近,找到的扰动方向更接近“两个模型共同脆弱”的主方向,迁移性通常更好。
扰动幅度。ε 越大,样本被推得越远,越过 B 边界的概率越高;但扰动过大会破坏不可感知性,也更容易被输入预处理类防御过滤掉。迁移率随 ε 上升有边际递减,必须在强度与隐蔽性之间权衡。为此,攻击通常会约定一个扰动预算:
锁芯图纸、钥匙材质、锉齿力道,四样齐了才算有“通用潜质”。但潜质不等于成品,接下来看老师傅怎么打磨钥匙。
- 扰动 δ对抗样本相对原图的像素级修改量。
- 无穷范数 ‖·‖∞取向量各分量绝对值的最大值,代表“改动最狠的那个像素”的幅度。
- 预算约束要求最狠的改动也不超过 ε,这是对抗样本“不可感知”承诺的数学化。
迁移增强技术
毛坯钥匙不好插,老师傅有四道工序:换个角度插(DI)、平移比对锁孔(TI)、轻敲修正齿形(MI)、再镀一层防滑膜(VNI)。四道工序的共同目的,是让钥匙不要“太贴合某一把锁”,而是贴合“锁的共性”。
输入多样性(DI):每次迭代求梯度前,以概率 p 对输入做随机变换(典型做法是随机缩放后 padding 回原尺寸),相当于攻击者从不同角度观察锁孔,避免扰动过拟合单一输入尺寸。平移不变性(TI):真实图像难免有轻微平移,模型对平移敏感,因此把梯度与高斯核做卷积,模拟“钥匙平移着插”,得到对平移鲁棒的扰动。动量迭代(MI):把历史梯度按动量累积起来,平均掉局部震荡,让扰动沿着“贯通多个模型边界”的主方向稳定前进。噪声注入(VNI):求梯度前给输入加一点微小随机噪声,相当于给损失曲面做平滑,避免钻进源模型特有的尖锐沟壑。
MI 是增强技术的中枢,其更新规则是:
TI 的卷积平滑可以写成:
四道工序叠加后,钥匙终于从“只能开 A”变成“能开一大片同图纸的锁”。实验表明,DI+TI+MI+VNI 组合使用,在 ImageNet 上的黑盒迁移成功率可以数倍于裸 FGSM——这就是打磨的力量。
- 梯度图 g反向传播得到的输入梯度,局部可能有大量尖峰。
- 高斯核卷积 W ⊗ g对梯度做邻域加权平均,保留主干方向、削掉尖峰,让扰动在平移后依然有效。
集成模型攻击
有经验的配钥匙师傅不会只带一把锁试样,而是把市面上常见的几把锁都摆上台面:这把能插进 1 号锁,那把能插进 2 号锁,反复比对后锉出的钥匙,兼容面自然更广。集成攻击就是这个思路——用多个已知的白盒模型共同“试配”一把对抗钥匙。
具体做法是:选取 K 个已知模型(架构差异越大越好),计算它们损失函数的加权平均,把这把“集成损失”当作攻击目标求梯度。由于不同模型的梯度方向各不相同,加权平均后的梯度指向的是“大家都容易犯错的方向”,而不是某个模型独有的方向,从而降低了对单一源模型决策边界的过拟合。
多锁试配出来的钥匙,比单锁炼出来的“平均化”得多——它锉掉的不是某一把锁的齿形,而是所有锁共有的“最大公约数”。这也是为什么集成攻击常被当作迁移攻击的“标准起手式”。
- 单个模型损失 J_k(x)第 k 个白盒模型对输入 x 的交叉熵损失,体现它对这个样本的“反感程度”。
- 权重 w_k各模型在集成中的话语权,通常取平均 1/K,也可按模型质量自定义。
- 加权求和集成损失是 K 个损失之和,对其求梯度即指向 K 个脆弱方向的重叠区。
- 归一化约束权重之和为 1,保证集成损失保持在合理尺度。
跨任务迁移
老张后来发现,这把钥匙不仅能开门,连抽屉锁、文件柜锁都能开——因为不同厂家虽然做不同的锁,但都遵守同一套行业标准。任务是变化的,底层技术标准却是共享的。
深度学习里,图像分类、目标检测、语义分割等模型,骨干网络(backbone)往往都来自预训练分类模型(如 ResNet、VGG)。这些骨干提取的底层特征——边缘、纹理、颜色——是完全共享的。因此在分类模型上生成的对抗扰动,迁移到以同款骨干构建的检测、分割模型上,依然有相当的杀伤力。任务之间关联越强(如分类→检测),迁移越明显;关联越弱,迁移越吃力。
更极端的形式是通用对抗扰动:研究者用少量图像训练出“一张通用噪声图”,把它贴到任意输入上都能让模型误判——这正是“一把钥匙开所有门”的极限形态。它说明攻击者不需要针对每张图、每个任务定制扰动,只要找到模型家族共享的脆弱方向即可。
跨任务迁移提醒我们:攻击者的万能钥匙不止一把。只要预训练范式不变,换个任务并不等于换个安全。
迁移性评估
怎么评价老张的万能钥匙好不好用?最直接的办法:拿它去开一串目标锁,数一数成功了几把。迁移性评估干的就是这件事——用数字定义“通用度”。
标准流程分三步:第一,在源模型 A 上生成 N 个对抗样本;第二,把它们逐个喂给黑盒目标模型 B,记录 B 的输出;第三,统计 B 被欺骗的比例,即迁移成功率(Transfer Rate, TR)。需要注意与干净样本基线对照:如果 B 在干净样本上本身就频繁出错,迁移率会被高估,所以严谨的报告会同时给出“干净准确率”与“对抗准确率”两个数字。
专业的评估会用多个不同架构的目标模型分别测 TR,形成一张“迁移攻击矩阵”;再叠加 DI/TI/MI/VNI 与集成攻击,给模型做完整的鲁棒性画像。就像老张在每栋楼都试一遍钥匙,评估报告就是一张“钥匙开锁记录表”——数值越难看,说明这块“锁区”越危险。
- 对抗样本集 {x_i^adv}在源模型 A 上生成的 N 个对抗样本,是“待测的钥匙”。
- 目标模型决策 f_B黑盒模型 B 对新输入的预测标签,评估者只能看到这个输出。
- 误判指示器 I[·]预测标签不等于真实标签记 1,否则记 0。
- 求平均N 个样本上成功欺骗 B 的比例,即迁移率,数值越高说明钥匙越通用。
迁移攻击防御
物业被老张搞怕了,换了几招:换锁芯、加防盗板、装猫眼。本质上不是让锁“打不开”,而是让万能钥匙“不再通用”。
对抗训练是最经典的防御:把对抗样本混进训练集,让模型“见过坏样本”从而增强免疫力。它在数学上是一个 min-max 问题——内层最大化找最毒的攻击,外层最小化让模型在最毒的攻击下也少犯错:
输入预处理是低成本的一招:对输入做 JPEG 压缩、随机缩放裁剪、去噪等变换,破坏攻击者精心构造的像素级扰动。模型集成防御则让多个不同架构的模型投票,迁移攻击要同时骗过多个边界,难度陡增。检测机制通过重建误差、置信度分数等信号识别对抗输入,将其拒之门外。
老张的钥匙终究会慢慢失灵——但每换一次锁芯,攻击者也会配出新钥匙。攻防是一场没有终点的军备竞赛,理解迁移攻击,正是防御方不掉队的第一步。
- 外层最小化寻找模型参数 θ,使整体期望损失最小。
- 内层最大化对每个样本寻找不超过 ε 预算的最强扰动 δ,让当前模型损失最大。
- 期望运算对训练数据分布 D 上的所有样本都要求“扛得住”,而不是只对个别样本有效。
- 整体含义模型在最坏情况下也尽量少犯错,决策边界被“撑宽”,迁移攻击的共享弱点被抹平。
AI 应用场景
云上模型 API 的黑盒鲁棒性审计
阶段:对抗性评估 / 红队测试
解决的问题:云厂商只开放推理 API,白盒梯度不可得,传统白盒攻击直接失效。迁移攻击用开源模型作“源模型”,把用 DI+TI+MI 增强过的对抗样本投喂给目标 API,就能在完全不接触内部参数的情况下,量化它的鲁棒性短板。
具体案例:某安全团队对一款公网 OCR 识别 API 做审计,用 ImageNet 预训练 ResNet 作源模型,生成带平移增强的对抗样本,使该 API 的字符识别错误率从 2% 飙升至 38%,证明其易受迁移攻击,推动厂商完成对抗训练加固。
人脸识别系统的防绕过测试
阶段:防御验证 / 攻防演练
解决的问题:门禁厂商常宣称自家模型“绝对安全”,但攻击者可以用迁移攻击制作可打印的对抗补丁,在物理世界绕过识别。安全团队需要一种不依赖目标模型内部信息的手段来验证风险。
具体案例:在攻防演练中,测试人员先以与目标同源的公开人脸数据集训练替代模型,再集成多个不同架构生成对抗补丁,在闸机实测中实现约 30% 的绕过率,帮助厂商定位到“骨干网络共享”这一根本脆弱点。
防御方案上线前的迁移性基准评测
阶段:模型鲁棒性评估 / 上线准入
解决的问题:防御方如果只用自己熟悉的攻击测试,容易高估防御效果;只有把迁移攻击纳入标准评测,才能反映真实世界中的黑盒威胁。
具体案例:某机器学习平台建立“迁移攻击矩阵”作为上线门槛:多个源模型 × 多种增强技术 × 多个目标模型,逐一计算迁移成功率,任何攻击路径下迁移率超过阈值的模型一律不准上线,从流程上杜绝“换任务就失守”的漏洞。
Python 演示
import numpy as np class ToyNet: """极简两层网络, 用于演示对抗样本的跨模型迁移""" def __init__(self, seed, hidden=16): self.rng = np.random.default_rng(seed) self.w1 = self.rng.standard_normal((2, hidden)) * 0.6 self.b1 = np.zeros(hidden) self.w2 = self.rng.standard_normal((hidden, 1)) * 0.6 self.b2 = 0.0 def forward(self, X): h = np.tanh(X @ self.w1 + self.b1) return 1.0 / (1.0 + np.exp(-(h @ self.w2 + self.b2))) def train(self, X, y, steps=300, lr=0.3): for _ in range(steps): h = np.tanh(X @ self.w1 + self.b1) p = 1.0 / (1.0 + np.exp(-(h @ self.w2 + self.b2))) dz = (p - y.reshape(-1, 1)) / len(X) dw2 = h.T @ dz db2 = dz.sum(axis=0) dh = (dz @ self.w2.T) * (1 - h ** 2) dw1 = X.T @ dh db1 = dh.sum(axis=0) self.w2 -= lr * dw2 self.b2 -= lr * db2 self.w1 -= lr * dw1 self.b1 -= lr * db1 def make_data(seed=0, n=400): rng = np.random.default_rng(seed) X = rng.standard_normal((n, 2)) y = (X[:, 0] ** 2 + X[:, 1] ** 2 < 1.6).astype(int) return X, y def grad_input(model, X, y): h = np.tanh(X @ model.w1 + model.b1) p = 1.0 / (1.0 + np.exp(-(h @ model.w2 + model.b2))) dz = p - y.reshape(-1, 1) dh = (dz @ model.w2.T) * (1 - h ** 2) return dh @ model.w1.T def fgsm(model, X, y, eps): return X + eps * np.sign(grad_input(model, X, y)) def mi_fgsm(model, X, y, eps, iters=8, mu=0.9): alpha = eps / iters adv = X.copy() g = np.zeros_like(X) for _ in range(iters): grad = grad_input(model, adv, y) g = mu * g + grad / (np.abs(grad).sum(axis=1, keepdims=True) + 1e-8) adv = adv + alpha * np.sign(g) adv = np.clip(adv, X - eps, X + eps) return adv def mis_rate(model, X, y): p = model.forward(X) return float(((p > 0.5).astype(int).ravel() != y).mean()) def main(): X, y = make_data(seed=0) model_a = ToyNet(seed=1, hidden=16) # 源模型: 完全白盒可见 model_b = ToyNet(seed=2, hidden=24) # 目标模型: 结构不同, 视为黑盒 model_a.train(X, y) model_b.train(X, y) adv_f = fgsm(model_a, X, y, eps=0.5) adv_m = mi_fgsm(model_a, X, y, eps=0.5) print("clean : A_err=%.3f B_err=%.3f" % (mis_rate(model_a, X, y), mis_rate(model_b, X, y))) print("FGSM : A_err=%.3f B_err=%.3f (B上升即发生迁移)" % (mis_rate(model_a, adv_f), mis_rate(model_b, adv_f))) print("MI : A_err=%.3f B_err=%.3f (迁移率通常更高)" % (mis_rate(model_a, adv_m), mis_rate(model_b, adv_m))) if __name__ == "__main__": main()
model_a = ToyNet(seed=1, hidden=16)源模型,内部权重完全可见,用于计算梯度。model_b = ToyNet(seed=2, hidden=24)目标模型,结构不同且“看不见”,只参与推理打分。return X + eps * np.sign(grad_input(model, X, y))单步 FGSM:沿梯度符号加扰动,最容易过拟合源模型。g = mu * g + grad / (np.abs(grad).sum(axis=1, keepdims=True) + 1e-8)动量累积与 L1 归一化,让更新方向更平稳。adv = np.clip(adv, X - eps, X + eps)把每步扰动裁剪在 ε 预算内,保证不可感知。mis_rate(model_b, adv_f)关键指标:源模型生成的样本喂给目标模型,误分率越高说明迁移性越强。
常见误区
误区我刚开始学习时以为,对抗样本既然能让 B 误判,攻击者至少得知道 B 的梯度甚至网络结构,否则扰动怎么可能“恰好”骗过它?
正解迁移攻击的精髓恰恰是黑盒。攻击者只在源模型 A 上计算梯度,目标模型 B 只负责输出预测结果。它利用的是 A 与 B 之间决策边界的相似性,而不是 B 的内部信息。就像老张不需要拆开每家每户的锁,只要锁芯是同厂图纸,钥匙就能捅开。
为何常见:多数教程先讲白盒攻击,梯度反传的概念太深入人心,容易把“需要梯度”泛化到所有攻击手段。
误区既然迁移率随 ε 上升,那直接把 ε 调大不就行了?0.1 不够就 0.5,0.5 不够就 1.0。
正解迁移率随 ε 上升存在边际递减,甚至可能不升反降——过大的扰动可能把样本推到“另一个错误的类别区域”,而不是目标错误区域;同时会破坏不可感知性,轻易触发输入预处理与检测防御。对抗样本的前提是“人眼看不出”,一把太粗的钥匙还没来得及插进锁孔就被保安没收了。
为何常见:直觉上“用力越大越好”,忽略了对抗攻击的隐蔽性约束,把攻击问题简化成了能量问题。
误区集成攻击效果好,那我用 10 个、20 个模型一起集成,迁移率不是该翻倍?
正解提升迁移性的关键是集成多样性——不同架构、不同训练方式——而不是数量。用 5 个同架构、不同随机种子的模型集成,它们的脆弱方向高度重合,叠加再多也是冗余;而 3 个差异明显的模型(如 CNN、ViT、MLP)反而能覆盖更广的“共享弱点”。集成是集“异见”,不是集“人数”。
为何常见:把集成学习里“更多模型平均更好”的直觉错误外推,没有区分“多样性”与“数量”两个维度。
误区模型在训练时见过对抗样本,应该已经“免疫”了,迁移攻击肯定失效。
正解对抗训练能显著提升鲁棒性,但面对更强的迁移增强攻击(如 DI+TI+MI 组合)依然可能被绕过。它改变的是决策边界的形状,却无法消除数据分布本身携带的脆弱先验。鲁棒性从来是相对指标——“在哪些攻击下鲁棒”比“是否鲁棒”更重要。
为何常见:防御方测试时只用自己熟悉的攻击手段,没有把迁移攻击纳入评测矩阵,于是把“对已知攻击鲁棒”误当成了“对一切攻击鲁棒”。
误区只要源模型的对抗样本造得够好,不管目标是哪个模型都能骗过——迁移率是源模型的“固有属性”。
正解迁移是源模型与目标模型之间“匹配度”的产物。同一个对抗样本,迁移到 ResNet-50 可能成功,迁移到 ViT 可能失败;目标模型的训练数据重叠度、架构相似度、任务相关度共同决定最终成功率。评估时使用多个目标模型交叉验证,正是为了刻画这种“匹配关系”。
为何常见:单点实验看到一次成功迁移,就外推为“处处可迁移”,忽略了样本量只有一两个目标模型的统计偏差。
面试题
Q1. 迁移攻击通常属于哪一类攻击方式?
- A.黑盒攻击← 正确答案
- B.白盒攻击
- C.灰盒攻击
- D.物理攻击
答案:A。迁移攻击不需要访问目标模型的梯度或结构,只需在已知的源模型上生成对抗样本并作用于目标模型,完全符合黑盒攻击的定义。白盒攻击需要完全的内部信息,物理攻击则是通过现实物体实施的攻击,均与“跨模型迁移”这一前提不符。
Q2. FGSM 生成对抗样本时,依赖的数学依据是什么?
- A.损失函数的梯度符号← 正确答案
- B.模型输出的概率大小
- C.训练数据的分布密度
- D.随机生成的噪声扰动
答案:A。FGSM 沿损失函数对输入的梯度符号方向添加扰动,使损失上升、模型误判。模型输出概率只是评估结果,训练数据分布不参与单步生成,随机噪声则没有任何针对性。
Q3. 下列哪个因素最有利于提升对抗样本的跨模型迁移性?
- A.源目标模型数据高度重叠← 正确答案
- B.使用更深更大的源模型
- C.尽量减小扰动幅度
- D.提前知道目标模型参数
答案:A。训练数据重叠度决定了两个模型决策边界的相似程度,是迁移性的根基。模型更深更大并不必然提高迁移率,扰动过小则连源模型都骗不过,而知道目标模型参数那已经是白盒攻击了。
Q4. 以下哪些属于迁移攻击的增强技术?
- A.输入多样性增强← 正确答案
- B.平移不变性增强← 正确答案
- C.动量迭代攻击← 正确答案
- D.模型剪枝与压缩
答案:ABC。输入多样性(DI)通过随机变换输入增强泛化,平移不变性(TI)通过卷积平滑梯度增强鲁棒性,动量迭代(MI)通过累积历史梯度稳定方向,三者都是经典迁移增强手段。模型剪枝压缩是模型优化技术,与攻击增强无关。
Q5. MI-FGSM 引入动量项的主要作用是什么?
- A.稳定更新方向并逃离局部极值← 正确答案
- B.加快模型训练收敛速度
- C.压缩对抗扰动的大小
- D.提高模型的识别精度
答案:A。动量把历史梯度方向累积起来,平均掉单步梯度中的尖峰与震荡,使攻击方向沿“多个模型共享的脆弱主方向”前进,从而逃离源模型特有的局部极值。它服务于攻击而非训练,也不直接减小扰动。
Q6. 集成模型攻击能够提升迁移性的原因包括哪些?
- A.近似共享决策方向← 正确答案
- B.避免过拟合单模型← 正确答案
- C.降低目标模型开销
- D.增强视觉隐蔽性
答案:AB。多个模型的加权梯度指向它们共同的脆弱方向,相当于用多把锁试配钥匙;同时减少了单一源模型特有边界被过度拟合的风险。集成攻击并不改变目标模型的计算开销,也与扰动的视觉隐蔽性无关。
Q7. 对抗训练的核心思想是什么?
- A.对抗样本加入训练← 正确答案
- B.增加模型参数规模
- C.降低输入图像分辨率
- D.使用更深网络结构
答案:A。对抗训练在训练过程中主动注入对抗样本,让模型见过“最坏情况”从而增强鲁棒性。增加参数或深度只是常规模型容量手段,降低输入分辨率则会损伤正常精度。
Q8. 迁移成功率指标衡量的是什么?
- A.源模型样本被目标误分类比例← 正确答案
- B.目标模型干净样本准确率
- C.对抗样本生成的耗时开销
- D.源目标模型参数量差异
答案:A。迁移成功率统计在源模型上生成、能骗过目标模型的对抗样本比例,是评估“钥匙通用度”的核心指标。干净样本准确率是对照基线而非迁移指标,生成耗时与参数量差异都不能反映欺骗效果。
Q9. 关于对抗样本的跨任务迁移,下列说法正确的有?
- A.不同任务模型共享底层特征表示← 正确答案
- B.同一扰动可干扰多个任务← 正确答案
- C.跨任务迁移与任务相关性无关
- D.跨任务迁移无需任何源模型
答案:AB。分类、检测、分割等模型常共享预训练骨干网络,底层特征表示一致,因此同一扰动可以跨任务生效,且任务相关性越强迁移越明显。跨任务迁移同样需要源模型来生成扰动,并非凭空产生。
Q10. 输入多样性(DI)方法通过什么方式增强迁移性?
- A.以一定概率对输入做随机变换← 正确答案
- B.对梯度做高斯核卷积平滑
- C.沿历史梯度方向累积动量
- D.向输入注入随机虚拟噪声
答案:A。DI 在每次迭代以概率 p 对输入做随机缩放、填充等变换,让攻击者从多个“观察角度”计算梯度,避免过拟合单一输入形态。B 是平移不变性(TI),C 是动量迭代(MI),D 是噪声注入(VNI),三者与 DI 并列但机制不同。