小区门口,门卫老张干了二十年,脑子里装着一本“住户花名册”。可前阵子出了件怪事:一个叫小陈的陌生人,只是戴了一副与住户老王同款的老花镜,老张就笑着给他开了门,事后还坚称“那就是老王”。小陈没有整容,没有换衣服,只是做了一处几乎看不出的“微调”。这个故事,正是 AI 对抗样本的缩影——AI 模型就像门卫,一张“猫”的照片在人眼里毫无异常,但只要叠加一层人类察觉不到的微小扰动,模型就会信心满满地把它认成“狗”。 这篇教程要讲清楚三件事:对抗样本的数学定义(扰动到底是什么)、扰动大小的度量(范数约束与决策边界距离),以及那条把“机器被骗”与“人眼可察”分开的可解释性边界。最后,我们把这些概念组装成威胁建模的视角,看看 AI 安全工程师如何预判攻击、度量鲁棒性。读完你会明白:模型的脆弱不是玄学,而是一道道可以计算、可以画出来的边界。
掌握对抗样本的数学定义与边界度量,是 AI 安全工程师建立威胁建模、设计鲁棒模型的第一块基石——它能在部署前帮你发现“门卫的眼镜”,而不是在事故之后追悔莫及。
可视化演示
展示对抗样本三维度:扰动范数约束(L2球vs Linf方框几何对比)、决策边界距离(原始样本跨越决策边界变为对抗样本)、威胁模型分类(白盒-灰盒-黑盒攻击范式),理解对抗鲁棒性研究理论基础。
本节配有交互动效(进入视口后自动加载,约 3KB)。
扰动范数约束几何对比 L2范数:欧氏距离球面约束 Linf范数:最大坐标方框约束 ||x\'-x||p <= eps 不同范数定义不同扰动约束几何,影响对抗样本生成空间。
模型脆弱背景
门卫老张的故事传开后,大家都说他“认眼镜不认人”。老张委屈地辩解:“老王那副老花镜太有辨识度,我一眼就锁定了它,其他地方根本没细看。”这句话恰好道出了深度模型的通病——AI 也爱走“统计捷径”:只要某个特征对分类足够“好用”,它就会死死抓住,哪怕这个特征在人类看来莫名其妙。
2013 年,Szegedy 等人发现了一个反直觉的现象:给一张被模型正确识别为“猫”的图片,叠加一层几乎看不见的细微噪声,模型就以超高置信度把它认成“狗”,而人类根本看不出两图有别。这种被精心调制、能稳定骗过模型的输入,就是对抗样本。随着 AI 进入门禁、自动驾驶、内容审核等关键场景,这种欺骗从学术趣味迅速升级为真实的安全威胁。
为什么模型如此脆弱?关键原因之一是高维空间的“叠加效应”。模型的内部判定可以近似看作海量微弱信号的合力:
老张被骗不是因为眼神差,而是因为他把决策押在一条“特征捷径”上;模型同样如此。理解了脆弱性的来源,我们才能给对抗样本下一个严格的数学定义——这正是下一节的主题。
- 输入维度 $i$一张 224×224 的图片有约 15 万个像素维度,每个维度都是攻击者可利用的“小动作”空间。
- 敏感度 $w_i$模型对第 $i$ 维扰动的加权系数,类似老张给“眼镜”这个特征打的高分。
- 叠加总和 $\Delta$所有微小的 $w_i \delta_i$ 相加,量变引发质变,足以翻越判定阈值。
对抗样本的数学定义
把“骗过门卫”翻译成数学语言:小陈的任务是找到一副眼镜 $\boldsymbol{\delta}$,使得老张的输出从“陌生人”变成“老王”。在 AI 的世界里,输入是一个向量 $\boldsymbol{x}$,扰动是一个向量 $\boldsymbol{\delta}$,模型是一个函数 $f$。输入与扰动逐元素相加,就得到新的输入 $\boldsymbol{x}' = \boldsymbol{x} + \boldsymbol{\delta}$。
给定一个能被模型正确分类的输入 $\boldsymbol{x}$(标签为 $y$),如果存在扰动 $\boldsymbol{\delta}$ 使得 $f(\boldsymbol{x} + \boldsymbol{\delta}) = y' \neq y$,那么 $\boldsymbol{x} + \boldsymbol{\delta}$ 就是 $\boldsymbol{x}$ 的一个对抗样本。但“能骗过”的扰动有无数种,最危险的是“最省力”的那一种——这催生了对抗样本最经典的数学定义:
这个定义像一把游标卡尺,把“骗人难度”量化了:扰动越小,说明模型的决策边界离样本越近,漏洞越深。小陈只戴一副眼镜就能进门,说明老张的防线“贴脸”到了什么程度——数学定义让这种直觉变得可以计算。
- 干净输入 $\boldsymbol{x}$模型原本能正确识别的原始样本,比如一张货真价实的“猫”照片,对应门卫认识的老王本人。
- 扰动 $\boldsymbol{\delta}$叠加在输入上的微小改动,对应小陈鼻梁上那副以假乱真的老花镜。
- 对抗样本 $\boldsymbol{x}+\boldsymbol{\delta}$二者逐元素相加的新样本,人眼看不出差别,模型却“变了脸”。
- 误分类条件 $y' \neq y$扰动必须让模型输出从原始标签 $y$ 翻转到另一个标签 $y'$,这是“骗过门卫”的硬性要求。
- 最小化目标 $\arg\min$在所有可行扰动中求范数最小者,即“最省力”的欺骗方案——眼镜越不起眼,越说明防线脆弱。
扰动范数约束
小陈的眼镜不能太夸张,否则门卫一眼识破。那么“微小”到底如何度量?日常生活中我们用量尺量长度,在向量世界里,这把尺子叫范数(norm)。
对抗样本研究中最常用的是 Lp 范数族:$p=1$ 时把每个维度的改动绝对值加起来,$p=2$ 时是欧氏距离,$p=\infty$ 时只看改动最大的那个维度。范数的作用,是给“扰动的大小”一个统一的刻度,让攻击者和防御者在同一套单位下对话:
范数约束里的 $\varepsilon$ 是“允许改动的预算”:预算内的小动作应当不被人眼察觉。但要警惕,范数是数学上的“小”,不是感知上的“小”——就像老花镜尺寸不大,在老张眼里却存在感极强。这恰好引出后面“可解释性边界”的讨论。
- 逐维度扰动 $\delta_i$第 $i$ 个像素或特征上的改动量,每一路都小到不起眼。
- Lp 合成公式对全部 $\delta_i$ 取 $p$ 次方、求和、再开 $p$ 次方根,$p$ 不同度量就不同。
- L2 欧氏距离$p=2$ 时即几何上两点间直线距离,常用于衡量“整张图的总改动能量”。
- L∞ 最大分量$p \to \infty$ 时只剩最大的那个 $|\delta_i|$,即“改动最狠的单个像素”,恰好对应像素级攻击的约束 $\varepsilon$。
决策边界距离
老张心里有一条看不见的分界线:一边是“老王”,一边是“陌生人”。小陈的每一次化妆,都在缩短自己到这条线的距离。在模型的世界里,这条线叫决策边界(decision boundary)。
对于二分类问题,决策边界是两类得分相等的点的集合。样本离边界越近,越容易被微小扰动翻越;离边界越远,越“安全”。对抗攻击的本质,就是找到从样本到边界的最短路径并推它一把:
回到门卫故事:小陈找到的那副眼镜,本质上就是特征空间里“把老王拽向陌生人”的最短路径。一个样本的对抗脆弱性,可以用它到决策边界的距离来预先计算——距离越小,越容易被“一副眼镜”放倒。这就是威胁建模最重要的一张地图。
- 决策边界集合 $\mathcal{B}$所有让两类得分 $F_a$、$F_b$ 相等的点组成的“分界线”。
- 样本到边界距离 $d(\boldsymbol{x})$输入样本与边界上最近点的 Lp 距离,即“安全距离”。
- 最近点 $\boldsymbol{z}$边界上离 $\boldsymbol{x}$ 最近的那个点,是攻击者“抄近路”的落点。
- 距离即最小扰动当决策边界局部平滑时,最小对抗扰动约等于该距离——踢球越靠近球门,越容易被一脚踢进。
可解释性边界
老张为什么会被眼镜骗,却不会被一粒雀斑骗?因为眼镜“可解释”:它和记忆中老王的形象对得上。人类的感知存在一条可解释性边界:改动小到一定程度,人既看不见、也说不清;一旦超过阈值,改动开始呈现“语义”——眼镜、口罩、背景里的告示牌。
经典对抗攻击的扰动通常被限制在这条边界之下,所以人眼毫无察觉。用数学语言表达,就是“攻击扰动”严格小于“人类感知阈值”:
可解释性边界的价值,在于把“数学上小”与“感知上小”区分开。小陈的眼镜在数学上只是几个像素的改动,在感知上却“意义重大”;反过来,纯噪声扰动虽然数学上更小,却容易被人察觉。研究者用注意力热力图、t-SNE 投影把这类边界画出来,看看模型眼中的“眼镜”到底长什么样——这能帮我们定位脆弱性是源于特征偏差,还是源于感知错位。
- 攻击扰动 $\varepsilon_{\mathrm{adv}}$成功翻转模型预测所需的最小扰动范数,是模型的“破防点”。
- 感知阈值 $\varepsilon_{\mathrm{per}}$人眼恰好能察觉改动的最小扰动,是人类的“敏感点”。
- 不等号的意义对抗扰动远小于人眼阈值,所以人“看不见”;一旦超过,攻击就露出马脚。
威胁建模视角
小区决定升级安保,第一步不是买设备,而是开会讨论:小偷是谁?他能做到什么程度?想偷什么?这套“先假设、后防御”的思路,就是威胁建模(threat modeling)。
攻击者能力是第一个假设:白盒攻击能拿到模型参数和梯度,直接计算最强扰动;黑盒攻击只能查询模型输出,通常借助代理模型发起迁移攻击。第二个假设是扰动预算 $\varepsilon$:攻击者被允许的最大改动,直接决定威胁等级。第三个假设是威胁目标:非定向攻击只求分类出错,定向攻击要把结果精确地认成某一类,比如让小陈被识别成老王:
有了鲁棒精度这把尺子,防御就有了目标:对抗训练把对抗样本混进训练集,相当于给老张看更多“小陈戴眼镜”的作案照片,让他对这类扰动脱敏。威胁建模不是纸上谈兵,它决定了我们在哪个 $\varepsilon$ 上防守、用什么指标验收——这正是当前对抗鲁棒性研究的主线。
- 测试样本 $\boldsymbol{x}_i$ 与标签 $y_i$用来评估模型的一批“考题”,对应小区里真实的住户。
- 每个样本的攻击扰动 $\boldsymbol{\delta}_i$在预算 $\varepsilon$ 内为每个输入定制的“最强眼镜”。
- 指示函数 $\mathbb{1}[\cdot]$模型扛住攻击(分类正确)记 1,被攻破记 0。
- 平均求和$N$ 个样本的得分取平均,得到攻击下的鲁棒精度,是威胁建模的验收指标。
AI 应用场景
人脸门禁系统的对抗红队测试
阶段:模型部署前的安全评估(红队测试)
解决的问题:传统测试只验证正常光线、角度下的识别率,不会想到“打印一副对抗眼镜”就能冒充他人。AI 安全工程师用对抗样本生成工具在部署前对门禁模型做压力测试,找出可被绕过的身份再决定是否补强。
具体案例:某园区人脸门禁上线前,安全团队用 $\varepsilon=0.03$ 的 L∞ 扰动在测试集上生成对抗贴图,打印后粘贴在眼镜框上实测,发现系统对约 30% 的冒名尝试放行;随后引入对抗训练和相似度阈值调优,冒名成功率降到 2% 以下。
自动驾驶感知的威胁建模
阶段:感知模型的威胁建模与鲁棒性验证
解决的问题:物理世界的对抗样本(如在停车标志上贴几块黑白贴纸)可能让模型把“停止”识别成“限速”,传统测试不覆盖这类攻击。威胁建模把“物理扰动”纳入场景清单,提前预判攻击者能力。
具体案例:某自动驾驶团队在仿真与封闭场地中,用打印机生成对抗贴纸贴在标志牌上,测试感知模型在 5 米、10 米、20 米距离的识别结果,据此为模型设定“低置信度强制刹车”策略。
内容审核模型的绕过与加固
阶段:线上模型的对抗鲁棒性维护
解决的问题:恶意用户对图片施加人眼不可见的扰动,让审核模型把违规图片判为正常。内容平台用对抗样本检测与对抗训练降低绕过率。
具体案例:某内容平台发现一批“加了轻微噪点的违规图”绕过审核,安全团队用对抗训练把这类扰动加入训练集,并设置扰动检测前置模块,拦截率恢复至 99%。
Python 演示
import numpy as np def make_data(n=200, seed=42): rng = np.random.default_rng(seed) x = rng.uniform(-1.0, 1.0, size=(n, 2)) y = (x[:, 1] > 0.5 * x[:, 0] + 0.1).astype(int) return x, y def train_logistic(x, y, lr=0.5, epochs=200): w = np.zeros(2) b = 0.0 for _ in range(epochs): p = 1.0 / (1.0 + np.exp(-(x @ w + b))) w -= lr * (x.T @ (p - y)) / len(y) b -= lr * np.mean(p - y) return w, b def predict(x, w, b): return (1.0 / (1.0 + np.exp(-(x @ w + b))) > 0.5).astype(int) def fgsm_attack(x, y, w, b, eps=0.25): p = 1.0 / (1.0 + np.exp(-(x @ w + b))) grad = (p - y).reshape(-1, 1) * w # 损失对输入的梯度 return x + eps * np.sign(grad) def main(): x, y = make_data() w, b = train_logistic(x, y) acc = float(np.mean(predict(x, w, b) == y)) print("clean acc: %.3f" % acc) x_adv = fgsm_attack(x, y, w, b, eps=0.25) adv_acc = float(np.mean(predict(x_adv, w, b) == y)) print("adv acc: %.3f" % adv_acc) delta = x_adv - x l2 = np.mean(np.linalg.norm(delta, axis=1)) linf = np.mean(np.max(np.abs(delta), axis=1)) print("mean L2: %.3f" % l2) print("mean Linf: %.3f" % linf) if __name__ == "__main__": main()
y = (x[:, 1] > 0.5 * x[:, 0] + 0.1).astype(int)构造线性可分的两类数据,模拟“猫狗”分类的决策边界。p = 1.0 / (1.0 + np.exp(-(x @ w + b)))逻辑回归输出“是猫”的概率,类比老张的熟悉度打分。grad = (p - y).reshape(-1, 1) * w # 损失对输入的梯度求出每个输入维度的敏感度,即“哪副眼镜最容易被抓住”。return x + eps * np.sign(grad)FGSM 核心:沿梯度符号方向叠加扰动,让损失变大、分类翻转。adv_acc = float(np.mean(predict(x_adv, w, b) == y))攻击后的准确率断崖式下降,直观看到模型脆弱性。delta = x_adv - x取出扰动向量,为下一步范数量化做准备。l2 = np.mean(np.linalg.norm(delta, axis=1))用 L2 范数计算平均扰动大小,呼应“范数约束”的概念。
常见误区
误区我一直以为对抗样本的扰动必须小到人眼完全看不出来,否则就不叫对抗样本了。毕竟图片上加个明显的贴纸,那不就是普通的遮挡攻击吗?
正解数学定义从不要求“人眼不可见”,只要求扰动在某个范数约束内且导致误分类。实际攻击中 $\varepsilon$ 可以很大,比如对抗补丁(一张醒目的贴纸)或全图噪声,人眼明显可见却依然有效。不可感知是对抗样本的经典特征,不是必要条件。
为何常见:最著名的对抗样本恰好都在强调“人眼无法察觉”,以讹传讹就把修饰性特征当成了定义本身。
误区对抗样本是图像领域的事,文本、语音、表格数据总不会受影响吧?毕竟文字和数字又不能加“噪声”。
正解只要输入是向量、模型是可微函数,对抗样本就存在。文本中改写几个同义词可以让情感分类翻转,语音中加入背景噪声可以让语音助手识别错误,表格数据中修改几个特征值可以骗过风控模型。范数定义对任何向量空间都成立。
为何常见:视觉对抗样本最有冲击力、最容易展示,导致初学者误以为这是视觉专属问题。
误区只有拿不准的模型才会被对抗样本骗,高置信度的模型应该很安全。毕竟它都 99% 确信了,怎么可能被一点噪声带偏?
正解恰恰相反,对抗样本的可怕之处在于模型对错误答案给出极高置信度(如 99.7% 认为是“狗”)。模型的“自信”来自决策函数在局部区域的陡峭,而不是真正的鲁棒。自信和正确是两回事。
为何常见:人们习惯把概率当“可信度”,但模型校准差,概率高不等于判断可靠。
误区只要扰动满足 $\|\boldsymbol{\delta}\|_\infty \le \varepsilon$,人眼就一定看不出来。范数都约束住了,还有什么可担心的?
正解Lp 范数只是数学上的“大小”,与人类感知不是一回事。人眼对平坦区域的变化极敏感,对纹理区域的变化很不敏感;同样 L∞ 大小的扰动,落在不同位置视觉效果天差地别。范数约束是工程上的可计算性,可解释性边界才是感知层面的尺度。
为何常见:数学定义里只有范数约束,没有感知模型,初学者容易把两种“大小”混为一谈。
面试题
Q1. 对抗样本的核心定义是什么?
- A.大幅改动输入使模型出错
- B.微小扰动导致模型误分类← 正确答案
- C.增加训练数据提升精度
- D.删除噪声数据降低偏差
答案:B。对抗样本的关键是“微小扰动 + 误分类”两个要素同时成立。选项 B 完整涵盖这两点;A 中“大幅改动”违背对抗样本的初衷;C、D 属于训练技巧,与输入侧扰动无关。就像小陈戴一副眼镜骗过门卫,而不是整容换脸。
Q2. L∞ 范数约束 $\|\boldsymbol{\delta}\|_\infty \le \varepsilon$ 表示什么?
- A.扰动总体能量不超过 ε
- B.每个像素改动不超过 ε← 正确答案
- C.扰动向量长度不超过 ε
- D.扰动方向沿梯度方向
答案:B。L∞ 范数取所有分量绝对值的最大值,约束它不超过 ε,意味着每个维度的改动都被限制在 ε 以内。A 和 C 分别对应 L1/L2 的直觉;D 描述的是 FGSM 的方向选择,与范数约束无关。
Q3. 关于决策边界距离,下列说法正确的是?
- A.距离越大样本越易被攻击
- B.距离越小越易翻越边界← 正确答案
- C.决策边界与数据无关
- D.对抗样本远离决策边界
答案:B。样本到决策边界的距离越小,所需扰动越少,越容易被翻越,故 B 正确。对抗样本恰恰是“贴着边界”构造的,并非远离边界;决策边界由模型参数与训练数据共同决定,并非与数据无关。
Q4. FGSM 生成对抗样本的核心思想是?
- A.沿损失梯度方向增大损失← 正确答案
- B.随机旋转输入图像
- C.对模型权重做梯度下降
- D.对标签进行平滑处理
答案:A。FGSM 计算损失对输入的梯度,沿梯度符号方向叠加 ε 扰动,使损失增大、分类翻转。C 说的是训练模型的权重更新;B、D 与对抗样本无关。相当于先问门卫“你最在意哪副眼镜”,然后精准戴上它。
Q5. 可解释性边界主要刻画什么界限?
- A.模型参数与精度关系
- B.人眼可察觉扰动下限← 正确答案
- C.训练与测试数据差异
- D.模型推理速度阈值
答案:B。可解释性边界把扰动分成两个区域:低于它,人眼看不见也说不出;高于它,扰动带上了可解释的语义(眼镜、贴纸)。它刻画的是感知层面的临界点,与参数、数据差异、速度无关。
Q6. 白盒攻击与黑盒攻击的主要区别是?
- A.能否访问模型内部参数← 正确答案
- B.能否访问训练数据集
- C.攻击图像还是攻击文本
- D.攻击速度的快与慢
答案:A。白盒攻击能拿到模型权重和梯度,可直接计算最强扰动;黑盒攻击只能查询输出,常借助代理模型迁移攻击。训练数据集、模态类型、速度都不是两者的本质区别。
Q7. 对抗训练提升模型鲁棒性的原理是?
- A.将对抗样本加入训练集← 正确答案
- B.增加神经网络层数
- C.调大学习率加速收敛
- D.对输入特征做标准化
答案:A。对抗训练在每轮训练中生成对抗样本并加入训练集,让模型见过“戴眼镜的小陈”后不再上当,本质是在决策边界周围学到更平滑的映射。增加层数、调大学习率、标准化都不能直接针对扰动提升鲁棒性。
Q8. 威胁建模需要考虑哪些要素?
- A.攻击者能否获得模型参数← 正确答案
- B.扰动预算 ε 的大小← 正确答案
- C.攻击目标是否定向← 正确答案
- D.服务器机房温度高低
答案:ABC。威胁建模先假设“敌人是谁、能做到什么、想干什么”:能否拿到参数决定白盒/黑盒,ε 决定扰动上限,目标是误分类还是定向欺骗。机房温度不在模型安全假设之内,属于运维范畴。
Q9. 关于 Lp 范数,下列说法正确的有?
- A.p 为 2 时是欧氏距离← 正确答案
- B.p 为无穷时取最大分量← 正确答案
- C.范数用来约束扰动规模← 正确答案
- D.范数值等于人眼感知度
答案:ABC。L2 是欧氏距离,L∞ 取最大分量绝对值,两者都用于度量扰动大小、设定 ε 预算。但范数是数学尺度,不能直接等于人类感知,感知阈值由“可解释性边界”刻画,故 D 错误。
Q10. 高维模型易受对抗样本攻击的原因有哪些?
- A.高维空间攻击方向极多← 正确答案
- B.边界在多数方向易翻越← 正确答案
- C.多维扰动叠加足以翻界← 正确答案
- D.模型权重被随机初始化
答案:ABC。高维空间中“可攻击方向”数量巨大,决策边界在绝大多数方向上都很近,微小的多维扰动叠加后足以把样本推过边界;D 是训练细节,与“为什么高维易受攻击”无关。