Uncertainty Quantification
了解人工智能和机器学习中的不确定性量化,包括偶然不确定性和认知不确定性、校准、评估方法以及 Ultralytics YOLO 工作流。
不确定性量化(UQ)是估计、评估和传达 AI 或 机器学习 模型对其预测结果的不确定程度的过程。UQ 工作流不仅返回标签、数值或边界框,还提供诸如概率分布、预测区间、置信度分数或预测集等附加信息。这有助于用户不仅理解模型预测了 什么,还能理解对该预测应该投入多少信任。
Link to this section为什么不确定性量化很重要#
模型从有限的数据中学习模式,因此它们的输出永远无法做到绝对确定。输入可能存在噪声,标签可能含糊不清,生产数据也可能与训练分布不同。UQ 使这些局限性变得可衡量,并支持更安全的决策、人工审核以及更好的数据收集。
这一理念延伸了 NIST 虚拟测量计划 中所描述的表征模型质量的更广泛目标。在 AI 系统中,不确定性估计可以帮助团队:
- 当不确定性超过可接受水平时,拒绝或审查预测结果。
- 比较备选预测结果,而不是依赖单一答案。
- 识别不熟悉的输入和可能出现的 数据漂移。
- 通过 主动学习 优先为不确定的样本进行标注。
- 将不确定性传播到下游计算和决策中,正如美国能源部关于 计算模型中的不确定性 的概述所说明的那样。
当预测错误带来不等同的后果时,UQ 尤为重要。漏掉一个行人比错误检测到路边标志要严重得多,因此可接受的不确定性阈值取决于具体的应用场景。
Link to this section偶然不确定性与认识论不确定性#
这两个类别解释了预测不确定性的来源:
- 偶然不确定性(也称为随机不确定性),源于数据中固有的随机性或模糊性。运动模糊、传感器噪声、部分遮挡和不一致的标签会使图像难以解释,即使对于训练有素的模型也是如此。更多训练数据可能有助于估计这种不确定性,但它无法完全消除潜在的模糊性。
- 认识论不确定性源于模型知识的不完整。当训练数据不足、缺乏代表性或遗漏了重要情况时,它通常会出现。通过收集相关的示例、改进标注或更改模型,它通常可以得到降低。
UQ 将有关这些来源的信息组合成有用的输出。诸如 TensorFlow Probability 的概率建模工具可以将预测表示为分布,而 集成方法 则通过比较多个模型或训练运行来估计不确定性。较大的分歧通常表明更高的认识论不确定性。
不确定性与 置信度分数 相关,但范围更广。置信度描述单个预测的强度,而 UQ 评估该分数是否可靠以及哪些不确定性来源对其产生了影响。同样,保形预测 是一种在定义的假设下生成具有目标覆盖率的预测集或区间的特定技术。
Link to this section方法与评估#
常见的主流 UQ 方法包括概率输出、集成方法、重复抽样、贝叶斯建模和预测区间。自助法置信区间 通过重复重采样观测数据来估计变异性。对于分类任务,校准会检查被赋予约 80% 概率的预测在多大程度上大约有 80% 的时间是正确的。
模型可能很准确但校准不佳,因此团队应同时评估任务性能和不确定性质量。概率校准工具 使用可靠性图和校准技术来比较预测概率与观测结果。谷歌的 机器学习规则 也强调可解释的、受监控的概率预测。
有用的评估标准包括覆盖率、区间宽度、校准误差以及在困难数据切片上的性能。对于计算机视觉,Ultralytics 验证模式 和 YOLO 性能指标指南 有助于检查各个类和阈值下的精度、召回率、混淆矩阵和置信度行为。
Link to this section实际应用#
- 医学图像分析: 当多个似是而非的发现具有相似的分数,或者图像与其训练数据不同时,诊断模型可以标记扫描结果以供专家复查。如果没有这种上报机制,过于自信的错误预测可能会延误治疗。
- 制造视觉检测: 缺陷检测器可能会遇到强光、新材料或以前未见过的损坏。具备不确定性感知能力的路由可以将含糊不清的产品发送给人工检查,而不是自动接受或拒绝它们,从而减少漏掉的缺陷和不必要的浪费。
这些策略将模型不确定性与运营风险联系起来。NIST AI 风险管理框架核心 建议衡量不确定性、记录泛化限制,并在整个部署过程中监控系统。
Link to this sectionUltralytics 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 平台 来标注数据集、训练和部署模型以及监控端点。结合持续的 模型监控与维护,不确定性信号可以揭示不熟悉的情况、指导人工复查,并识别何时需要新数据或重新训练。






