本节在评估章的第四站:诚实性。全册从 1.1 的"诚实边界"到 3.1 的"诚实性惩罚",都在讲它;这一节给一把尺。一个扎心的数字是:很多系统在答错时仍给出 0.9 的置信度——这种"自信地错"比"老实说不知道"更危险,因为它骗过了读者的校准。诚实不是态度问题,是可被量化的校准质量。
诚实性评估有三个抓手。一,置信度-准确率对齐:系统自报的置信度应与实际准确率贴近对角线,偏离越大越不诚实。二,不确定性表达:在证据缺口(4.2)处是否明说,而非模糊带过。三,对抗验证:往输出里埋可验证陈述,查它是否给得出支撑来源。下面用代码画一条校准曲线并算偏差。
# 置信度校准:自报置信 vs 实际准确率 偏差越小越诚实 def calibration_error(conf_pairs: list) -> float: # conf_pairs: [(自报0.9, 实际1), (自报0.9, 实际0), ...] err = sum(abs(c - a) for c, a in conf_pairs) / len(conf_pairs) return round(err, 2) # 运行示例:诚实系统 vs 过度自信系统 honest = [(0.9, 1), (0.6, 0.5), (0.3, 0), (0.8, 0.7)] overconf = [(0.95, 1), (0.9, 0), (0.85, 0), (0.95, 0.7)] print(calibration_error(honest), calibration_error(overconf)) # 0.13 0.78
运行输出 0.13 与 0.78。诚实系统校准误差低,过度自信系统高达 0.78——它几乎每次都高估自己。评估时这张曲线必须报,否则"准确率 90%"可能藏着"错的那 10% 它自信满满"。
我们主张:诚实性比准确率更该被优先优化。一个准确率 70% 但校准良好的系统,比准确率 90% 却过度自信的系统更安全——前者让你知道哪 30% 不可信,后者让你全盘误信。研究场景里,可信度排序往往比单点正确更重要。
不确定性表达怎么评?看知识空白(4.2)是否被显式说出。下面演示一个"诚实度标注"检查:报告每句结论若标了证据等级(3.4 的已印证/待验证/存疑),算诚实;否则算隐瞒。
# 诚实度标注检查:结论是否带证据等级 def honesty_tagging(report_lines: list) -> float: tagged = sum(1 for line in report_lines if any( k in line for k in ["已印证", "待验证", "存疑"])) return round(tagged / max(len(report_lines), 1), 2) report = ["产能翻倍(已印证,2源)", "成本下降(存疑,0源)", "结论:该技术可行"] # 第三句没标等级 print(honesty_tagging(report)) # 0.67
输出 0.67——两句标了、一句"该技术可行"光秃秃没等级,被扣分。强制每句带等级,是把诚实写进输出格式的硬手段,比靠模型自觉可靠。
完整案例:背景→操作→结果→解读→变式
honesty_tagging 强制每句结论标证据等级,并加置信度对齐监控。诚实性还有另一面:不是越不敢答越好。一个系统遇事就标"待验证"、把不确定闸门设到 0,结果每份报告全是"存疑",读者得不到任何可用结论——这是"过度谨慎"失败。校准的目标是贴合真相,不是无限压低置信。好比交通信号:红灯过多,路口虽安全却寸步难行。工程上应让闸门随场景浮动(呼应 5.3):法律医疗设低(易转人工),脑暴探索设高(鼓励给推断)。诚实的尺度是任务定的,不是一味越低越好。
落到实现,校准误差(本节代码)要持续监控而非一次性测。每次成稿后,把"自报置信"与"事后被验证结果"记入曲线,曲线漂移就说明模型漂移或数据分布变了,需重训或调提示。这把 3.1 的奖励塑形和 4.4 的评估连起来:训练时用诚实性惩罚,上线后用校准曲线守诚实性,两道闸一前一后。只训不守,模型在生产分布偏移后会悄悄变自信;只守不训,成本高且治标。
再说对抗验证的实操。往输出埋可验证陈述,最便宜的做法是用"可检索事实"(如"某法于某年生效"),再自动查源核对。若系统给不出源或源不支持,判不诚实。这类检查应作为回归测试每次发布跑一遍,而非偶发人工抽查。诚实性一旦可自动化验证,就从"价值观口号"变成"可交付质量属性"——这正是研究智能体能被企业采用的前提。
把诚实性落到团队流程,还有"免责声明"的设计。报告头部应有一段固定栏:覆盖时段、信源类型、未覆盖维度、置信总体。这段不占正文,却是读者第一眼判断"该信几分"的依据。我们建议它结构化而非散文——用字段而非段落,方便下游系统解析与比对。当一份报告头部写着"置信 0.6、未覆盖长期安全性",读者自然知道这是"可参考但别据此拍板"。诚实性最终落在外包装,不在内文修辞。
再补一个工程坑:校准曲线(本节代码)若只在发布时测一次,上线后分布漂移会让它失效。正确做法是把校准误差做成线上监控指标,每次成稿都记一点,曲线整体右移(更自信)或方差变大就告警。这和第 5 章"成本与质量监控"同源——把评估从离线体检变成在线脉搏。诚实性不是一次性认证,是持续体征。
诚实性还能接口到"监管报送"。金融、医疗等强监管领域,报告常要留痕备查。系统输出的不仅是报告,还有"置信日志":每条结论对应其证据链与自报置信,监管来查时能逐条复现"当时凭什么这么信"。这把 4.4 的校准从内部指标变成外部可审资产。我们主张置信日志和报告同生同存,不可只交报告不交日志——否则"诚实"只是形容词,日志才是名词。日志结构见 2.4 的字段化思路:每条结论可溯到命题、源、置信,审计即遍历。当诚实能被审计,它才从态度变成可交付的质量属性,这也是企业敢用的底线。
4.5 把前面四节的能力,合成一把总尺子。