尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

AI不确定性推理全解:从置信度校准到Agent工程落地

AI不确定性推理全解:从置信度校准到Agent工程落地 如果你的 AI 应用只在回答正确时被表扬在回答错误时无声失败那么“AI 不确定性推理”值得放进下一轮设计清单。过去一年大模型应用从“能不能生成”过渡到“能不能可靠地生成”。RAG、Agent、自动化流程越铺越多问题也随之暴露模型经常用非常确定的语气给出错误答案。于是“不确定性推理”这个偏学术的概念开始被 DeepMind 这类团队频繁带到工程讨论里。它听起来抽象但落到产品里其实很具体模型输出一个答案时能不能同时告诉系统“这个答案我有多大把握”。这次我们不聊单个工具而是把 AI 不确定性推理整个主题拆一遍。它到底在解决什么问题、有哪些主流方法、怎么用最少的改动接入现有系统、又该怎么评估它做了之后有没有用。如果你是做大模型应用、AI Agent 设计、RAG 工程化或模型评估的这篇文章可以直接收藏当作设计参考。维度说明本文主题AI 不确定性推理的概念、方法、工程落地与评估适合读者大模型应用开发、AI Agent 设计、RAG 工程化、模型评估与风控核心观点模型不仅要知道答案还要知道自己对答案的把握有多大可操作内容置信度校准、阈值设定、低置信度人工介入、评估指标与代码示例前置知识熟悉大模型 API 调用、Python 基本操作即可1. 为什么“不确定性推理”突然成为焦点先说结论大模型的能力已经够用但可靠性还不够。过去大家拼的是“模型能不能做”现在拼的是“模型做错的时候系统能不能及时发现”。这段时间关于 AI Agent、AI 大模型、AI 幻觉的讨论一直在升温。模型幻觉本质上就是一个过度自信的问题模型不知道答案但它不会说“我不知道”而是会按照概率分布编一个看起来合理的回答。传统软件不会犯这种错因为它要么返回结果要么返回异常。但大模型是概率模型它永远在推测。DeepMind 这类团队关注不确定性推理不只是学术兴趣。当 AI 系统被用到医疗辅助、金融决策、代码审查、自动驾驶等场景时一个错误答案的代价远大于“多问一次”的代价。让系统知道自己的不确定边界甚至比继续提升准确率更紧迫。对普通工程师来说这个趋势带来一个直接的影响评价 AI 应用的标准变了。过去看回答流不流畅、逻辑通不通现在开始看置信度、校准误差、失败率、人工介入率。如果你的 Agent 系统到现在还没有把“置信度”纳入决策后面会越来越被动。另一个现实因素是成本。大模型推理并不便宜Agent 系统一次复杂任务可能要调用几十次模型。如果没有不确定性信号系统只能不停重试或堆更多检索成本不断上涨。有了不确定性推理之后系统可以只对“低置信度结果”做额外处理把算力花在真正需要的地方。2. AI 不确定性推理到底在解决什么问题不确定性推理不是一个单一技术而是一套目标明确的方法集合。它要解决的核心问题是让模型在输出预测结果的同时给出一个可靠的置信程度估计并且让这个置信程度可以被下游决策使用。这里要先纠正一个常见误区模型输出的 softmax 概率不等于置信度。很多开发者在 ChatGPT 或开源模型返回结果里拿到一个概率值就直接当置信度用这是有问题的。概率分布受训练数据、温度参数、标签分布影响经常出现模型对错误答案给出 0.9 以上高概率的情况。校准的目标就是让“预测正确的频率”和“置信度数值”对齐。在工程上不确定性可以分成三类来看。类型来源能不能靠更多数据降低典型场景偶然不确定性数据本身存在噪声和歧义基本不能但可以估计图像模糊、语音嘈杂、文本含义多解认知不确定性模型没见过类似数据可以增加覆盖样本新领域、新格式、长尾问题分布外不确定性输入分布与训练分布不一致不能只能检测恶意输入、新任务、异常数据对实际业务来说最重要的是区分“模型不会但可以学”和“模型根本不该处理”。比如客户问答系统遇到一个从未见过的政策问题认知不确定性会很高这时应该转人工;遇到一个侮辱性输入分布外不确定性会很高这时应该拒绝回答而不是硬接。生成式模型比分类模型更麻烦。分类模型只要给类别加置信度生成模型要判断一整段文本的可信程度token 级别的概率加总并不能代表整段回答的可靠性。这也是为什么大模型时代的不确定性推理需要重新设计而不是把传统方法直接搬过来。3. 主流技术方法与研究路线把不确定性推理落地有几条已经相对成熟的技术路线。从工程成本和实现复杂度的角度可以分成三类训练时方法、推理时方法、后处理方法。3.1 训练时方法贝叶斯神经网络与变分推断贝叶斯神经网络不再给每个权重一个固定值而是给权重一个分布。推理时通过对权重分布采样得到预测分布方差大的部分自然就是不确定性高的区域。这个方法理论很漂亮但工程代价很大。训练成本高、收敛困难、推理时需要多次采样在千亿参数大模型上很难直接落地。目前更多出现在学术研究和中小规模模型中。3.2 推理时方法MC Dropout 与 Deep EnsembleMC Dropout 的思路是保留训练时的 Dropout 层推理时多次前向传播并收集结果用多次预测的方差估计不确定性。改动小只需要打开 Dropout 并重复采样。Deep Ensemble 则是训练多个模型推理时让它们投票用投票分歧度衡量不确定性。效果通常不错但训练和推理成本翻倍实践中多用于对成本不敏感的离线场景。这两种方法在深度学习的经典任务里验证比较多但到了大模型推理场景单次解码已经非常昂贵再乘上 N 次采样成本压力很大。3.3 后处理方法温度缩放与置信度校准温度缩放是目前性价比最高的校准手段。它不改模型结构只调整 softmax 前的 logits 分布。温度参数 T 大于 1 时概率分布变得更平滑;T 小于 1 时变得更尖锐。通过在一组验证集上搜索最优 T可以让模型的置信度更接近真实准确率。后处理方法的优势在于接入成本低适合已经上线、不方便重新训练模型的系统。对很多业务而言做一次温度缩放再配一个阈值就能明显改善低质量输出的拦截效果。3.4 分布无关方法Conformal PredictionConformal Prediction共形预测是近几年机器学习可靠性的一个重要方向。它不依赖太多模型内部信息只根据验证集上的残差分布构造一个预测集合保证集合覆盖真实答案的概率不低于指定水平。举例来说如果设定 95% 覆盖率模型会输出一个较小的候选集而不是单个答案。在医疗、法律等不允许漏判的业务里比较有吸引力。缺点是输出结果从单一答案变成集合需要下游业务重建交互逻辑。3.5 大模型时代的新方法语义熵与自一致性对生成任务OpenAI、DeepMind 等团队近年的论文都讨论过语义熵的思路生成多个候选回答按语义相似度聚类用类间的离散程度衡量不确定性。如果多个回答意思都差不多不确定性低;如果每个回答都不一样不确定性高。自一致性则更直接同一个 prompt 多次采样计算回答之间的相似度。这不需要模型内部结构只需要一次接口支持多次 generation。缺点是延迟和成本都上去了需要对采样次数做权衡。从公开讨论的倾向看DeepMind 这类团队更关心可解释、可验证的不确定性估计尤其是让估计结果能承担风险决策。对普通开发者来说真正的价值不是复现论文而是从中抽出能解决问题的模式。4. 工程落地的现实价值从评测到 AI Agent不确定性推理在业务里最直接的价值是让系统在不确定时知道该做什么。下面这张表可以帮团队快速找到切入点。应用场景不确定性信号用法落地收益客服问答低置信度时转人工减少错误回复提高满意度RAG 问答检索内容支撑不足时主动说明降低幻觉率AI Agent 执行任务关键动作前检测置信度避免错误操作代码自动生成对可疑代码标红并建议人工复核减少线下 bug内容审核对边界内容降低自动判级降低误判风险模型评测分析模型在哪些样本上过度自信指导数据补充方向RAG 系统是很好的落地点。很多 RAG 的幻觉并不是模型不行而是检索到的文档跟问题不匹配模型只能硬答。加入不确定性推理后系统可以在生成答案的同时评估“检索内容是否足够支撑该回答”不够就换一轮检索或直接说不知道。这比单纯加提示词约束有效得多。AI Agent 场景更复杂。Agent 在执行多步任务时常常要自己判断“下一步做什么”一旦判断错误后续步骤会全部偏掉。如果 Agent 在每步决策时都保留一个置信度信号低置信度时先向用户确认或请求更多信息整个系统的可控性会明显提升。很多 Agent 项目现在最缺的就是这一层“刹车机制”。模型评测也可以改。传统评测只对比 final answer 是否和参考答案一致完全不看模型是不是盲目自信。引入不确定性指标后可以从“错误但自信”和“错误但犹豫”两个维度分析模型行为更精准地定位问题数据。5. 一个可执行的最小落地框架如果不打算从零研究算法可以直接走一条成本最低的落地路径记录置信度 - 校准 - 设定阈值 - 接入决策。第一步在模型输出时拿到 raw logprob 或 score。不同模型供应商差异很大有的返回 logprobs有的只返回概率有的需要在参数里显式开启。以你实际使用的模型文档为准但核心思路是一致的把模型的内在置信度导出来。第二步用一小批历史数据做校准。最常用也最容易实现的就是温度缩放。下面是一个示意实现实际使用需要按你的模型输出格式调整import numpy as np from scipy.optimize import minimize_scalar # probs: 模型输出的概率shape (N, C) # labels: 真实标签索引shape (N,) def temperature_scale(logits, labels): # 首先把 logits 转成概率 def softmax_with_temp(logits, temp): scaled logits / temp exp_logits np.exp(scaled - np.max(scaled, axis-1, keepdimsTrue)) return exp_logits / np.sum(exp_logits, axis-1, keepdimsTrue) def nll(temp): proba softmax_with_temp(logits, temp) n len(labels) log_likelihood 0.0 for i in range(n): log_likelihood np.log(proba[i, labels[i]] 1e-12) return -log_likelihood / n result minimize_scalar(nll, bounds(0.1, 10.0), methodbounded) return result.x # 使用示例 logits np.random.randn(100, 10) # 示意数据 labels np.random.randint(0, 10, size100) best_temp temperature_scale(logits, labels) print(f最优温度: {best_temp:.3f})第三步画出校准前后的可靠性图。把样本按预测置信度分桶统计每个桶内的真实准确率。理想情况是桶内准确率等于桶的平均置信度。偏差越大说明越需要校准。第四步设置分档阈值。建议把置信度分成三档高置信度直接执行中置信度走简化校验低置信度进入人工或降级流程。def decide_action(confidence, high0.9, low0.6): if confidence high: return auto_execute elif confidence low: return light_check else: return human_review # 示例 print(decide_action(0.97)) # auto_execute print(decide_action(0.72)) # light_check print(decide_action(0.41)) # human_review第五步在 Agent 工作流里接入。关键是不要把不确定性只用于事后告警而要用在动作执行前。下面是一个简化示例展示 Agent 在执行高成本操作前先做一次置信度判断def agent_step(task, current_state, executor): # 获取模型输出及置信度 response, confidence executor.predict_with_confidence(task, current_state) if confidence 0.6: return { status: need_confirm, message: 当前信息不足以独立执行请确认后继续, draft_response: response, } return executor.execute(task, current_state, response)这套框架不依赖特定模型也不要求团队有很强的算法背景。核心资产是数据一是预测历史二是确认结果。跑一段时间后可以用真实反馈持续修正阈值。6. 怎么评估不确定性到底好不好用很多人做完校准就以为结束了其实只做了一半。不确定性推理要回答的问题是系统给出的置信度是否可信以及用它做决策是否真的降低了风险。不要只盯着准确率。下面几个指标更值得关注指标衡量内容适用场景ECE 期望校准误差置信度与真实准确率的平均偏差通用校准质量可靠性图分桶后置信度与准确率的关系曲线诊断校准错误模式AURC 曲线下面积在不同风险阈值下不确定性排序质量筛选高风险样本覆盖率预测集合覆盖真实答案的比例Conformal Prediction人工介入率系统触发人工审核的比例成本评估ECE 是最常用的指标。计算方法简单把所有样本按预测置信度划分为 M 个桶计算每个桶内置信度均值与准确率之差的加权平均。ECE 越低校准效果越好。def compute_ece(confidences, correct, num_bins10): bins np.linspace(0.0, 1.0, num_bins 1) ece 0.0 n len(confidences) for i in range(num_bins): in_bin (confidences bins[i]) (confidences bins[i 1]) if np.sum(in_bin) 0: continue bin_conf np.mean(confidences[in_bin]) bin_acc np.mean(correct[in_bin]) ece np.sum(in_bin) / n * abs(bin_conf - bin_acc) return ece评估时有一个容易忽略的问题业务风险并不是均匀分布的。对高风险场景比如金融交易或医疗建议低置信度错误和低置信度正确带来的影响完全不同。所以除了 ECE还要单独看“低置信度区间”的失败率和“高置信度区间”的误判率。如果高置信度区间仍然有高错误率说明校准还没做透或者数据分布已经漂移。另一个关键是做时间维度上的评估。模型可能因为 prompt 模板调整、上游数据变化、模型版本更新而改变置信度分布。建议每轮迭代都重新计算一次校准指标不要用一次校准结果撑很久。7. 落地中的坑与排查思路不确定性推理落地过程中问题通常不是算法不会写而是数据链路和业务对接不顺畅。下面列几个高频问题。问题现象可能原因排查方式解决方案API 日志里拿不到 logprob供应商未默认返回或参数未开启检查接口返回字段和服务商文档按文档开启 logprobs或用并发生成多次采样替代校准后置信度仍然虚高校准集太小或与线上数据分布不一致检查验证集样本来源和时间范围扩样本按业务线单独校准生成任务无法用分类校准一段文本没有单一置信度改用语义熵或多候选一致性多次采样用相似度衡量稳定度阈值定高导致人工介入率过高业务真实分布和假设不同统计置信度分布直方图先观察分布再定阈值避免拍脑袋batch 推理时不确定性被平均掉批量处理掩盖了单样本差异记录每条样本的置信度保留 per-sample 日志prompt 一改置信度分布就变提示词对生成概率影响很大记录 prompt 版本与置信度对应关系锁定线上 prompt变更时重新校准这里面最关键的一个原则是不确定性分数必须从生产环境里采集不能只在离线测试集上做。很多团队在公开 benchmark 上跑出很好的 ECE一上线就失效原因就是输入分布完全不同。建议找一条稳定业务线连续采集两到四周的真实请求和结果再做校准和阈值设定。另外要警惕一个陷阱把不确定性当成万能安全网。它只能告诉你“模型自己觉得不确定”但模型可能对错误答案非常自信。对高风险的决策场景仍需在业务规则、权限控制、人工审核上做多重保障。8. 什么时候不该上不确定性推理不是所有系统都需要立刻引入不确定性推理。如果资源有限先判断自己的业务是否满足下面几个条件中的至少一个错误答案会造成直接损失、错误成本明显高于“多问一次”的成本、业务需要自动化执行而非人工兜底。如果业务还处在创意生成、头脑风暴、文案草稿阶段对事实准确性要求不高那么对不确定性推理的投入可以排后。这类场景更看重生成多样性和流畅度加入太多置信度控制反而会限制模型发挥。如果团队连基础评测体系都没有也不建议直接引入。因为不确定性推理的产出是“置信度”但置信度本身需要靠评测体系来证明其有效。先跑通业务闭环把线上日志和标注积累起来再上这套体系会顺畅很多。还有一个成本提醒基于多次采样的方法例如自一致性和语义熵会把推理成本放大三到十倍。如果业务对延迟和成本敏感建议先试温度缩放和 logprob 阈值这类廉价方案不行再往上加复杂度。9. 最佳实践清单把这些实践沉淀成清单团队可以直接拿去对照执行。从最小的改动开始。先记录线上 logprob 或概率分数跑一周看分布不要一上来就上贝叶斯网络或多模型集成。不要直接把模型原始概率当置信度。先做校准哪怕只是温度缩放。为每个业务场景单独校准。客服和代码生成的数据分布不同共用一个校准参数会互相污染。给“不知道”留出口。产品设计上要有拒答、转人工、降级处理的路径不能让模型被逼着回答。把置信度纳入 Agent 的执行决策而不是只用它做事后分析。执行前拦截比执行后补救成本低很多。保存 prompt 版本、模型版本、置信度分数和最终结果的对照日志。这是后续迭代最重要的数据资产。对高风险场景构建“高置信度也需复核”的保障规则。不确定性分数不能替代权限控制和合规审查。批量任务要设计重试和熔断机制连续低置信度时暂停任务而不是继续硬跑。涉及人脸、声音、版权素材、个人隐私数据的场景必须先确认授权与合规要求。不确定性推理不能降低这些边界要求。发布前做效果复核尤其要检查高置信度区间的误判率不能只看整体准确率。10. 先做哪件事如果你只打算在这件事上投入一周时间建议按这个顺序执行。先导出 500 到 1000 条线上真实请求的模型输出和最终结果计算模型原始置信度与真实准确率之间的校准误差画一张可靠性图。接着对置信度分布做一次直方图统计确定高、中、低三档的合理阈值。然后接入一条最简单的业务线低置信度时触发人工确认或改用保守回复。最后观察人工介入率、错误率、用户反馈确认收益。这一套流程不依赖复杂算法也不需要重训模型但它在工程上补上了 AI 系统最缺的一块知道自己不知道。等这条链路跑顺再考虑语义熵、共形预测、多模型集成这些更重的方案。下一步可以继续观察的方向是大模型不断更新旧校准参数会随着模型版本迭代失效需要设计自动校准流水线Agent 任务越来越复杂不确定性信号需要跟规划、记忆、工具调用结合而不是孤立使用多模态输入增多之后不确定性的来源会从文本扩展到图像、语音衡量方式需要重新设计。这些方向每一个都值得单独建工程来做但前提都是先把今天的置信度采集和校准基础打好。
返回列表