1. 课程导入
在自动驾驶、人脸识别、工业质检、医疗影像等安全敏感场景中,模型在测试集上取得 99% 的准确率,并不意味着它在真实世界中同样可靠。只要输入发生极其微小的、人眼几乎无法察觉的扰动,模型就可能给出完全错误的判断。这类被精心构造、用于欺骗模型的输入称为对抗样本(Adversarial Example);而另一类并非人为攻击、却因场景罕见或分布偏移导致模型失效的输入,则称为Corner Case(长尾/边角场景)。本课程要解决的,正是如何系统性地"制造"这两类样本,并用它们来度量、暴露和提升模型的鲁棒性。
一、核心定义:两种"让模型出错"的输入
对抗样本的核心特征是微小扰动 + 定向误导。给定一张原始图像 x 和真实标签 y,攻击者求解一个扰动 δ,使得 x+δ 在视觉上与原图几乎一致,但模型输出错误标签。数学上可写成约束优化问题:
max L(f(x+δ), y_true)
s.t. ||δ||_p ≤ ε
其中:
f 目标模型
L 损失函数
ε 扰动预算(如 8/255)
p 范数类型(L∞、L2、L0)
Corner Case 则不同:它通常不追求扰动最小,而是追求场景稀有且语义合理。例如夜间逆光下的白色货车、被广告牌遮挡的交通标志、雨雪中模糊的车道线。它们来自真实世界的长尾分布,是数据覆盖不足的直接体现。二者的关键区别在于:对抗样本是"人为构造的分布外攻击",Corner Case 是"自然存在的分布边缘样本",但它们在工程上共享同一套生成、筛选与评测流程。
一句话区分:对抗样本问的是"模型能被多小的扰动骗到",Corner Case 问的是"模型在多少种真实罕见场景下会失效"。
二、课程整体框架与工程实践地图
本课程共 30 章,围绕"定义—生成—评测—闭环"四条主线展开。下图给出课程的整体工程地图,它同时是一张数据流与能力分层图:左侧是输入与威胁模型,中部是生成与增强引擎,右侧是评测与数据闭环,底部是贯穿全程的工具链与工程规范。
三、学习目标:从"会调库"到"会设计评测体系"
完成本课程后,你应当具备以下能力:
- 概念层:能准确区分对抗样本、Corner Case、分布外样本、自然扰动之间的边界与联系。
- 方法层:能独立实现 FGSM、PGD、C&W 等经典攻击,并理解其优化目标与超参数含义。
- 工程层:能搭建"生成—筛选—评测—回流"的自动化流水线,把攻击样本转化为可复用的鲁棒性测试集。
- 场景层:能针对图像分类、目标检测、点云感知等不同任务,设计对应的 Corner Case 挖掘策略。
- 治理层:能制定安全上线门禁指标,用数据说话,而不是凭感觉判断模型是否"够稳"。
四、典型场景:一个自动驾驶感知案例
假设你负责一个交通标志检测模型。测试集 mAP 达到 0.92,但路测中偶发漏检。通过本课程的方法,你可以这样定位问题:
- 用 PGD 在 ε=8/255 下生成对抗样本,发现"限速 80"被稳定识别为"限速 30",说明模型对高频纹理扰动敏感。
- 用场景搜索从路测数据中挖掘 Corner Case,发现逆光、雨夜、部分遮挡三类场景漏检率最高。
- 将两类样本合并为鲁棒性回归集,纳入 CI 流水线,每次模型更新自动跑一遍。
- 对失败样本做归因,区分是特征提取不足、训练数据缺失,还是后处理阈值不合理。
- 把难例回流到训练集,配合对抗训练,观察 mAP 与鲁棒准确率的权衡曲线。
工程提示:对抗样本与 Corner Case 不是两套独立流程。它们共享同一套"样本生成—筛选—评测—回流"基础设施,区别只在于样本来源和优化目标。把二者统一到一个平台,是团队效率最高的做法。
五、常见误区与复盘
| 误区 | 表现 | 正确做法 |
|---|---|---|
| 把对抗样本等同于噪声 | 随机加高斯噪声测试鲁棒性 | 使用梯度引导的定向扰动,噪声不等于对抗 |
| 只追求攻击成功率 | ASR 很高但样本不可复用 | 同时关注扰动预算、视觉合理性与场景覆盖度 |
| Corner Case 靠人工标注 | 成本高、覆盖窄、更新慢 | 用聚类、OOD 检测、仿真搜索自动挖掘 |
| 评测集与训练集同分布 | 指标虚高,上线即翻车 | 建立独立的鲁棒性回归集并持续扩充 |
| 忽略物理可实现性 | 数字攻击很强,实车无效 | 考虑光照、形变、打印色差等物理约束 |
复盘要点:鲁棒性不是一次性测试,而是持续迭代的工程能力。没有数据闭环的对抗样本生成,只是一次性的演示;只有把样本沉淀为回归资产,才能真正提升模型的安全边界。