置信度分层与 Human-in-the-loop
这套设计的起点是一个很朴素的问题:如果不知道哪些输出是错的,能不能先判断哪些是「有把握」的?
答案是能,但要成立有一个前提条件——置信度分数本身得可信。这一篇先讲这个前提(校准与区分度),再讲怎么用它搭建三层路由。
形式化:选择性预测
这套机制在机器学习里有正式名字:选择性预测(Selective Prediction)——给模型装一个「拒绝选项」,置信度低于某个校准过的阈值时弃权。
形式化:基分类器
两个核心指标
| 指标 | 定义 | 含义 |
|---|---|---|
| 覆盖率 Coverage | 选择作答的那部分输入的比例 | 自动化处理了多大的量 |
| 风险 Risk | 只在被接受的子集上计算错误率 | 自动作答的准确度有多可靠 |
关键在「只在被接受的子集上算」——这就是为什么弃权能提高「作答部分的准确率」:你并没有让模型变准,只是把最可能错的那部分挪出了统计范围。
阈值降低 → 覆盖率上升,风险也上升。 这条权衡曲线(risk–coverage curve)下面的面积是 AURC,越低越好。
AURC 不适合当单一标量指标用——它**对模型的整体准确度敏感**。模型整体更准会自然压低 AURC,所以拿 AURC 横向比较不同模型时要小心。
前提拆成两个正交的轴
「置信度分数得可信」这句话其实包含两件不同的事,混在一起就没法诊断:
| 轴 | 回答什么 | 指标 |
|---|---|---|
| 校准(Calibration) | 说 70% 的时候,是不是真的有 70% 正确 | ECE |
| 区分度(Discrimination) | 能不能把对的排在错的上面 | AUROC |
校准:ECE
定义:一个完美校准的模型,输出 70% 置信度时应该正好在 70% 的情况下正确。
ECE(Expected Calibration Error) 的算法是:把所有预测分成 M 个等宽箱(常用 M=15),计算每个箱内「准确率与置信度之差的绝对值」,再按箱内样本数加权平均。
工程上常用的判据是 ECE < 0.05 视为良好校准。
三种后验校准方法:
| 方法 | 做法 |
|---|---|
| Platt Scaling | 在原始 logits 上拟合一个逻辑回归,平滑概率估计 |
| Isotonic Regression | 非参数方法,学习从分数到校准概率的单调映射(不假设函数形状) |
| Temperature Scaling | Platt scaling 的单参数变体:把所有 logits 除以一个学到的温度 |
Temperature Scaling 的性价比最高——只有一个参数,却直接控制了喂给弃权判断门的原始置信分数。
区分度:AUROC
AUROC 衡量模型区分「正确预测」与「错误预测」的能力。
AUROC = 85% 的意思是:模型在 85% 的情况下,给正确预测分配了比错误预测更高的置信度。
注意这跟校准完全是两件事:
- 一个模型可以校准很差但区分度很好——它所有分数都偏高一截,但相对排序是对的(弃权判断照样能用)
- 也可以校准还行但区分度很差——分数分布很准,但对错混在一起排不开(弃权判断就废了)
对弃权机制来说,区分度是更本质的那一轴——因为这个机制依赖的是「谁比谁更值得信任」这个排序,不是绝对数值。
一个额外的指标
SAC(选择性准确度约束):在给定准确率阈值下可达到的最大覆盖率。它比覆盖率更贴近实际问法——「我要求自动作答的部分准确率不低于 95%,那最多能自动处理多少比例?」对风险敏感的应用,这个指标比 AUROC 更直接。
「置信度分数得可信」包含两件不同的事,混在一起就没法诊断。
区分度好 区分度差
校准好 ┌────────────────────────┬────────────────────────┐
│ 理想状态 │ 分数分布很准, │
│ 分数既准、排序也对 │ 但对错混在一起排不开 │
│ │ └─ 弃权判断就废了 │
├────────────────────────┼────────────────────────┤
校准差 │ 所有分数都偏高一截, │ 最差 │
│ 但相对排序是对的 │ │
│ └─ 弃权判断照样能用 │ │
└────────────────────────┴────────────────────────┘
两轴的指标不同
校准 Calibration 说 70% 的时候是不是真的有 70% 正确 → ECE
区分度 Discrimination 能不能把对的排在错的上面 → AUROC
对弃权机制来说,区分度是更本质的那一轴
因为它依赖的是「谁比谁更值得信任」这个排序,不是绝对数值。置信度信号从哪来
基线:MSP
最简单的做法是最大 softmax 概率(MaxProb / MSP),
但它有个出名的缺陷:现代深度网络对分布外(OOD)输入异常过度自信,会给完全无意义的数据打高分。所以 MSP 作为 OOD 检测信号不可靠。
更好的信号:
| 信号 | 依据 |
|---|---|
| Energy-based | softmax 分母的负对数——比 MSP 更可靠的 OOD 检测信号 |
| Mahalanobis 距离 | 在特征空间里算类条件高斯距离,不确定性估计优于原始 softmax |
| MC Dropout | 推理时保持 dropout 活跃,跑多次随机前向得到预测分布 |
MC Dropout 的 10–50 次通常就够。它还把不确定性拆成了两类:
- 认知不确定性(Epistemic):由 MC 样本间的方差捕获——高方差说明模型对这个输入缺乏知识
- 偶然不确定性(Aleatoric):数据本身固有的噪声
工程上真正好用的信号:一致性
上面这些都是模型内部信号。在 LLM 场景里还有一个不需要 logprobs 就能拿到的信号——多次采样的一致性:
Prompt Engineering 里的 Self-Consistency 本来是用来提准确率的(采样 k 条路径多数投票)。但它顺带给出了一个天然的不确定性度量:多数票的比例就是置信度——10 条路径里 9 条同意,远比 5:5 更可信。
这个信号的好处是它不依赖模型暴露 logprobs,也不需要校准层,代价只是多跑几次采样。
置信度信号按「需要拿到什么」分层。
① 基线:MSP(最大 softmax 概率)
max_y P(y|x) < τ 就弃权
└─ 出名的缺陷:现代深度网络对分布外(OOD)输入异常过度自信,
会给完全无意义的数据打高分 → 作为 OOD 检测信号不可靠
│
▼
② 更好的模型内部信号
Energy-based softmax 分母的负对数 —— 比 MSP 更可靠的 OOD 信号
Mahalanobis 在特征空间里算类条件高斯距离
MC Dropout 推理时保持 dropout 活跃,跑多次随机前向
└─ 10–50 次通常就够
└─ 把不确定性拆成两类:
认知不确定性 = MC 样本间的方差(高方差说明缺乏知识)
偶然不确定性 = 数据本身固有的噪声
│
▼
③ 工程上真正好用的:一致性
多次采样的一致性 —— 不需要 logprobs 就能拿到
└─ Self-Consistency 本来是用来提准确率的(采样 k 条路径多数投票),
但它顺带给出了一个天然的不确定性度量:
多数票的比例就是置信度 —— 10 条里 9 条同意,远比 5:5 更可信
└─ 好处:不依赖模型暴露 logprobs,也不需要校准层,
代价只是多跑几次采样
阈值 τ 怎么定:在留出的验证集上按「覆盖率 vs 选择性风险」的偏好调。
没有普适值 —— 它取决于你能接受多少人工介入量,以及误判的代价。阈值 怎么定
在留出的验证集上按「覆盖率 vs 选择性风险」的偏好调。这里没有普适值——它取决于你能接受多少人工介入量,以及误判的代价。
与相邻概念的分工
三个机制经常被混为一谈,它们解决的是相邻但不同的问题:
| 选择性预测 | Conformal Prediction | OOD 检测 | |
|---|---|---|---|
| 主目标 | 通过弃权优化准确率-覆盖的权衡 | 产出有有限样本覆盖保证的预测集 | 识别与训练分布语义不同的输入 |
| 拒绝判据 | 置信度低于校准过的阈值 | 非一致性分数超过分位数阈值 | 密度或能量分数低于分布内边界 |
| 输出 | 类预测 或弃权决定 | 预测集(可能为空或多类) | 二元:分布内 / 分布外 |
| 形式化 | 成本敏感的分类问题 | 无分布假设的框架 | —— |
现代系统通常是组合的:
先用 energy-based 或 Mahalanobis 分数过滤 OOD 输入
↓
再对剩下的分布内数据应用校准过的置信度阈值为什么要分两步:OOD 输入的问题是「模型对它过度有把握但完全错了」,而不是「模型对它没把握」——MSP 在这类输入上给高分,所以纯阈值方案拦不住。必须先有一层 OOD 检测,退掉那些「自信的胡说」。
形式化上,理想的拒绝策略是 Chow's Rule:比较最大后验概率与成本比阈值来最小化期望风险。有些架构更进一步,加一个显式的「弃权」输出类。
三个机制经常被混为一谈,它们解决的是相邻但不同的问题。
选择性预测 Conformal Prediction OOD 检测
主目标 通过弃权优化 产出有有限样本 识别与训练分布
准确率-覆盖的权衡 覆盖保证的预测集 语义不同的输入
拒绝判据 置信度低于 非一致性分数超过 密度或能量分数
校准过的阈值 分位数阈值 低于分布内边界
输出 类预测 或 弃权决定 预测集(可空或多类) 二元:内 / 外
形式化 成本敏感的分类问题 无分布假设的框架 ——
现代系统通常是组合的
先用 energy-based 或 Mahalanobis 分数过滤 OOD 输入
│
▼
再对剩下的分布内数据应用校准过的置信度阈值
为什么要分两步
OOD 输入的问题是「模型对它过度有把握但完全错了」,
而不是「模型对它没把握」—— MSP 在这类输入上给高分,
所以纯阈值方案拦不住。
└─ 必须先有一层 OOD 检测,退掉那些「自信的胡说」
形式化上,理想的拒绝策略是 Chow's Rule:
比较最大后验概率与成本比阈值来最小化期望风险。
有些架构更进一步,加一个显式的「弃权」输出类。三层路由
把上面的零件拼起来就是本专栏开头描述的那套结构:
┌→ 高置信度 → 自动执行
Input → Rule Engine ┤
└→ 低置信度 → LLM Review
│
┌───┴───┐
↓ ↓
高置信度 低置信度
↓ ↓
执行 Human Review高置信度的典型特征:字段完整、字段一致、页面类型已知、Button Role 已知、Button Label 命中规则、历史上大量验证通过。
低置信度的典型特征:未知页面、未知 Label、多个候选 Button、字段冲突、历史上出现过错误。
注意最后两条——历史表现本身就是置信度信号。这与 Rule 与 LLM 的边界 里的规则冲突处理连起来:规则没命中、语义判断也不确定时,该走的是降级路径而不是猜。
核心思想一句话
减少 Human 需要 Review 的数据量,而不是消灭 Human。
这也解释了三层而不是两层的原因:如果只有「自动执行」和「人工」两级,那么所有低置信度都要直接找人,人工量降不下来。中间插一层 LLM Review,是拿模型去消化掉那些「规则不确定、但模型看得懂」的部分。
从线上反哺
Human Review 最终产出的是三元组:
Input + System Output + Correct Output进入 Case Repository(失败案例库)后定期聚类,按错误类型归并:
Button Semantic Error
Missing Field Error
Page Type Error
Rule Conflict
Unknown Case再走:Failed Cases → LLM Analyze → 生成候选规则 → Regression Test → 人工 Review → Rule Update。
这条链路有三处设计要点,都在 LLM Evaluation 与反馈闭环 里展开:
- 聚类是必须的一步——否则是逐个案例打补丁,规则集会越来越碎
- 生成的候选规则必须过 Regression Test——这是防止「修一个坏三个」的唯一机制
- 规则更新前仍要人工 Review——因为改规则的影响范围超出单个案例
Human Review 产出的是三元组,反哺链路有两段。
Input + System Output + Correct Output
│
▼
Case Repository(失败案例库)
│ 定期聚类,按错误类型归并
▼
Button Semantic Error / Missing Field Error /
Page Type Error / Rule Conflict / Unknown Case
│
▼
Failed Cases ──▶ LLM Analyze ──▶ 生成候选规则
│
▼
Regression Test
│
▼
人工 Review
│
▼
Rule Update
三处设计要点(都在 LLM Evaluation 那篇展开)
① 聚类是必须的一步 —— 否则是逐个案例打补丁,规则集会越来越碎
② 候选规则必须过 Regression Test —— 这是防止「修一个坏三个」的唯一机制
③ 规则更新前仍要人工 Review —— 改规则的影响范围超出单个案例一条研究层面的旁证
一项对 523 个 ImageNet 分类器的大规模研究里有两个值得记的发现:
- 知识蒸馏在所有不确定性估计指标上都能持续改进,且与蒸馏的具体形式无关
- 温度缩放不只改善校准(降 ECE),还显著增强了 AUROC 和选择性预测性能
第二条印证了前面那句「校准和区分度是两轴」——它们相关但不重合,一个手段可以同时改善两侧,但测量时必须分开测,否则你不知道改善的是哪一侧。
相关
- Rule 与 LLM 的边界 —— 边界画不清时的降级路径
- LLM Evaluation 与反馈闭环 —— 从 Bad Case 反哺规则的完整闭环
- Prompt Engineering —— Self-Consistency 作为一致性信号的来源
- 采样参数 —— 一致性与温度的关系:温度高则多样性高、一致性信号变弱
参考
- https://inferensys.com/glossary/preemptive-algorithmic-cybersecurity/ai-guardrail-architectures/selective-prediction 、https://inferensys.com/glossary/algorithmic-trust-and-authority-signals/confidence-calibration/selective-classification
- https://www.alphaxiv.org/zh/abs/2302.11874
- https://ar5iv.arxiv.org/html/2409.18645
- https://www.alphaxiv.org/zh/abs/2302.11874
YJ