想象你是一位顶级拍卖行的首席鉴宝师。你每天的工作,是从一堆真假难辨的瓷器中判断“这是哪个朝代、出自哪位工匠”。你眼力极好,但总有那么一小撮高明的造假者,专门研究你的“易错点”——他们不会把一只碗整体重做,而只是用砂纸在碗底磨掉一丝釉色,或者用细笔在青花上补那么一小笔。这些改动,人眼根本看不出来,却恰好能让你把“明代”错判成“清代”。这就是对抗攻击的狡猾之处:它不是换掉货物,而是在你判断依据的最脆弱部位,轻轻撬一下。 那么,有没有办法让鉴定结论“扛得住撬”?随机平滑(Randomized Smoothing)的思路,听起来有点像一位老前辈的经验之谈:“小张啊,下回你再拿不准,就把碗放在一个撒满灰尘的光箱里,给它加上一点随机干扰,多照几次相,看看每次得出的结论是不是都一致。如果无论灰尘怎么扬,你十次里有九次都认定是明代,那这个结论就八九不离十了。”更妙的是,如果这“十次里有九次”的比例足够稳定,你甚至可以从数学上证明:在灰尘扰动不超过某个范围的前提下,造假者无论怎么动手脚,都改不动你的结论。这个“范围”,就是本文的主角——认证半径。

岗位关联

对AI从业者而言,随机平滑是少数能给深度学习模型开出“可证明鲁棒性保证”的实用武器。掌握了它,你就能在对抗攻防的真刀真枪中,从“防不住也说不清”进化到“防得住、且能白纸黑字承诺防多少”。

目录
  1. 可视化演示
  2. 威胁模型:骗过鉴定师的“微小手脚”
  3. 防御思路:火眼金睛 vs 保险合同
  4. 噪声机制:给宝物撒一把“标准灰尘”
  5. 投票预测:鉴宝评委会
  6. 认证半径:确定理赔边界
  7. 置信下界:别让少数票拍板
  8. 工程实现:把鉴宝车间流水线化
  9. 实践要点:权衡艺术与边界
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示K近邻算法的分类过程,通过滑块调整k值,观察最近邻投票如何决定查询点的类别归属。

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

K近邻投票分类 计算查询点到所有训练点的欧氏距离 选取k个最近邻,多数投票决定类别 d=√((x₁-x₂)²+(y₁-y₂)²) 拖动滑块调整k值,观察分类结果变化。

威胁模型:骗过鉴定师的“微小手脚”

先我们把镜头对准敌人——造假者。在鉴宝界,最嚣张的造假者不是整体仿造,而是“微调真品”:用砂纸在碗底磨掉一丝釉,用针尖挑走一片青花。对人眼来说,这件宝物几乎没变;但对你这位鉴宝师来说,关键特征刚好被动过,结论就从“明代”翻成了“清代”。AI领域把这套手法叫对抗样本攻击。攻击者拿到你面前一张猫的图片,在像素上施加极其细微的扰动——可能是某个像素值从 120 变成 121——人眼完全看不出区别,模型却把“猫”认成了“狗”。

科学上,我们必须给“改动幅度”定一个标尺,否则讨论无法进行。这个标尺就是扰动范数。最常用的是 L2 范数:把所有像素的改动量平方求和再开方,衡量整个改动的“总力气”。

除 L2 范数外,常见还有 L∞(最大单像素改动幅度)与 L0(改动像素个数)。随机平滑天然适配 L2:只要攻击者的扰动被限制在 L2 球内,认证结论就有效。威胁模型的价值在于,它让“防御”有了讨论边界——没有明确攻击者力量上限的防守,就像不设赔付限额的保险单,迟早会被薅穿。

∥x′−x∥2=∑i=1d(xi′−xi)2≤ε\displaystyle \lVert x' - x \rVert_2 = \sqrt{\sum_{i=1}^{d} (x'_i - x_i)^2} \le \varepsilon
这个公式的意思是:攻击者改完后的图片 x' 与原图 x 之间,每个像素的差异平方求和后开根号,必须小于等于攻击预算 ε。ε 越小,攻击越隐蔽。
  1. 向量差先计算攻击后输入 x' 与原输入 x 在每个维度上的差值——就像逐项核对宝物被改动的位置。
    x′−x=(x1′−x1,x2′−x2,…,xd′−xd)\displaystyle x' - x = (x'_1 - x_1, x'_2 - x_2, \dots, x'_d - x_d)
  2. 平方求根把每个差值平方后相加再开根号,得到一个正数,即“总改动力度”。
    ∥x′−x∥2=∑i=1d(xi′−xi)2\displaystyle \lVert x' - x \rVert_2 = \sqrt{\sum_{i=1}^{d} (x'_i - x_i)^2}
  3. 攻击预算要求总改动力度不超过 ε,这是造假者的“行动上限”——就像合同里写明的最大做旧深度。
    ε≥0\displaystyle \varepsilon \ge 0

防御思路:火眼金睛 vs 保险合同

知道了敌人会怎么做小动作,接下来考虑防御策略。鉴宝界历来有两派思路。第一派是“经验派”:不断收集各种做旧手法,喂给鉴定师看,让他在见过无数假货后产生直觉。放到AI里,这就是对抗训练(Adversarial Training),一种典型的经验防御。它能挡住训练时见过的攻击手法,但面对新发明的“砂纸手法”,很可能再次翻车——没有任何数学上的承诺。

第二派是“合同派”:不再依赖鉴定师个人的眼力,而是设计一套流程,对任何承诺给出白纸黑字的合同条款。这一类叫认证防御(Certified Defense)。它不关心攻击者具体用什么招式,只关心“你的改动总力度不超过 ε 时,我的结论一定不变”。随机平滑正是合同派的杰出代表:它的基本思路是给输入加随机噪声后做大量采样投票,让每个结论都附带一个数学上的保证半径。

为什么加噪声就能“可证明”?因为一旦我们掌握了“在原输入附近,某个类别的获胜概率不低于 p”这个事实,再结合分类器在噪声下的稳定性,就能推论出:在半径范围内,无论攻击者如何施加 L2 扰动,概率权衡的结果都无法翻盘。这就是随机化机制与可证明鲁棒的核心。可以说,经验防御像“让鉴定师多踩坑”,随机平滑则是“把鉴定结论放在统计学显微镜下公证”。前者赌的是攻击者不够新,后者赌的是概率规律不会说谎。

噪声机制:给宝物撒一把“标准灰尘”

随机平滑的第一味药,是“灰尘”——也就是随机噪声。在鉴宝房里,老前辈说的“撒一把灰尘”,在数学上必须有标准配方。最常用的配方是高斯噪声:每个维度独立抽取一个服从均值为 0、标准差为 σ 的随机数,叠加到输入上。σ 控制“灰尘的粗细”:σ 小,灰尘细,扰动温和;σ 大,灰尘粗,能把整个宝物表面盖住。

σ 的选择是门艺术:它直接决定了认证半径与干净精度之间的平衡。σ 越大,认证半径的理论潜力越大,但也意味着输入被“灰尘”盖得更严实,模型在干净样本上的准确率往往会下降。实践中,σ 通常是一个需要网格搜索的超参,其量级与输入数值范围强相关——对像素值在 [0,1] 的图像,σ = 0.25 已是相当大的扰动。

pε(x)=1(2πσ2)d/2exp⁡(−∥ε∥222σ2),ε∼N(0,σ2I)\displaystyle p_{\varepsilon}(x) = \frac{1}{(2\pi\sigma^2)^{d/2}} \exp\left(-\frac{\lVert \varepsilon \rVert_2^2}{2\sigma^2}\right), \quad \varepsilon \sim \mathcal{N}(0, \sigma^2 I)
这是 d 维高斯分布的概率密度。它的作用不是“思考”,而是为接下来的投票环节生产海量带尘样本。每个样本都是原宝物加一层随机灰尘后的“复刻品”。
  1. 噪声向量ε 是每个维度独立抽样得到的随机向量,服从均值为 0、方差为 σ² 的正态分布。
    ε∼N(0,σ2I)\displaystyle \varepsilon \sim \mathcal{N}(0, \sigma^2 I)
  2. 密度函数给定一个噪声 ε,密度函数描述它被抽中的可能性。中心附近概率高,离中心越远概率越低。
    pε(x)=1(2πσ2)d/2exp⁡(−∥ε∥222σ2)\displaystyle p_{\varepsilon}(x) = \frac{1}{(2\pi\sigma^2)^{d/2}} \exp\left(-\frac{\lVert \varepsilon \rVert_2^2}{2\sigma^2}\right)
  3. 保真度ε 的 L2 范数大概率落在 σ 的若干倍以内,因此噪声不会完全毁掉输入——就像扬尘虽多,宝物轮廓仍在。
    P(∥ε∥2>t)≤exp⁡(−t22σ2)\displaystyle \mathbb{P}(\lVert \varepsilon \rVert_2 > t) \le \exp\left(-\frac{t^2}{2\sigma^2}\right)

投票预测:鉴宝评委会

有了灰尘配方,接下来请出“评委会”。想象你不再单独做决定,而是请来一百位水平与你相同的鉴宝师副本:他们每个人都对“同一件宝物”做鉴定,但每次鉴定前,宝物表面会随机撒上不同方向的灰尘。有的副本看到的是釉色稍淡的明代碗,有的副本看到的是带一点擦痕的青花。然后你统计票数:如果 95 个副本都异口同声说“明代”,这个结论就比单人鉴定可靠得多。平滑分类器(Smoothed Classifier)就是这么做的:每次对输入 x 施加独立的高斯噪声,交给基础分类器 f 判一次,做完 n 次后取票数最多的类别作为最终输出。

投票机制的精妙之处在于:单次判断可能被微小扰动骗过,但大量独立加尘后的多数意见,欺骗成本会急剧上升——造假者要想翻盘,必须让超过半数的“灰尘副本”都改变主意,而不只是骗过某一次鉴定。这就像打官司从“一个法官说了算”变成“陪审团多数说了算”,收买难度成倍增加。

g(x)=arg⁡max⁡c  Pε∼N(0,σ2I)(f(x+ε)=c)\displaystyle g(x) = \arg\max_{c} \; \mathbb{P}_{\varepsilon \sim \mathcal{N}(0, \sigma^2 I)}\big(f(x + \varepsilon) = c\big)
这里的 g 是平滑后的分类器,它不再直接回答“这是什么”,而是回答“在扬尘环境下,哪种答案获得票数最多”。
  1. 随机事件对原输入 x 加噪声 ε,让基础模型 f 预测一次得到类别 c。这等价于让一位副本鉴定师出一次意见。
    f(x+ε)=c\displaystyle f(x + \varepsilon) = c
  2. 概率求和对同一 x 重复无数次随机采样,统计输出类别为 c 的出现比例,即“所有副本投票给 c 的概率”。
    Pε∼N(0,σ2I)(f(x+ε)=c)\displaystyle \mathbb{P}_{\varepsilon \sim \mathcal{N}(0, \sigma^2 I)}\big(f(x + \varepsilon) = c\big)
  3. 取最大值最终输出概率最大的类别,也就是票数最多的类别。
    g(x)=arg⁡max⁡c  Pε∼N(0,σ2I)(f(x+ε)=c)\displaystyle g(x) = \arg\max_{c} \; \mathbb{P}_{\varepsilon \sim \mathcal{N}(0, \sigma^2 I)}\big(f(x + \varepsilon) = c\big)

认证半径:确定理赔边界

评委会给出了结论,但还没完——我们要给结论画一条“免责红线”。鉴宝行会需要一个承诺:只要做旧深度不超过某个值,你可以放心收购。这个值就是认证半径。数学上,设 p_A 表示在真实输入 x 处,平滑分类器对最终获胜类 A 的最低获胜概率(保守估计的下界),则认证半径由下式给出:

其中 Φ⁻¹ 是标准正态分布的逆累积分布函数。直观理解:获胜概率 p_A 越高,等价于评委团的“含伍量”越高,结论就越难被翻盘,允许的做旧范围也就越大。

这一公式背后是平滑分类器的 Lipschitz 性质:输入向任意方向移动不超过 r 时,获胜类别的置信度始终不低于 50%。换句话说,只要攻击者把宝物做旧的程度被限制在 r 的内部,无论用什么手法,评委团的最终结论一定是 A。若最终计算出的 p_A 置信下界不足 0.5,系统就输出"ABSTAIN"(弃权)——比给出一个不靠谱的承诺诚实得多。

r=σ⋅Φ−1(pA)\displaystyle r = \sigma \cdot \Phi^{-1}(p_A)
  1. 获胜概率下界p_A 是投票给最终获胜类 A 的真实概率的下界,必须严格大于 0.5 才有认证意义。
    pA=P(f(x+ε)=A),pA>0.5\displaystyle p_A = \mathbb{P}(f(x+\varepsilon) = A), \quad p_A > 0.5
  2. 逆正态变换对 p_A 做标准正态分布的逆 CDF 变换,把概率值映射到“偏离中心多少倍标准差”的尺度上。
    z=Φ−1(pA)\displaystyle z = \Phi^{-1}(p_A)
  3. 放大噪声乘以 σ 后得到实际的半径 r,其单位与输入扰动单位一致。
    r=σ⋅z\displaystyle r = \sigma \cdot z

置信下界:别让少数票拍板

你可能已经发现,认证半径的关键卡在 p_A 上:我们不可能做无限次采样,只能从有限的 n 次投票中估计真实概率。极端地说,如果只采 3 次票且 3 次都投给 A,你能据此拍胸脯保证 p_A ≥ 0.99 吗?当然不能。这就是统计学的用武之地:当 n 次独立采样中有 k 次投给 A 时,我们需要一个“保守估计”——在给定显著性水平 α 下,真实的投票概率至少是多少。这就是置信下界(Confidence Lower Bound)。

由于每次采样独立且只有“投 A / 不投 A”两种结果,k 服从二项分布。计算置信下界的经典方法是 Clopper-Pearson 区间:

其中 Beta 分布的分位数用参数 k 和 n-k+1 计算。这个公式看起来抽象,含义却很朴实:它把“k 次成功”换算成对真实概率最悲观的估计,保证“真实概率低于这个下界”的概率不超过 α。

可以看见,n 越大,下界越贴近观测比例 k/n;α 越小,下界越保守。所以工业实践中,第一阶段先用少量样本(如 n=100)快速判断哪一类领先,第二阶段再用海量样本(如 n=100000)精确锁定下界——先派侦察兵,再派大军,保险又省钱。

pA≥Beta(α; k, n−k+1)\displaystyle p_A \ge \text{Beta}( \alpha ;\, k, \, n - k + 1 )
  1. 二项计数k 表示 n 次独立采样中,基础模型投票给获胜类 A 的次数。k 服从二项分布 B(n, p)。
    K∼Binomial(n,pA)\displaystyle K \sim \text{Binomial}(n, p_A)
  2. Beta 分位数用 Clopper-Pearson 方法,以观察到的 k 和 n 为参数求 Beta 分布的下侧分位数。
    plow=Beta(α; k, n−k+1)\displaystyle p_{\text{low}} = \text{Beta}\big(\alpha;\, k, \, n - k + 1\big)
  3. 显著性水平α 控制“押错”的风险。α 越小,下界越保守,认证半径越小,但结论越可信。
    α=0.001⇒置信度 99.9%\displaystyle \alpha = 0.001 \Rightarrow \text{置信度 } 99.9\%

工程实现:把鉴宝车间流水线化

纸上谈兵结束,我们要真正开一间“鉴宝车间”。随机平滑的工程实现有一个标准流水线。第一道工序是高斯增强训练(Gaussian Augmented Training):普通模型没吃过灰尘,直接拿来做平滑投票,每个副本都会晕头转向,票型松散。因此训练阶段就要在训练样本上叠加高斯噪声,让基础模型学会在扬尘中保持判断力。第二道工序是两阶段采样认证:在线推理时,先以较少采样(如 n0=100)初筛出候选类,再以较多采样(如 n=100000)滚动统计票数,计算置信下界和半径。这好比先让助理初选瓷器真伪,再请三位专家对候选品做精细会诊。

流程:x→n0 次采样初筛类 cA→n 次采样plow→Φ−1r\displaystyle \text{流程:} x \xrightarrow{n_0 \text{ 次采样}} \text{初筛类 } c_A \xrightarrow{n \text{ 次采样}} p_{\text{low}} \xrightarrow{\Phi^{-1}} r

1. 初筛:先用 n0 次噪声采样确定领先类别,减少后续精确统计的候选范围。

cA=arg⁡max⁡c  count0(c),n0≈100\displaystyle c_A = \arg\max_{c} \; \text{count}_0(c), \quad n_0 \approx 100

2. 精确统计:对领先类 A,再采集 n 次票数,计算其置信下界 p_low。

plow=Beta(α; countA, n−countA+1)\displaystyle p_{\text{low}} = \text{Beta}( \alpha;\, \text{count}_A, \, n - \text{count}_A + 1)

3. 输出半径:若 p_low < 0.5 则输出 ABSTAIN;否则按半径公式给出 r。

r=σ⋅Φ−1(plow),若 plow≥0.5\displaystyle r = \sigma \cdot \Phi^{-1}(p_{\text{low}}), \quad \text{若 } p_{\text{low}} \ge 0.5

工程上还有两个可调的“旋钮”:σ 与 n。σ 决定鲁棒性的带宽,n 决定校验的置信度。两者叠加,构成了随机平滑在算力与防护效果之间的完整控制面板。一个设计良好的流水线,会把这两道工序封装成独立的服务接口——上游模型只负责训练,安全部门只调用认证接口,各司其职。

实践要点:权衡艺术与边界

最后,聊聊车间开起来之后会遇到的真实烦恼。第一条准则是没有免费的午餐:σ 拉大,认证半径能报得更大,但干净输入的准确率会明显下滑;σ 调小,日常精度漂亮,可认证半径小得没法看。你在每份认证报告上,都要同时记录“半径”和“干净精度”两个数,让甲方自己权衡。第二条准则是维度会惩罚偷懒:在高维输入上,同样的 L2 半径对应的像素改动总量更大,要盖住一个高维球需要更密的采样,计算成本随之上升。这也是为什么随机平滑在图像上效果好于在超高维稀疏特征上。

应用上,随机平滑适合所有“输入可加噪且语义不变”的任务——图像分类、语音指令识别、文本嵌入分类都行;但不适合那些对像素极度敏感的任务,比如像素级语义分割的边界像素。第三条准则是认清边界:随机平滑保证的是“L2 半径内预测不变”,它不防御 L∞ 的大规模扰动,也不防御数据投毒这类训练阶段攻击。它是一份精心起草的“扰动免责险”,条款里写明了承保范围。把这份保证书读透,你才知道什么时候能拍胸脯,什么时候该说“这个我们保不了”。

AI 应用场景

人脸支付鉴权的前置认证

阶段:模型上线前的安全评估与运行时防护

解决的问题:人脸支付场景中,攻击者可能在手机上投影一张“对抗眼镜框”图案,人眼无感却让模型把本人误识为陌生人。传统对抗训练只能挡住已知攻击,无法给合规审查一个明确的安全承诺。随机平滑将鉴权模型包装成平滑分类器,每次支付前只返回“认证类别 + 认证半径”。只要本次输入与注册照的差异在半径内,结论就有数学保证。

具体案例:某支付团队对自研的 1:1 人脸比对模型加装平滑认证模块,在 ImageNet 预训练模型基础上用 σ=0.25 做高斯增强微调,上线后对测试集中的对抗人脸样本输出平均 L2 认证半径 1.8,意味着攻击者把照片改动超过该半径前,支付鉴权结果不可能被翻案。

验证码识别系统的阈值校准

阶段:模型鲁棒性评估与自动化巡检

解决的问题:识别验证码的模型常被黑产用“加噪变体”绕过——但绕过是概率性的,很难界定防护边界。用随机平滑对每个验证码样本在线计算认证半径,安全团队把“半径低于阈值的样本”直接判为高风险需人工验证,将黑产成功率压到统计下限之下。

具体案例:某风控平台对其 OCR 验证码识别接口做批量认证测试,每天抽样 5000 个验证码,输出半径分布直方图;运维将 P5 分位半径作为动态阈值,成功拦截了多轮针对性绕过尝试。

自动驾驶交通标志分类的安全报告

阶段:感知模块的离线安全认证

解决的问题:自动驾驶对限速标志的识别一旦被对抗贴纸干扰,后果严重。随机平滑提供了一种可审计的方式:对每一类交通标志,在真实数据集上批量计算认证半径,输出“此类标志在半径 ≥ 1.5 内保证分类正确”的动态安全清单,作为路测准入材料。

具体案例:某智能驾驶团队在 GTSRB 数据集上训练平滑分类器,对“Stop“标志类平均认证半径达到 σ 的 2.2 倍,显著高于”限速 30”类,据此优先加强了后者的数据采集与模型迭代。

Python 演示

python52 行
import numpy as npfrom scipy.stats import beta, normfrom sklearn.datasets import make_classificationfrom sklearn.ensemble import RandomForestClassifier  def lower_confidence_bound(obs, n, alpha):    """Clopper-Pearson 单侧下界:Beta(alpha; k, n-k+1)"""    return beta.ppf(alpha, obs, n - obs + 1)  def gaussian_augmented_fit(X, y, sigma=0.25, seed=0):    """用高斯增强样本训练分类器,提升其在噪声下的稳定性。"""    rng = np.random.default_rng(seed)    X_aug = np.concatenate([X, X + rng.normal(0, sigma, X.shape)])    y_aug = np.concatenate([y, y])    clf = RandomForestClassifier(n_estimators=100, random_state=seed)    clf.fit(X_aug, y_aug)    return clf  def smooth_predict(clf, x, sigma, n, seed=0):    """对 x 添加 n 次高斯噪声,返回各类别票数统计。"""    rng = np.random.default_rng(seed)    preds = clf.predict(x + rng.normal(0, sigma, (n, x.shape[0])))    counts = np.bincount(preds, minlength=len(clf.classes_))    return counts  def certify(clf, x, sigma, n0=100, n=1000, alpha=0.001, seed=0):    """两阶段认证:初筛 n0 次确定候选类,再用 n 次精算半径。"""    rng = np.random.default_rng(seed)    counts0 = np.bincount(        clf.predict(x + rng.normal(0, sigma, (n0, x.shape[0]))),        minlength=len(clf.classes_)    )    cA = int(counts0.argmax())    counts = smooth_predict(clf, x, sigma, n, seed)    p_low = lower_confidence_bound(int(counts[cA]), n, alpha)    if p_low < 0.5:        return "ABSTAIN", 0.0    radius = sigma * norm.ppf(p_low)    return cA, radius  if __name__ == "__main__":    X, y = make_classification(n_samples=400, n_features=8, n_informative=6,                               n_classes=2, random_state=42)    clf = gaussian_augmented_fit(X, y, sigma=0.25)    x_test = X[0]    c, r = certify(clf, x_test, sigma=0.25)    print("认证类别:", c, "认证半径:", round(r, 3))
目的:演示随机平滑从训练到认证的完整闭环,可直接替换为实际的深度模型(如 PyTorch 分类器)应用到图像等领域。
  1. X_aug = np.concatenate([X, X + rng.normal(0, sigma, X.shape)])生成高斯增强样本:把原样本叠加噪声后与原样本拼接,相当于在训练阶段提前给鉴定师“喂灰尘”。
  2. preds = clf.predict(x + rng.normal(0, sigma, (n, x.shape[0])))对同一个输入 x 生成 n 个带噪副本并逐一预测,对应评委会的 n 次独立投票。
  3. counts = np.bincount(preds, minlength=len(clf.classes_))统计每类的票数,得到“有多少个副本投给了第 c 类”。
  4. p_low = lower_confidence_bound(int(counts[cA]), n, alpha)从票数反推真实获胜概率的保守下界,这是认证可信度的数学基石。
  5. radius = sigma * norm.ppf(p_low)用下界概率计算认证半径;概率下界越高,绿圈画得越大。
  6. if p_low < 0.5: return "ABSTAIN", 0.0若下界不足一半,系统诚实弃权,不给任何鲁棒承诺。

常见误区

误区“随机平滑不就是对抗训练吗?都是往数据里加噪声训练,让模型更抗造。”

正解两者目标和保证性质完全不同。对抗训练是经验防御:它在看到的攻击样本上做增强,模型能抗住见过的攻击,但扛不住没见过的招式。随机平滑是认证防御:它通过加噪投票构造一个新的平滑分类器,然后从统计学上给出可证明的半径保证。加噪训练只是为了让基础模型在噪声投票下表现更好,是辅助手段而非核心机制。

为何常见:两者在训练时都会引入扰动样本,流程上看起来很相似,因此初学者容易把它们归为一类。

误区“报出来的认证半径当然是越大越厉害,最好能把整张图都包进去。”

正解半径和干净精度是一对矛盾。σ 增大虽然能撑大认证半径的潜力,但同时会让模型在正常输入上的准确率下降。一份“半径 3.0 但干净精度只有 60%”的安全报告,在实际业务中往往不如“半径 1.2 且干净精度 98%”有价值。评估时一定要同时看两个指标,并且结合具体业务对鲁棒性和可用性的权重来判断。

为何常见:厂商宣传时习惯突出“能扛多大扰动”的单点指标,容易让人忽视它在日常精度上付出的代价。

误区“我采了 50 次样,45 次都投给同一类,足够出认证报告了吧?”

正解采样次数直接决定置信下界的紧度。50 次里 45 票,其 95% 置信下界可能只有 0.78 左右;而 50000 次里 45000 票,下界可以达到 0.89 以上。下界每高一点,认证半径就大一圈。更关键的是,n 太小会导致下界的随机波动极大,可能出现“这次报半径 1.5,下次报 0.2”的跳变。工业标准中,精确认证阶段通常采用 n ≥ 100000。

为何常见:采样 n 次在代码里只是换一个数字,人容易低估置信下界对 n 的敏感程度,抱着“够用就好”的心态省算力。

误区“随机平滑是后处理,我拿现成的预训练模型直接加噪声投票就能用。”

正解基础模型如果没受过高斯增强训练,其决策边界在噪声环境下极不稳定,导致投票分布接近随机,p_A 下界难以超过 0.5,最终大部分样本都会输出 ABSTAIN,认证半径约等于零。要让随机平滑真正生效,必须先用方差为 σ² 的高斯噪声做数据增强、重新训练或微调基础模型,使它在有尘环境中依然有好眼力。

为何常见:从论文图表看,随机平滑像是一个即插即用的“外壳”,容易让人忽略外壳内部需要专门打磨的模型底座。

误区“模型报了一个 L2 半径 1.5,那任何像素级扰动(L∞ 攻击)应该都防得住。”

正解L2 和 L∞ 是两种不同的攻击预算。L2 半径 1.5 只承诺“总改动力度不超过 1.5 时预测不变”。一个 L∞ 的扰动可能把每个像素都改 0.01,对于 224×224 图像,其 L2 范数可能高达 3 以上,远超认证半径。反过来,L∞ 攻击很容易在 L2 度量下超出承诺范围。若要防御 L∞ 攻击,需要使用均匀噪声等 L∞ 适配的平滑机制,而不是直接套用高斯平滑的结论。

为何常见:非专业人员对范数的几何意义缺乏直观感受,容易把不同度量下的“半径”混为一谈。

面试题

Q1. 随机平滑属于以下哪一类防御方法?

单选题 · easy

  • A.经验防御方法
  • B.认证防御方法← 正确答案
  • C.输入重构方法
  • D.梯度掩盖方法

答案:B。随机平滑通过加噪投票给出数学上可证明的鲁棒半径,属于认证防御。对抗训练才是经验防御的代表;输入重构和梯度掩盖是其他流派。好比合同派和实战派的区别——前者白纸黑字,后者凭经验。

Q2. 在平滑分类器中,最终预测类别由什么决定?

单选题 · easy

  • A.模型在干净输入上的直接输出
  • B.多次噪声预测的多数投票结果← 正确答案
  • C.单次置信度最高的预测结果
  • D.训练数据的类别分布

答案:B。平滑分类器对输入施加多次独立噪声采样,统计各预测类别票数,票数最多者为最终输出。这正像鉴定评委会的多数表决,而不是单人拍板,也不是看训练集分布。

Q3. 若增大高斯噪声的标准差 σ,通常会出现什么现象?

单选题 · easy

  • A.认证半径变小且精度上升
  • B.认证半径变大但干净精度下降← 正确答案
  • C.认证半径和干净精度都上升
  • D.认证半径和干净精度均不变

答案:B。半径公式 r = σ·Φ⁻¹(p_A) 中 σ 是放大因子,σ 越大半径潜力越大;但噪声过大会模糊输入特征,模型在干净样本上的精度随之下降。这是“没有免费午餐”的权衡,类似灰尘加得越多、能承诺的做旧范围越大,但宝物本身也越难看清。

Q4. 在随机平滑的两阶段认证流程中,第二阶段大量采样(如 n=100000)的主要目的是什么?

单选题 · mid

  • A.加速推理速度
  • B.提高置信下界的紧度← 正确答案
  • C.降低噪声方差
  • D.增加模型输出类别数

答案:B。采样数 n 越大,Clopper-Pearson 置信下界越接近真实票率,p_A 的下界更紧,认证半径更接近理论上限。n 不会改变模型或噪声本身,只是让统计估计更准确——相当于民调样本越大,对真实支持率的估计越不心虚。

Q5. 当认证流程输出 ABSTAIN 时,含义是什么?

单选题 · mid

  • A.攻击者已成功篡改模型
  • B.获胜类概率下界不足 0.5,放弃给出半径← 正确答案
  • C.模型干净精度为零
  • D.采样次数超过硬件限制

答案:B。当获胜类的置信下界 p_low < 0.5 时,不存在任何正半径能保证“类票数过半”,因此算法诚实弃权。ABSTAIN 不是攻击成功,而是认证失败,相当于鉴定师说“这单我保证不了”。

Q6. 随机平滑的认证半径公式 r = σ·Φ⁻¹(p_A) 中,p_A 指的是什么?

单选题 · mid

  • A.模型在训练集上的准确率
  • B.平滑分类器在真实输入处对获胜类的概率下界← 正确答案
  • C.测试集上对抗样本的比例
  • D.高斯分布的峰值高度

答案:B。p_A 是对真实获胜概率的保守估计(置信下界),它源自 n 次噪声投票的统计。半径公式依赖这个下界而非点估计,体现了“往保守处算”的安全哲学。

Q7. 以下哪些方式可以提升随机平滑的认证效果?

多选题 · mid

  • A.使用高斯增强训练基础模型← 正确答案
  • B.增大认证阶段的采样次数 n← 正确答案
  • C.无限增大噪声标准差 σ
  • D.提升基础模型在干净样本上的精度← 正确答案

答案:ABD。高斯增强训练让模型适应噪声,提升投票稳定性;增大 n 使置信下界更紧;提升干净精度可提高 p_A。无限增大 σ 会损害干净精度,反而可能缩小有效半径,因此 C 不正确。

Q8. Clopper-Pearson 置信下界采用 Beta(α; k, n-k+1) 计算,当其显著性水平 α 从 0.05 减小到 0.001 时,认证半径通常如何变化?

单选题 · hard

  • A.变大
  • B.变小← 正确答案
  • C.不变
  • D.先增后减

答案:B。α 越小代表要求越保守,Beta 分位数给出的下界越低,p_A 变小,经 Φ⁻¹ 映射后认证半径随之变小。这是用“更低的承诺额度”换取“更高的承诺可信度”。

Q9. 关于 L2 扰动范数与随机平滑的关系,下列说法正确的有?

多选题 · hard

  • A.高斯噪声平滑天然适配 L2 认证半径← 正确答案
  • B.L2 半径内的任何扰动都不能改变预测结果← 正确答案
  • C.随机平滑可直接防御任意大小的 L∞ 攻击
  • D.认证半径随噪声标准差增大而一定增大

答案:AB。高斯平滑与 L2 度量在数学上高度匹配,认证半径内的扰动有理论保证。但 L∞ 攻击可能需要很大的 L2 范数,高斯平滑不能直接防住;另外半径还受 p_A 约束,σ 增大若导致 p_A 大幅下降,半径未必增大。

Q10. 在随机平滑的工程实现中,两阶段流程与超参数设计中哪些考虑是合理的?

多选题 · extreme

  • A.第一阶段用较少采样快速筛选候选类← 正确答案
  • B.第二阶段用海量采样精确计算置信下界← 正确答案
  • C.训练时用比推理时更大的 σ 可以完全免微调
  • D.输出 ABSTAIN 时应设置业务侧人工兜底策略← 正确答案

答案:ABD。两阶段设计在不牺牲置信度的前提下节约算力,A、B 正确。推理时 σ 与训练时 σ 需保持一致且模型需高斯增强训练,C 错误。ABSTAIN 是统计上无法给出保证的信号,业务上必须有人工兜底,D 正确。