1. 程式人生 > >深度知識追蹤(Deep Knowledge Tracing)

深度知識追蹤(Deep Knowledge Tracing)

深度知識追蹤(Deep Knowledge Tracing)

知識追蹤是基於學生行為序列進行建模,預測學生對知識的掌握程度。知識追蹤是構建自適應教育系統的核心和關鍵。在自適應的教育系統中,無論是做精準推送,學生學習的路徑規劃或知識圖譜的構建,第一步都是能夠精準預測學生對知識的掌握程度。

知識追蹤問題可以描述為: 給定一學生的觀測序列 x 0 ,

, x t x _ { 0 } , \ldots \ldots , x _ { t } 預測下次表現 x
t + 1 x_{t+1}
,通常 x t =
{ q t , a t } \mathbf { x } _ { t } = \left\{ q _ { t } , a _ { t } \right\}
,其中 q t q _ { t } 代表回答的問題成分(如對應的知識點), a t a _ { t } 代表對應的回答是否正確,通常 a t = { 0 , 1 } a _ { t }=\left\{0,1\right\} 。 下圖描述了一個學生在八年級數學中的知識追蹤結果視覺化展示。
在這裡插入圖片描述
傳統的知識追蹤是基於一階馬爾可夫模型,如貝葉斯知識追蹤(Bayesian Knowledge Tracing),2015年 Chris Piech 等人提出利用深度學習來處理知識追蹤的任務,之後引發了學者們對利用深度學習來處理知識追蹤任務對不斷探討,下面依次介紹相關論文核心內容及思考。

Deep Knowledge Tracing

迴圈神經網路(RNN)是一種時間序列的模型,天然具有高維連續的隱狀態表示的特徵,RNN能夠利用早期的資訊進行預測,因此在2015年 Chris Piech 將RNN應用於知識追蹤領域,並取得了較好的結果。

模型:

文章中,作者採用了傳統的RNN模型和其變種LSTM,其輸入資料為經過編碼的 q t q _ { t } ,輸出為 a t a _ { t } 。對於輸入的編碼方式有兩種:

  1. 將輸入進行one-hot編碼,如模型輸入資料涉及M個知識成分(如知識點),每道題有兩種結果0,1(分別對應答錯和答對),則模型輸入長度為2M。例如,對於某題,其知識成分為i,若答對,對應輸入為第i+1位為1其餘位置為0;若答錯,則第i位為1其餘位置為0。
  2. 將輸入進行壓縮,若知識成分M巨大時,輸入維度過高,可以採用感知壓縮使輸入從2M降低至 log ( 2 M ) \log (2 M)

模型輸出 y t y _ { t } 長度為M,對應描述了每一個知識成分的掌握程度(即對應知識成分所對應題目的答對概率),模型的核心為使用前 t t 時刻的學生做題序列預測 t + 1 t+1 時刻的知識成分的掌握情況,即: P ( y t + 1 x t , , x t ) P(y_{t+1}|x_{t} , \ldots \ldots , x _ { t })
模型的目標函式是觀測序列的非負對數似然函式,假設 δ ( q t + 1 ) \delta \left( q _ { t + 1 } \right) t + 1 t+1 時刻的編碼輸入, l l 為二進位制交叉上函式,目標函式如下:

L = t ( y i T δ ( q t + 1 ) , a t + 1 ) L = \sum _ { t } \ell \left( \mathbf { y } _ { i } ^ { T } \delta \left( q _ { t + 1 } \right) , a _ { t + 1 } \right)

模型優缺點:

優點:
  1. 能夠反應長時間的知識關係,基於RNN的特效能夠根據學生近期學習表現進行預測(近因效應),也能根據實際學生學習路徑進行建模;
  2. 能夠對複雜的知識點之間的聯絡進行建模,如構建知識圖譜;
  3. 能夠處理多知識成分的問題。

缺點:

  1. 模型無法重構輸入,即輸入某一知識成分答題錯誤,模型對該知識成分的預測反而是正確。
  2. 在時間序列上,學生對知識點的掌握程度不具有連續一致性,波動情況較大。

Going Deeper with Deep Knowledge Tracing

2016年Xiaolu Xiong等人對DKT和PFA(Performance Factor Analysis),BKT(Bayesian Knowledge Tracing)模型進行了比較,對DKT模型能碾壓其他兩種模型的結果進行了懷疑並加以論證,進一步討論了原論文能夠得出上述結果的原因,對進一步使用DKT模型提供了參考。
文章中指出,對於DKT文章中在ASSISTments資料集上取得好的結果的原因進行了分析,得到以下三個原因來說明為什麼DKT能夠取得碾壓BKT的效果:

  1. ASSISTments資料集中存在23.6%的重複資料,這部分資料應該捨棄而不應該用於訓練或測試。
  2. DKT模型在實驗中,並沒有去除支架式教學問題的做題記錄,這就導致DKT模型能夠有更多資訊引入模型。
  3. 由於DKT處理多知識成分的問題時,單條做題記錄會被擴充套件成多條,存在重複利用資料的問題。

作者將上述問題資料依次剔除,形成多個數據集,並採用ACU和 r 2 r ^ { 2 } 作指標,對DKT,PFA,BKT模型進行了對比,結果表明DKT相比BKT和PFA沒有碾壓式的超越但是的確會比其他模型結果要好。
文章中提及,當遇到多知識成分的題目時,使用聯合知識成分作為新的知識成分的方式比重複利用做題記錄的方式結果要差很多,這也是在我們實際使用DKT模型中需要注意的。

Addressing Two Problems in Deep Knowledge Tracing viaPrediction-Consistent Regularization

Chun-Kit Yeung等人在2018年6月發表論文中指出DKT模型現存的缺點,即對輸入序列存在重構問題和預測結果的波動性,進而論文提出了改善上述問題的方法:增加對應的正則項,得到DKT+(增強的DKT模型)。

在這裡插入圖片描述

如上圖所示,縱軸 S i S _ { i } 表示知識成分,橫軸為學生在各個知識成分上的答題情況。
問題1對應的是在 6 t h 6 ^ { t h } step, S 45 S _ { 45 } 的評估結果相比前一時刻是增加了的即使當前的輸入是 S 45 S _ { 45 } 做錯了的。
問題2對應為在上述圖描述的學習過程中, S 32 , S 33 , S 45 S _ { 32 } , S _ { 33 } , S _ { 45 } S 55 S _ { 55 } 預測做對的概率隨著 S 32 , S 33 S _ { 32 } , S _ { 33 } 的學習有著非常大的波動,這和我們實際情況是不相符的,我們總是期望知識成分的變化是隨著時間緩慢變化的,而不是在掌握和沒掌握之間跳躍。

對於問題1,作者認為出現這種情況是由於,在DKT模型採用的損失函式中並沒有考慮到時間t時刻的輸入值,只是考慮了t時刻的輸出值和t+1時刻的輸入值。為了解決上述問題,作者在損失函式中引入正則項,並在正則項中引入了時間t時刻的輸入值,正則項r如下:

r = 1 i = 1 n ( T i 1 ) ( i = 1 n t = 1 T i 1 l ( y t i δ ( q t i ) , a t i ) ) r = \frac { 1 } { \sum _ { i = 1 } ^ { n } \left( T _ { i } - 1 \right) } \left( \sum _ { i = 1 } ^ { n } \sum _ { t = 1 } ^ { T _ { i } - 1 } l \left( \mathbf { y } _ { t } ^ { i } \cdot \boldsymbol { \delta } \left( q _ { t } ^ { i } \right) , a _ { t } ^ { i } \right) \right)

對於問題2,作者認為可能是由於RNN的隱層表示問題,RNN的隱含層 h t \mathbf { h } _ { t } 依賴於前一隱含層的輸出 h t 1 \mathbf { h } _ { t -1}