謝 瑩,許榮斌
(安徽大學 計算機科學與技術學院,安徽 合肥230601)
目前高校的各理工科專業本科應用型人才培養體系中,程序設計能力是應用型人才培養的重要目標.在程序設計實踐教學中,考試是檢驗學生能力和教學效果最為有效的手段,其重要性不言而喻.健全公平公正的考試制度,發揮考試的評價功能,實現最終的教學目標,是人才培養過程中需要研究和探討的重要課題.在高校多年來進行的程序設計考試中,教師應該在每一批考試前選擇難度具有穩定性的試卷來保證考試的公平性[1-3].近年來試卷難度的評價方法引起了很多學者的注意.
試卷及試題難度定義為某試題回答錯誤的考生占到全部考生的比例.研究發現,試題的難度信息在組卷前是不容易被直接觀測到的,傳統的方法是由教師進行人工估計.那么,由于教師估計存在很大的主觀性,而且當試題量大的時候人力工作的效能也會下降,得到的難度估計值也會有較大偏差.所以,設計一種自動且高正確率的試題難度預測算法是當前迫切需要解決的工作.以多年的程序設計測試歷程看,現存的自動化閱卷系統已經可以采集到豐富的測試記錄,學生的測試日志以及試題的文本素材,這些信息將有助于工作人員設計試題難度預測 (Test Difficulty Prediction)工作.例如,一項程序設計測試題包含兩個問題,每個問題包含了對應的文檔(Test Content),試題(Test Question)和選項(Test Option).
測試題中的文本理解如自然語言理解(NLP)的相關研究有了一定的進展.但這些研究成果無法直接應用在試題難度預測工作上,主要原因如下:①程序設計測試題中的文本素材(如文檔,試題和選項)需要從語義的角度來理解和表示;②不同的題干包含的文本不同,需要研究題干所對應文本的重要性程度.
為了更好地解決這些問題,筆者提出一種基于注意力機制的深度置信網絡Attention Deep Belief Neu ral Network(ADBN)框架,這個框架可以在具備學生往年測試日志和題干前提下,構建模型用以自動預測試題難度.框架采用一個基于DBN的神經網絡結構來表示試題的語義表示,再通過使用注意力機制訓練ADBN框架進而預測到每一項新試題的難度值.新框架在大規模試題數據集上進行了豐富的實驗,驗證了其有效性.該框架為程序設計課程試題難度預測工作提出了一套基于歷史數據、注意力機制驅動的解決方案,保證了組卷難度的穩定性,有助于更好地建立程序設計課程公平公正的考試制度.
首先闡述程序設計試題難度預測任務的具體工作,其次分析模型的具體組成部分,提出基于試題相關度的訓練策略來幫助提高預測的準確率.
指定程序設計測試問題集合,其中包含試題Qi文檔、問題和選項.每一項試題具有對應的難度值,訓練集中的難度值Pi∈[0,1]從歷年的測試日志中獲得.試題難度預測工作的目標是依據試題Qi的屬性訓練出預測模型ADBN.當再有新試題需要用以組卷時,ADBN模型將對新試題進行難度估計,使得每次組卷時都能夠控制試卷的整體難度,保持試卷難度穩定.
程序設計試題難度預測的整體流程主要分為:訓練和測試.在訓練部分中,給定考生的歷年測試日志,提出ADBN來理解和表示問題Qi對應的文本素材難度P~i,再提出試題相似度策略用以訓練ADBN,使試卷中試題的難度分布較為合理.在測試部分,ADBN模型可以針對擬采用的試題計算難度值.
筆者將詳細闡述ADBN的組成部分和技術細節.ADBN主要包含4個部分(見圖1):輸入層、語義DBN層、注意力獲取層和預測層.其中語義DBN層和注意力獲取層是最重要的兩個部分,前者主要是從語義角度學習問題的文本素材;后者則通過度量問題文本的相似度來學習對應問題的注意力表示.

圖1 ADBN整體框架圖
(1)輸入層.將問題 Qi的文本輸入到 ADBN 的輸入層,包含有文檔(TGi),問題(TQi)以及對應選項(TOi).TCi為語句序列,TCi={S1,S1…,SM},其中M是序列的長度.TQi和TOi的每一個選項都為獨立語句.每一個語句由一系列詞s組成,s={w1,w1…,wN},其中wi∈Rd0,wi由d0維詞嵌入來進行初始化工作,這些詞嵌入都是預訓練過的內容.N是句子的長度.文檔則由張量TCi∈RM×N×d0表示,問題 TQi及 TOi的選項構成矩陣 s∈RN×d0.
(2)語義表示DBN層.第二層為語義DBN層,目的在于從詞的角度學習語義表示.筆者選擇基于DBN的結構來表示語句,主要考慮到幾點:①考生一般通過局部關鍵字來獲取題干信息,DBN結構比較適合用來獲取局部語義信息;②DBN可以獲取詞之間的連接,并可以得到語義的深度表示;③與其他深度學習結構相比,DBN提高了訓練過程中的信息提取,進而提升預測模型的兼容度.
語義表示DBN層是傳統DBN的改進,在實際工作中可以獨立訓練每一層RBM網絡結構,確保特征向量映射到不同特征空間時盡可能多地提取特征.假設語句矩陣輸入s∈RN×d0,s={w1,w1…,wN},得到第一批新的隱層語句,如

其中b∈Rd,d是輸出維度.σ(x)是非線性激活函數tan.隨著不斷地得到隱層語句,連續的k個詞就可以構成局部的語義表示.將序列ˉhcp中的特征融合入新的全局隱層序列,如接著,得到全局集成詞,從而形成一個句子,得到向量化的表示為語句表示DBN層的輸出維度.到目前為止,文檔就轉換為了矩陣TCi∈RM×d1,這個矩陣含有M個句子的表示信息.問題題干TQi和TOi每一個選項的文本都是語義向量s∈Rd1.
(3)注意力表示層.在從語義DBN層中獲得語義表示后,注意力層的主要目的在于針對每一個問題題干來檢測難度注意力表示,需要針對某一具體問題的相似度來度量文本素材,進而學習問題的注意力表示.
注意力表示由向量進行建模,通過加權文檔和選項角度表示語句.對某一問題Qi,文檔的注意力向量DAi可表示為:

與文檔注意力向量DAi相似,針對問題Qj的選項注意力向量OAi建模如方程(1)所示.注意力分值αj使得ADBN以高分提取語句作為具體問題的信息.后面的實驗部分將針對某一具體問題的注意力結果進行深度分析.
(4)預測層.最后一層為預測層,預測層的目的在于預測問題Qi的難度Pi,而已有的信息包括文檔注意力DAi,選項注意力OAi以及語句表示.實驗中,首先通過連結操作將它們聚合,接著執行傳統的全聯接網絡來學習Oi的整體難度表示,最后通過邏輯函數預測難度Pˉi(其中W1,b1,W2,b2為網絡參數):

試題相似度目標方程:首先建構試題相似度的訓練元組{(Ti,Qi,Qj)}.目標方程轉換為相似度目標方程:

其中Pi和Pj表示為問題Qi和QJ在問題Qi中的真實難度.至此,得到ADBN模型直接最小化方程J.
接著,訓練后的模型M可以對新來的試題預測難度.估計完新試卷中問題的難度后,就可確定這份試卷是否可以投入到正規測試中去.
(1)數據集描述.實驗數據集包含了10多萬的歷史測試日志.實驗采用word2vec工具在輸入層中執行單詞映射工作,維度設為 100[4].
(2)ADBN設置.考慮到大約90%以上的文檔包含有少于20個語句和30個詞,所以本實驗設置文檔句子的最大長度M=20,詞的最大長度N=30.映射到四層神經網絡上的維度為(100,200,400,600).
(3)訓練過程設置.采用隨機初始化的方法初始化所有網絡層核向量參數,使得它們都在之間,其中nin和nout是相對應神經網絡的輸入和輸出特征大小[5].在訓練時設置最小batch為24,并設置概率閾值0.3的dropout來防止過擬合.
(4)對比方法.采取 CRBMs[6]、SDBN[7]和傳統 DBN[8]作為對比方法.ADBN 和對比方法都在 Tensorflow下執行,系統實驗在GeForce GTX 1070 Ti,1 683/8 000 MHz 8 GB/256 Bit GDDR5 PCI-E GPU下執行.
(5)評價方法.為了測試ADBN的性能,實驗采用常見的均方根誤差 (RMSE)來計算試題難度預測精度.本項工作也借鑒了教育心理學的相關測量方法.在教育心理學中,對某試卷而言,真實難度和預測值相關性越高,則性能越好.實驗采用了皮爾遜相關系數Person Correlation Coefficient(PCC)平均值來度量相關度性能.在實驗中,RMSE越小,性能越好;PCC值越大則性能越好.
(1)試題難度預測結果.為了觀測新方法在不同數據稀疏度下的性能,實驗隨機選取了數據集的60%,40%,20%,10%作為測試集合,余下部分作為訓練集.為了預防過擬合,實驗去除了訓練集中相同的問題文檔,保證測試集和訓練集中都具備不同的問題.
表1展示了新方法和對比方法的試題難度預測任務實驗結果,通過使用注意力機制來度量文本相似度(RMSE越小越好),可以看出ADBN效果最好.

表1 試題難度(RMSE指標)
(2)與教師人工標注比較.為了進一步展示ADBN的性能,實驗選擇了10份標準測試并邀請5位教師專家來人工處理程序設計試題.每一份試卷包含36個試題.教師作答并標注難度值.將教師標注的的預測值平均后記為TeAvg,得到6個教師標注值(5位教師標注值+1份平均標注值).根據教育學原理,實驗使用PCC來獲得預測難度和實際難度的相關性,結果見表2.

表2 ADBN與教師標注結果比較(PCC指標)
ADBN在大多數情況下比教師標注效果要好,這意味著ADBN的預測結果是和實際較為符合的.同時也可以看到教師標注的難度值穩定性不夠.比如,存在有教師做試題難度預測任務做得很好,但是其他教師沒做出來,主要原因是教師進行難度標注的時候比較主觀,不容易保持連續的注意力,容易出錯.
本文提出一種基于注意力機制的深度置信網絡(Attention Deep Belief Network)方法,此方法用來解決程序設計測試試題難度自動預測問題.文章首先設計了一種基于深度置信網絡架構,研究測試問題的語義表示;接著用注意力機制度量測試問題的難度;最后提出相似度策略來訓練ADBN,并生成預測難度值.新框架在10萬條程序設計測試日志上進行了相關實驗,并采用常見的RMSE和教育心理學中常用的PCC指標進行驗證.實驗結果表明,新模型在有效性和可解釋性方面效果顯著.