想象你是一座城堡的建造师。城堡里住满了 AI 模型,它们负责识别图像、判断风险、辅助决策。但总有一群狡猾的“敌军”——对抗样本——试图在图片上施加肉眼几乎看不见的微小改动,骗过守卫,溜进城堡。传统的防御方式像派巡逻队日夜搜查,能抓住“见过的”敌人,却防不住“没见过的”花样。而今天要讲的 CROWN-IBP,是一种给城堡修筑“可验证城墙”的工程方案:先用又粗又快的石料把城墙砌起来(IBP),再用精密仪器逐段校准、打磨出严丝合缝的内墙(CROWN),最后让两者协同作战。这套方案不靠运气,而是用数学把“墙的每一寸承重能力”都写在图纸上——甲方验收时,不需要敌人真的来攻一次城,只看图纸就能打包票:这墙,绝对攻不破。
对 AI 从业者来说,CROWN-IBP 是让模型从“看起来安全”走向“证明安全”的钥匙,是 AI 安全合规、自动驾驶认证、金融风控审计等场景中的核心技能,学会它,你就掌握了给 AI 发“安全保证书”的能力。
可视化演示
展示认证与经验鲁棒性差异、IBP区间界传播、CROWN线性紧致界及鲁棒性-准确率权衡曲线。
本节配有交互动效(进入视口后自动加载,约 3KB)。
认证鲁棒性 vs 经验鲁棒性 经验防御仅覆盖已知攻击点,存在未覆盖的安全盲区 认证防御提供ε扰动球内所有点的可证明安全保证 cert_acc = P(f(x)=f(x+δ), ∀‖δ‖≤ε) 认证鲁棒性提供数学证明,不依赖特定攻击方法
认证鲁棒性
王国要修一座城堡,国王先问的不是“敌人会不会来”,而是“万一敌人兵临城下,城墙能不能扛住?”——他要的不是巡逻队的口头保证,而是建筑师画出的承重图纸。认证鲁棒性,就是 AI 世界里的“承重图纸”:它用数学语言回答“在允许的扰动范围内,模型会不会被欺骗”。
在传统训练中,我们只用真实数据教模型“认识猫”。但对抗样本攻击告诉我们:在猫的图片上叠加一点点肉眼不可见的噪声,模型可能把它认成“狗”。为了防御这种攻击,我们需要一个严格的定义:给定一个输入样本 $x$ 和标签 $y$,以及一个最大扰动半径 $\epsilon$,要求对 $x$ 邻域内的任何扰动输入 $x'$,模型的预测都保持为 $y$。能做到这一点,我们就说模型在这个点上满足认证鲁棒性。
这份“承重图纸”的意义在于:它不需要真的去攻一次城,就能给出保证。普通测试只能告诉你“我试过哪些攻击没成功”,认证却能告诉你“所有可能的攻击都不可能成功”。这正是它被称作“可证明鲁棒性”的原因——图纸上每一块砖的承重,都是算出来的。
- 划定扰动范围以原始样本 $x$ 为中心,$\epsilon$ 为半径,圈出一个“敌方可能到达”的区域。$\epsilon$ 越大,表示我们假设的攻击者越强大,能改动的范围越广。
- 要求预测一致对扰动区域内的每一个可能的 $x'$,模型 $f$ 的输出都必须与原始标签 $y$ 相同。只要有一个“漏网之鱼”让预测改变,认证就失败。
IBP 区间传播
工程队进场了,最省钱省力的方案是什么?先砌一圈粗壮的外城墙。墙很厚,可能挡得并不精准——墙内圈进了大片空地——但胜在速度快、用料简单。这就是 IBP(Interval Bound Propagation,区间界传播)的思路:把输入扰动当成一个区间,让区间层层通过神经网络的每一层,最后得到输出可能落进的范围。
IBP 不需要知道敌人的具体进攻路径,它只做一件事:把“输入的不确定性”用区间框住,然后像一个搬运工,把区间从输入层一路搬到输出层。搬运的过程中每一层都要重新计算区间的上下界,计算规则非常简单——权重为正就乘下界,权重为负就乘上界。
外城墙砌完了,速度快得惊人。但问题也随之暴露:墙圈得太宽,城内大片区域被“敌方可能到达”的假设占据,我们的防御承诺变得脆弱——认证半径稍微一大,IBP 给出的界就可能宽到“几乎什么都能发生”,认证直接失败。粗墙的局限,在于它不会精打细算。
- 正负权重分离把权重矩阵 $W$ 拆分成正数部分和负数部分。正数部分保留原值,负数部分归零;反之亦然。这一步是为下面的“极值配对”做准备。
- 下界传播计算下一层输出的下界时,正权重乘以上一层的下界(因为正数乘下界得到最小的可能贡献),负权重乘以上一层的上界(负数乘上界得到最小的可能贡献),最后加上偏置。
- 上界传播下界上界对称处理——正权重乘以上界,负权重乘以下界,得到新的上界。
CROWN 线性界
于是工程师们决定:在外墙内部再修一道精密的内墙。这堵墙不再傻乎乎地圈一大片,而是贴着每一条可能的进攻路线精确修建。这就是 CROWN 的思路——用线性函数去“包裹”神经网络每一层的真实行为。CROWN(通过张量松弛的可证鲁棒性)不直接传播区间,而是反向传播一组关于输入 $x$ 的线性系数:它假设网络输出可以被一个线性函数夹住,上界是一条直线,下界也是。
难点在于激活函数是非线性的。比如 ReLU 函数在零点拐弯,就像一条路突然来个直角转弯。CROWN 的做法是“松弛”:在预激活区间 $[l, u]$ 内,用一条斜率合适的直线代替 ReLU 的精确行为。如果区间完全在正半轴,直线就是 $y=z$;完全在负半轴,直线就是 $y=0$;如果跨越零点,就取斜率 $\alpha = u/(u-l)$ 的割线作为上界,保证直线永远压在真实曲线上方。
内墙修好了,每一寸都贴合地形,认证半径比 IBP 大得多。但工程师们满头大汗——这堵墙的修建太昂贵了!要缓存每一层的激活,要反向传播,计算量比 IBP 翻了几倍。在深层大模型上,只用 CROWN 往往慢得无法落地。城墙工程陷入两难:要么便宜但太松,要么紧致但太贵。
- 输出表达为输入线性函数CROWN 从输出层反向传播,把每一层对最终输出的影响,逐步合成为一组关于原始输入 $x$ 的线性系数 $c$ 和截距 $d$。
- ReLU 松弛对于跨越零点的 ReLU 神经元(预激活区间 $[l, u]$ 满足 $l<0<u$),用一条通过 $(l, 0)$ 和 $(u, u)$ 两点的直线作为上界,斜率 $\alpha = \frac{u}{u-l}$,这样直线处处不低于真实的 ReLU 函数。
- 上下界分别累积反向传播时,正权重用 ReLU 的下界线性式、负权重用上界线性式来累积 $c$ 和 $d$,最终得到输出关于输入的下线性界和上线性界。
CROWN-IBP 融合
聪明的总工程师提出了一个折中方案:为什么非要二选一?外墙粗糙但便宜,内墙精密但昂贵,那就把两者结合——先让外墙整体圈住安全边界,再用内墙在关键部位精修。这就是 CROWN-IBP 的融合思想:在训练的不同阶段、网络的不同层次,用权重 β 把 IBP 的界和 CROWN 的界混合起来。
具体做法是:前向传播时仍然用 IBP 快速算出每一层的预激活区间(这是外墙,快);然后用这个区间去构造 CROWN 需要的 ReLU 松弛(这是内墙的砖石,精)。两种边界按比例混合,作为最终的认证边界参与损失函数。训练早期 β 小,以 IBP 为主,让模型快速学到基本的鲁棒特征;训练后期 β 增大到 1,切换到 CROWN,把边界打磨得更紧。
双墙合璧的效果立竿见影:训练成本只比 IBP 多一点点,认证边界却接近 CROWN 的紧致水平。这就是 CROWN-IBP 能在众多认证方法中脱颖而出的原因——它不多花一分冤枉钱,却把两种墙的优点都要到了。
- 混合两种边界每一层的最终边界 $\hat{z}$,是 CROWN 边界和 IBP 边界的加权和。β 控制偏向谁。
- β 退火训练进行到第 $k$ 步,β 从初始值线性增长:初期以 IBP 主导,后期以 CROWN 主导,实现平滑过渡,避免训练震荡。
- 联合损失训练目标同时包含标准分类损失和认证边界损失,边训练边把“城墙的承重标准”写进目标函数。
松弛参数调优
城墙修好之后,总工程师每天还要做一件事——拧旋钮。城墙多厚?瞭望塔多高?β 从多少开始退火?训练多少个 epoch 后切换?这些参数就是防御工程的“旋钮”,调得好,工程又快又好;调得差,可能城倒人亡。
最关键的旋钮是训练扰动半径 ε 的退火策略。如果一开始就设定很大的 ε,模型会被过强的鲁棒性要求压垮,连普通的分类都学不好。所以实践中 ε 从小开始,随着训练逐步增大——就像新兵先练轻担子,再练重担子。ε 的增长曲线直接决定模型能否平稳适应。
参数调优没有免费午餐:β 增得快,模型更早追求紧致边界,但容易欠拟合;ε 增得快,认证半径大,但模型可能彻底训练失败。好的工程师会在每个项目上用一小撮验证集反复试,找到既稳又狠的旋钮组合——这就是防御工程的“手感”。
- 扰动半径退火训练步数 $k$ 从 0 走向 $K$,扰动半径从接近 0 平滑增长到目标值 $\epsilon_{\max}$。模型在早期用小的扰动学习基本特征,后期才有能力应对大的扰动。
- 曲线形状控制指数 $p$ 控制退火曲线形状。$p>1$ 时曲线先慢后快,适合后期强化;$p<1$ 时先快后慢,适合快速进入鲁棒训练状态。
- β 与 ε 协同CROWN-IBP 的 β 退火通常与 ε 退火配合——ε 增大时,β 也要逐步增大,保证边界既紧又稳。
经验防御对比
国王带着大臣来验收,发现城墙上还挂着一块牌子:“巡逻队保证:本城已连续 30 天无战事。”大臣们议论纷纷:这算什么保证?巡逻队每天走同一条路线,敌人换个方向不就进来了?这块牌子,就是经验防御(如 PGD 对抗训练)的写照。
经验防御的思路是“用攻击来练防守”:每轮训练都生成一些对抗样本喂给模型,让它学会抵抗这些攻击。问题是,它只能保证“我们见过的攻击”无效,换一种新的攻击方式,模型可能立刻失守。而认证防御不同——CROWN-IBP 给出的界是数学证明:只要扰动不超过 ε,无论攻击者怎么构造输入,预测都不可能变。两者最直接的对比指标,就是认证准确率:
经验防御与认证防御并非水火不容。实践中,大家常先用 PGD 对抗训练给模型“打底”,再用 CROWN-IBP 做“收尾”,甚至把两条路线混合在同一个损失函数里。巡逻队管日常,城墙管底线——两条腿走路,城堡才安全。
- 逐样本验证对测试集里的每个样本 $x_i$,检查它在 $\epsilon$ 邻域内是否所有输出都与真实标签 $y_i$ 一致。指示函数 $\mathbb{1}[\cdot]$ 在满足条件时取 1,否则取 0。
- 统计占比把所有通过验证的样本数加起来,除以样本总数 $N$,得到认证准确率。这是一个 0 到 1 之间的比例。
计算效率
城堡竣工并不是终点,维护成本才是大头。总工程师感慨:外墙砌得快是因为只用了最粗糙的石头,内墙砌得精是因为每块砖都要量体裁衣。CROWN-IBP 的价值,恰恰在于它让“精密内墙”的修建成本降到了可以接受的范围。
IBP 的计算开销非常干净:区间传播本质上就是两次普通前向传播——一次算下界,一次算上界,所有层只需要简单的向量乘法和加减法。而纯 CROWN 需要缓存每一层的预激活区间,再做一次反向传播累积线性系数,开销大约是一次前向加一次反向。CROWN-IBP 的聪明之处在于训练时复用 IBP 算出的区间作为 CROWN 的输入,将额外开销控制在极小的范围内。
预算花在刀刃上,是任何工程落地的铁律。CROWN-IBP 之所以能走出论文、走进工业界,靠的正是这份“账本”:它让原本昂贵的认证防御,变成了一杯咖啡的价钱就能买到一次安全验收。
- IBP 的时间开销区间传播只需按前向顺序逐层计算上下界,工作量近似两次普通前向传播。
- CROWN 的时间开销CROWN 需要从输出层反向传播线性系数,因此除了一次前向,还要一次反向传播。
- CROWN-IBP 的增益训练中 IBP 的区间提前算好,CROWN 的松弛直接复用,额外的反向开销系数 $\alpha$ 远小于 1。
AI 应用场景
自动驾驶感知模型的认证
阶段:模型验证与部署阶段
解决的问题:自动驾驶的视觉感知模型在路上可能遇到贴纸、光影变化、传感器噪声等微小扰动。传统对抗训练只能保证“训练时见过的攻击”不生效,却无法向安全监管机构提交一份“所有扰动都无效”的证明。认证鲁棒性把模型的安全边界变成了可量化、可审计的指标。
具体案例:某自动驾驶公司用 CROWN-IBP 对“停止标志分类器”进行认证,在 L∞ 扰动半径 ε=0.05(约合像素值 8/255)下,认证准确率达到 98.2%。他们将认证报告提交给功能安全评审团队,作为冗余安全机制的一部分,显著提升了过审效率。
金融风控模型的合规审计
阶段:模型上线前的风险审计阶段
解决的问题:信贷风控模型可能被恶意用户通过篡改少量特征字段(如收入、年龄)绕过。监管机构要求银行证明模型对输入扰动具有可量化的鲁棒性,不能用“我们测过几个攻击”来搪塞。CROWN-IBP 提供的形式化边界为合规审计提供了数学依据。
具体案例:某消费金融公司对申请评分模型使用 CROWN-IBP 计算认证鲁棒性半径,发现在特征归一化后的 ε=0.02 范围内,模型的批贷/拒贷决策保持不变。风控团队据此在 API 层增加输入校验规则,同时向审计方提交认证报告。
医疗影像诊断的稳定性验证
阶段:临床部署前的模型验证阶段
解决的问题:CT 影像中轻微的噪声、运动伪影可能让辅助诊断模型给出不同结论。医疗场景要求结论可解释、可证明,不能只说“模型在测试集上精度高”。认证防御能在部署前就明确告知医生:在多大的成像噪声范围内,模型结论是稳定的。
具体案例:研究团队用 CROWN-IBP 对肺结节良恶性分类模型做认证,设定 ε 为 1.5% 的像素扰动幅度,模型在 92% 的测试样本上通过认证。系统上线后将认证通过的样本区域标注为“高置信区”,辅助放射科医生优先关注低置信案例。
Python 演示
import numpy as np class SimpleMLP: """两层 ReLU 小网络: 2 输入 - 4 隐藏 - 3 输出""" def __init__(self, seed=42): rng = np.random.default_rng(seed) self.W1 = rng.standard_normal((4, 2)) * 0.8 self.b1 = rng.standard_normal(4) * 0.2 self.W2 = rng.standard_normal((3, 4)) * 0.8 self.b2 = rng.standard_normal(3) * 0.2 def forward(self, x): h = np.maximum(x @ self.W1.T + self.b1, 0.0) return h @ self.W2.T + self.b2 def ibp_bounds(net, x, eps): """IBP: 区间界从输入逐层传播到输出 (简单但松)""" x_lo, x_hi = x - eps, x + eps W1p, W1n = np.maximum(net.W1, 0), np.minimum(net.W1, 0) pre_lo = W1p @ x_lo + W1n @ x_hi + net.b1 pre_hi = W1p @ x_hi + W1n @ x_lo + net.b1 h_lo, h_hi = np.maximum(pre_lo, 0), np.maximum(pre_hi, 0) W2p, W2n = np.maximum(net.W2, 0), np.minimum(net.W2, 0) out_lo = W2p @ h_lo + W2n @ h_hi + net.b2 out_hi = W2p @ h_hi + W2n @ h_lo + net.b2 return out_lo, out_hi def crown_bounds(net, x, eps): """CROWN: ReLU 松弛为线性界, 反传得到输出的线性边界 (紧)""" x_lo, x_hi = x - eps, x + eps W1p, W1n = np.maximum(net.W1, 0), np.minimum(net.W1, 0) pre_lo = W1p @ x_lo + W1n @ x_hi + net.b1 pre_hi = W1p @ x_hi + W1n @ x_lo + net.b1 out_lo = np.zeros(3) out_hi = np.zeros(3) for k in range(3): c_lo, d_lo = np.zeros(2), net.b2[k] c_hi, d_hi = np.zeros(2), net.b2[k] for j in range(4): l, u = pre_lo[j], pre_hi[j] if l >= 0: al = au = 1.0 dl = du = 0.0 elif u <= 0: al = au = 0.0 dl = du = 0.0 else: au = u / (u - l) du = -au * l al, dl = 1.0, 0.0 w = net.W2[k, j] if w >= 0: c_lo += w * al * net.W1[j] d_lo += w * (al * net.b1[j] + dl) c_hi += w * au * net.W1[j] d_hi += w * (au * net.b1[j] + du) else: c_lo += w * au * net.W1[j] d_lo += w * (au * net.b1[j] + du) c_hi += w * al * net.W1[j] d_hi += w * (al * net.b1[j] + dl) eps_vec = np.array([eps, eps]) out_lo[k] = c_lo @ x + d_lo - np.abs(c_lo) @ eps_vec out_hi[k] = c_hi @ x + d_hi + np.abs(c_hi) @ eps_vec return out_lo, out_hi def certify(net, x, y_true, eps, method="crown-ibp"): """认证: 真类下界 > 其他类上界, 则邻域内预测恒为真类""" lo_i, hi_i = ibp_bounds(net, x, eps) lo_c, hi_c = crown_bounds(net, x, eps) if method == "ibp": lo, hi = lo_i, hi_i elif method == "crown": lo, hi = lo_c, hi_c else: lo, hi = np.maximum(lo_i, lo_c), np.minimum(hi_i, hi_c) margin = lo[y_true] - np.max(np.delete(hi, y_true)) return margin > 0, margin if __name__ == "__main__": net = SimpleMLP(seed=42) x = np.array([0.35, -0.15]) y = 1 print("eps | IBP | CROWN | CROWN-IBP (margin)") for eps in [0.05, 0.1, 0.2, 0.4]: ok_i, _ = certify(net, x, y, eps, "ibp") ok_c, _ = certify(net, x, y, eps, "crown") ok_m, m = certify(net, x, y, eps, "crown-ibp") print(f"{eps:.2f} | {ok_i} | {ok_c} | {ok_m} ({m:+.3f})")
W1p, W1n = np.maximum(net.W1, 0), np.minimum(net.W1, 0)把权重矩阵拆成正负两部分,这是区间传播的“分拣台”。pre_lo = W1p @ x_lo + W1n @ x_hi + net.b1下界用“正权乘下界再加负权乘上界”,得到预激活区间下界。h_lo, h_hi = np.maximum(pre_lo, 0), np.maximum(pre_hi, 0)ReLU 激活把区间逐点映射到非负区域。au = u / (u - l)CROWN 的松弛斜率:跨越零点的 ReLU 用割线代替原函数。c_lo += w * al * net.W1[j]反向累积线性系数,把每一层的影响折算回输入空间。np.maximum(lo_i, lo_c), np.minimum(hi_i, hi_c)CROWN-IBP 逐输出取更紧的界:下界取大者,上界取小者。margin = lo[y_true] - np.max(np.delete(hi, y_true))认证条件:真类的下界必须压过所有其他类的上界。
常见误区
误区“我已经用 PGD 对抗训练把模型训得很鲁棒了,这不就是认证鲁棒性吗?还需要形式化验证干什么?”
正解对抗训练只能保证训练时见过的攻击方式失效,属于“经验防御”——像巡逻队只对见过的作案手法有印象。而认证鲁棒性要的是数学证明:在规定的扰动范围内,所有可能的攻击(不管见没见过)都不可能让预测改变。CROWN-IBP 给的是图纸级的承重计算,不是巡逻队的经验汇报。
为何常见:对抗训练也叫“鲁棒性训练”,初学者容易把“增强鲁棒性”的手段和目标混为一谈。两者都重要,但承诺的强度完全不同。
误区“IBP 计算这么简单,那我在每层多算几次、把区域细分,界不就越来越紧了吗?”
正解IBP 的界松是区间算术的固有属性——每次经过 ReLU 这种非线性变换,区间宽度都会累积松弛,而且层数越深,累积越严重。多细分计算无法消除这种结构性松弛。这正是 CROWN 的价值:用线性界(而非纯区间)对抗累积误差。IBP 的长处是“快”,不是“紧”。
为何常见:IBP 公式简洁、实现容易,初学者很容易误以为它像普通神经网络一样,层数多了自然更精确。实际上界宽随深度指数膨胀,单纯加深会适得其反。
误区“我把 ε 设得很大,认证的扰动范围就大,模型肯定更安全。”
正解ε 是威胁模型的参数——它描述你假设攻击者有多强,不是防御能力。ε 越大,认证条件越苛刻,能通过认证的样本越少,认证准确率反而下降。训练时强行用超大 ε,模型会把大部分容量用于满足极端条件,普通样本的准确率也会崩盘。这就像把城墙修得无限高,谁也翻不进来,但城里的人出不去,城市也就死了。
为何常见:直觉上“防御范围越大越安全”,但忽略了防御成本和模型容量有限的事实。ε 是“要防多大的敌人”,不是“防御强不强”。
误区“只要用了 CROWN-IBP 训练,随便一个深层网络都能拿到紧致的认证边界。”
正解CROWN-IBP 的验证效果严重依赖网络结构。大量跨越零点的 ReLU、过深的网络、过宽的层,都会让松弛后的线性界依然过宽,导致认证失败。实践中需要控制网络宽度、激活函数、训练技巧,甚至为认证专门设计架构。就像不是所有地形都适合修堡垒——陡峭山崖可以少修墙,滩涂平原则必须砌长墙厚墙。
为何常见:论文里展示的多是中小型网络,工业界网络更大更深,验证难度成倍增加,容易让人误以为“算法万能”。
误区“认证准确率 80%,说明模型在 80% 的样本上都是对的,性能真好!”
正解认证准确率衡量的是“预测的稳定性”——在扰动范围内预测不变。但预测不变不等于预测正确:一个把猫都认成狗但特别“坚决”的模型,认证准确率照样可以很高。认证鲁棒性只保证“不因扰动而改变决定”,不保证“决定本身是对的”。评估时必须同时看标准测试准确率。
为何常见:把“鲁棒性”(面对扰动的稳定)和“准确性”(分类的正确)两个维度的指标混淆了。安全评估需要两者兼看,缺一不可。
面试题
Q1. “认证鲁棒性”关注的核心问题是什么?
- A.证明模型在扰动范围内预测不变← 正确答案
- B.提高模型在测试集上的准确率
- C.加速模型推理的计算速度
- D.降低模型部署的内存占用
答案:A。认证鲁棒性用数学证明的方式保证:在规定的扰动邻域内,模型的预测结果始终保持一致。它回答的是“有没有可能被欺骗”的问题,而准确率、推理速度、内存占用都是另一个维度上的指标。
Q2. IBP(区间界传播)在神经网络中逐层传递的是什么?
- A.输入扰动的上下界← 正确答案
- B.梯度的累计大小
- C.损失函数的变化值
- D.注意力权重的分布
答案:A。IBP 把输入扰动看成区间,逐层计算输出可能落入的上下界。它不关心梯度或损失,只做一件事:把不确定性区间从输入层搬到输出层,类似把粗外墙一圈圈砌起来。
Q3. CROWN 与 IBP 的核心区别在于?
- A.CROWN 用线性界反向传播,IBP 用区间算术正向传播← 正确答案
- B.CROWN 是经验方法,IBP 是形式化方法
- C.CROWN 需要数据增强,IBP 不需要数据
- D.CROWN 只适用于 CNN,IBP 只适用于 MLP
答案:A。CROWN 的核心是构造关于输入的线性上下界并反向传播系数;IBP 的核心是用区间算术(正权重乘下界、负权重乘上界)逐层前传。两者都是形式化方法,差别在界的方式:一个用线性函数包络,一个用区间直接传递。
Q4. 在 CROWN-IBP 训练中,β 参数(混合系数)的作用是什么?
- A.控制 IBP 边界与 CROWN 边界的混合权重← 正确答案
- B.控制模型学习率的大小
- C.控制批归一化的衰减系数
- D.控制反向传播的网络层数
答案:A。β 是两种边界的音量旋钮:β=0 时全部使用 IBP 边界,β=1 时全部使用 CROWN 边界。训练中 β 从 0 平滑退火到 1,让模型先靠 IBP 快速学习鲁棒特征,再用 CROWN 打磨紧致边界。
Q5. 认证防御相比经验防御(如 PGD 对抗训练)最显著的特点是什么?
- A.提供可证明的、不依赖特定攻击的保证← 正确答案
- B.完全不需要修改网络的结构
- C.在验证阶段不需要任何计算
- D.防御效果不受网络深度影响
答案:A。认证防御给出形式化保证:在扰动范围内,无论攻击者怎么构造输入,预测都稳定。经验防御只对训练时见过的攻击有效。认证防御需要额外计算边界,且深度越大验证越难,所以 B、C、D 都是错误描述。
Q6. 某个 ReLU 神经元预激活区间为 [l, u] 且 l<0<u,经过 ReLU 后正确的输出区间是?
- A.[0, u]← 正确答案
- B.[l, u]
- C.[0, 0]
- D.[-u, u]
答案:A。ReLU 函数是单调递增的,区间传播时直接对端点分别作用:ReLU(l)=0(因为 l<0),ReLU(u)=u(因为 u>0),所以输出区间是 [0, u]。这在 IBP 中对应“先算预激活区间,再用激活函数作逐点映射”。
Q7. CROWN-IBP 训练中,“ε 退火 + β 退火”的配合策略通常是什么?
- A.ε 从 0 增到目标值,β 从 0 增到 1,两者同步推进← 正确答案
- B.ε 固定为最大值,β 从 1 递减到 0
- C.ε 先大后小,β 保持恒定
- D.ε 和 β 都保持不变,只调节学习率
答案:A。标准做法是让扰动半径 ε 从 0 附近逐步增大到目标值(ε 退火),同时 β 从 0 平滑增长到 1(从 IBP 过渡到 CROWN)。两者同步配合,模型才能在“威胁强度”和“验证精度”两个维度上平稳适应,避免训练崩溃。
Q8. 使用 CROWN-IBP 作为认证防御的优点有哪些?
- A.比纯 CROWN 的计算效率更高← 正确答案
- B.比纯 IBP 提供更紧的边界← 正确答案
- C.完全不需要任何训练数据
- D.能提供可证明的鲁棒性保证← 正确答案
答案:ABD。CROWN-IBP 复用 IBP 的区间来构造 CROWN 的松弛,训练开销远低于纯 CROWN;同时通过混合边界,最终边界比纯 IBP 更紧。作为认证方法,它天然提供可证明的保证。但它和所有监督学习方法一样,需要训练数据,所以 C 错误。
Q9. 关于 IBP 的计算效率,下列哪些说法正确?
- A.区间传播的工作量近似两次普通前向传播← 正确答案
- B.每层只需独立的区间运算,易于并行← 正确答案
- C.IBP 比 CROWN 需要更多的内存存储
- D.IBP 的边界总是比 CROWN 更紧
答案:AB。IBP 逐层做区间算术,一次算下界、一次算上界,整体约等于两次前向,且各层区间计算相互独立,易于并行。它不需要像 CROWN 那样缓存激活做反向,内存开销通常更小,所以 C 错。IBP 的界通常比 CROWN 松,D 也错。
Q10. 关于“认证准确率”的评估,下列说法正确的是?
- A.统计在扰动邻域内完全可靠的样本占比← 正确答案
- B.通常比经验防御的准确率更容易虚高
- C.只能通过生成大量对抗样本来估计
- D.要求模型对所有邻域内输入的预测保持一致← 正确答案
答案:AD。认证准确率计算的是“邻域内所有扰动下预测都不变”的样本比例,不需要生成对抗样本,而是用数学边界求解,所以 C 错。由于认证条件远比“防住几个攻击”严苛,认证准确率通常低于经验防御的准确率,B 说反了。A 和 D 正是认证准确率的定义。