康 雁,李 濤,李 浩,鐘 聲,張亞釧,卜榮景
(云南大學 軟件學院,昆明 650500)
隨著大數據時代的到來,互聯網公司尤其是電商網站對數據的需求不斷增加,因此,基于數據的推薦算法成為研究熱點。目前,針對個性化推薦的研究成果較多,推薦算法主要可分為協同過濾推薦算法、基于內容的推薦算法和混合推薦算法[1]。協同過濾推薦算法[2-4]利用人群意愿進行推薦[5],雖然在推薦準確性上取得了顯著的提升效果,但與許多基于內容的推薦算法相比解釋推薦結果時不直觀[6]。基于內容的推薦算法[7-8]通過各種可用的內容信息對用戶和物品進行特征建模。由于物品內容對用戶而言比較容易理解,因此在基于內容的推薦中,通常可以直觀地向用戶解釋為何該物品被推薦。
在不同的推薦背景下收集所需要的內容信息是一項耗時的任務[6],這成為基于內容推薦算法的瓶頸。而構建知識圖譜只需要利用實體與實體之間的關系,可減少提取內容信息的工作量。因此,知識圖譜作為一種新興的輔助數據,引起了學術界和工業界學者的廣泛關注[9]。
近年來,深度學習因其強大的表示學習能力,在圖像處理、自然語言處理和語音識別等領域得到成功應用,也為推薦系統研究帶來新的思路。但現有基于深度學習的推薦算法[10-12]多利用矩陣分解思想,只考慮了用戶與物品的評分數據,抑制了推薦效果[13]。
混合推薦算法[14-15]通過結合多種推薦算法的優點,能夠得到更好的推薦效果。因此,本文構建一種結合知識圖譜、深度學習和協同過濾的混合推薦模型HCKDC,其中包含RCKD和RCKC兩個子模型。RCKD結合知識圖譜推理與深度學習,得到第1種預測評分,RCKC將協同過濾思想結合知識圖譜表示學習的語義相似性,得到第2種預測評分。預測評分的準確性決定了其對整體模型的重要程度,按此重要程度將兩個子模型相互融合,得到可解釋的推薦結果。使用MovieLens-100K數據集進行實驗,將HCKDC與可解釋推薦模型RKGE[16]和RippleNet[17]進行對比,以驗證其有效性和先進性。
文獻[2-3]分別提出了基于用戶和基于物品的協同過濾算法,而將協同過濾算法與潛在因子模型(Latent Factor Model,LFM)[4]相結合,能夠進一步提升推薦效果。文獻[4]提出一種將LFM和鄰域模型相互融合的協作過濾模型。協同過濾一定程度上可以根據其算法設計的原理進行解釋。例如,基于用戶的協同過濾推薦可以解釋為:推薦的物品是與該用戶類似的用戶喜歡的物品。而基于物品的協同過濾可以解釋為:推薦的物品是與用戶喜歡的物品類似的物品。但與許多基于內容的推薦算法相比,協同過濾推薦的解釋推薦結果不直觀。
基于內容的推薦利用各種可用內容信息對用戶和物品進行特征建模,如文獻[7-8]提出的基于內容的協同過濾系統。雖然基于內容的推薦具有較好的可解釋性,但在不同的推薦背景下收集所需要的內容信息十分耗時。
知識圖譜包含用戶和物品的豐富信息,這些特性也可為推薦物品的生成提供更直觀、更具針對性的解釋,并且構建知識圖譜只需要利用實體與實體之間的關系,這將很大程度減少基于內容推薦時提取內容信息的工作量。
將知識圖譜引入推薦系統的研究,有以連接兩個實體的路徑代表不同語義的擴展潛在因子模型[18],如文獻[19]中的元路徑方法。這種方法有助于根據物品相似性推斷用戶偏好,從而生成有效的推薦。然而,元路徑方法嚴重依賴于手工制作元路徑的特性,需要額外領域的知識,并且手工制作的元路徑特性往往不完整,很難覆蓋所有可能的實體關系,從而阻礙了推薦質量的提升。與元路徑方法相比,知識圖譜表示學習能夠自動學習獲得知識圖譜中實體的語義嵌入,具有更好的推薦效果[16]。目前,基于知識圖譜表示學習的研究成果較多[20],其中備受關注的有Translating系列表示學習算法。文獻[21]提出了TransE算法,其基本原理是給定三元組(h,r,t),以關系r向量作為頭實體h向量和尾實體r向量之間的平移。
在基于深度學習的推薦方面,文獻[10]提出一種基于受限玻爾茲曼機的協同過濾模型,文獻[11]提出一種深度結構化語義模型,文獻[12]結合多層感知機模型和廣義矩陣分解模型,提出一種神經協同過濾算法,進一步提升了推薦模型的性能。但上述算法模型均利用矩陣分解的思想,只考慮了用戶與物品的評分數據,抑制了模型的推薦效果。
混合推薦算法同時綜合多種推薦算法的優點,能夠得到更好的推薦效果,如文獻[14]將協同過濾推薦算法和基于知識圖譜表示學習語義鄰近推薦算法進行融合,文獻[15]以4種方式對矩陣分解和RNN模型進行融合,均有效提升了推薦準確率。
本文提出的HCKDC模型由知識圖譜與深度學習結合模型RCKD和知識圖譜與協同過濾結合模型RCKC構成。利用RCKD模擬知識圖譜中的推理過程,解決信息提取困難和可解釋性不高的問題,同時利用RCKC較好的可解釋性,進一步提高推薦質量。HCKDC整體模型架構如圖1所示。

圖1 HCKDC模型架構
RCKD結合知識圖譜與深度學習方法,首先獲取知識圖譜推理路徑,然后基于知識圖譜表示學習TransE算法將推理路徑嵌入成為向量,最后運用深度學習捕獲路徑推理語義進而獲得預測評分。
2.1.1 推理路徑生成及推理描述
本文首先利用已知的所有三元組(h,r,t)構成圖,然后通過構建圖的方法搜索知識圖譜中的推理路徑。具體地,將實體映射為圖中的點,將關系映射為圖中的邊,通過指定兩個實體遍歷整個圖就能得到兩個實體的所有路徑。這些路徑即為兩個實體之間的推理路徑。
圖2為一個知識圖譜局部圖,可以看出,u186到i322的生成的推理路徑共有6條,分別為“u186→i1042→g3→i322”“u186→i79→g3→i322”“u186→i291→g3→i322”“u186→i55→g3→i322”“u186→i540→g3→i322”和“u186→i540→a152→i322”。其中:推理路徑“u186→i540→g3→i322”可以表示用戶u186喜歡電影i540,電影i540屬于g3流派,電影i322也屬于g3流派,因此,用戶u186也可能喜歡電影i322;推理路徑“u186→i540→a152→i322”可以表示用戶u186喜歡電影i540,電影i540的演員有a152,電影i322也被a152演過,因此,用戶u186也可能喜歡電影i322,……。該例強調了連接同一個實體對的不同路徑通常帶有不同語義關系。通常,它們在描述用戶對物品的喜好方面具有不同的重要性。區別這些路徑的重要性并綜合這些路徑的推理結果得到預測評分,可使推理過程具有較好的可解釋性。RCKD模型即使用深度學習的方式模擬這些路徑的推理過程,再對其重要性加以區分,最后綜合這些路徑的推理語義得到預測評分。

圖2 知識圖譜局部圖
2.1.2 推理路徑嵌入向量生成
深度學習在自然語言處理、圖像處理等領域的成功應用得益于其強大的表示學習能力。因此,本文利用知識表示學習TransE算法得到知識圖譜推理路徑嵌入向量。TransE的基本原理是給定三元組(h,r,t),以關系r的向量lr作為頭實體向量lh和尾實體向量lt之間的平移。TransE的損失函數定義為:
lossr(h,t)=|lh+lr-lt|L1/L2
(1)
即lh+lr到lt的L1或L2距離。
在實際訓練過程中,為加強知識表示的區分能力,TransE采用了最大間隔方法,定義了優化目標函數:
(2)
其中,S為合法三元組的集合,S-為錯誤三元組的集合,γ為合法三元組得分與錯誤三元組得分之間的間隔距離。
錯誤三元組并非隨機產生。為選取有代表性的錯誤三元組,TransE將S中每個三元組的頭實體、關系和尾實體其中之一隨機替換為其他實體或關系來得到S-。
通過TransE對所有三元組的訓練,每一個實體k可以表示成為一個向量ek。一對實體u-i第m條路徑的嵌入表示如式(3)所示:
puim=[euim1,euim2,…,euimn,…]
(3)
其中,euimn表示用戶u到物品i的第m條路徑中第n個實體的嵌入向量。
2.1.3 預測評分的生成
在生成預測評分時,首先通過長短期記憶(Long Short-Term Memory,LSTM)[22]和soft attention[23]機制捕獲路徑的推理語義,然后通過maxpooling操作區分不同路徑推理語義的重要性,最后用全連接匯集池化向量并經sigmoid函數生成預測評分。
以推理路徑“u186→i540→g3→i322”為例,此路徑表示用戶u186喜歡電影i540,電影i540屬于g3流派,電影i322也屬于g3流派,因此,用戶u186也可能喜歡電影i322。這個推理過程是逐步得到的,因此,可以采用循環神經網絡(Recurrent Neural Network,RNN)捕獲推理的語義。本文選取的是能夠有效解決RNN梯度消失和梯度爆炸問題的LSTM機制。
LSTM單元如圖3所示,其中包含3類門控,即輸入門、遺忘門和輸出門,分別使用i、f和o來表示。此外,LSTM中還包含記憶單元c和輸出值h。

圖3 LSTM單元
LSTM迭代的第t時刻各值的計算公式如下:
it=σ(Axixt+Ahiht-1+bi)
(4)
ft=σ(Axfxt+Ahfht-1+bf)
(5)
ot=σ(Axoxt+Ahoht-1+bo)
(6)
ct=ft⊙ct-1+it⊙tanh(Axcxt+Ahcht-1+bc)
(7)
ht=ot⊙tanh(ct)
(8)
其中,A和b分別為LSTM的權重矩陣和偏置向量,⊙表示Hadamard乘積。
為避免網絡過擬合,本文對每條路徑都采用同一個LSTM捕獲語義。將已嵌入的路徑向量puim輸入LSTM,能夠得到LSTM推理中每一次迭代的推理語義,實體對u-i第m條路徑的輸出語義可表示為:
huim=[huim1,huim2,…,huimn,…]
(9)
為使最后推理的語義與推理過程中每次迭代得到的推理語義關聯性更強,本文使用了soft attention機制。通過此層能夠求得LSTM每一次迭代推理得到的語義對最后一次迭代推理語義的影響度,并總結出這個路徑的最終語義。假設對于實體對u-i第m條路徑有l個實體,對于LSTM第n次迭代推理語義的attention權重Wuimn計算公式如下:
suimn=huiml·huimn
(10)
(11)
此條路徑經過soft attention處理后得到的最終語義可由式(12)得到:
(12)
為區分路徑推理語義的不同重要程度,本文選擇了池化操作。池化操作能夠關注向量最重要的特征或綜合的特征,符合本文需要關注路徑語義不同重要性的要求。經實驗驗證,maxpooling效果優于avgpooling,因此,選取maxpooling池化操作。最后通過全連接層匯聚所有路徑的池化向量,經過sigmoid函數產生u-i的預測評分Dui,如式(13)所示:
(13)
其中,mpooling_con的mpooling和con分別代表maxpooling操作和全連接操作。
協同過濾方法雖然不能解釋推薦結果,但具有較高的推薦準確率。為使協同過濾具有更好的解釋性,本文提出了RCKC模型。RCKC結合知識圖譜與協同過濾方法,采用TransE方法得到知識圖譜中實體語義表示向量,再利用協同過濾思想根據向量的相似性推薦與用戶喜歡物品語義相近的物品。
根據2.1.2節可知,每個實體都可以用TransE算法得到對應的語義表示向量。RCKC根據這些語義表示向量計算每個物品和其他物品的語義相似性。對物品i和物品j的語義相似性進行評分,計算公式如下:
(14)
以I表示整個語義相似矩陣,Iij表示物品i和物品j的語義相似性評分,||ei-ej||1表示ei-ej的L1范數結果,即將ei-ej向量的每個分量的絕對值相加。
假設用戶u歷史評分集為Tu,需要預測的物品集為Eu,對于itemk∈Tu,itemi∈Eu,用戶u對物品itemk的評分為Ruk,物品itemk和itemi語義相似性評分表示為Iki,預測用戶u對物品i的評分為Cui。用戶u對物品i的預測評分計算公式如下:

(15)
RCKC模型中預測評分列表生成方法如算法1所示,其中,Eu={item1,item2,…},Tu={Ru1,Ru2,…}。
算法1RCKC評分列表生成算法
輸入歷史評分集Tu,需要預測的用戶物品集Eu,語義相似矩陣I
輸出RCKC預測評分列表C
1.for Eu∈{E1,E2,…,En} and Tu∈{T1,T2,…,Tn} do:
2.for itemi∈Eudo:
3.for Ruk∈Tudo:
4.Cui←Cui+Ruk×Iki
5.end for
6.end for
7.end for
RCKC推薦的評分預測利用知識表示學習的語義相似性推薦與用戶歷史喜好的最接近物品,具有較好的可解釋性。
HCKDC模型為融合RCKD模型和RCKC模型的總體模型。本文借鑒了文獻[15]中的第1種融合策略,即將矩陣分解和RNN推薦對應預測評分相加,經過sigmoid函數產生最終的預測評分。用戶u和物品i的RCKC預測評分是Cui,RCKC模型的預測評分是Dui,最后融合生成的預測評分計算公式如下:
(16)
其中,α、β分別為RCKC預測評分Cui和RCKD的預測評分Dui的比例系數,b為偏置項。
融合策略的訓練過程根據RCKC和RCKD預測得分的準確性自動調整其對最終模型的影響程度,同時優化RCKC和RCKD的內部參數,因此,具有很好的可解釋性。
用戶的推薦列表通過用戶對物品最后預測評分從大到小排序得到,用戶推薦列表生成算法如算法2所示,其中,Eu={item1,item2,…}。
算法2HCKDC推薦列表生成算法
輸入需要預測的物品集Eu,RCKC推薦預測評分列表C,RCKD預測評分列表D,RCKC比例系數α,RCKD比例系數β,偏置項b
輸出HCKDC推薦列表L
1.for Eu∈{E1,E2,…,En} do:
2.for itemi∈Eudo:
3.Lui←α×Cui+β×Dui+b
4.end for
5.sort(Lu)
6.end for
本文實驗使用MovieLens-100K數據集。在此基礎上,在IMDB中爬取電影流派、導演、演員信息作為輔助信息,以此擴展知識庫,使知識圖譜能夠獲得更好的性能。
MovieLens-100K數據集包含943個用戶、1 682個電影和100 000個評分。去除缺失數據后的數據集如表1所示。這些數據映射到知識圖譜后,共包含7 746個實體、8種關系和202 183個三元組。其中,三元組不包含測試集中正樣本集的評分與被評分關系三元組。

表1 去除缺失數據后的數據集Table 1 Data set after removing the missing data
在協同過濾中測試考慮評分值和不考慮評分值的情況,可知推薦效果差距很小,甚至考慮評分后還有推薦效果下降的趨勢。因此,實驗不考慮評分值,即如果用戶對某個電影有評分,就假設為該用戶喜歡該電影,評分置為1。將該用戶不喜歡的電影評分設為0。
為使實驗數據具有可比性,對所有的實驗都采用相同的訓練集和測試集。產生的訓練集和測試集的正樣本是對加入輔助信息后的99 975個評分數據以4 ∶1的比例進行拆分得到的。測試集正樣本的作用是檢驗模型產生的推薦列表中物品是否準確。
對于訓練集中負樣本的選取,本文采用隨機抽取的方式。為使模型能夠學到更多的負樣本信息,設定對每個用戶抽取的負樣本數據量是訓練集正樣本的120%。
由于隨機選取了一些負樣本作為訓練集,如果不把這些負樣本納入測試集,相較于協同過濾等方法,會使得到的測試集中可能包含的負樣本更少,影響預測結果的真實性,因此,將除訓練集中正樣本的其他所有樣本作為測試集。
文獻[19]已證明,越短的路徑對推薦結果越重要,并且路徑長度超過5時會引入噪聲。為加速路徑抽取過程和訓練過程,本文對每一對user-item最多只挖掘5條最短的路徑,即最多挖掘5條長度為3的路徑。
在路徑抽取時,先抽取訓練時所用到的正負樣本的路徑,再抽取用戶到其他物品的路徑。
實驗采用的評價指標為precision@N和MMR@N。precision@N表示每個用戶推薦列表前N項在測試集正樣本中出現的概率的均值,N取值包括1、5、10。MMR@N定義如式(17)所示:
(17)
其中,N設定為10,vj是在top-N推薦列表中正確出現在測試集正樣本的項,rank(ui,vj)表示vj在用戶ui推薦列表的位置數。
考慮到所有user-item路徑數量的不確定性,在池化操作中如果用相同池化窗口和池化步長會引起數據維度不一致。因此,根據路徑數量動態地調整池化窗口和池化步長,大小均為(paths_size,1)。
為保證RCKD有效性,本文設置預訓練次數,即在不融合的情況下單獨訓練RCKD的次數。實驗中RCKD訓練6次時效果最好,因此,將預訓練次數設置為6次。α、β、b初始值均為0。LSTM隱藏單元數為64,學習率為0.1,優化方法采用隨機梯度下降法。
針對RCKC和RCKD不同推薦列表的預測評分差異性問題,同時考慮到RCKD模型的預測評分屬于[0,1]范圍,在得到RCKC模型的所有推薦結果后,對推薦列表從前到后以1到0遞減的順序重新設置評分。
在公開數據集MovieLens-100K中進行實驗,比較方法為近期比較先進的可解釋推薦方法RKGE和RippleNet。此外,選取經典的協同過濾算法進行對比。實驗結果如表2和表3所示,其中:User-based-CF表示基于用戶的協同過濾算法;User-based-CF-CR表示考慮評分值的基于用戶的協同過濾算法;Item-based-CF表示基于物品的協同過濾算法;Item-based-CF-CR表示考慮評分值的基于物品的協同過濾算法。由表3可見,基于用戶的協同過濾考慮評分值時各性能指標輕微下降,基于物品的協同過濾考慮評分值時precision@10指標也有所下降。

表2 本文模型與RKGE和RippleN的實驗結果Table 2 Experimental results of the proposed model,RKGE and RippleN

表3 經典協同過濾算法的實驗結果Table 3 Experimental results of classical collaborative filtering algorithms
從表2和表3可以看出,本文HCKDC模型的推薦準確性在所有比較方法中最高,協同過濾、RCKC、RCKD其次,RippleNet和RKGE最差。可以發現,可解釋推薦算法RippleNet和RKGE雖然對其推薦可解釋性較好,但推薦效果不如協同過濾。在同時具有較好可解釋性情形下,RippleNet和RKGE推薦效率也低于本文的RCKD和RCKC模型。此外,很容易觀察到RCKC和RCKD在融合之后推薦準確率得到進一步提高,這證明了融合策略的有效性。本文模型的可解釋性已在上文第2節具體描述,由實驗結果可知,該模型取得了最高的推薦準確率,證明其在有較好可解釋性的情況下具有更高的推薦準確率,驗證了其先進性。
HCKDC訓練過程中各數據如圖4~圖6所示。

圖4 HCKDC訓練過程中precision的變化

圖5 HCKDC訓練過程中MRR@10的變化

圖6 HCKDC訓練過程中α與β比值的變化
由圖4和圖5可以看出,MRR@10和precision在epoch為28左右時最好。由圖6可以看出,當訓練次數為15次左右時,α和β比值基本維持在16.5左右,可見RCKD對整個模型的影響程度很小。但RCKD和RCKC融合后整體推薦效率提高,說明RCKD有效修正了融入知識圖譜后協同過濾的推薦結果。
本文構建一種結合知識圖譜、深度學習和協同過濾的混合推薦模型HCKDC,其由RCKD和RCKC模型構成。RCKD模型將知識圖譜推理結合深度學習模擬得到預測評分,RCKC模型將知識圖譜表示學習結合協同過濾思想得到預測評分。把兩種推薦模型得到的同一用戶對同一物品的不同預測評分分別乘以系數相加,再加上一個偏置項,把所得結果作為用戶對該物品的最終喜好程度,并通過對用戶按物品預測評分從高到低排序得到最終的物品推薦列表。實驗結果表明,相較于RKGE、RippleNet模型和經典協同過濾算法,HCKDC模型在可解釋的情況下能夠達到更高的推薦準確率。下一步將引入電影海報等更多內容信息,以擴大本文模型的推薦范圍。