羅琨杰,張 瓏,楊 波,孫華志
(天津師范大學計算機與信息工程學院,天津 300387)
隨著互聯網的發展,在線資源極易出現信息過載,相關領域通過逐漸完善個性化推薦算法解決該問題[1].在教育領域,隨著教育信息化和素質教育的提出,實現智能“因材施教”形態下的個性化課程資源推薦越來越重要.課程推薦屬于典型的數據挖掘項目,旨在挖掘出學習者潛在的個性化學習興趣[2],然后提出下一步的學習建議.課程推薦常用的算法通常是從其他類型的推薦模型中遷移過來的(如電影、音樂、電子商品等的推薦).一個通用的課程推薦模型包括基于學習者的協同過濾[3-4]、基于課程的協同過濾以及利用矩陣分解[5-6]和內容感知[7]來捕獲學習者的個性化潛在學習興趣的方法.由于課程學習時間長(幾周甚至更長)且具有學習順序,因此這種長期學習行為導致課程推薦的數據形成了區別于電影、音樂等數據的獨有特點,表現出的數據稀疏性程度更深.因此,大多數研究者在設計課程推薦系統時常利用許多其他輔助信息[8]進行主題建模[9]以彌補學習行為的不足.考慮到學習順序的問題,文獻[10]提出一種計算課程先驗關系的推薦算法,用以構建更好的課程學習推薦順序.為更好地獲得課程的先驗關系,文獻[11]引入其他輔助信息用于計算先驗關系:在一種混合的學習環境下設計一種基于關聯規則的課程推薦系統.這些方法雖然在推薦性能上有一定提升,但需要大量額外的輔助信息數據和資源.
近年來,越來越多的推薦算法基于深度學習[12-13]設計模型.文獻[14]提出的分解課程相似度模型(factored item similarity model,FISM)將學習者的歷史學習行為表示為嵌入向量,再利用學習者兩兩嵌入向量之間的內積來建模學習者的相似度.而在學習者的課程學習中,想從每門課程中獲得的知識是不同的,學習行為的權重也不同,而FISM在目標課程與歷史課程的計算中將所有的歷史行為看作同等重要,將其遷移到課程資源推薦上會限制模型的表達能力,也不利于個性化學習興趣的獲取.為解決該問題,文獻[15]提出一種基于神經注意力項目相似的推薦模型(neural attentive item similarity model,NAIS).該模型是融合注意力機制的神經協同過濾推薦算法,通過區分學習者每個歷史行為的重要性,給每個歷史行為都賦予注意力系數[16-18]作為歷史行為的貢獻度來進行學習者的偏好計算,NAIS可以看作是FISM的一種增強模型.而學習者的學習興趣可能會隨著時間的推移而改變,采用以上算法獲得的結果是一種當時時刻的歷史貢獻值,而不是學習者動態興趣變化賦能的動態興趣偏好貢獻.模型將各時刻的歷史行為都視為靜態的,無法平衡學習者歷史行為靜態偏好和近期動態化偏好間的關系,只能獲得靜態化的歷史學習行為貢獻值,致使最終的推薦性能欠佳.
本文提出一種聯合神經協同過濾與短期偏好的課程推薦模型,利用短期偏好嵌入與歷史行為嵌入獲得動態興趣賦能的歷史行為嵌入的新表示,利用新嵌入表示更新計算學習者歷史行為的動態化貢獻度,重構個性化動態學習興趣,以提高推薦性能.
本文模型的主要思想是通過利用學習者短期學習行為的動態偏好,將其與學習者各時刻的歷史行為嵌入融合,形成重構的個性化歷史行為嵌入表示,構建動態興趣賦能的歷史行為的新貢獻度,最后利用算法融合后的損失函數對模型進行訓練,獲得更準確的歷史新貢獻度和個性化偏好來進行課程推薦.本文推薦模型的整體流程如圖1所示.

圖1 推薦模型流程Fig.1 Flow of recommended model
將學習者表示為集合U={u1,u2,…,um},將課程集合表示為C={c1,c2,…,cn},學習者的課程學習注冊行為表示為矩陣Rm×n,rij∈{0,1},學習者ui對課程cj的注冊行為視為學習者的歷史行為,標記為rij=1,反之標記rij=0.令x1,x2,…,xt為學習者對課程注冊的歷史行為序列,其中xt為學習者在時刻t的注冊行為.推薦系統的最終目標是要給學習者推薦時刻t+1的目標課程ci,而該目標課程ci來自于學習者未注冊過的課程序列候選集.
該模塊以歷史行為序列x1,x2,…,xt和目標課程ci作為輸入,采用基于學習者注冊過的歷史課程與未注冊過的目標課程的相似度計算的協同過濾算法來擬合數據.利用模塊融入的注意力機制將輸入值輸入到注意力網絡計算學習者的歷史行為的權重值,以獲得不同學習者不同歷史學習行為的歷史貢獻度.該過程需要將輸入序列處理為嵌入的形式,具體處理方法是將歷史行為序列表示為Multi-hot的編碼方式,在獲得基礎的歷史行為表示后輸入線性嵌入層,獲得最終的歷史行為的嵌入序列q1,q2,…,qt.將目標課程利用One-hot的編碼方式得到目標課程的稀疏向量表示,再輸入到線性嵌入層后降維得到稠密向量pi,表示目標課程的嵌入[19].最后利用學習者的各個行為特征嵌入與學習者的目標課程嵌入作為注意力網絡的輸入,獲得學習者每個歷史行為的一個標量值作為輸出,表示貢獻度.該模塊涉及不同歷史行為的權重問題,因此引入softmax函數歸一化權重計算神經注意力相似度,獲取歷史行為的貢獻值[15].基于課程的歷史行為的貢獻值aij表示為
其中:f為使用一個多層感知機(multilayer perceptron,MLP)進行計算的函數,且以Relu為激活函數;R+u為學習者曾經注冊過的課程集合;β為針對某些過度活躍的學習者獲得過度懲罰的softmax分母的平滑系數,β∈[0,1],當β=0.5時的推薦效果最佳.上述利用神經協同過濾歷史貢獻計算的整體框架結構如圖2所示.

圖2 神經協同過濾歷史貢獻計算框架Fig.2 Neural collaborative filtering framework for computing historical contributions
本文基于雙向長短時記憶網絡(BI-LSTM)[20]構建短期偏好模型,模型結構如圖3所示.

圖3 捕獲短期偏好的模型結構Fig.3 Model structure for capture short-term preference
該模型網絡以歷史行為序列作為輸入,為了獲得近期的動態性興趣,選用最近的部分歷史行為序列,下文的實驗部分中說明了選取最近3次的歷史行為序列(xt-2,xt-1,xt)獲得的性能最佳.隱藏向量的特征狀態為

BI-LSTM包含左右序列上下文的2個子序列,分別表示前向網絡和后向網絡所獲得的高層次特征狀態,因此學習者在時刻t的歷史行為序列產生的包含上下文信息的隱藏向量的特征狀態ht表示為

其中:ht∈Rd,H∈Rd×t,d為學習者歷史行為嵌入的維度.之后,利用自注意力機制來學習短期偏好S,其過程為

其中:tanh為特征狀態的激活函數;w為訓練獲得的超級參數矩陣;α為由自注意力機制獲得的每個狀態特征的權重向量.
為更好地平衡各時刻歷史行為與近期動態性偏好,本文建構了一種融合短期偏好的動態性偏好行為的新表示,用以重構近期動態性偏好變化賦能的歷史行為的新貢獻度.模型結構如圖4所示,通過γ控制融入的短期偏好S的比例后,分別與學習者在時刻1到t注冊過的第j個課程的嵌入qj相乘,重構得到學習者動態興趣賦能的新嵌入表示qsj,將其與目標課程嵌入輸入到注意力機制模塊中,建構學習者歷史行為的新貢獻度aisj.將該新貢獻度作為學習者歷史行為的權重值,重新量化不同歷史學習行為的重要性,其形式為


圖4 模型的整體結構Fig.4 Overall structure of the model
當學習者的歷史行為處于負面狀態時(學習興趣已改變),通過融合短期偏好后獲得的qsj向量會變得稀疏,弱化了新貢獻度aisj的計算,故短期偏好的引入對各時刻歷史行為與近期興趣起到平衡作用;當處于理想狀態時(學習興趣未改變),通過融合短期偏好后獲得的qsj向量會變得更加稠密,強化了新貢獻度aisj的計算,此時短期偏好將起到輔助作用.這2種情況下模型都能獲得近期動態興趣賦能的偏好.
獲得新貢獻度后,利用基于課程的協同過濾進行課程推薦.

為獲得更好的推薦性能,需要在融合后的模型中選擇特定的目標函數優化模型.整個推薦問題中的隱式反饋被視為二分類問題,故選用二元交叉熵函數作為損失函數的一部分.同時,為更好地匹配模型中引入的短期偏好,加入負對數似然函數,聯合訓練整個模型.訓練中將學習者的歷史行為序列看作正樣本,從該學習者未注冊的樣例中隨機采樣99個作為負樣本,因此最小正則化日志損失函數定義為

其中:N為訓練實例總數;σ為激活函數;ti為One-hot表示的一個正確標記數據;R+、R-分別為正、負樣本集合;λ為L2正則項的權重參數,用于防止過擬合.
選用來自學堂在線真實的MOOC數據集進行實驗.選擇學習者在2016年10月至2018年3月之間的歷史注冊課程的有效行為作為學習行為的歷史記錄,數據集中用戶數為82 535,課程數為1 302,互動數為458 454,數據集稀疏度為99.57%.
由于實驗引入了短期偏好并且數據集的稀疏度高達99.57%,因此對數據集進行清洗過濾處理,將歷史行為長度低于3的記錄過濾.考慮到行為序列相對較少的情況,按照時間線對數據集進行劃分,2016年10月至2017年12月的數據作為訓練集,2018年1月至3月的數據作為測試集.
采用top-K推薦中廣泛使用的評估方法,即以基于召回的命中率(hit ratio,HR)和基于位置預測的歸一化折損增益(normalized discounted cumulative gain,NDCG)作為性能評估指標.
采用Python3和TensorFlow框架實現模型構建并在Linux系統下運行實驗.模型訓練參考已有的相關文獻[15,20]對部分參數進行設置,設置學習率為0.5~0.000 1;嵌入維度為64、32、16、8,依次取值實驗;迭代次數為15;丟棄率為0.75;Batch_size為128;γ為0.2.
為驗證所設計模型的推薦性能,將本文模型與常用模型FISM[14]、MLP、NeuMF(neural matrix factorization)和NAIS[15]進行比較.MLP模型利用多層感知機對學習者和課程學習行為數據進行處理,從中獲得評分函數以學習相關課程被選擇的概率,從而進行課程推薦[21].NeuMF模型通過融合矩陣分解和多層感知機,建模復合矩陣分解與多層膜耦合課程排序,屬于神經協同過濾推薦模型,是神經協同過濾算法中使用最為廣泛的模型之一[21].
在相同的環境下進行實驗,5種模型的HR和NDCG實驗結果見表1.由表1可見,本文模型與另外4種模型相比,2個評價指標都有不同的增長,推薦性能得到一定提升.

表1 課程推薦性能比較Tab.1 Performance comparison of course recommendation
5種模型的HR和NDCG隨迭代次數變化的情況見圖5.由圖5可見,5種模型的HR和NDCG隨迭代次數的增加都呈先上升后下降再穩定的趨勢,本文模型的指標在后期迭代中一直處于穩定的狀態,而NAIS和FISM的2個指標都有一段明顯的下降趨勢,這是因為在迭代后期,由于MOOC數據集的稀疏性使得模型收斂較快,且神經網絡中的權重和參數更新次數增多造成了過擬合,這說明本文模型的魯棒性較強.NeuMF和MLP在迭代后期較NAIS和FISM穩定,但性能整體上低于本文模型.因此本文模型更適合于具有高度稀疏性的數據集的推薦任務.

圖5 5種模型2個指標隨迭代次數的變化Fig.5 Changes of two indicators of five models with the number of iterations
實驗對比了使用LSTM和BI-LSTM的模型性能,HR和NDCG見圖6.由圖6可見,在迭代前期,LSTM和BI-LSTM的HR基本一致,LSTM的NDCG低于BI-LSTM,但相對穩定,隨著迭代的增加,LSTM的2個指標呈現下降趨勢.說明LSTM雖然在一定程度上能提升推薦性能,但在面對具有高度稀疏性的數據集時,穩定性低于BI-LSTM,因此,使用BI-LSTM在課程推薦中捕獲學習者的短期偏好后融入貢獻度計算模型更加適合.

圖6 使用LSTM和BI-LSTM 2個指標隨迭代次數的變化Fig.6 Changes of two indicators using LSTM and BI-LSTM with the number of iterations
由于模型使用BI-LSTM來獲取短期偏好以重構學習者個性化學習偏好,因此選取的歷史長度也對模型性能有一定影響.選取歷史長度為1,2,…,6,本文模型和NAIS的HR和NDCG見圖7.由圖7可見,本文模型的HR和NDCG隨歷史長度增加呈先上升后下降的趨勢.歷史長度為3時的推薦性能最佳,這是因為融入的短期偏好起到平衡和輔助的作用,歷史長度過小不利于短期偏好的捕獲且構造的損失函數也不利于模型訓練,歷史長度過大又會引入其他噪聲信息,也不利于模型的訓練.

圖7 歷史長度對2個指標的影響Fig.7 Influences of history length on two indicators
本文模型旨在重構個性化學習偏好以平衡時刻偏好來更新計算歷史貢獻度,但時刻偏好不是完全片面、不可利用的偏好,將短期偏好融入神經協同過濾歷史貢獻度計算中時,需要選擇合適的比例才能獲得更好的推薦結果.選擇γ為0.1,0.2,…,0.9,本文模型和NAIS的HR和NDCG見圖8.由圖8可見,本文模型的2個指標隨γ的增大呈現波動趨勢.當γ=0.2時的實驗結果最好,這是因為針對數據集本身的特點,只需取相對較小比例即可獲得較好的性能,取值過大反而會限制模型的表達能力且弱化短期偏好的平衡和輔助作用.

圖8 融入短期偏好的權重比例對2個指標的影響Fig.8 Influences of weight proportion with short-term preference on two indicators
獲取歷史行為的貢獻度是課程資源推薦的一種重要應用方式.本文模型通過捕獲學習者近期的動態興趣偏好,不僅可以平衡興趣發生變化時歷史行為的靜態偏好問題,還能在興趣未改變時輔助計算偏好,獲得學習者更準確的個性化學習偏好表示,建構出計算動態興趣賦能的歷史行為的新貢獻度,能夠增強課程推薦模型的魯棒性,使推薦結果相對穩定.實驗結果表明,本文模型相比其他方法,在MOOC數據集上獲得了一定比例的性能提升.在未來工作中將嘗試利用強化學習、知識圖譜等技術以獲得各時刻偏好與個性化動態學習偏好的映射關系,以進一步提升推薦性能.