
我的知識追蹤 AI 想認證一名鑽漏洞過關的學員。我寫的程式碼拒絕了。
兩名員工、兩個一模一樣的綠色勾號,其中一個是謊言
我第一次把兩份紀錄並排放在一起時,那些勾號看起來完全一樣,而那正是整件事的問題所在。一名在職八年的資深 BSA 分析師,以及一名調職才六個月的分行經理,兩人都剛「完成」同一門四小時的反洗錢再認證。他們的 LMS 對兩人回報的內容完全相同:一個綠色勾號、「SCORM Completed」、搞定。其中一人閉著眼睛都能跑完可疑活動調查;另一人則在監管機構真正在意的那些概念上,確實存在落差。本該認證他們能否勝任合規工作的系統,卻無法把他們區分開來,因為它從來沒有在量測他們懂什麼。它量測的是影片有沒有播完。
這道落差不是學術問題,打造這個 demo 也迫使我始終把利害放在眼前。美國企業每年在企業培訓上大約花掉 1,028 億美元,約合每位學員 874 美元(《Training Magazine》,2025),而整整四分之一的 L&D 領導者表示,他們無法量測其中任何一部分是否奏效。在受監管的工作裡,這道落差在公開紀錄上有明確代價。TD Bank 吞下了 31 億美元的反洗錢罰鍰,部分與培訓計畫不足有關。自 2026 年 8 月 2 日起,《歐盟 AI 法案》第 4 條開始強制執行以職務為本的 AI 素養,罰則最高可達 3,500 萬歐元或全球營收的 7%。在上述每一個案例裡,「Completed」紀錄作為證據都毫無價值,因為完成從來不是勝任能力。
系統並沒有在量測他們是否學會了。它量測的是影片有沒有播完。
我打造了一個名為 Attest 的 demo,想看看自己能否誠實地彌合這道落差。你可以在這裡實際操作:veriprajna.com/zh-Hant/demos/adaptive-learning-ai。這篇文章談的,是打造過程中真正讓我意外的那一部分——而那並不是模型。

我真正著手要打造的,是一個知道每個人懂什麼的模型
我從每個「自適應學習」簡報都會開始的地方起步,然後把其中大部分丟掉。多數自稱自適應的產品,底層跑的是協同過濾:「跟你類似的人接下來修了課程 X。」那不過是披著學士袍的推薦引擎。它知道相似學員做了什麼。它完全不知道你、具體這個人,究竟理解了什麼。Cornerstone 在 2026 年 3 月推出的「Adaptive Learning Agent」仍是這種做法。我不想要一個更好的推薦器。我想要的模型,能讀取一個人的原始互動串流,並逐個概念推論他們實際掌握了什麼。
那是一個真實且古老的研究問題,叫做知識追蹤,而它誠實的版本是 transformer,不是測驗平均分。我訓練了一個自注意力知識追蹤模型 SAKT,大約 119,809 個參數,小到能在 CPU 上九十秒內訓練完並快取起來。它重播每位學員的互動序列,並為課程中十八個概念各自輸出一個掌握機率。在我們以種子資料生成的合成知識追蹤基準上,它達到了留出集 AUC 0.8315,下一步準確率為 0.771。基準資料由完全不同的模型家族生成(Performance Factors Analysis,一種古典邏輯模型),因此這個 transformer 並不是在為自己的假設打分。就外部脈絡而言,公開的 SAKT 在公開 ASSISTments 資料集上的結果大約落在 0.80(Pandey and Karypis,2019)。我的結果也在同一個鄰近區間。
我為那個數字感到自豪。我以為那個數字就是產品。只需一名學員,就讓我看清事實並非如此。
接著我餵給它一個把整門課鑽漏洞過關到底的人
打破我信心的那位學員,是該批次裡的第三位:一名營運助理,用 AI 助理自動答完了整個模組。看看我的模型對他做了什麼。一個概念接著一個概念,SAKT 推論回來的分數都很高:可疑活動申報紅旗辨識 0.927、貿易型洗錢 0.95、代理銀行風險 0.992、加強盡職調查觸發條件 0.994。幾乎處處完美。若我信任這個模型,我就會認證全部十八個概念,並交給這個人一份乾淨、簽署過的合規紀錄。
麻煩在於,那份掌握是假的。答案在十八個無關的概念上又快又完美,這種回應時間分布與真正的回憶不一致。真正的專家在某些事上很快,在另一些事上很慢。這個模式卻平坦得不可思議,而且處處都快得離譜——那是答案鑰的簽名,不是記憶的簽名。我那謹慎的 0.83-AUC 模型看著一份答案鑰,卻看成了明星學生。
我的模型不只是錯過了作弊。它恰好在自己錯得最厲害的地方最有把握。

對我來說,那就是這篇文章變得真實的一刻。更好的模型在這裡救不了我。一個用更乾淨資料訓練、更準確的 transformer,看著同樣又快又完美的答案,只會更加確信這個人已經掌握了一切。失敗並非準確率不足。而是我讓一個機率模型去做了一個模型永遠不該獨自做的決定。
為什麼不乾脆訓練模型去抓它?
我的第一個本能是錯的,我也想誠實面對自己為此輸掉的那一天。我試著讓模型本身對作弊更有抵抗力。加入回應時間特徵,訓練它不信任不合理地過快的序列,教 transformer 保持懷疑。這很誘人,因為它把一切都留在一個優雅的系統裡,而我喜歡優雅的系統。它也不管用,原因是我花了比應有更久才接受的。凡是你教模型去偵測的東西,你也同時教會它在你沒預料到的案例上自信地出錯。模型的全部工作就是泛化與平滑。治理決策需要的恰好相反:它必須在正確的地方變得脆弱,並且拒絕。
於是我停下來,把決定完全移出模型。模型提供建議。純粹的決定性程式碼做決定。在 SAKT 推論跑完之後,一段我稱為能力閘門的純 Python 邏輯做出是否認證的呼叫,而模型無法覆寫它。閘門只在三件事同時為真時才認證一個概念:掌握度達到或超過 0.747、背後至少有三次真實互動作為證據,且回應模式並非異常。三項任一失敗,該概念就不獲認證。它被標記為「需要證明」,學員得到的是驗證挑戰,而不是勾號。
當閘門看向那位營運助理時,它做了我的模型做不到的事。它把證據標為異常,拒絕每一個概念,並認證了十八項中的零項。座位數時間暫扣,等待驗證。

我想小心如何表述這一點,因為我為自己寫下的簡報對此也很小心。這不是一個帶命中率的作弊偵測器,我也從不把它呈現成那樣。它是對一名說明性學員的治理結果:概念被扣留,因為證據不足以認證。重點不是「抓到你了,你作弊了。」重點是Attest 只認證它能證明的,並對其餘部分保持誠實。
代理提供建議,程式碼做決定,而那條界線後來證明是承重結構
我不斷回到這道分工,因為到我完成時,它已是整個架構,而不只是一句口號。Attest 裡恰好有兩個地方會跑智能且機率性的東西,而兩者都只提供建議。一個 LLM 代理(建在 Pydantic AI 上,預設為 claude-opus-4-8)負責概念標註,把一門扁平的「反洗錢培訓」課程拆成十八概念分類法:CDD、可疑活動申報敘述、結構化交易偵測、OFAC 篩查,以及其他。那一步標註,正是這個領域會告訴你自適應學習專案夭折的最大單一原因,而且確實很難,但它是建議性的。SAKT 模型推論掌握度,同樣是建議性的。每一個真正重要的決定——學員走哪條路徑、什麼會獲認證——都由決定性程式碼做出,沒有任何模型能把它說服過去。
定序器是那套程式碼的另一半,也是錢藏在哪裡的地方。就每個概念而言:若掌握度達到或超過 0.67,學員跳過或只需驗證;介於 0.38 與 0.67 之間,他們留在心流區;低於 0.38,他們得到鷹架式輔助。那些切點不是我憑感覺挑的。它們是對有標籤批次交叉驗證而來,而程式庫附帶一個五折 A/B 測試,顯示它們勝過手設後備方案,同時不改變決定的意義。對資深分析師跑那套邏輯,她跳過幾乎所有她已經懂的內容:十八項中十六項獲認證,座位數時間從 240 分鐘降到 47.3,縮減 80.3%。對真正存在落差的分行經理跑完全相同的程式碼,它拒絕給他同樣的折扣:十八項中十項獲認證,只省下 38.9%,因為他確實需要這門培訓。
同一套程式碼交給專家一門 47 分鐘的課,交給新手一門真正的課。兩人誰都無法跟它爭辯。
那種不對稱才是整件事的重點。一個讓每個人都省下同樣時間的系統,不過是一門更短、品牌更好的課。一個嚴格依每人能證明自己懂什麼的比例來省時間的系統,才是在做知識追蹤——而且是用我能一行一行讀懂的程式碼在做。
你交給監管機構的,不是一個勾號,而是什麼
我最自豪的產物,是綠色勾號永遠做不出來的那一樣。閘門跑完後,Attest 匯出一份簽署過的勝任能力證書,而我在磁碟上保留了兩份真實樣本。對資深分析師,它列出全部十八個概念,各自附上掌握機率、支撐該估計的互動次數、認證或需要證明的狀態,以及它所對應的具體法規(31 CFR 1020.220、FATF Rec. 12、31 USC 5318,以及其他)。它記錄模型名稱、版本與基準 AUC。它帶有一段誠實的限制頁尾,註明 AUC 量測的是下一題預測而非長期保留,因為掌握機率是證據,不是保證。而整份文件以HMAC-SHA256 簽章簽署,因此事後無法被悄悄竄改。

這才是對稽核員真正問題的持久答案——那問題從來不是「他們做完了嗎?」而是「證明哪些互動支撐了哪項掌握主張。」一個勾號答不了。更好的基底模型也答不了,無論它變得多好,因為準確不是出處。更準確的模型仍然無法向稽核員展示它做出決定背後的證據軌跡。那條軌跡必須被刻意建造成產物,在模型之外。那就是證書,也是讓我不再把模型當成產品的東西。
準確不是出處。更好的模型仍然無法證明哪些互動支撐了哪項主張。
你可以在執行中的 demo 檢視這一切:veriprajna.com/zh-Hant/demos/adaptive-learning-ai,包括證書拒絕為分析師認證的那兩個概念——她的掌握度誠實地落在 0.747 線以下。
即使模型變得更好,仍然站得住的那一部分
我打造這套時預期模型會是困難的部分,而在這件事上錯了,改變了我對整個類別的看法。模型是可處理的部分:CPU 上九十秒,加上一個像樣的 AUC。困難的部分——真正讓輸出可信的部分——是我放在模型周圍以阻止它去做它不該做的決定的一切:決定性閘門、證據充足性規則、異常拒絕、已簽署軌跡。
那也是不會過時的部分。當我展示批次數字(在模擬的 500 人再認證批次中,座位數時間約縮減 51.9%,僅此一模組約回收 77,872 美元,年化數字接近 389,362 美元,應用程式在畫面上標為推估)時,標題刻意不是 AUC。AUC 只證明這是真正的知識追蹤模型,而不是成績簿。標題是座位數時間節省的百分比,以及自動認證相對於導向證明的概念百分比——而這兩者無論底層模型變得多好都成立。明年更聰明的 transformer 不會改變這個事實:決定與收據,都活在你能稽核的程式碼裡。
而若你寧願看它運轉,而不是聽我描述,這裡就是整套端到端執行。
所以這就是我一直坐著思考的問題,也是我會向任何在這個領域打造的人提出的問題。若你系統最重要的輸出,是監管機構會倚賴的決定,你希望那個決定由模型做出,還是由模型僅能建議的東西做出?我有一整天搞反了。接著一個假的明星學生——在他不懂的十八件事上又快又完美——走進來,把我導正了。


