什么是 分布外检测(OOD Detection)?
分布外检测(OOD Detection)是对单个输入进行判断的任务:当它与明确声明的分布内参考范围足够不相容时,系统应拒绝、转交或采用不同处理方式,而不是继续执行常规模型决策。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
选择方向与证据明确的分数
常见基线包括 Maximum Softmax Probability、Energy Score、学习表示距离、Ensemble 和任务专属一致性检查。Hendrycks 与 Gimpel建立了广泛使用的 Softmax 基线,但它不是通用检测器。神经网络可能对陌生输入保持高置信度;能区分某个 Far-OOD 基准的分数,也可能在语义接近或对抗样本上失败。应冻结预处理、模型 Revision、表示层、分数公式及「数值越大是否越 OOD」的方向。
在未使用的分布内数据上校准阈值
使用能够代表获批运行域的 ID 留出数据,按照明确的 ID 误报预算选择阈值。在 Exchangeability 成立时,带有限样本修正的经验分位数可以支持该契约,但它不能说明 OOD Recall。不要用同一批样本同时选择分数并报告效果。阈值依赖模型、表示、人群和预处理,这些组件变化后必须重新校准。
评测真实未知输入和完整回退系统
报告用于排序的 AUROC 或 AUPR、指定 TPR 下的 FPR、生产阈值上的 ID 误报率、延迟及下游成本。评测集应覆盖 Near-OOD、Far-OOD、输入损坏、新类别、关键群体切片,以及未参与方法选择的未知集合。OpenOOD说明了跨方法统一数据集与协议的重要性。最后还要测试拒绝路径,包括 Fallback 容量、超时、人工复核、安全默认行为和恢复流程。
主要特点
- 相对于明确 ID 参考范围进行样本级决策
- 需要定义分数方向、阈值与 Fallback 动作
- 可控制 ID 误报预算,但不能保证 OOD Recall
- 必须测试 Near-OOD 和未见未知输入,不能只用简单 Far-OOD
- 对模型、表示、预处理和人群变化敏感
- 不能单独证明模型错误或整体分布偏移
常见用途
- 把陌生医疗、工业或文档输入转交复核
- 在开放世界分类器中拒绝未支持图像类别
- 把异常请求路由到覆盖更广的模型或更安全流程
- 监控新传感器或数据源是否离开获批运行域
- 输入支持不足时阻止系统继续自动决策
示例
Loading code...常见问题
什么样的输入算分布外输入?
只有超出明确 ID 契约的输入才算分布外,该契约包括类别、人群、传感器、预处理、时间段和运行条件。OOD 不是物体自带的固有标签;同一个样本对一个系统可能是 ID,对另一个系统可能是 OOD。
OOD 检测和分布偏移检测相同吗?
不同。OOD 检测相对于 ID 参考范围决定如何处理单个输入;分布偏移检测比较人群或窗口。类别占比变化可以让批次发生偏移,却不让样本成为 OOD;一次 OOD 告警也不能证明总体分布已经变化。
Softmax 置信度低就能可靠检测 OOD 吗?
不能。Maximum Softmax Probability 是有用基线,但神经网络可能对陌生或对抗输入给出高置信度。应在真实 Near-OOD 与 Far-OOD 集合上比较有依据的分数,再验证选定运行阈值和 Fallback。
OOD 阈值应该如何选择?
在未用于方法选择且能代表目标运行域的 ID 校准集上,按明确误报预算和有限样本规则选择;再用多个未见未知集合单独评估 OOD Recall。模型、表示、预处理或运行域变化后需要重新校准。
检测到 OOD 输入后应该怎样处理?
契约应明确拒绝回答、人工复核、更广覆盖模型、补充传感、安全默认行为或显式拒绝。还要测试队列容量、延迟、权限、超时与恢复。只有检测器而没有可靠 Fallback,只是把失败转移到下一环节。