构建面向合规培训的自适应学习AI Attest,让我明白护城河不在模型,而在那道只认证已证明掌握度的确定性门控。
Knowledge TracingMachine LearningCorporate Training

我的知识追踪AI想认证一个刷通课程的学员。我写的代码拒绝了。

Ashutosh SinghalAshutosh Singhal2026年7月4日13 min

两名员工,两个一模一样的绿色对勾,而其中一个是假的

我第一次把两份记录并排放在一起时,对勾看起来一模一样,而这正是问题的全部。一位在岗八年的资深BSA分析师,与一位调岗才六个月的分行经理,刚刚都「完成」了同一门四小时的反洗钱资格重新认证。他们的学习管理系统(LMS)对两人都报告了同一件事:一个绿色对勾、「SCORM Completed」、搞定。其中一人能闭着眼睛做完可疑活动调查。另一人却恰恰在监管机构真正关心的那些概念上存在真实缺口。本应证明他们具备合规工作资质的那套系统,却无法把他们区分开来,因为它从未在衡量他们知道什么。它衡量的是视频是否播完。

这道鸿沟绝非学术空谈,而构建这个演示迫使我始终把利害摆在眼前。美国企业每年在企业培训上大约花费1028亿美元,折合约每位学员874美元(《培训杂志》,2025年),而整整四分之一的学习与发展(L&D)负责人表示,他们无法衡量其中任何一项是否奏效。在受监管的工作中,这道鸿沟在公开记录上标有价码。道明银行(TD Bank)因反洗钱项目不到位等原因承担了31亿美元的罚款。自2026年8月2日起,《欧盟人工智能法案》(EU AI Act)第4条开始强制执行基于岗位的AI素养要求,罚则最高可达3500万欧元或全球营收的7%。在上述每一个案例里,「Completed」记录作为证据一文不值,因为完成度从来不是胜任力。

系统衡量的不是他们是否学会了。它衡量的是视频是否播完。

我做了一个名叫Attest的演示,想看看能否诚实地弥合这道鸿沟。你可以在veriprajna.com/zh-Hans/demos/adaptive-learning-ai。这篇随笔谈的是构建过程中真正让我意外的那部分,而那并不是模型本身。

Attest仪表盘显示一位资深BSA分析师和一位分行经理都完成了同一门反洗钱课程、拿到了相同的SCORM完成对勾,上方写着「同一门课,同一个对勾,但胜任力也相同吗?」
两名学员,同一门课,同一个绿色对勾。LMS把他们读成一模一样。Attest读的是底层的概念级掌握度,得到的却是不同的答案。

我真正着手要建的,是一个知道每个人究竟懂什么的模型

我从每一个「自适应学习」推销话术都会开始的地方起步,然后把其中大部分丢掉了。大多数自称自适应的产品,底层跑的其实是协同过滤:「像你这样的人接下来上了课程X。」那不过是披着学位袍的推荐引擎。它知道相似学员做了什么。它完全不知道你本人具体理解了什么。Cornerstone在2026年3月上线的「Adaptive Learning Agent」仍然是这种做法。我不想要一个更好的推荐器。我想要的是一个读取单个人的原始交互流、并逐个概念推断其真正掌握了什么的模型。

那是一个真实而古老的研究问题,叫作知识追踪,而诚实的版本是一个transformer,不是测验平均分。我训练了一个自注意力知识追踪模型SAKT,大约119,809个参数,小到足以在CPU上九十秒内训完并缓存。它回放每位学员的交互序列,并为课程中十八个概念各自输出一个掌握概率。在我们植入种子的合成知识追踪基准上,它达到了留出集AUC为0.8315,下一步准确率为0.771。基准数据由一个完全不同的模型族生成(表现因素分析Performance Factors Analysis,一种经典逻辑回归模型),因此transformer并不是在给自己的假设打分。外部对照方面,公开ASSISTments数据集上已发表的SAKT结果大约在0.80左右(Pandey与Karypis,2019年)。我的结果落在同一区间。

我为那个数字感到骄傲。我以为那个数字就是产品本身。只需要一名学员,就向我证明了事实并非如此。

然后我喂给它一个把整门课都刷通关的人

击碎我信心的那名学员是队列里的第三位,一名运营助理,他用AI助手自动答完了整个模块。看看我的模型对他做了什么。一个概念接一个概念,SAKT推断都很高:SAR危险信号识别0.927,基于贸易的洗钱0.95,代理行风险0.992,强化尽职调查触发条件0.994。几乎处处完美。若我信任这个模型,我会认证全部十八个概念,并递给这个人一份干干净净、签过字的合规记录。

问题是,这份掌握是假的。答案在十八个互不相关的概念上又快又完美,这种反应时间分布与真正的回忆不一致。真正的专家在某些事上很快,在另一些事上很慢。这种模式却处处平坦、快得不可能,那是答题钥匙的特征,不是记忆的特征。我那个精心打磨的0.83 AUC模型看着一份答题钥匙,却看见了一位明星学员。

我的模型不只是没发现刷分。它恰恰在错得最离谱的地方最自信。
Attest针对运营助理的实时流水线:显示很高的SAKT掌握分数,随后胜任力门控标记证据,凭证被WITHHELD——十八项中零项获认证
实时运行。SAKT推断出很高的掌握度(0.927、0.95、0.992),随后胜任力门控标记「在18个互不相关概念上近乎完美的准确率与难以置信的快速反应时间」,凭证被扣留:18项中0项获认证。

正是那一刻,这篇随笔对我来说变成了真的。一个更好的模型在这里救不了我。一个在更干净数据上训练、更准确的transformer,看着同样又快又完美的答案,会更加确信这个人已经掌握了一切。失败并不是准确度不够。而是我让一个概率模型做出了模型本不该独自做出的决定。

为什么不干脆训练模型去抓住它?

我的第一反应是错的,我想诚实地交代我为此浪费掉的那一天。我试图让模型本身对刷分更具鲁棒性。加入反应时间特征,训练它不信任难以置信的快速序列,教transformer保持怀疑。这是个诱人的计划,因为它把一切都留在同一个优雅系统里,而我喜欢优雅系统。但它行不通,原因是我花了比应有时间更久才接受。凡是你教会模型去检测的东西,在你未曾预料到的情形里,你也教会了它自信地出错。模型的全部工作就是泛化与平滑。治理决策需要的恰恰相反:它必须在恰好正确的地方变脆,并拒绝。

于是我停了下来,把决策完全移出模型。模型只提供建议。纯确定性代码做决定。SAKT推断跑完之后,一段我称为胜任力门控的纯Python逻辑做出认证与否的裁决,模型无法覆盖它。门控只有在三件事同时成立时才认证一个概念:掌握度达到或高于0.747,背后至少有三次真实交互证据,且反应模式不异常。三条件任一失败,该概念就不获认证。它被标记为「需要证明」,学员得到的是验证挑战,而不是对勾。

当门控审视这名运营助理时,它做了我的模型做不到的事。它把证据标记为异常,拒绝了每一个概念,并认证了十八项中的零项。座位时间被扣留,等待验证。

针对用AI刷分学员的胜任力门控明细表:十八个概念每一项都标为NEEDS PROOF,尽管掌握概率接近0.98和0.99,依据注明证据被标记为与真正回忆不一致
门控的裁决,逐概念呈现。每一行都显示很高的掌握P(0.98、0.99),而每一行仍然显示NEEDS PROOF,因为证据被标记了。模型建议认证;代码拒绝了。

我想谨慎地框定这一点,因为我给自己写的简报对此很谨慎。这不是一个带命中率的作弊检测器,我也从不把它呈现成那样。它是针对一名说明性学员的治理结果:因证据不足以认证而扣留了概念。重点不是「抓到你了,你作弊了。」重点是Attest只认证它能证明的东西,并对其余部分保持诚实。

智能体提供建议,代码做决定,而那条分界线后来证明是承重的

我不断回到那份劳动分工,因为到我做完时,它已是整个架构,而不只是一句口号。Attest里恰好有两处运行智能且概率性的东西,而这两处都只提供建议。一个LLM智能体(基于Pydantic AI构建,默认使用claude-opus-4-8)做概念标注,把一门扁平的「反洗钱培训」课程拆成十八个概念的分类体系:CDD、SAR叙述、结构化交易检测、OFAC筛查,以及其余各项。那一步标注,正是业界会告诉你导致自适应学习项目夭折的最大单一原因,它确实很难,但它是建议性的。SAKT模型推断掌握度,同样是建议性的。每一个真正要紧的决定——学员走哪条路径、什么获认证——都由确定性代码做出,没有任何模型能把它说通。

排序器是那套代码的另一半,也是钱藏在哪里的地方。按概念:若掌握度达到或高于0.67,学员跳过或仅做验证;介于0.38与0.67之间,他们留在心流区;低于0.38则获得支架。那些切点不是我凭感觉挑的数字。它们对照已标注队列做了交叉验证,仓库还附带五折A/B测试,表明它们优于手设回退方案,同时保持决策含义不变。把这套逻辑跑在资深分析师身上,她几乎跳过了自己已经懂的一切:十八项中十六项获认证,座位时间从240分钟降到47.3,减少80.3%。用完全相同的代码跑那位存在真实缺口的分行经理,它拒绝给他同样的折扣:十八项中十项获认证,只节省38.9%,因为他确实需要培训。

同一段代码给专家一门47分钟的课,给新手一门真正的课。两人谁也争不过它。

这种不对称正是全部要点。一套给所有人节省相同时间的系统,不过是一门更短、包装更好的课。一套严格按每个人能证明自己知道多少来节省时间的系统,才是在做知识追踪,而且是用我能逐行阅读的代码在做。

你交给监管机构以取代对勾的东西

我最自豪的那件产物,是绿色对勾永远做不出来的。门控结束后,Attest导出一份已签名的胜任力证书(Competence Certificate),我磁盘上保留了两份真实样本。对资深分析师,它列出全部十八个概念,每个都带掌握概率、支撑该估计的交互次数、认证或需要证明的状态,以及它映射到的具体法规(31 CFR 1020.220、FATF建议12、31 USC 5318,以及其余)。它记录模型名称、版本和基准AUC。它带有一段诚实的局限页脚,注明AUC衡量的是下一项预测而非长期留存,因为掌握概率是证据,不是保证。而整份文件经HMAC-SHA256签名签署,因此事后无法被悄然篡改。

资深BSA分析师的已签名胜任力证书:18项中16项获认证,座位时间减少80.3%,模型留出集AUC 0.8315,逐概念掌握度与法规映射,有两个概念被诚实地标为NEEDS PROOF
分析师的证书:18项中16项获认证,座位时间节省80.3%,正面写明AUC 0.8315,另有两个概念(SAR危险信号0.73与TBML 0.59)被诚实地压在0.747线以下并标为NEEDS PROOF。

这才是对审计员真正问题的持久答案,而那个问题从来不是「他们做完了吗?」而是「证明哪些交互支撑了哪项掌握主张。」对勾答不了。更好的基础模型也答不了,无论它变得多好,因为准确度不是来源可追溯性。更准确的模型仍然无法向审计员展示它做出决定背后的证据链。那条证据链必须被有意建成一件产物,建在模型之外。证书正是那样的东西,也正是它让我不再把模型当成产品。

准确度不是来源可追溯性。更好的模型仍然无法证明哪些交互支撑了哪项主张。

你可以在运行中的演示里检查这一切,地址是veriprajna.com/zh-Hans/demos/adaptive-learning-ai,包括证书拒绝为分析师认证的那两个概念——她的掌握度诚实地落在0.747线以下。

在更好的模型出现后仍然站得住的那部分

我构建这一切时,本以为模型会是难点,而在这一点上想错,改变了我对整个品类的看法。模型是可处理的部分:CPU上九十秒,以及一个像样的AUC。真正难的部分,真正让输出可信的部分,是我放在周围的模型上,以防止它做出本无权做出的决定:确定性门控、证据充分性规则、异常拒绝、已签名的证据链。

这也是不会过时的那部分。当我展示队列数字时(在模拟的500人资格重新认证队列中,座位时间大约减少51.9%,仅此一个模块大致挽回77,872美元,年化数字接近389,362美元,应用在屏幕上将其标注为预估),标题故意不是AUC。AUC只证明它是真正的知识追踪模型,而不是成绩簿。标题是节省的座位时间百分比,以及自动认证与转去证明的概念百分比,而这两者无论底层模型变得多好都成立。明年更聪明的transformer也不会改变这一事实:决定与收据,都活在你可以审计的代码里。

而如果你宁愿亲眼看,也不愿读我描述,这里有整套系统端到端运行的样子。

于是这是我一直在琢磨的问题,也是我会抛给任何在这个领域做建设的人的问题。如果你系统最重要的输出是监管机构会倚重的决定,你希望那个决定模型做出,还是由模型只被允许提供建议的某种东西做出?我曾有一天把它想反了。然后一个假的明星学员——在他并不懂的十八件事上又快又完美——走了进来,把我纠正过来。

相关研究

同步发布于

满怀信心地构建您的 AI。

与一支在打造新一代企业级 AI 方面拥有深厚经验的团队携手合作。让我们助您设计、构建并部署一套值得信赖的 AI 战略。

Veriprajna 深度科技咨询公司 专注于为医疗健康、金融和监管等领域构建安全攸关的 AI 系统。我们的架构均依据成熟的规范进行验证,并配有完善的合规文档。