Uncertainty Quantification
了解 AI 和机器学习中的不确定性量化,包括偶然不确定性和认知不确定性、校准、评估方法以及 Ultralytics YOLO 工作流。
不确定性量化(UQ)是估计、评估并传达 AI 或机器学习模型对其预测结果有多大不确定性的过程。UQ 工作流不会只返回标签、数值或边界框,还会提供概率分布、预测区间、置信度分数或预测集等额外信息。这有助于用户了解模型不仅预测了什么,还了解该在多大程度上信任这一预测。
为什么不确定性量化很重要#
模型从有限数据中学习模式,因此其输出从来不会完全确定。输入可能包含噪声,标签可能存在歧义,生产数据也可能不同于训练分布。UQ 将这些局限转化为可测量的指标,并支持更安全的决策、人工审核和更好的数据采集。
这一理念延伸了NIST 虚拟测量计划所描述的刻画模型质量这一更广泛的目标。在 AI 系统中,不确定性估计可以帮助团队:
- 当不确定性超过可接受水平时,拒绝预测结果或进行审核。
- 比较多个备选预测,而不是依赖单一答案。
- 识别不熟悉的输入和可能存在的数据漂移。
- 通过主动学习优先标注不确定性较高的样本。
- 将不确定性传递到下游计算和决策中,正如能源部关于计算模型中的不确定性的概述所展示的那样。
当预测错误带来的后果不同时,UQ 尤其重要。漏检行人比错误检测路边标志更为严重,因此可接受的不确定性阈值取决于具体应用。
偶然不确定性与认知不确定性#
以下两类不确定性解释了预测不确定性的来源:
- 偶然不确定性也称为 aleatory uncertainty,来源于数据中的固有随机性或歧义。运动模糊、传感器噪声、部分遮挡和不一致的标签,即使对于训练良好的模型,也可能使图像难以解读。更多训练数据可能有助于估计这种不确定性,但无法完全消除其根本歧义。
- 认知不确定性来源于模型知识的不完整。当训练数据不足、缺乏代表性或遗漏重要情况时,通常会出现这种不确定性。通过收集相关示例、改进标注或更改模型,通常可以降低这种不确定性。
UQ 将有关这些来源的信息结合起来,生成有用的输出。像TensorFlow Probability这样的概率建模工具可以将预测表示为分布,而集成方法则通过比较多个模型或多次训练运行来估计不确定性。较大的分歧通常意味着更高的认知不确定性。
不确定性与置信度分数有关,但其范围更广。置信度描述单个预测的强度,而 UQ 评估该分数是否可靠,以及哪些不确定性来源会影响它。同样,保序预测是一种特定技术,可在既定假设下生成具有目标覆盖率的预测集或区间。
方法与评估#
常见的 UQ 方法包括概率输出、集成、重复采样、贝叶斯建模和预测区间。Bootstrap 置信区间通过反复重采样观测数据来估计变异性。对于分类任务,校准用于检查被赋予约 80% 概率的预测是否约有 80% 的时间是正确的。
模型可能具有较高准确率但校准效果不佳,因此团队应同时评估任务性能和不确定性质量。概率校准工具使用可靠性图和校准技术,将预测概率与观测结果进行比较。Google 的机器学习规则也强调可解释且受监控的概率预测。
有用的评估标准包括覆盖率、区间宽度、校准误差,以及在困难数据切片上的性能。对于计算机视觉,Ultralytics 验证模式和 YOLO 性能指标指南有助于检查不同类别和阈值下的精确率、召回率、混淆矩阵及置信度表现。
实际应用#
- **医学图像分析:**当多个合理发现具有相近分数,或图像不同于训练数据时,诊断模型可以标记扫描结果并提交专家审核。如果没有这种升级处理,过度自信的错误预测可能会延误治疗。
- **制造业视觉检测:**缺陷检测器可能会遇到眩光、新材料或以前未见过的损坏。基于不确定性的路由可以将有歧义的产品发送至人工检查,而不是自动接受或拒绝,从而同时减少漏检缺陷和不必要的浪费。
这些策略将模型不确定性与运营风险联系起来。NIST AI 风险管理框架核心建议测量不确定性、记录泛化限制,并在整个部署过程中监控系统。
Ultralytics YOLO 工作流中的不确定性#
Ultralytics YOLO26通过其文档化的预测模式提供检测置信度分数:
from ultralytics import YOLO
# Load an official detection model
model = YOLO("yolo26n.pt")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Inspect each detection's confidence
for box in result.boxes:
class_id = int(box.cls.item())
class_name = result.names[class_id]
confidence = box.conf.item()
print(f"{class_name}: {confidence:.3f}")这一工作流提供了一个有用的、与不确定性相关的信号,但仅凭置信度并不能构成完整的 UQ,也不应自动将其解读为经过校准的概率。请在具有代表性的留出数据上验证分数,根据错误成本选择阈值,并在部署后监控置信度分布。
团队可以使用Ultralytics Platform标注数据集、训练和部署模型,并监控端点。结合持续进行的模型监控与维护,不确定性信号可以揭示不熟悉的情况、指导人工审核,并识别何时需要新数据或重新训练。









