演示环境里,你让模型在给出答案的同时返回一个置信度分数。它说0.93。你写下 if confidence > 0.9: auto_approve(),然后继续往下做。
![]()
到了生产环境,那个数字只是又一段生成的文本。没有人拿它和真实结果对照过。它看起来像概率,格式像概率,你的代码也把它当概率用。虚假的精确就是这样变成自动化的风险。
一个置信度分数要配得上"置信"这个词,前提是它经过校准:在所有系统说约90%的案例里,大约90%确实是对的。在你用自己的数据验证这一点之前,那个数字只是装饰。
失效模式一:从未被测试过的阈值
设想一个团队把发票分类交给大模型,凡是高于0.9的一律自动处理。在他们的评估集上,准确率是94%,看起来很好。
他们从未测量的是:在大于0.9这一档内部的准确率。等到有人真的切开来看,高置信度档几乎并不比低置信度档更好。模型对几乎所有输入都吐出0.9以上。这个阈值没有过滤掉任何东西,它只是一枚带小数点的橡皮图章。
失效模式二:一个准确率数字掩盖了两套系统
如果你的系统可以转交——交给人工、请求澄清、回退到规则——那你评估的就不是一个数字,而是一组权衡:
- 覆盖率:系统给出回答而非转交的频率有多高?
- 选择性准确率:当它回答时,答对的频率有多高?
把阈值调高,覆盖率下降,选择性准确率(但愿)上升。它是否真的上升,才是全部问题所在。测量这件事的最小版本是:按阈值扫描,统计每个阈值下的覆盖率与选择性准确率;再按置信度分箱,对比每箱里"声称的置信度"与"实际的正确率"。如果你关心的那些箱里,声称值和实际值开始分道扬镳,你的阈值就在骗你。
失效模式三:全局阈值
即便是校准过的分数,也可能在平均意义上校准良好,却在所有真正重要的地方都失准。设想一个场景:总体上,0.9这一档有91%正确。按语言拆分,英文工单在95%,希腊语和德语的工单则低得多。按输入质量拆分,干净的PDF没问题,扫描后经OCR处理的则一塌糊涂。
一个阈值横跨所有这些,恰好把你搭建转交路径本就是为了接住的那类失败给平均掉了。按切片分别跑同一条曲线:如果曲线差异明显,你就需要分切片阈值,或者干脆不要再信任该切片上的这个分数。
失效模式四:口头表达的置信度与实测的置信度
问模型"你有多确定",和读取token的对数概率,是两种不同的信号,而且两者默认都没有校准。尤其是自我报告的数字,往往聚集在圆整、让人安心的数值上。任何来源的置信度——口头的、对数概率的、集成一致性的、独立验证器的——都应当被当作一个待检验的假设,而不是可以直接消费的事实。
换个框架
置信度不是模型的属性,而是系统的属性,必须由你来测量。真正的问题不是"模型觉得自己确定吗",而是"系统决定继续执行,在这个任务上、这个语境下、这类输入上,可靠吗"。
落地清单:
- 记录每一次决策,连同它的置信度、切片元数据和最终的真实结果。
- 绘制覆盖率与选择性准确率的关系,全局一份,每个切片一份。
- 检查阈值实际所处区间内的校准分箱。
- 当模型、提示词或输入分布发生变化时,重跑一遍。校准熬不过一次模型替换。
你如何判断自己的大模型流水线何时可以不经人工直接行动?真的有人在生产环境里跑分切片阈值,还是大家都还在用单一全局截断?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.