樊海瑋,張銳馳,安毅生,秦佳杰
(長安大學(xué) 信息工程學(xué)院,西安 710064)
在線教育蓬勃發(fā)展,數(shù)字化學(xué)習(xí)資源呈現(xiàn)出資源海量的特征。學(xué)習(xí)者在有了諸多選擇的同時,也不可避免地面對嚴(yán)重的知識過載和學(xué)習(xí)迷航問題。為解決此問題,需要依靠個性化學(xué)習(xí)和適應(yīng)性推薦為學(xué)習(xí)者導(dǎo)航。
適應(yīng)性推薦是個性化學(xué)習(xí)過程中的核心任務(wù),經(jīng)典的推薦算法依據(jù)群體的歷史行為信息與相似性關(guān)系發(fā)掘?qū)W習(xí)者的潛在興趣偏好[1]。此類算法僅將學(xué)習(xí)者與資源的交互信息作為輸入,數(shù)據(jù)的稀疏性使推薦存在一定的缺陷。綜上,傳統(tǒng)推薦算法存在以下缺陷:1)交互數(shù)據(jù)的稀疏性會影響推薦性能并且存在冷啟動問題;2)在推薦過程中無法針對學(xué)習(xí)者不同的學(xué)習(xí)目標(biāo)作出適應(yīng)性推薦。
為了解決上述問題,研究者通過引入不同的輔助信息來提高推薦性能。知識圖譜包含了實體間豐富的語義關(guān)聯(lián)關(guān)系并具有信息多樣且適用性強的特點,可以為推薦系統(tǒng)提供豐富的輔助信息[2]。其特有的結(jié)構(gòu)信息可以刻畫學(xué)習(xí)者與學(xué)習(xí)資源在知識層面上的聯(lián)系,在推薦過程中不僅能考慮到學(xué)習(xí)者的興趣偏好,也可以將資源間的關(guān)聯(lián)作為推薦依據(jù)。故將知識圖譜引入推薦算法,旨在:1)知識圖譜中包含了項目之間的語義相關(guān)性,可用于發(fā)現(xiàn)項目之間的隱含關(guān)系,提高推薦的準(zhǔn)確率;2)利用連接圖譜實體的不同的關(guān)系類型可以合理擴展用戶興趣偏好以及特征,增加推薦結(jié)果的多樣性;3)知識圖譜連接了用戶的交互項目與被推薦項目,這使推薦算法具有可解釋性。本文基于知識圖譜,利用學(xué)習(xí)者特征在知識圖譜上的傳播以及學(xué)習(xí)資源在知識圖譜中的鄰居信息,提出一種融合知識圖譜鄰居雙端的學(xué)習(xí)資源推薦算法KNDP(Knowledge Neighbor Double Polymerization),并在公開數(shù)據(jù)集MOOPer 上通過對比實驗分析,驗證了該算法的有效性。
推薦算法的目標(biāo)是從海量數(shù)據(jù)中提取用戶所感興趣的信息,是解決“信息過載”問題的有效工具之一[3]。王根生等[4]將用戶的學(xué)習(xí)行為轉(zhuǎn)化成用戶對資源的評分并改進用戶的相似度計算來解決推薦系統(tǒng)中潛在的數(shù)據(jù)稀疏和冷啟動問題;Zhuhadar等[5]利用學(xué)習(xí)材料構(gòu)建基于領(lǐng)域本體的E-learning 資源知識庫,將基于內(nèi)容和基于規(guī)則的方法相結(jié)合,為用戶提供混合推薦;趙繼春等[6]構(gòu)建了一種基于領(lǐng)域本體與學(xué)習(xí)者屬性信息的特征模型,以學(xué)習(xí)特征模型為基礎(chǔ)設(shè)計一種融合相似度的協(xié)同過濾推薦方法;聶黎生[7]提出了基于行為分析的學(xué)習(xí)資源推薦算法,挖掘?qū)W習(xí)者行為數(shù)據(jù)并將其格式化融入?yún)f(xié)同過濾推薦中。在上述文獻中,為了克服傳統(tǒng)推薦算法所存在的缺陷,研究者引入了不同類型的輔助信息以提高推薦性能。然而,這些輔助信息僅包含用戶或項目的孤立特征。事實上,無論是用戶與項目間,還是項目與項目間均存在豐富的關(guān)聯(lián)。為推薦算法引入知識圖譜可以通過實體間豐富的關(guān)系獲得用戶與項目之間的細(xì)粒度關(guān)系,從而提升推薦的性能。
基于知識圖譜的推薦主要分為兩類:基于嵌入方法和基于路徑方法的推薦[8]。基于嵌入方法將知識圖譜中的節(jié)點與邊映射為低緯度的稠密向量,以豐富用戶與物品的表示信息。例如,吳璽煜等[9]使用知識圖譜表示學(xué)習(xí)方法,將語義數(shù)據(jù)嵌入到低維空間,并將物品語義信息融入?yún)f(xié)同過濾推薦;陳平華等[10]使用知識圖譜表示學(xué)習(xí)把項目實體嵌入低維向量空間,向矩陣分解模型中加入實體信息,計算實體之間的語義相似性,來提升推薦性能。上述基于嵌入方法的推薦方式首先需要利用表示學(xué)習(xí)將知識圖譜中的節(jié)點和邊轉(zhuǎn)化為向量,其中經(jīng)典的表示學(xué)習(xí)方法有TransE(Translating Embeddings)[11]與TransR(Translation in the corresponding Relation space)[12]等。此類嵌入方法側(cè)重于建立嚴(yán)格的語義相關(guān)性,故更適用于連接預(yù)測或知識補全等圖內(nèi)應(yīng)用而不是推薦算法。
基于路徑方法的推薦的主要思想是挖掘基于圖譜用戶、項目之間多種連接關(guān)系,例如,Hu等[13]通過卷積神經(jīng)網(wǎng)絡(luò)針對不同的元路徑采樣得到路徑的嵌入表示后構(gòu)造基于元路徑的用戶偏好特征,最后結(jié)合神經(jīng)矩陣分解(Neural Matrix Factorization,NeuMF)模型[14]構(gòu)建推薦系統(tǒng);Sun等[15]采用元圖的方式替代元路徑對知識圖譜進行特征提取,相較于元路徑更能描述復(fù)雜的特征信息。然而此類算法需要先從數(shù)據(jù)中抽取和構(gòu)建大量的元路徑(元圖),當(dāng)圖譜或者推薦場景發(fā)生變化時需要對其重新構(gòu)造,并且元路徑或元圖主要依靠手工抽取,在實際場景中難以實現(xiàn)最優(yōu)。
上述方法通過引入知識圖譜提升推薦算法的性能,卻未充分利用知識圖譜的信息。RippleNet[16]在給定與用戶交互過的項目后,通過將此項目的向量同用戶周圍的n跳項目進行交互計算最終得到用戶的嵌入表示。知識圖譜卷積網(wǎng)絡(luò)(Knowledge Graph Convolutional Network,KGCN)[17]能夠更好地捕捉項目的鄰域信息,針對特定用戶與圖譜中的特定關(guān)系給出鄰居節(jié)點與該節(jié)點聚合的權(quán)重,用加權(quán)結(jié)果表示鄰居節(jié)點,完成項目向量的計算。這兩種模型均提供了端到端的推薦方法,使用戶(項目)以及知識圖譜實體與關(guān)系的嵌入表示成為可學(xué)習(xí)向量。但上述兩種模型僅從用戶或項目一端出發(fā),沒有同時考慮兩端的信息,而且RippleNet 在傳播用戶偏好時其傳播方向是隨機的,故并不能充分表示學(xué)習(xí)者特征。
綜上所述,本文提出的KNDP,以學(xué)習(xí)者為用戶端,以學(xué)習(xí)資源為項目端,將學(xué)習(xí)者的特征在知識圖譜上有選擇性地傳播并控制每一跳傳播的權(quán)重,以獲得學(xué)習(xí)者的嵌入表示;在聚合學(xué)習(xí)資源的一階或高階鄰居節(jié)點時,通過用戶端的學(xué)習(xí)者嵌入表示來為其分配聚合權(quán)重,來擴充其嵌入表示;最后通過得到的學(xué)習(xí)者和學(xué)習(xí)資源嵌入表示計算兩者的交互概率。
在為學(xué)習(xí)者推薦學(xué)習(xí)資源時,學(xué)習(xí)者和學(xué)習(xí)資源的集合分別設(shè)置為S={s1,s2,…,sn}和L={l1,l2,…,lm},兩者的交互矩陣定義為M=(msl),其中s∈S,l∈L。當(dāng)學(xué)習(xí)者s與學(xué)習(xí)資源l之間存在交互行為且實踐結(jié)果通過時msl=1,否則msl=0;如沒有發(fā)生過交互msl=-1。知識圖譜由三元組{(h,r,t)|h∈E,r∈R,t∈E}構(gòu)成,其中(h,r,t)表示從頭實體h通過關(guān)系r連接到尾實體t,E和R分別表示知識圖譜中的實體集合與關(guān)系集合。對于學(xué)習(xí)者s∈S,選取在交互矩陣中msl=1 的所有資源集合Ls作為種子集。另外K表示從集合Ls出發(fā)到達學(xué)習(xí)目標(biāo)(例如msl=0 的資源)的中間實體集合。給定交互矩陣M和知識圖譜G計算=F(s,l,M,G,Θ),其中是學(xué)習(xí)者與學(xué)習(xí)資源之間交互概率,Θ表示預(yù)測函數(shù)F的參數(shù)。
KNDP 模型在學(xué)習(xí)者角度,利用知識圖譜G中實體間的關(guān)系找到msl=1 的節(jié)點與msl=0 的節(jié)點之間的實體集合K,聚合該集合中的實體及其鄰居信息,其特征便通過知識圖譜傳播到了目標(biāo)節(jié)點,據(jù)此得到學(xué)習(xí)者的表示。在學(xué)習(xí)資源角度,在鄰居實體集合N(l)中以固定大小采樣作為此節(jié)點的接受域,并以一定的權(quán)重與l聚合得到學(xué)習(xí)資源的嵌入表示,最終通過全連接層得到兩者的交互概率。本文模型的總體框架如圖1 所示。
從用戶端出發(fā),在計算學(xué)習(xí)者嵌入表示的過程中,通過在知識圖譜上將學(xué)習(xí)者已有的知識特征向目標(biāo)節(jié)點傳播,并在此過程中更新學(xué)習(xí)者向量以提高用戶端表示信息的質(zhì)量,過程如圖2 所示。
2.2.1 計算實體的融合權(quán)重
給定交互矩陣與知識圖譜G,對于學(xué)習(xí)者s,獲得交互矩陣中msl=1 的學(xué)習(xí)資源lb與msl=0 的學(xué)習(xí)資源lg。每一個lb都可以被表示為向量形式lb∈Rd,其中d表示向量的維度。在為其初始化時,可以采用獨熱編碼[18]或詞袋模型[19]。在知識圖譜G中得到以學(xué)習(xí)資源lb為起點,以學(xué)習(xí)資源lg為終點構(gòu)成的學(xué)習(xí)資源集合Ks={lb,lb+1,…,lg-1,lg}。將l∈Ks的q階鄰居節(jié)點定義為:
其中:q=1,2,…,n。對于實體l找到其在知識圖譜G上與其一階鄰居所形成的三元組集合Ul:
給定l∈Rd與Ul計算(hi,ri,ti)∈Ul這個三元組實體嵌入過程中的融合權(quán)重pi:
其中:hi∈Rd,Ri∈Rd×d,l∈Rd分別是頭實體hi、關(guān)系ri和學(xué)習(xí)資源l的嵌入表示。融合權(quán)重pi可理解為頭實體hi與學(xué)習(xí)資源l在關(guān)系空間ri下的相似度。
2.2.2 傳播向量的計算
為豐富集合Ks中各個實體的嵌入表示,將實體lj∈Ks的一階鄰居與lj融合。首先利用式(3)計算實體融合的權(quán)重pi,之后將Uli中的尾實體乘以相應(yīng)的融合權(quán)重并求和得到ojs:
將lj∈Ks的向量表示lj替換為。
以lj為例,在融合其一階鄰居節(jié)點時,lj+1也是其鄰居節(jié)點之一,所以在融合lj+1的一階鄰居信息時,將式(3)中的l替換為可將學(xué)習(xí)者的知識特征從lj傳播到lj+1。依次計算l∈Ks中的每一個實體得到os。
經(jīng)過上述計算,得到集合Os=對于,隨著i的不斷增大,距離學(xué)習(xí)者已掌握的知識實體越來越遠(yuǎn),其中包含的噪聲信息越多。故采用文獻[20]中提出的累加方式如式(5)所示,得到最終的學(xué)習(xí)者嵌入表示s:
其中:γ為控制Ks中實體每一步傳播輸出的權(quán)重,此操作可區(qū)分傳播結(jié)果的重要性。
從項目端出發(fā),利用KGCN[17]將鄰居節(jié)點信息聚合到當(dāng)前實體節(jié)點,使之捕獲到局部的近似結(jié)構(gòu)及特征,擴充學(xué)習(xí)資源的特征表示,基本框架如圖3 所示。
給定一個資源實體l∈L與知識圖譜G,將在G中與l直接相連的實體表示為N(l)。對于每個學(xué)習(xí)者,由于其知識體系與偏好不同,故在聚合鄰居實體過程中,需考慮到學(xué)習(xí)者s∈S在不同關(guān)系r∈R下聚合的權(quán)重:
其中:s∈Rd,r∈Rd,g為降維操作。通過N(l)中實體的加權(quán)和表示學(xué)習(xí)資源l的拓?fù)浣Y(jié)構(gòu)信息:
其中:e為實體e∈N(l)的嵌入表示;為標(biāo)準(zhǔn)化后的學(xué)習(xí)者—關(guān)系權(quán)重;rl,e表示實體l與e之間的關(guān)系,其公式如下:
考慮到N(l)集合中的實體規(guī)模問題,選擇隨機采樣固定數(shù)量的鄰居來降低計算的復(fù)雜度。
其中:Q表示采樣的數(shù)量。聚合其采樣后一階鄰居拓?fù)湫畔⑴c自身信息l得到嵌入表示:
如圖3 所示,此時已將H=1 的實體信息聚合到了中間實體。若要進行二階鄰居聚合,先將該實體二階鄰居信息聚合到一階鄰居,再將融合后的一階鄰居信息與該實體融合即可。KGCN[17]聚合實體的權(quán)重計算方式如式(6)、(8)所示。本文將2.2 節(jié)計算得到的學(xué)習(xí)者嵌入s代入式(6)。此外,本文中表征實體間關(guān)系的矩陣r∈Rd×d,而KGCN的r∈Rd。因此,需要對進行降維操作,即將其維度從d映射為1。根據(jù)式(6)~(10),將實體的鄰居節(jié)點從高階鄰居向低階鄰居不斷聚合,計算得到學(xué)習(xí)資源的嵌入表示ls。
由2.2 節(jié)與2.3 節(jié)得到最終的學(xué)習(xí)者嵌入表示s與學(xué)習(xí)資源嵌入表示ls,將其輸入全連接層來預(yù)測交互概率。將s和ls融合后作為全連接層的輸入向量x0:
x0通過第一層的輸出值表示為:
其中:W1表示為輸入層與第一個隱含層之間的權(quán)重;b1表示偏置矩陣;f(·)表示激活函數(shù)。輸出層的計算公式為:
最后根據(jù)y?為學(xué)習(xí)者作出推薦并據(jù)此對候選項目排序生成待推薦資源列表。
本文實驗在64 位Windows10 系統(tǒng)上的PyCharm 中開展,基于TensorFlow 1.8 框架和Python 3.6實現(xiàn),GPU 為GTX1080Ti,使用Anaconda 4.9.2。
實驗采用MOOPer(http://openkg.cn/dataset/mooper)數(shù)據(jù)集。該數(shù)據(jù)集分為兩部分:交互數(shù)據(jù)與知識圖譜。其中交互數(shù)據(jù)有3種,分別為學(xué)習(xí)者行為、學(xué)習(xí)者反饋和系統(tǒng)反饋。學(xué)習(xí)者行為展示了與學(xué)習(xí)資源之間的交互過程,學(xué)習(xí)者反饋則反映了他們的學(xué)習(xí)狀況和學(xué)習(xí)滿意度,系統(tǒng)反饋數(shù)據(jù)描述了學(xué)習(xí)者在實踐練習(xí)過程中的結(jié)果反饋。知識圖譜由課程、實踐、關(guān)卡、知識點的屬性信息及其之間的相互關(guān)系建模形成,整體結(jié)構(gòu)如圖4 所示。數(shù)據(jù)集經(jīng)過預(yù)處理后的統(tǒng)計信息如表1 所示。
表1 數(shù)據(jù)集統(tǒng)計信息Tab.1 Dataset statistics
為了驗證算法的有效性,將KNDP 與以下對比對象進行比較。對比對象的參數(shù)設(shè)置與原文獻中的設(shè)置相同。
1)改進型深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)資源推薦算法(UDN-CBR)[21]:將學(xué)習(xí)者信息和學(xué)習(xí)資源信息作為輸入,通過全連接層得到其特征向量;同時引入Word2vec 獲得學(xué)習(xí)資源的文本特征與學(xué)習(xí)資源的特征向量進行融合;最后通過多層感知器(Multi-Layer Perceptron,MLP)網(wǎng)絡(luò)預(yù)測評分。
2)RippleNet[16]:將與用戶發(fā)生過交互的項目作為種子集,在知識圖譜上通過實體與實體之間的關(guān)系傳播用戶的偏好并最終得到用戶的嵌入表示,最后計算用戶與項目的交互概率。
3)KGCN[17]:利用知識圖譜中實體的鄰域信息,將其鄰居節(jié)點的信息通過圖卷積的方式聚合到該節(jié)點中,以豐富項目的表示。
4)基于知識圖譜卷積網(wǎng)絡(luò)的雙端(Double End Knowledge Graph Convolutional Network,DEKGCN)推薦算法[22]:在用戶端和項目端分別利用圖卷積將鄰居信息聚合到該節(jié)點中,得到用戶和項目的嵌入表示,最后計算兩者的交互概率。
本文實驗以7∶2∶1 的比例將交互數(shù)據(jù)劃分為訓(xùn)練集、驗證集與測試集對模型進行訓(xùn)練。將式(6)中的函數(shù)g設(shè)置為內(nèi)積函數(shù)。將全連接層數(shù)設(shè)置為4,非最后一層的激活函數(shù)為線性整流函數(shù)(Rectified Linear Unit,ReLU),最后一層的為tanh,學(xué)習(xí)率為0.001。對于知識圖譜G,將實體嵌入維度設(shè)為32,式(9)中的采樣大小Q設(shè)置為4,鄰居跳數(shù)在聚合學(xué)習(xí)者信息時設(shè)置為1,在聚合學(xué)習(xí)資源信息時設(shè)置為2。
在交互率預(yù)測中,使用訓(xùn)練好的模型對測試集中的每個交互行為進行預(yù)測,使用曲線下面積AUC(Area Under Curve)和準(zhǔn)確率ACC(Accuracy)指標(biāo)評估模型性能。針對Top-K推薦任務(wù),為測試集中的學(xué)習(xí)者推薦前K個學(xué)習(xí)資源,使用Precision@K和Recall@K指標(biāo)評估模型性能。AUC 是受試者工作特征曲線(Receiver Operating Characteristic,ROC)下的面積,ACC的計算公式如下:
其中:TP(True Positive)為真陽數(shù)、TN(True Negative)為真陰數(shù)、FP(False Positive)為假陽數(shù)、FN(False Negative)為假陰數(shù)。
交互概率預(yù)測中AUC與ACC的對比結(jié)果如表2 所示,Top-K任務(wù)中Precision@K和Recall@K的對比結(jié)果如圖5~6所示。
表2 交互概率預(yù)測中AUC和ACC的對比結(jié)果Tab.2 Comparison results of AUC and ACC in interaction probability prediction
由表2 可知,KNDP在ACC和AUC評估指標(biāo)上均取得最好的性能,相較于其余基線模型的AUC提高了1.12~6.49 個百分點;ACC提高了1.31~4.99 個百分點。從圖5~6 中可以看出,在K=5時,DEKGCN 的Precision@K和Recall@K是表現(xiàn)次好的,與DEKGCN 相比,KDNP 在Precision@K和Recall@K上分別提升了6.49%和13.07%。
通過對比分析實驗數(shù)據(jù)可知,3 種基線模型RippleNet、KGCN 和DEKGCN在AUC、ACC、Precision@K以及Recall@K指標(biāo)上均優(yōu)于UDN-CBR 模型,說明在引入知識圖譜之后,知識圖譜中的實體與關(guān)系信息有利于提升推薦性能。其中,RippleNet 從用戶端出發(fā),利用學(xué)習(xí)資源的周圍實體傳播學(xué)習(xí)者的偏好信息以計算學(xué)習(xí)者的向量表示,其不足在于沒有利用知識圖譜提升項目端的信息質(zhì)量。與RippeNet 類似,KGCN 著眼于項目端,融合學(xué)習(xí)資源鄰居節(jié)點得到其嵌入表示,未利用知識圖譜的信息豐富學(xué)習(xí)者嵌入表示。DEKGCN的優(yōu)勢在于同時考慮到了用戶端和項目端,但是在聚合用戶端的信息時,選擇通過構(gòu)建用戶屬性圖來聚合用戶的人口統(tǒng)計學(xué)信息[22]。這使用戶端缺失了知識特征信息,故導(dǎo)致學(xué)習(xí)者嵌入表示的語義豐富度有所不足。本文提出的KNDP在用戶端和項目端均充分利用了知識圖譜的異構(gòu)信息并將學(xué)習(xí)者已交互的項目與學(xué)習(xí)目標(biāo)之間的實體與其鄰居信息也融合進學(xué)習(xí)者的向量嵌入表示中,因而產(chǎn)生性能上的明顯提升。
本文提出融合知識圖譜鄰居雙端(KNDP)推薦算法,從學(xué)習(xí)者和學(xué)習(xí)資源出發(fā),通過引入知識圖譜對鄰居雙端的聚合計算,獲得學(xué)習(xí)者與在線資源的嵌入表示,表達學(xué)習(xí)者的個性化知識獲取需求,繼而送入MLP 網(wǎng)絡(luò)模型中做全連接,以交互概率作為隱含學(xué)習(xí)資源的發(fā)現(xiàn)概率,創(chuàng)建在線學(xué)習(xí)推薦資源。KNDP 推薦算法解決了協(xié)同過濾算法存在的數(shù)據(jù)稀疏以及推薦結(jié)果各向同性的問題。實驗結(jié)果驗證了模型在推薦性能提升方面的有效性。由于學(xué)習(xí)是一個具有時間屬性的序列過程,下一步工作將考慮學(xué)習(xí)活動中對于不同學(xué)習(xí)資源的交互次序,從而更為精細(xì)地表示學(xué)習(xí)者向量,更準(zhǔn)確地捕獲學(xué)習(xí)需求而服務(wù),提高學(xué)習(xí)資源推薦的靶向性。