熊超,馬華
(湖南師范大學信息科學與工程學院,湖南 長沙 410081)
隨著近年來在線教育大規模普及,線上學習已經成為當前的主要學習形式之一,在線學習平臺中豐富的試題資源,對于學生鞏固與強化所學知識,發揮了重要作用[1]。但是,試題庫中的試題資源數量通常比較龐大,而多數現有的試題系統僅由學生自主選擇所需練習的試題,學生往往憑借主觀感覺去選擇試題,可解釋性不高。同時,學生對需要練習的知識點的感知較為籠統[2],容易陷入典型的學習困境,即不清楚自己對各個知識點的掌握情況,也不知道應該挑選哪些適合自己的試題來鞏固或強化所學的知識點。因此,我們對學生的認知狀態進行科學的診斷分析,并以此來指導在線學習平臺對學生進行個性化的試題推薦,這已成為當前的一個研究熱點[3-4]。
心理與教育測量中,對個體的認知過程、加工技能或知識結構的診斷評估被稱為認知診斷[5]。DINA模型[6]是一種典型的認知診斷模型,目前,大多數基于認知診斷的試題推薦都是基于DINA 模型,例如,朱天宇等人[7]基于DINA 模型提出了一套試題推薦方法。DINA 模型僅支持對客觀題的處理,即答案僅為對或錯兩種情況。針對DINA 模型的局限性,Liu 等人[8]提出了模糊認知診斷框架(fuzzy cognitive diagnosis framework,FuzzyCDF)以支持認知診斷模型處理主觀題。然而,現有研究在進行個性化試題推薦時,側重于考慮學生個體的認知診斷情況,缺乏對學生群體的共性特性的評估。
綜上所述,本文在模糊認知診斷框架的基礎上,對學生在主觀題和客觀題上的答題行為進行建模分析,計算學生答題風格相似度,再采用協同過濾方法計算具有相似做題風格的學生得分上的相似度。
通過充分考慮學生的個體知識點掌握程度和群體的學生學習共性,本文提出了一個新的個性化試題混合推薦方法,并基于它進行了系統實現,該系統以學生的試題作答情況、知識點關聯矩陣和答題行為作為輸入,對學生進行認知診斷分析與建模,獲取學生的知識點掌握情況,為其推薦合適的試題,生成學生認知診斷報告,以此為學生自主學習提供指導,可有效提升學生的學習質量和效率。
傳統的DINA 模型僅能有效地處理客觀題,而無法有效地處理主觀題。針對這一問題,Liu 等人[8]提出了FuzzyCDF。該框架的思路是首先通過IRT 的雙參數反應模型表達式計算出學生對知識點的認知狀態,即使用一個模糊集合中的值(即一個從0 到1 的實數)來表示學生對于知識點的認知能力,再用模糊并和模糊交運算來建立主觀題和客觀題的認知作答模式。使用知識點相關的模糊集的隸屬函數來確定學生i 對知識點k的掌握程度,其計算方法如下所示。

其中,αik表示學生i對知識點k的掌握程度,即學生i對知識點k的隸屬度i(k);aik表示知識點的區分度;bik表示知識點k對于學生i來說的難度;θi表示學生i的潛在特質水平;D為常數等于-1.7。對于客觀題,學生只有掌握試題考察的所有知識點才能答對它。而對于主觀題,學生在主觀題上的得分越高,說明他掌握的知識點越多,其對該題的掌握程度也越高。客觀題和主觀題的計算公式如下:

其中,ηij表示學生i對試題j的掌握程度;αik表示學生i對知識點k的掌握程度;qjk表示試題j是否考察了知識點k,取值為1代表考察了,取值為0代表未考察;∩和∪分別代表模糊交和模糊并運算。
概率矩陣分解(probabilistic matrix factorization,PMF)作為一種傳統的預測方法,最開始被用于電影推薦,之后被廣泛用于推薦系統,可以通過預測學生在試題上的得分來將其應用于個性化試題推薦。首先將學生和試題分別對應到傳統推薦系統中的用戶和商品,再將學生的答題情況矩陣對應用戶對物品的喜愛程度。圖1為將概率矩陣分解應用于學生得分矩陣分解時的圖模型,PMF 將學生得分矩陣R分解為學生和試題的特征矩陣M、N,其中M∈ZD×V、N∈ZD×V且Mu和Nv分別表示特定學生u和試題v的潛在特征向量來刻畫學生和試題在低維空間下的表現。

圖1 學生成績PMF圖模型
本文獲取的學生答題行為為學生跳題行為與學生修改答案行為。其中,學生跳題行為可分為明顯性跳題和技巧性跳題,明顯性跳題即用戶由于對試題考察知識點不熟悉等原因放棄試題,而技巧性跳題則表示學生為了取得更好的成績去運用一些技巧跳題,如在規定時間內作答試題,學生主動放棄一些耗時較大而分值較少的試題。由于本系統不限制學生做題的時間,因此僅需考慮學生的明顯性跳題行為。首先,系統在生成推薦試題列表時將試題號按列表順序存入數據庫中,之后在學生作答過程中將正在作答試題號與數據庫中應作答試題號進行比較,若相等則不記錄,若不相等則將數據庫中該學生跳題次數加1。同時,在用戶的作答過程中,除了記錄答案外還記錄本次答案提交時刻及上次答案提交時刻,若兩個時刻不相等,則說明用戶在作答后修改答案,將數據庫中該學生改題次數加1。
將學生每次作答完推薦試題后的答題情況存入數據庫中,每一條作答情況記錄對應一條推薦列表,0表示錯誤,1表示正確,以字符串形式存儲。
從數據庫中提取學生答題行為矩陣B矩陣,該矩陣一行表示一名學生,第一列為跳題次數,第二列為改題次數。通過式⑷計算兩個學生u1和u2之間的相似度。

計算當前學生與其余所有學生的相似度,然后選取相似度最高的前50名學生組成學生集U。
基于FuzzyCDF 進行學生認知診斷的步驟如下:①使用MCMC算法對FuzzyCDF進行失誤率s、猜測率g、潛在特質θ、主觀題歸一化方差σ、分度a和困難度b的參數估計,并結合一部分初始數據獲得訓練后的模型。②提取學生作答模型,使用訓練過的FuzzyCDF對學生作答情況進行分析,由式⑴計算學生對各個知識點的掌握情況,由式⑵、式⑶計算學生在各個試題上的掌握水平,學生試題掌握水平表現為一個矩陣(即學生試題掌握矩陣A,A中的每一行代表一個學生,每一列代表一個試題)。③由于每次學生在使用系統進行習題練習之后都會產生新的歷史作答記錄,因此在學生每次使用完系統退出之后,都需要更新參數以準確獲得學生的知識點掌握情況。
在得到學生認知診斷信息和答題風格相似的學生集合U后,將其用于概率矩陣分解。具體的,首先在學生試題掌握矩陣A中提取出學生集合U中所有學生的試題掌握情況組成相似學生試題掌握矩陣S,然后由式⑸從相似學生試題掌握矩陣S中提取特征buv,其作為PMF的先驗信息[6]。

其中,bu表示學生Pu的學習得分先驗程度,體現了學生之間知識點掌握程度的差異,為矩陣A第u行的平均值bv表示試題v的先驗得分程度,體現了題目之間難易程度的差異,為矩陣A第v列的平均值。然后利用概率矩陣分解和式⑹獲得學生的潛在作答情況ηuv。

其中,μ為總體平均分,ρ表示學生個性學習狀態與共性學習狀態在預測時所占的比例,ρ∈[0,1],ρ越大表示預測得分更多的受學習狀態共性影響,可自行調節,M、N表示PMF 分解出的低緯因子。其中,個性學習表示不考慮與其他學生的相似度,而共性學習則考慮當前學生與其他學生間的相似度。
在獲得學生潛在作答情況ηuv后,計算出學生Pu正確回答試題v的概率,隨后設定邊界值low和high(low<high),根據學生潛在作答情況向學生Pu從待推薦試題集合J中向其推薦正確作答概率在low和high之間的試題集合J0。
系統采用SpringBoot、Layui、Thymeleaf 開發,數據庫選用Mysql,FuzzyCDF 與PMF均以Python 語言編碼,使用EChart 進行數據可視化,運用Runtime.getRuntime()執行腳本文件從而實現在Java 項目中調用FuzzyCDF與PMF算法。系統主要包括了用戶管理、試題管理、知識點管理、試題推薦、學習診斷報告、習題練習等六個模塊。系統的功能模塊結構如圖2所示。

圖2 系統功能模塊結構
系統中六個核心模塊的特點如下。①用戶管理模塊:系統支持管理員、教師、學生三種權限登錄,管理員負責管理教師和學生賬號,教師負責知識點管理、試題管理,學生可進行試題練習和查看認知診斷報告。其中,管理員賬號只能在數據庫中添加,教師賬號只能由管理員進行管理而不能注冊,學生賬號允許學生自主注冊。②試題管理模塊:系統支持教師錄入、修改、刪除試題,為試題添加相關知識點。③知識點管理模塊:系統支持教師增加、修改、刪除知識點信息,同時知識點的變化會影響Q矩陣的變化。④試題推薦模塊:系統用本文提出的試題推薦方法生成學生試題推薦列表。⑤學習診斷模塊:系統將學生對各知識點的掌握情況通過Echart 以可視化的方式呈現,讓學生直觀地了解自己對各個知識點的掌握情況,有助于提高增強學習針對性和提高學習效率。⑥試題練習模塊:系統支持學生自己選擇不同知識點關聯的試題,也支持學生練習系統推薦試題。學生選擇練習推薦試題時,系統訪問數據庫查看學生最新的試題推薦列表,將試題展示出來。學生在進行試題練習時系統會記錄其作答情況及答題行為。
學生登錄后的首頁如圖3 所示,認知診斷結果的展示頁面如圖4所示。

圖3 學生首頁

圖4 認知診斷報告頁面
本文提出的個性化試題推薦方法和系統,基于模糊認知診斷框架獲取學生的當前認知狀態,分析學生答題過程中的動態行為數據,獲得學生的共性特性,通過結合這兩方面的信息來提高個性化試題推薦的準確性有利于提高學生的學習效率和試題資源利用率。未來研究中,我們將引入自然語言處理,使系統能處理簡答題等多種主觀題,以完善系統對更多主觀和客觀題型的處理機制。