深度知識追蹤入門

背景介紹

知識追蹤(Knowledge Tracing)是根據學生過去的答題情況對學生的知識掌握情況進行建模,從而得到學生當前知識狀態表示的一種技術,早期的知識追蹤模型都是依賴於一階馬爾科夫模型,例如貝葉斯知識追蹤(Bayesian Knowledge Tracing)。將深度學習的方法引入知識追蹤最早出現於發表在NeurIPS 2015上的一篇論文《Deep Knowledge Tracing》,作者來自斯坦福大學。在這篇論文中,作者提出了使用深度知識追蹤(Deep Knowledge Tracing)的概念,利用RNN對學生的學習情況進行建模,之後引出了一系列工作,2019年已經有使用Transformer代替RNN和LSTM並且達到了SOTA的論文。

由於深度學習並不需要人類教會模型不同題目的難易、考覈內容等特定的知識,避免了大量的手工標註特徵工作量,而且在互聯網在線教育行業興起後,擁有了海量的學生答題記錄,這些答題記錄就能教會模型將題庫中成千上萬條題目encode爲一個向量,並且能類似於word2vec那樣找出題目之間的關聯。因此之後各種AI+教育、個性化、智能化教育的概念也火了起來。不過截止目前深度知識追蹤仍然只是一個小領域,業界應該是做了不少工作的,但因爲每個公司教育數據的私密性,不同公司數據的多樣性,導致了數據集不公開,方法也大多不通用的情況,因此我們並不太能瞭解到那些在線教育巨頭背後的AI技術,至於學界,論文大多發表在教育數據挖掘國際會議上(Educational Data Mining)。本文簡單介紹深度知識追蹤,給有興趣入門的同學的作參考。

任務定義

知識追蹤的任務是根據學生的答題記錄,通常是一個時間序列,有些業務場景下是與時間無關的,建模得到學生的知識掌握狀態,從而能準確預測其未來的答題情況,並依據此爲未來的智能化出題做參考,避免給學生出太難或太簡單的題目。具體上,假設一個學生的答題記錄爲x0,x1,...,xtx_{0},x_{1},...,x_{t},我們要去預測下一個交互的情況xt+1x_{t+1},通常一次交互xt=(qt,at)x_{t}=(q_{t}, a_{t})qtq_{t}代表該學生回答題目ata_{t}的正誤情況。簡單的來說就是知道了學生答了一系列題目,也都知道他都回答對了沒,現在我要從題庫裏再抽一題給他,讓模型預測預測他能不能答對,答對的概率是多少,那麼如果模型給出的概率是1,代表這題對他來說是太簡單了,如果給出的概率爲0,就代表這題可能太難了,他八成是做不出來的。

模型

上面說了,Deep Knowledge Tracing這篇論文是用了RNN來把答題記錄當做平常的時間序列來建模,至於RNN,下面簡單列個公式表示一下,相信入門過NLP的同學都是認識RNN的。
ht=tanh(Whxxt+Whhht1+bh)yt=σ(Wyhht+by) \begin{aligned} \mathbf{h}_{t} &=\tanh \left(\mathbf{W}_{h x} \mathbf{x}_{t}+\mathbf{W}_{h h} \mathbf{h}_{t-1}+\mathbf{b}_{h}\right) \\ \mathbf{y}_{t} &=\sigma\left(\mathbf{W}_{y h} \mathbf{h}_{t}+\mathbf{b}_{y}\right) \end{aligned}

模型的輸入和輸出

假設數據集有MM道題目,我們讓xtx_{t}爲one-hot encoding,由於atRMa_{t} \in R^{M}qt{0,1}q_{t} \in \{0,1\},那麼xtR2Mx_{t} \in R^{2M},即針對題目ata_{t}有答對和答錯兩種不同的狀態,所以one-hot的長度是2M。這時候很自然就能想到使用NLP中常用的Embedding,將每個one-hot向量通過embedding轉爲一個維度小得多的向量nat,qtRNn_{a_{t}, q_{t}} \in R^NN<<MN << M,這樣每道題目就可以初始化爲一個隨機的低維向量表徵,在之後的數據集上進行訓練。

每個時間步,模型輸入xtx_{t},輸出ytRMy_{t} \in R^{M},維度與題庫大小相同,代表着學生答對每道題目的概率。我們根據yty_{t}可以選出下一題at+1a_{t+1}的正確概率pt+1p_{t+1},再和真實的標籤qt+1q_{t+1}求交叉熵損失函數即:
L=t(yTδ(qt+1),at+1) L=\sum_{t} \ell\left(\mathbf{y}^{T} \delta\left(q_{t+1}\right), a_{t+1}\right)
其中\ell代表交叉熵損失函數,δ\delta代表one-hot編碼。

Optimization

爲了防止過擬合,在使用中間的隱層狀態hth_{t}通過dense層得到yty_{t}時加了dropout,同時在反向傳播時爲了避免梯度爆炸,增加了梯度裁剪,評價指標使用的是AUC(area under the curve)。

實驗結果

作者在三個數據集上進行了實驗,在當時都達到了SOTA

並且在Khan Data和Simulated Data上做了可視化,發現RNN成功捕捉到了相似題目之間的關聯,將同一概念下的題目如函數、幾何聚到了一起。

優缺點

優點

  1. 能根據學生最近的答題情況記錄較長時間的知識情況。
  2. 能根據每次答題更新知識狀態,只需要保存上一個隱層狀態,不需要重複計算,適合線上部署。
  3. 不需要domain specific的知識,對任何用戶答題數據集都適用。
  4. 能夠自動捕捉相似題目之間的關聯。

缺點

  1. 當答題序列被打亂時,模型輸出的結果波動大,即相同的題目和相同的回答,當答題順序不一致時,得到的知識狀態不同。
  2. 由於上述問題,且學生在答題過程中對知識的掌握程度不一定具有連續一致性,導致對學生知識狀態的預測受順序影響發生偏差。
  3. 黑盒,有時會出現第一題答對導致對之後的預測概率都偏高,而第一題答錯對之後的預測概率都偏低的奇怪情況。

總結

介紹的這篇論文是深度知識追蹤的開山之作,之後有許多論文對它進行的完善,幾個具有代表性的是:

  • How Deep is Knowledge Tracing?
  • Going Deeper with Deep Knowledge Tracing
  • Incorporating Rich Features into Deep Knowledge Tracing
  • Addressing Two Problems in Deep Knowledge Tracing via Prediction-Consistent Regularization
  • A Self-Attentive model for Knowledge Tracing

參考文獻:

[1] Piech, C. et al. Deep knowledge tracing. in Advances in Neural Information Processing Systems 505–513 (2015).

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章