← 返回工作台(制造人的AI手记)
PORTAL // HUANGFENG
📝 制造人的AI手记
🎯 核心工程问题与认知模型

“试纸准确率 90%,测出阳性时真患病概率为何只有 50%?平时刷题做对 90%,为什么一到考试依然崩盘?在企业级 Agent 底座中,我们为什么坚决用扎实的确定性贝叶斯算法打造掌握度服务?”

结合真实的大规模 K12 学情底座实践,探讨面对 100 多万条作答数据时,如何利用贝叶斯后验推断、题型证据权重折扣、时间遗忘衰减与置信度过滤,刺破 90% 正确率的虚假繁荣,建立科学的学情确定性度量衡。

家长和老师最关心的两个问题:孩子到底掌握了没有?薄弱点究竟在哪里?

>

很多家长看到孩子作业或刷题正确率达到 90%,心头大石落地,觉得“这个知识点肯定稳了”。
市面上很多所谓“AI 学情分析”也顺水推舟:把题库里的作答记录做简单汇总,做对 9 题就是 90% 掌握度,直接给孩子贴上“已掌握”的绿色标签。

>

但现实往往很残酷:平时作业正确率高达 90% 的孩子,一到期末考或综合大考,原本“标绿”的知识点依然大面积崩盘。90% 正确率的背后,究竟藏着多少假象?

>

之前我们在做 Agent-Base(企业级 AI 服务底座)架构时,在业务微服务区专门独立切出了一个 mastery-service。这个微服务绝不是一行代码都不写,相反,它用扎实的确定性数学逻辑和严密的贝叶斯算法,写透了证据清洗与状态更新,支撑着 9,000 多名学生、100 多万条真实作答数据的高并发核算。

>

这一篇,就来聊聊我们在 Agent 底座里跑过的这个掌握度算法,以及为什么“即便做对了 90%,从概率学上他也可能根本没掌握”。

01 一个反直觉的经典概率公案:试纸准确率 90%,检出阳性就真得病了吗?

要理解为什么“做对 90% 不等于掌握”,必须先看一个在概率学中极其经典、却严重违背常人直觉的事实:

假设某种疾病在人群中的真实感染率是 10%(基础患病率,即先验概率 P = 0.10)。

现在研发出一种检测试纸,它的标称检出准确率高达 90%:

现在,如果一个人去医院拿试纸自测,结果呈阳性。请问:他实际真得病的概率是多少?

绝大多数人的第一直觉脱口而出:“试纸准确率 90%,那我测出阳性,得病概率肯定也是 90% 吧!”

但只要用贝叶斯定理(Bayes' Theorem)在草稿纸上算一笔明白账,结果会让所有人大跌眼镜:

假设有 1,000 个人接受检测:

1真实患病的人占 10%,即 100 人:这 100 人里,试纸能准确抓出 90% 的阳性,也就是 90 人呈阳性;

2健康没有得病的人占 90%,即 900 人:这 900 个健康人里,有 10% 会被试纸误报成阳性,也就是整整 90 人健康却被误报为阳性!

现在,把所有被试纸检出阳性的人聚在一个房间里(90 + 90 = 180 人):

这 180 个拿到阳性报告的人里,真正患病的居然只有 90 个人!

他实际真患病的真实概率只有:

90 \div (90 + 90) = 50\%

一个标称准确率高达 90% 的试纸,在测出阳性时,真正的得病概率居然只有 50%——跟抛硬币的概率一模一样!剩下的一半全是被冤枉的假阳性!

这就是贝叶斯推断揭示出的残酷常识:如果未患病的基数足够大,哪怕微小的误报率(10% 假阳性),在绝对数量上也足以彻底稀释掉那些真实的阳性信号。

02 为什么刷题做对 90%,从概率上很可能依然是“未掌握”?

把上面这个医学检测公案,一模一样地套用到孩子的日常做题场景中,逻辑完全丝丝入扣。

孩子在系统里做一道题,本质上就是用这道题对孩子的认知状态做了一次“抽纸检测”:

一个完全没入门的学生,靠刷同类型的套路选择题连续做对几道、正确率冲到 90%,在数学上太容易发生了。

但如果你的学情系统天真地认为“做对 90% = 掌握 90%”,那就好比把上面拿到阳性试纸的人直接判定有 90% 概率患病一样荒谬——你把庞大的“猜对噪声”与“套路熟练度”,完完全全误判成了真正的认知掌握!

反过来,一个真正掌握了 90% 知识点的学生,在面对长试卷时,因为看错题干单位、算对最后抄错数字、手滑涂错卡产生的失误率(Slip),就是医学检测中的“假阴性”。如果因为错了一道题就粗暴地判定他“没掌握”,同样是一场冤案。

所以,我们在教育数据里反复验证过一个冰冷的结论:

做对不代表掌握,做错不代表不会。表面正确率只是极其粗糙的现象,贝叶斯后验概率才是认知的本质。

03 为什么在 Agent 底座里,我们要专门写一个 `mastery-service`?

在我们的 Agent-Base 企业级底座里,右边是庞大的大模型推理集群(Qwen3.6-35B 全精度与量化网关),负责图文多模态识别与启发式答疑;

但在业务微服务区,我们专门用 Go 和 Python 独立切出了一个 mastery-service(掌握度计算微服务)。

这个服务绝不是一行代码不写,相反,它内部包含了大量硬核的算法逻辑与状态机实现。它之所以独立存在,是为了守住底座的底线:学情判定是一笔极其严密的贝叶斯数学账,绝不能交给大语言模型去写 Prompt 瞎蒙。

在 mastery-service 中,一条作答记录推入后,必须经过四道硬核的数学过滤与状态迭代:

1. 贝叶斯知识追踪(BKT)的动态推断

在状态机内部,我们对每个知识点维护先验掌握概率 P(L)。当学生第 t 次作答产生结果时,算法结合两对核心参数计算后验概率:

如果作答正确,后验掌握概率更新公式为:

P(L | Correct) = \frac{P(L) \times (1 - P(S))}{P(L) \times (1 - P(S)) + (1 - P(L)) \times P(G)}

通过严谨的分母归一化,算法在数学上自然剔除了那 20%“蒙对”的水分。一道选择题做对,掌握度只会谨慎微调;而一道没有任何蒙题空间的复杂解答题做对,才能真正强力推动掌握度向上跃迁。

2. 主观题得分率的连续谱平滑

客观题是非黑即白的二值判断,但真实考试大多是综合大题。满分 12 分拿了 10 分,得分率 0.83。服务内部实现了从离散 BKT 向连续得分率的拓展,按步长将部分掌握程度如实计入状态天平,绝不搞一刀切。

3. 时间遗忘函数的半衰期衰减

很多人考前突击刷题,单元测试拿了 90%,但放完一个暑假全忘光了。如果系统依然显示“90% 掌握”,那就是系统在撒谎。

我们在状态机中注入了记忆遗忘曲线函数:设定合理的半衰期(如 180 天)。三个月没碰过的知识点,曾经的掌握概率会自动向初始基准平缓回落。时间本身就是带方向的物理证据。

4. 试题质量拟合:把低质试题踢出证据库

在算法核算之前,还有一道离线的数据清洗任务:用 100 多万条历史作答计算题目的区分度(Discrimination)与难度(Difficulty)。

如果一道题在全校无论尖子生还是落后生做,全员正确率都大于 95%(区分度几乎为 0),算法会自动将该题标记为“低信息量废题”,在核算掌握度时直接剔除——不让低效的刷题泡沫,稀释真实的掌握度。

结语:在狂热的生成式时代,敬畏确定性的数学

在今天的大模型浪潮中,有一种危险的倾向:似乎一切问题只要堆算力、喂 Prompt、让大模型端到端输出一个花哨的分析报告,就叫“智能化”。

但在真实严肃的工程与教育场景中,我们越实践越清醒:

大模型擅长的是发散、表达和人机互动,它不擅长严密的算账与概率归因。

用纯算法与确定性代码打造的 mastery-service,虽然没有生成式模型那些令人眼花缭乱的词藻,但它用最质朴的贝叶斯公式,守住了对真实世界的数据敬畏。

不被表面的“90% 正确率”所蒙蔽,看清运气与失误背后的真实信号——这份清醒,才是我们在 AI 时代应当寻得的“古道与正路”。