王文濤,馬慧芳,舒躍育,賀相春
(1.西北師范大學計算機科學與工程學院,甘肅 蘭州 730070;2.西北師范大學心理學院,甘肅 蘭州 730070;3.西北師范大學教育技術學院,甘肅 蘭州 730070)
近年來,隨著在線評測OJ(Online Judge)系統(tǒng)[1]和大規(guī)模在線開放課程MOOC(Massive Open Online Course)[2]等平臺的日益普及,越來越多的學生能夠實現在線自主學習。然而在線教育系統(tǒng)在帶來便利的同時,其提供的海量學習資源往往使得學生在進行自主學習時面臨諸多困難,例如學生如何在眾多學習資源中選擇最適合自身情況的資源,在線教育平臺如何為學生推薦一套個性化的學習資源等。隨著教育數據挖掘技術的迅猛發(fā)展,已有大量的致力于知識追蹤方法的研究工作。盡管這些方法取得了一定的效果,但其大多將知識點視為一個獨立的實體進行建模,并且對于利用影響學生學習過程的復雜學習因素對知識點進行上下文表示的研究還不夠充分[3]。
傳統(tǒng)知識追蹤方法主要基于概率模型對學生與習題之間的交互關系進行建模,其中基于隱馬爾可夫模型的貝葉斯知識追蹤BKT(Bayesian Knowledge Tracing)方法[4]是最具代表性的知識追蹤方法之一,該方法構建了學生認知狀態(tài)的動態(tài)變化過程,以監(jiān)測和估計學生掌握知識點的概率。然而,這類方法使用的交互函數高度依賴于領域專家的人工設計,且忽略了學生的認知遺忘因素,即認為學生一旦掌握某個知識點后就不再遺忘。由于人類的知識及大腦具有天然復雜性,使用復雜的網絡結構來設計知識追蹤方法應該更為合適,然而大多數現有方法的設計仍然是基于具有嚴格約束函數的一階隱馬爾可夫模型。隨著深度學習技術的不斷發(fā)展,一些使用神經網絡技術的方法對傳統(tǒng)知識追蹤方法進行了改進,主要分為以下2類:
(1)省略專家標注知識點的過程,即不使用習題與知識點之間的關聯(lián)信息而直接對學生知識狀態(tài)進行估計。Piech等人[5]使用循環(huán)神經網絡并結合學生歷史答題序列數據對學生與習題之間的交互關系進行建模,提出了深度知識追蹤DKT(Deep Knowledge Tracing)方法,在不需要專家標注習題與知識點關系的情況下,顯著提升了傳統(tǒng)BKT方法作答表現預測的性能。Zhang等人[6]在結合BKT和DKT兩者優(yōu)點的基礎上,將記憶增強網絡MANN(Memory-Augmented Neural Networks)應用于知識追蹤問題,通過引入key-value存儲單元,提出了動態(tài)鍵值記憶網絡DKVMN(Dynamic Key-Value Memory Networks for knowledge tracing)模型,以發(fā)現每個輸入習題的潛在知識概念,跟蹤學生對知識點的認知狀態(tài)。
(2)盡管第(1)類方法在性能上優(yōu)于傳統(tǒng)知識追蹤方法,但是隨著對學生知識狀態(tài)結果的研究與分析不斷深入,發(fā)現由第(1)類方法估計出的學生知識狀態(tài)不具有可解釋性,并且領域專家標注的習題與知識點間的關聯(lián)信息不容忽視。針對這些問題提出的方法被稱為第(2)類方法。Huo等人[3]認為雖然諸如DKT和DKVMN等方法能夠自動識別出習題考察的潛在知識點,但卻不能保證識別結果比專家人工標注的知識點更可靠,故在此基礎上對知識點進行上下文化,提出了LSTMCQP(Long Short-Term Memory network using CQ-matrix and Personalization mechanism)方法。盡管該方法在對知識點的上下文表示上進行了探索,但其效果對數據集較為敏感。
針對以上方法存在的問題,本文設計了基于上下文表示的知識追蹤方法KTCR(Knowledge Tracing via Contextualized Representations)。該方法既考慮了習題與知識點之間的關聯(lián)信息,又綜合考慮了學生在學習過程中的復雜學習背景對知識點基于上下文表示。首先,基于學生響應數據及其在知識點上的綜合表現情況,設計一種對知識點基于上下文表示的方法,從而實現對知識點進行上下文信息的嵌入;其次,利用基于上下文表示后的知識點對習題進行有效表示,以實現習題向量的降維處理;最后,結合降維后的習題向量和學生歷史交互數據,利用長短期記憶LSTM(Long Short-Term Memory)網絡[7]對學生的知識狀態(tài)進行追蹤。本文將所提方法應用于4個真實數據集上,實驗結果表明,本文所提方法能夠有效地對習題進行嵌入表示,并且能較好地估計學生知識狀態(tài)。
設有N個學生,M道習題,K個知識點,記學生集S={s1,s2,…,sN},習題集E={e1,e2,…,eM}和知識點集C={c1,c2,…,cK}。習題與知識點之間的關聯(lián)信息用二元矩陣QM×K來表示,矩陣中元素qmk表示第m道習題是否包含第k個知識點(包含為1,否則為0)。此外,學生的響應數據(即歷史做題數據)用矩陣RN×M表示,每一行表示學生在M道題上的交互情況(答對記為1,答錯記為0,未交互記為-1)。因此,對于知識追蹤而言,其任務是預測在t+1時刻第i個學生將一道題回答正確的可能性,即P(yt+1=1|Ф,Q,R,C,E,S),其中Φ為模型的參數集合。
Figure 1 Framework of knowledge tracing based on contextualized representations method圖1 基于上下文表示的知識追蹤方法框架
隨著教育心理學領域的不斷發(fā)展,對認知診斷評估方法的研究已經成為近年來的研究重點?;趯W生在習題上的作答情況,認知診斷方法可以對學生進行個性化的認知診斷建模。具體地,認知診斷方法假設習題和知識點之間存在顯示關聯(lián),可以通過Q矩陣來刻畫這種相關關系,如表1[8]所示。
Table 1 Q matrix about the correlations between exercises and knowledge concepts
認知診斷方法將學生的知識狀態(tài)分解為若干個具體知識點,并通過學生的響應數據和Q矩陣來評價學生對這些知識點的掌握程度[9]。由此可見,Q矩陣在認知診斷評估方法中有十分重要的作用,使模型能夠為學生提供特定知識點上細粒度的診斷信息,具有非常重要的研究意義。然而,已有的一些知識追蹤方法,例如DKT和DKVMN等方法,摒棄了習題與知識點之間的關聯(lián)信息,利用模型自身得到習題的潛在知識點,然而通過此種方式得到的知識點與學生知識狀態(tài)無法對應,導致最終得到的學生知識狀態(tài)不具有可解釋性。因此,將Q矩陣中習題和知識點之間的關聯(lián)信息引入知識追蹤方法中很有必要。
本文方法的框架如圖1所示:首先,通過學生響應矩陣R和習題知識點關聯(lián)矩陣Q設計一種基于知識點上下文表示的計算策略,對Q矩陣進行上下文表示,得到上下文化Q矩陣CQ(Contextualized Q-matrix);其次,利用CQ矩陣和學生響應數據對習題進行嵌入表示,從而在實現習題向量降維的同時豐富了其語義信息;最后,結合基于上下文表示的習題向量和學生歷史交互數據,通過LSTM對所有學生的知識狀態(tài)進行估計,最終得到學生在所有知識點上的掌握狀態(tài)。為了描述清晰起見,表2集中給出了本文方法中涉及到的常用符號定義。
Table 2 Definition of commonly used symbols
不同于DKT和DKVMN直接利用學生在習題上的表現情況作為估計學生知識狀態(tài)的依據,KTCR致力于綜合考慮學生在習題和知識點上的表現情況,以此將學生的客觀反饋與專家主觀標注的知識點信息進行融合。值得注意的是,“習題表現”與“知識點表現”是2個不同的概念。例如能夠正確回答考察了“相似三角形”相關習題的學生,在同時考察“相似三角形”和“勾股定理”相關的習題中卻可能出錯,這是由于“連接要求”[10],即學生必須掌握所有與習題相關的知識點才能正確回答該習題。因此,KTCR不僅考慮了學生在習題上的表現情況,同時還計算了學生在知識點上的表現情況。而隨著學生交互的習題數量的增加,其在知識點上的表現情況會有所波動,造成這種波動的原因可能是學生的復雜學習背景,例如習題難度、教學相關的因素以及習題與其他知識點的關聯(lián)等。然而,由于對這些復雜學習背景的建模十分困難,本文并非試圖去識別和建模每一個學習背景,而是將其視為一個復合結果,即上下文。
為此,本節(jié)通過學生響應矩陣和習題知識點關聯(lián)矩陣Q設計一種知識點上下文計算策略,以此實現Q矩陣的上下文表示,得到上下文化后的Q矩陣,即CQ矩陣。具體地,首先考慮所有學生交互過的習題數量,用集合e(s)表示,即e(s)={e(s1),e(s2),…,e(sN)};其次考慮所有學生與考察了第l個知識點的習題的交互數量,用集合el(s)表示,即el(s)={el(s1),el(s2),…,el(sN)},故第i個學生在考察了第l個知識點的習題中,其答題正確率accl(si)如式(1)所示:
(1)
其中,I(·)為指示函數,當滿足條件“·”時函數值為1,否則為0。故第l個知識點的上下文因子如式(2)所示:
(2)
其中,σ[·]為sigmoid函數。接著由Q矩陣和知識點上下文因子可得CQ矩陣,如式(3)所示:
CQ[:,l]=δl×Q[:,l]
(3)
其中,列向量CQ[:,l]為CQ矩陣中的第l列,列向量Q[:,l]為Q矩陣中的第l列。
因此,借助于知識點上下文因子,實現了從Q矩陣到CQ矩陣的上下文表示轉換。接下來,給出一種習題嵌入表示方法,將學生習題表現與知識點表現進行融合,從而得到習題的向量表示。
在DKT中,習題向量的維度為習題數量的2倍,且由one-hot向量進行表示。這樣的習題向量不僅攜帶的語義信息十分有限,而且習題向量高維稀疏,都將影響模型的最終性能。為此,本節(jié)利用CQ矩陣與學生響應數據來得到每道習題的嵌入表示。
對于t時刻與第i個學生交互的習題初始嵌入向量表示如式(4)所示:
(4)
其中,et為該題的one-hot表示。
有別于DKT中通過隱含方式表示學生響應數據,此處直接引入響應數據。即對于第i個學生而言,其在t時刻傳遞到LSTM中的輸入向量如式(5)所示:
xt=[cqt,rt]T
(5)
其中,cqt為t時刻與第i個學生交互過的習題初始嵌入向量,rt為對應的響應數據。因此,通過使用CQ矩陣與響應數據對習題向量進行重表示,使得習題嵌入向量在DKT的基礎上實現降維的同時,還包含了習題知識點關聯(lián)的細粒度語義信息。
在得到習題向量表示之后,將其作為LSTM的輸入,從而估計學生在知識點集合上的掌握情況,如式(6)~式(12)所示:
it=σ(Wixt+Uiht-1+bi)
(6)
ft=σ(Wfxt+Ufht-1+bf)
(7)
ot=σ(Woxt+Uoht-1+bo)
(8)
(9)
(10)
ht=ot°tanh(zt-1)
(11)
(12)
(13)
在明確模型的輸入輸出之后,則需要建立模型的損失函數。對于單個學生的損失函數建模如式(14)所示:
(14)
算法1KTCR方法
輸入:響應矩陣R,習題知識點關聯(lián)矩陣Q,學生集S={s1,s2,…,sN},習題集E={e1,e2,…,eM}和知識點集C={c1,c2,…,cK}。
輸出:t+1時刻第i個學生在第j+1個習題上回答正確的概率,即P(yt+1=1 | Ф,R,Q,S,E,C) 。
步驟1計算所有學生交互過的習題數量,得e(s)={e(s1),e(s2),…,e(sN)};
步驟2計算所有學生與考察了第l個知識點的習題的交互數量,得el(s)={el(s1),el(s2),…,el(sN)};
步驟3初始化長度為N的一維全零數組ACC;
步驟4 forl=1 toKdo
步驟5fori=1 toNdo
步驟6利用式(1)計算第i個學生在考察了第l個知識點的習題中的答題正確率accl(si);
步驟7ACC[i]=accl(si);
步驟8endfor
步驟9利用數組ACC與式(2)計算第l個知識點的上下文因子δl;
步驟10利用式(3)對Q矩陣的第l列進行上下文表示;
步驟11 endfor
步驟12 fori=1 toNdo
步驟13forj=1 toMdo
步驟14ifrij=1 orrij=0
步驟15利用式(4)和式(5)得當前習題向量x;
步驟18endif
步驟19endfor
步驟20根據式(14)計算第i個學生的損失函數L;
步驟21while第i個學生的損失函數未收斂do
步驟22利用SGD算法更新參數集合Ф;
步驟23執(zhí)行步驟12~步驟20;
步驟24endwhile
步驟25 endfor
為了驗證本文方法的合理性與有效性,本文設計實驗進行驗證。實驗將回答以下幾個問題:
(1)KTCR方法與現有的一些知識追蹤方法相比,性能方面存在哪些優(yōu)勢?
(2)使用KTCR方法得到學生知識狀態(tài)估計結果的準確性如何?
(3)在真實數據集上,KTCR方法對估計學生知識狀態(tài)的貢獻如何?
在本節(jié)中,首先介紹實驗所使用的數據集;其次介紹實驗設置與基線方法;再次根據所提問題對評價指標進行介紹;最后對實驗結果進行分析,并結合案例分析闡釋本文方法的合理性與有效性。
實驗所用的4個公開數據集分別為:ASSISTment2009(ASSIST2009)、ASSISTment 2015(ASSIST2015)、ASSISTment Challenge(ASSISTChall)和STATICS,其中每個數據集的相關信息如下所示:
(1)ASSIST2009數據集是2009年由ASSISTment在線教育平臺所收集的,是知識追蹤相關論文中使用最廣泛的數據集之一[11]。由于原始數據集中有大量重復的交互記錄存在,故在數據預處理時刪除了重復部分,最終得到的數據集包含4 417名學生的328 291條做題記錄,其中與學生交互的習題來自于124個不同的知識點。
(2)ASSIST2015數據集與ASSIST2009類似,同樣來源于ASSISTment在線教育平臺。不同的是,該數據集是由平臺在2015年收集的,包含19 917名學生的708 631條做題記錄,其中知識點個數為100個。
(3)ASSISTChall數據集來自于2017年ASSISTment平臺的數據挖掘競賽,該數據集包含686名學生的942 816條交互記錄和102個知識點。
(4)STATICS數據集是從大學的工程力學課程中收集的[6],包括333名學生在來自于1 223個知識點的習題上的189 927條做題記錄。
表3總結了上述4個數據集的統(tǒng)計信息。
4.2.1 實驗設置
實驗將4個數據集分別劃分為訓練集和測試集,抽取其中20%的學生做題記錄作為測試集,剩余部分為訓練集。為了保證實驗結果的可靠性,實驗采用5次5折交叉驗證法評價KTCR方法的性能。
在KTCR方法的訓練階段,隱含層使用了150個LSTM單元,keep_prob設為0.5,學習率learning_rate設為0.01,訓練輪數max_epoch為200,每批數據的大小batch_size設為32。實驗使用Xavier[12]中的初始化參數,其對權重初始化的隨機值采樣于N~(0,std2)。此外,實驗所用操作系統(tǒng)為Windows10 64位,顯卡為NVIDIA GTX1080-8 GG,內存為16 GB,實驗代碼通過Python3.6.5由TensorFlow1.10實現。
4.2.2 基線方法
為評估KTCR方法的性能,選取以下2類方法作為基線方法:(1)只考慮學生響應數據,不考慮習題與知識點之間的關聯(lián)信息,即DKT和DKVMN;(2)融合了習題與知識點之間的關聯(lián)信息,即 LSTMCQ及KTCR的幾種變體方法。具體描述如下:
(1)DKT[5]:實驗采用DKT的LSTM實現方法,使用one-hot向量來表示一道習題,向量維度為2×106。當t時刻模型的輸入向量為xt=[et,0]T時,表示該題在真實情況下學生回答正確,即rt=1,其中,0表示與et維數相同的全0向量;而當t時刻模型的輸入向量為xt=[0,et]T時,則表示該題在真實情況下學生回答錯誤。
(2)DKVMN[6]:該方法在記憶增強網絡MANNs(Memory-Augmented Neural Networks)[13,14]的基礎上,結合了BKT和DKT的優(yōu)點,對學生知識狀態(tài)進行追蹤。
(3)LSTMCQ[3]:該方法在DKT的基礎上使用文獻[3]中的基于上下文表示方法對Q矩陣進行重表示。
(4)Q-DKT:該方法為KTCR方法的一種變體方法。Q-DKT將習題嵌入向量中習題正確與否的信息用類似DKT中的方法進行表示,并且未使用3.1節(jié)中的知識點上下文表示對Q矩陣進行上下文化。在3.2節(jié)中提到的KTCR方法在t時刻傳遞到LSTM中的輸入向量為xt=[cqt,rt]T,而對于Q-DKT,t時刻傳遞到LSTM中的輸入向量為xt=[qt,0]T或xt=[0,qt]T,其中0的含義與DKT中的類似,其維度與qt相同。
Table 3 Statistics of all datasets
(5)QR-DKT:該方法為KTCR方法的一種變體方法。QR-DKT在Q-DKT的基礎上將學生響應數據顯式表示,使用未經上下文化的Q矩陣對習題向量進行降維。即t時刻傳遞到LSTM中的輸入向量為xt=[qt,rt]T。
4.3.1 學生答題情況預測
由于無法得到真實情況下學生在知識點上的掌握情況,故對知識追蹤方法進行性能評估是很難做到的。之前的很多工作大都是通過預測學生的做題情況來得到追蹤結果,通過在此類預測任務上模型的表現,可以間接地從某個層面對知識追蹤方法進行評估??紤]到實驗數據中使用的所有習題都是客觀題,實驗從分類和回歸2個角度使用評價指標來評估模型預測的學生答題情況,包括準確率Accuracy[15]、均方根誤差RMSE[16]和AUC(Area Under ROC),其定義如下所示:
定義1準確率(Accuracy):基于混淆矩陣(如表4所示),Accuracy是分類正確的樣本數量占樣本總數的比例,如式(15)所示:
(15)
Table 4 Confusion matrix
定義2均方根誤差(RMSE):基于學生響應數據與模型預測結果,RMSE的定義如式(16)所示:
(16)
此外,實驗還將選用受試者工作特征ROC(Receiver Operating Characteristic)曲線下的面積AUC作為方法性能評價指標之一。選用AUC作為本文方法評價指標的原因有二:(1)AUC作為性能度量指標在機器學習領域憑借其優(yōu)越性得到了廣泛應用;(2)在知識追蹤任務中,相關論文均使用AUC作為性能度量指標,因此本文選用AUC來評價性能,易于同其他知識追蹤方法進行比較。
4.3.2 學生知識狀態(tài)估計
除了從預測學生答題情況的層面來評價本文方法外,還引入DOA(Degree of Agreement)[15]作為預測的準確性指標。
定義3一致性(DOA):DOA用來比較方法預測的學生知識狀態(tài)與學生真實答題情況之間的一致程度,其定義如式(17)所示:
(17)
其中,KSak為第a個學生在第k個知識點上的掌握情況,I(·)為指示函數,qjk為Q矩陣中的第j行第k列中的元素,raj表示第a個學生的真實做題情況。從直覺上來說,如果第a個學生比第b個學生在第k個知識點上的掌握情況更好,那么第a個學生就更有可能比第b個學生答對與第k個知識點相關聯(lián)的那些習題。DOA值越高,表明模型預測的學生知識狀態(tài)與實際結果越一致,即預測的學生知識狀態(tài)更準確。
4.4.1 性能比較
表5顯示了在不同數據集上本文KTCR方法與各基線方法的準確率、均方根誤差及AUC值。表5中的數值為經過5次5折交叉驗證后各方法在4個數據集上的各指標數據平均值。從表5中可以看出:首先,使用Q矩陣作為習題嵌入信息的方法性能基本上優(yōu)于未使用Q矩陣的方法。這是由于Q矩陣為模型提供了習題與知識點之間的細粒度關聯(lián)信息,從而在一定程度上提升了方法的性能。其次,在使用Q矩陣的方法中,2種使用不同知識點上下文策略的方法(即本文方法與LSTMCQ方法)性能始終優(yōu)于另2種方法,這說明對知識點進行基于上下文表示能夠使習題向量攜帶更加豐富的語義信息,使得模型性能有所提高。具體對于LSTMCQ方法而言,由于其對知識點上下文表示的局限性,導致其在數據集ASSIST2009和數據集ASSIST2015上的表現與未使用Q矩陣的2種方法差別不大,即LSTMCQ方法對數據集敏感。相反,由于本文在設計知識點上下文表示策略時,既考慮了在某一知識點上的學生交互人數,又將每個學生交互過的習題數量作為可信度考慮在內,因此KTCR方法在保證了方法有效性的同時,還在不同數據集上具備性能的穩(wěn)定性。
Table 5 Experimental results of student performance prediction
4.4.2 學生知識狀態(tài)準確性研究
為了評價KTCR方法獲取學生知識狀態(tài)的準確性,本文在所有知識點上對DOA取平均值,結果如圖2所示。
Figure 2 DOA results of different methods on four datasets圖2 4個數據集上不同方法的DOA值
由于未使用Q矩陣的DKT方法和DKVMN方法得到的學生知識狀態(tài)無法與真實數據集中的知識點相匹配,因此實驗僅將KTCR方法與本文變體方法及LSTMCQ方法從一致性角度進行比較。由圖2可知,KTCR方法的DOA顯著高于其他基線方法的,說明使用KTCR方法得到的學生知識狀態(tài)相較于基線方法更準確,與真實情況更一致。與此同時,觀察到KTCR和LSTMCQ方法的DOA普遍高于Q-DKT和QR-DKT方法的,這同樣說明了知識點的基于上下文表示對獲得準確的學生知識狀態(tài)具有重要作用。
本節(jié)通過設計一個案例來分析KTCR方法對估計學生知識狀態(tài)的貢獻。圖3給出了基于ASSIST2009數據集的KTCR方法在學生與習題交互序列中捕獲編號為80807的學生知識狀態(tài)的過程案例。由圖3中的案例可知,學生在連續(xù)回答了5道來自5個不同知識點的習題之后,經過KTCR方法對學生答題序列中學生知識狀態(tài)的挖掘,最終獲取學生在5個知識點上的掌握情況。從圖3中左側的雷達圖中觀察到該學生在“相似三角形”和“勾股定理”2個知識點上掌握得較好,而對于其余知識點則掌握得較差,此結果與學生答題序列反映出來的信息基本一致。
Figure 3 Process of capturing a student’s knowledge state by KTCR圖3 KTCR捕獲編號為80807的學生知識狀態(tài)的整體過程
本文針對現有方法未能充分利用習題與知識點之間關聯(lián)信息的局限性,提出了基于上下文表示的知識追蹤方法KTCR。該方法既考慮了習題與知識點之間的關聯(lián)信息,又綜合考慮了學生在學習過程中的復雜學習背景對知識點基于上下文表示。在真實數據集上的大量實驗驗證了本文KTCR方法的有效性與知識狀態(tài)追蹤結果的可解釋性。