什么是 分布外检测(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
  • 对模型、表示、预处理和人群变化敏感
  • 不能单独证明模型错误或整体分布偏移

常见用途

  1. 把陌生医疗、工业或文档输入转交复核
  2. 在开放世界分类器中拒绝未支持图像类别
  3. 把异常请求路由到覆盖更广的模型或更安全流程
  4. 监控新传感器或数据源是否离开获批运行域
  5. 输入支持不足时阻止系统继续自动决策

示例

loading...
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,只是把失败转移到下一环节。

相关术语

相关文章