熊超,馬華
(湖南師范大學(xué)信息科學(xué)與工程學(xué)院,湖南 長沙 410081)
隨著近年來在線教育大規(guī)模普及,線上學(xué)習(xí)已經(jīng)成為當(dāng)前的主要學(xué)習(xí)形式之一,在線學(xué)習(xí)平臺中豐富的試題資源,對于學(xué)生鞏固與強化所學(xué)知識,發(fā)揮了重要作用[1]。但是,試題庫中的試題資源數(shù)量通常比較龐大,而多數(shù)現(xiàn)有的試題系統(tǒng)僅由學(xué)生自主選擇所需練習(xí)的試題,學(xué)生往往憑借主觀感覺去選擇試題,可解釋性不高。同時,學(xué)生對需要練習(xí)的知識點的感知較為籠統(tǒng)[2],容易陷入典型的學(xué)習(xí)困境,即不清楚自己對各個知識點的掌握情況,也不知道應(yīng)該挑選哪些適合自己的試題來鞏固或強化所學(xué)的知識點。因此,我們對學(xué)生的認(rèn)知狀態(tài)進行科學(xué)的診斷分析,并以此來指導(dǎo)在線學(xué)習(xí)平臺對學(xué)生進行個性化的試題推薦,這已成為當(dāng)前的一個研究熱點[3-4]。
心理與教育測量中,對個體的認(rèn)知過程、加工技能或知識結(jié)構(gòu)的診斷評估被稱為認(rèn)知診斷[5]。DINA模型[6]是一種典型的認(rèn)知診斷模型,目前,大多數(shù)基于認(rèn)知診斷的試題推薦都是基于DINA 模型,例如,朱天宇等人[7]基于DINA 模型提出了一套試題推薦方法。DINA 模型僅支持對客觀題的處理,即答案僅為對或錯兩種情況。針對DINA 模型的局限性,Liu 等人[8]提出了模糊認(rèn)知診斷框架(fuzzy cognitive diagnosis framework,F(xiàn)uzzyCDF)以支持認(rèn)知診斷模型處理主觀題。然而,現(xiàn)有研究在進行個性化試題推薦時,側(cè)重于考慮學(xué)生個體的認(rèn)知診斷情況,缺乏對學(xué)生群體的共性特性的評估。
綜上所述,本文在模糊認(rèn)知診斷框架的基礎(chǔ)上,對學(xué)生在主觀題和客觀題上的答題行為進行建模分析,計算學(xué)生答題風(fēng)格相似度,再采用協(xié)同過濾方法計算具有相似做題風(fēng)格的學(xué)生得分上的相似度。
通過充分考慮學(xué)生的個體知識點掌握程度和群體的學(xué)生學(xué)習(xí)共性,本文提出了一個新的個性化試題混合推薦方法,并基于它進行了系統(tǒng)實現(xiàn),該系統(tǒng)以學(xué)生的試題作答情況、知識點關(guān)聯(lián)矩陣和答題行為作為輸入,對學(xué)生進行認(rèn)知診斷分析與建模,獲取學(xué)生的知識點掌握情況,為其推薦合適的試題,生成學(xué)生認(rèn)知診斷報告,以此為學(xué)生自主學(xué)習(xí)提供指導(dǎo),可有效提升學(xué)生的學(xué)習(xí)質(zhì)量和效率。
傳統(tǒng)的DINA 模型僅能有效地處理客觀題,而無法有效地處理主觀題。針對這一問題,Liu 等人[8]提出了FuzzyCDF。該框架的思路是首先通過IRT 的雙參數(shù)反應(yīng)模型表達式計算出學(xué)生對知識點的認(rèn)知狀態(tài),即使用一個模糊集合中的值(即一個從0 到1 的實數(shù))來表示學(xué)生對于知識點的認(rèn)知能力,再用模糊并和模糊交運算來建立主觀題和客觀題的認(rèn)知作答模式。使用知識點相關(guān)的模糊集的隸屬函數(shù)來確定學(xué)生i 對知識點k的掌握程度,其計算方法如下所示。
其中,αik表示學(xué)生i對知識點k的掌握程度,即學(xué)生i對知識點k的隸屬度i(k);aik表示知識點的區(qū)分度;bik表示知識點k對于學(xué)生i來說的難度;θi表示學(xué)生i的潛在特質(zhì)水平;D為常數(shù)等于-1.7。對于客觀題,學(xué)生只有掌握試題考察的所有知識點才能答對它。而對于主觀題,學(xué)生在主觀題上的得分越高,說明他掌握的知識點越多,其對該題的掌握程度也越高??陀^題和主觀題的計算公式如下:
其中,ηij表示學(xué)生i對試題j的掌握程度;αik表示學(xué)生i對知識點k的掌握程度;qjk表示試題j是否考察了知識點k,取值為1代表考察了,取值為0代表未考察;∩和∪分別代表模糊交和模糊并運算。
概率矩陣分解(probabilistic matrix factorization,PMF)作為一種傳統(tǒng)的預(yù)測方法,最開始被用于電影推薦,之后被廣泛用于推薦系統(tǒng),可以通過預(yù)測學(xué)生在試題上的得分來將其應(yīng)用于個性化試題推薦。首先將學(xué)生和試題分別對應(yīng)到傳統(tǒng)推薦系統(tǒng)中的用戶和商品,再將學(xué)生的答題情況矩陣對應(yīng)用戶對物品的喜愛程度。圖1為將概率矩陣分解應(yīng)用于學(xué)生得分矩陣分解時的圖模型,PMF 將學(xué)生得分矩陣R分解為學(xué)生和試題的特征矩陣M、N,其中M∈ZD×V、N∈ZD×V且Mu和Nv分別表示特定學(xué)生u和試題v的潛在特征向量來刻畫學(xué)生和試題在低維空間下的表現(xiàn)。
圖1 學(xué)生成績PMF圖模型
本文獲取的學(xué)生答題行為為學(xué)生跳題行為與學(xué)生修改答案行為。其中,學(xué)生跳題行為可分為明顯性跳題和技巧性跳題,明顯性跳題即用戶由于對試題考察知識點不熟悉等原因放棄試題,而技巧性跳題則表示學(xué)生為了取得更好的成績?nèi)ミ\用一些技巧跳題,如在規(guī)定時間內(nèi)作答試題,學(xué)生主動放棄一些耗時較大而分值較少的試題。由于本系統(tǒng)不限制學(xué)生做題的時間,因此僅需考慮學(xué)生的明顯性跳題行為。首先,系統(tǒng)在生成推薦試題列表時將試題號按列表順序存入數(shù)據(jù)庫中,之后在學(xué)生作答過程中將正在作答試題號與數(shù)據(jù)庫中應(yīng)作答試題號進行比較,若相等則不記錄,若不相等則將數(shù)據(jù)庫中該學(xué)生跳題次數(shù)加1。同時,在用戶的作答過程中,除了記錄答案外還記錄本次答案提交時刻及上次答案提交時刻,若兩個時刻不相等,則說明用戶在作答后修改答案,將數(shù)據(jù)庫中該學(xué)生改題次數(shù)加1。
將學(xué)生每次作答完推薦試題后的答題情況存入數(shù)據(jù)庫中,每一條作答情況記錄對應(yīng)一條推薦列表,0表示錯誤,1表示正確,以字符串形式存儲。
從數(shù)據(jù)庫中提取學(xué)生答題行為矩陣B矩陣,該矩陣一行表示一名學(xué)生,第一列為跳題次數(shù),第二列為改題次數(shù)。通過式⑷計算兩個學(xué)生u1和u2之間的相似度。
計算當(dāng)前學(xué)生與其余所有學(xué)生的相似度,然后選取相似度最高的前50名學(xué)生組成學(xué)生集U。
基于FuzzyCDF 進行學(xué)生認(rèn)知診斷的步驟如下:①使用MCMC算法對FuzzyCDF進行失誤率s、猜測率g、潛在特質(zhì)θ、主觀題歸一化方差σ、分度a和困難度b的參數(shù)估計,并結(jié)合一部分初始數(shù)據(jù)獲得訓(xùn)練后的模型。②提取學(xué)生作答模型,使用訓(xùn)練過的FuzzyCDF對學(xué)生作答情況進行分析,由式⑴計算學(xué)生對各個知識點的掌握情況,由式⑵、式⑶計算學(xué)生在各個試題上的掌握水平,學(xué)生試題掌握水平表現(xiàn)為一個矩陣(即學(xué)生試題掌握矩陣A,A中的每一行代表一個學(xué)生,每一列代表一個試題)。③由于每次學(xué)生在使用系統(tǒng)進行習(xí)題練習(xí)之后都會產(chǎn)生新的歷史作答記錄,因此在學(xué)生每次使用完系統(tǒng)退出之后,都需要更新參數(shù)以準(zhǔn)確獲得學(xué)生的知識點掌握情況。
在得到學(xué)生認(rèn)知診斷信息和答題風(fēng)格相似的學(xué)生集合U后,將其用于概率矩陣分解。具體的,首先在學(xué)生試題掌握矩陣A中提取出學(xué)生集合U中所有學(xué)生的試題掌握情況組成相似學(xué)生試題掌握矩陣S,然后由式⑸從相似學(xué)生試題掌握矩陣S中提取特征buv,其作為PMF的先驗信息[6]。
其中,bu表示學(xué)生Pu的學(xué)習(xí)得分先驗程度,體現(xiàn)了學(xué)生之間知識點掌握程度的差異,為矩陣A第u行的平均值bv表示試題v的先驗得分程度,體現(xiàn)了題目之間難易程度的差異,為矩陣A第v列的平均值。然后利用概率矩陣分解和式⑹獲得學(xué)生的潛在作答情況ηuv。
其中,μ為總體平均分,ρ表示學(xué)生個性學(xué)習(xí)狀態(tài)與共性學(xué)習(xí)狀態(tài)在預(yù)測時所占的比例,ρ∈[0,1],ρ越大表示預(yù)測得分更多的受學(xué)習(xí)狀態(tài)共性影響,可自行調(diào)節(jié),M、N表示PMF 分解出的低緯因子。其中,個性學(xué)習(xí)表示不考慮與其他學(xué)生的相似度,而共性學(xué)習(xí)則考慮當(dāng)前學(xué)生與其他學(xué)生間的相似度。
在獲得學(xué)生潛在作答情況ηuv后,計算出學(xué)生Pu正確回答試題v的概率,隨后設(shè)定邊界值low和high(low<high),根據(jù)學(xué)生潛在作答情況向?qū)W生Pu從待推薦試題集合J中向其推薦正確作答概率在low和high之間的試題集合J0。
系統(tǒng)采用SpringBoot、Layui、Thymeleaf 開發(fā),數(shù)據(jù)庫選用Mysql,F(xiàn)uzzyCDF 與PMF均以Python 語言編碼,使用EChart 進行數(shù)據(jù)可視化,運用Runtime.getRuntime()執(zhí)行腳本文件從而實現(xiàn)在Java 項目中調(diào)用FuzzyCDF與PMF算法。系統(tǒng)主要包括了用戶管理、試題管理、知識點管理、試題推薦、學(xué)習(xí)診斷報告、習(xí)題練習(xí)等六個模塊。系統(tǒng)的功能模塊結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)功能模塊結(jié)構(gòu)
系統(tǒng)中六個核心模塊的特點如下。①用戶管理模塊:系統(tǒng)支持管理員、教師、學(xué)生三種權(quán)限登錄,管理員負(fù)責(zé)管理教師和學(xué)生賬號,教師負(fù)責(zé)知識點管理、試題管理,學(xué)生可進行試題練習(xí)和查看認(rèn)知診斷報告。其中,管理員賬號只能在數(shù)據(jù)庫中添加,教師賬號只能由管理員進行管理而不能注冊,學(xué)生賬號允許學(xué)生自主注冊。②試題管理模塊:系統(tǒng)支持教師錄入、修改、刪除試題,為試題添加相關(guān)知識點。③知識點管理模塊:系統(tǒng)支持教師增加、修改、刪除知識點信息,同時知識點的變化會影響Q矩陣的變化。④試題推薦模塊:系統(tǒng)用本文提出的試題推薦方法生成學(xué)生試題推薦列表。⑤學(xué)習(xí)診斷模塊:系統(tǒng)將學(xué)生對各知識點的掌握情況通過Echart 以可視化的方式呈現(xiàn),讓學(xué)生直觀地了解自己對各個知識點的掌握情況,有助于提高增強學(xué)習(xí)針對性和提高學(xué)習(xí)效率。⑥試題練習(xí)模塊:系統(tǒng)支持學(xué)生自己選擇不同知識點關(guān)聯(lián)的試題,也支持學(xué)生練習(xí)系統(tǒng)推薦試題。學(xué)生選擇練習(xí)推薦試題時,系統(tǒng)訪問數(shù)據(jù)庫查看學(xué)生最新的試題推薦列表,將試題展示出來。學(xué)生在進行試題練習(xí)時系統(tǒng)會記錄其作答情況及答題行為。
學(xué)生登錄后的首頁如圖3 所示,認(rèn)知診斷結(jié)果的展示頁面如圖4所示。
圖3 學(xué)生首頁
圖4 認(rèn)知診斷報告頁面
本文提出的個性化試題推薦方法和系統(tǒng),基于模糊認(rèn)知診斷框架獲取學(xué)生的當(dāng)前認(rèn)知狀態(tài),分析學(xué)生答題過程中的動態(tài)行為數(shù)據(jù),獲得學(xué)生的共性特性,通過結(jié)合這兩方面的信息來提高個性化試題推薦的準(zhǔn)確性有利于提高學(xué)生的學(xué)習(xí)效率和試題資源利用率。未來研究中,我們將引入自然語言處理,使系統(tǒng)能處理簡答題等多種主觀題,以完善系統(tǒng)對更多主觀和客觀題型的處理機制。