教学系统最危险的错误不一定是报错,而是用一个看起来完整的答案掩盖证据缺口。没有作答数据时显示“薄弱”,教材未命中时编造引用,记忆服务不可用时悄悄回退旧记忆——这些行为都让界面更顺滑,却让教师失去判断真实状态的能力。
TeachFlow 因此把“我不知道”拆成不同机器状态,而不是一个笼统的失败提示。
五种不确定性,五种下一步
unknown:缺少足够学习证据。
它不等于学生不会。系统应提示收集首条正式证据,而不是把学生放进“薄弱”名单。
no-match:输入存在,但目录中没有可靠匹配。
例如教材映射或知识点匹配只能在规范全名确定命中时给出建议;没有命中就留空,等待教师选择,而不是让模型凑一个最像的节点。
unavailable:依赖暂时无法访问。
Foundation Memory 不可用时,客观图谱结果仍可保留,个性化依据标为暂不可验证并允许重试;不能静默回退到另一套旧权威。
stale:结果曾经有效,但前提已经变化。
旧课程图版本、旧提案聚合值或过期 preview 都必须在提交时被拒绝。它们不是“稍微旧一点的建议”,而是不能再作为当前写入依据。
拒答或 abstention:系统在风险过高时主动不作结论。
这可能来自模型,也可能来自业务规则。例如输出缺少必须字段、证据来源不满足白名单,或者权限作用域无法确认。
拒答不是失败率的另一种名字
选择性分类研究把“拒绝一部分输入”视为风险—覆盖率的权衡:系统覆盖越多,不一定越好;允许在不确定样本上 abstain,可以降低被覆盖样本的错误风险。这个研究结论来自分类任务,不能直接证明教育系统的最佳阈值,但它提供了一个重要视角:覆盖率本身不是唯一目标。
在 TeachFlow 中也一样。若知识点映射的自动覆盖率从 80% 提升到 100%,但最后 20% 是猜出来的,那么更高的覆盖率反而降低了数据可信度。真正应该同时观察的是:
- 自动覆盖了多少;
- 覆盖部分的错误成本;
- 被拒绝样本是否给出了明确人工路径;
- 重试是否可能改变结果;
- 拒答有没有被界面误写成普通低分。
状态必须决定行动
不确定性只有进入工作流才有价值:
| 状态 | 用户看到什么 | 可以做什么 | 不能做什么 |
|---|---|---|---|
unknown | 证据不足 | 收集正式作答 | 归类为不会 |
no-match | 暂无可靠匹配 | 人工选择或补目录 | 自动发布映射 |
unavailable | 个性化依据暂不可验证 | 保留客观结果、重试 | 回退旧权威 |
stale | 前提已变化 | 刷新并重新预览 | 沿用旧提交 |
| abstain | 当前无法安全判断 | 补输入或转人工 | 伪造确定答案 |
这个表也是错误设计的验收表。若所有状态最后都变成“请稍后再试”,系统仍然没有表达不确定性。
最小反例
假设学生只有一次被提示后的正确作答。如果系统把它显示为 0 分,是把未知和错误混在一起;如果显示为 secure,是把单次结果和稳定掌握混在一起;如果完全隐藏,是把数据缺口交给教师猜。
更可信的表达是:当前有一条提示依赖的正确证据,尚不足以判断独立掌握;下一步提供同知识点的独立迁移题。这里的“不知道”已经包含证据、边界和行动。
当前边界
TeachFlow 目前在学习状态、教材映射、Memory-first 和 stale proposal 等路径中实现了部分明确语义,但还没有一份覆盖所有 API、UI 文案和模型拒答的统一状态注册表,也没有真实用户研究证明教师能准确理解这些差异。本文总结的是现有设计方向,不应被描述成已完成全产品不确定性治理。
常见问题与设计边界
拒答太多会不会让产品不可用?
会,所以必须观察风险—覆盖率,同时给被拒绝样本提供低成本的人工作业路径。目标不是拒答最多,而是在错误成本和处理成本之间找到边界。
unknown 和 0 分有什么区别?
0 分需要一条可确定评分的失败证据;unknown 表示没有足够合格证据。二者会触发完全不同的教学动作。
为什么 unavailable 时不能回退旧数据?
因为旧数据可能已经被撤销、越权或语义过期。除非回退源与主权威有明确一致性合同,否则“保持可用”会变成使用错误依据。
参考资料
- NeurIPS 2017:Selective Classification for Deep Neural Networks
- NIST AI RMF 1.0
- TeachFlow
README.md、DESIGN_DECISIONS.md
结论
“不知道”不是一句谦虚文案,而是一组必须影响权限、状态和下一步动作的产品语义。可信系统不追求每次都回答;它追求在能回答时说明依据,在不能回答时说明缺什么,并且不让一次降级悄悄改写事实。