康 雁,李 濤,李 浩,鐘 聲,張亞釧,卜榮景
(云南大學 軟件學院,昆明 650500)
隨著大數(shù)據(jù)時代的到來,互聯(lián)網(wǎng)公司尤其是電商網(wǎng)站對數(shù)據(jù)的需求不斷增加,因此,基于數(shù)據(jù)的推薦算法成為研究熱點。目前,針對個性化推薦的研究成果較多,推薦算法主要可分為協(xié)同過濾推薦算法、基于內(nèi)容的推薦算法和混合推薦算法[1]。協(xié)同過濾推薦算法[2-4]利用人群意愿進行推薦[5],雖然在推薦準確性上取得了顯著的提升效果,但與許多基于內(nèi)容的推薦算法相比解釋推薦結(jié)果時不直觀[6]。基于內(nèi)容的推薦算法[7-8]通過各種可用的內(nèi)容信息對用戶和物品進行特征建模。由于物品內(nèi)容對用戶而言比較容易理解,因此在基于內(nèi)容的推薦中,通常可以直觀地向用戶解釋為何該物品被推薦。
在不同的推薦背景下收集所需要的內(nèi)容信息是一項耗時的任務[6],這成為基于內(nèi)容推薦算法的瓶頸。而構(gòu)建知識圖譜只需要利用實體與實體之間的關(guān)系,可減少提取內(nèi)容信息的工作量。因此,知識圖譜作為一種新興的輔助數(shù)據(jù),引起了學術(shù)界和工業(yè)界學者的廣泛關(guān)注[9]。
近年來,深度學習因其強大的表示學習能力,在圖像處理、自然語言處理和語音識別等領域得到成功應用,也為推薦系統(tǒng)研究帶來新的思路。但現(xiàn)有基于深度學習的推薦算法[10-12]多利用矩陣分解思想,只考慮了用戶與物品的評分數(shù)據(jù),抑制了推薦效果[13]。
混合推薦算法[14-15]通過結(jié)合多種推薦算法的優(yōu)點,能夠得到更好的推薦效果。因此,本文構(gòu)建一種結(jié)合知識圖譜、深度學習和協(xié)同過濾的混合推薦模型HCKDC,其中包含RCKD和RCKC兩個子模型。RCKD結(jié)合知識圖譜推理與深度學習,得到第1種預測評分,RCKC將協(xié)同過濾思想結(jié)合知識圖譜表示學習的語義相似性,得到第2種預測評分。預測評分的準確性決定了其對整體模型的重要程度,按此重要程度將兩個子模型相互融合,得到可解釋的推薦結(jié)果。使用MovieLens-100K數(shù)據(jù)集進行實驗,將HCKDC與可解釋推薦模型RKGE[16]和RippleNet[17]進行對比,以驗證其有效性和先進性。
文獻[2-3]分別提出了基于用戶和基于物品的協(xié)同過濾算法,而將協(xié)同過濾算法與潛在因子模型(Latent Factor Model,LFM)[4]相結(jié)合,能夠進一步提升推薦效果。文獻[4]提出一種將LFM和鄰域模型相互融合的協(xié)作過濾模型。協(xié)同過濾一定程度上可以根據(jù)其算法設計的原理進行解釋。例如,基于用戶的協(xié)同過濾推薦可以解釋為:推薦的物品是與該用戶類似的用戶喜歡的物品。而基于物品的協(xié)同過濾可以解釋為:推薦的物品是與用戶喜歡的物品類似的物品。但與許多基于內(nèi)容的推薦算法相比,協(xié)同過濾推薦的解釋推薦結(jié)果不直觀。
基于內(nèi)容的推薦利用各種可用內(nèi)容信息對用戶和物品進行特征建模,如文獻[7-8]提出的基于內(nèi)容的協(xié)同過濾系統(tǒng)。雖然基于內(nèi)容的推薦具有較好的可解釋性,但在不同的推薦背景下收集所需要的內(nèi)容信息十分耗時。
知識圖譜包含用戶和物品的豐富信息,這些特性也可為推薦物品的生成提供更直觀、更具針對性的解釋,并且構(gòu)建知識圖譜只需要利用實體與實體之間的關(guān)系,這將很大程度減少基于內(nèi)容推薦時提取內(nèi)容信息的工作量。
將知識圖譜引入推薦系統(tǒng)的研究,有以連接兩個實體的路徑代表不同語義的擴展?jié)撛谝蜃幽P蚚18],如文獻[19]中的元路徑方法。這種方法有助于根據(jù)物品相似性推斷用戶偏好,從而生成有效的推薦。然而,元路徑方法嚴重依賴于手工制作元路徑的特性,需要額外領域的知識,并且手工制作的元路徑特性往往不完整,很難覆蓋所有可能的實體關(guān)系,從而阻礙了推薦質(zhì)量的提升。與元路徑方法相比,知識圖譜表示學習能夠自動學習獲得知識圖譜中實體的語義嵌入,具有更好的推薦效果[16]。目前,基于知識圖譜表示學習的研究成果較多[20],其中備受關(guān)注的有Translating系列表示學習算法。文獻[21]提出了TransE算法,其基本原理是給定三元組(h,r,t),以關(guān)系r向量作為頭實體h向量和尾實體r向量之間的平移。
在基于深度學習的推薦方面,文獻[10]提出一種基于受限玻爾茲曼機的協(xié)同過濾模型,文獻[11]提出一種深度結(jié)構(gòu)化語義模型,文獻[12]結(jié)合多層感知機模型和廣義矩陣分解模型,提出一種神經(jīng)協(xié)同過濾算法,進一步提升了推薦模型的性能。但上述算法模型均利用矩陣分解的思想,只考慮了用戶與物品的評分數(shù)據(jù),抑制了模型的推薦效果。
混合推薦算法同時綜合多種推薦算法的優(yōu)點,能夠得到更好的推薦效果,如文獻[14]將協(xié)同過濾推薦算法和基于知識圖譜表示學習語義鄰近推薦算法進行融合,文獻[15]以4種方式對矩陣分解和RNN模型進行融合,均有效提升了推薦準確率。
本文提出的HCKDC模型由知識圖譜與深度學習結(jié)合模型RCKD和知識圖譜與協(xié)同過濾結(jié)合模型RCKC構(gòu)成。利用RCKD模擬知識圖譜中的推理過程,解決信息提取困難和可解釋性不高的問題,同時利用RCKC較好的可解釋性,進一步提高推薦質(zhì)量。HCKDC整體模型架構(gòu)如圖1所示。
圖1 HCKDC模型架構(gòu)
RCKD結(jié)合知識圖譜與深度學習方法,首先獲取知識圖譜推理路徑,然后基于知識圖譜表示學習TransE算法將推理路徑嵌入成為向量,最后運用深度學習捕獲路徑推理語義進而獲得預測評分。
2.1.1 推理路徑生成及推理描述
本文首先利用已知的所有三元組(h,r,t)構(gòu)成圖,然后通過構(gòu)建圖的方法搜索知識圖譜中的推理路徑。具體地,將實體映射為圖中的點,將關(guān)系映射為圖中的邊,通過指定兩個實體遍歷整個圖就能得到兩個實體的所有路徑。這些路徑即為兩個實體之間的推理路徑。
圖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,……。該例強調(diào)了連接同一個實體對的不同路徑通常帶有不同語義關(guān)系。通常,它們在描述用戶對物品的喜好方面具有不同的重要性。區(qū)別這些路徑的重要性并綜合這些路徑的推理結(jié)果得到預測評分,可使推理過程具有較好的可解釋性。RCKD模型即使用深度學習的方式模擬這些路徑的推理過程,再對其重要性加以區(qū)分,最后綜合這些路徑的推理語義得到預測評分。
圖2 知識圖譜局部圖
2.1.2 推理路徑嵌入向量生成
深度學習在自然語言處理、圖像處理等領域的成功應用得益于其強大的表示學習能力。因此,本文利用知識表示學習TransE算法得到知識圖譜推理路徑嵌入向量。TransE的基本原理是給定三元組(h,r,t),以關(guān)系r的向量lr作為頭實體向量lh和尾實體向量lt之間的平移。TransE的損失函數(shù)定義為:
lossr(h,t)=|lh+lr-lt|L1/L2
(1)
即lh+lr到lt的L1或L2距離。
在實際訓練過程中,為加強知識表示的區(qū)分能力,TransE采用了最大間隔方法,定義了優(yōu)化目標函數(shù):
(2)
其中,S為合法三元組的集合,S-為錯誤三元組的集合,γ為合法三元組得分與錯誤三元組得分之間的間隔距離。
錯誤三元組并非隨機產(chǎn)生。為選取有代表性的錯誤三元組,TransE將S中每個三元組的頭實體、關(guān)系和尾實體其中之一隨機替換為其他實體或關(guān)系來得到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操作區(qū)分不同路徑推理語義的重要性,最后用全連接匯集池化向量并經(jīng)sigmoid函數(shù)生成預測評分。
以推理路徑“u186→i540→g3→i322”為例,此路徑表示用戶u186喜歡電影i540,電影i540屬于g3流派,電影i322也屬于g3流派,因此,用戶u186也可能喜歡電影i322。這個推理過程是逐步得到的,因此,可以采用循環(huán)神經(jīng)網(wǎng)絡(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的權(quán)重矩陣和偏置向量,⊙表示Hadamard乘積。
為避免網(wǎng)絡過擬合,本文對每條路徑都采用同一個LSTM捕獲語義。將已嵌入的路徑向量puim輸入LSTM,能夠得到LSTM推理中每一次迭代的推理語義,實體對u-i第m條路徑的輸出語義可表示為:
huim=[huim1,huim2,…,huimn,…]
(9)
為使最后推理的語義與推理過程中每次迭代得到的推理語義關(guān)聯(lián)性更強,本文使用了soft attention機制。通過此層能夠求得LSTM每一次迭代推理得到的語義對最后一次迭代推理語義的影響度,并總結(jié)出這個路徑的最終語義。假設對于實體對u-i第m條路徑有l(wèi)個實體,對于LSTM第n次迭代推理語義的attention權(quán)重Wuimn計算公式如下:
suimn=huiml·huimn
(10)
(11)
此條路徑經(jīng)過soft attention處理后得到的最終語義可由式(12)得到:
(12)
為區(qū)分路徑推理語義的不同重要程度,本文選擇了池化操作。池化操作能夠關(guān)注向量最重要的特征或綜合的特征,符合本文需要關(guān)注路徑語義不同重要性的要求。經(jīng)實驗驗證,maxpooling效果優(yōu)于avgpooling,因此,選取maxpooling池化操作。最后通過全連接層匯聚所有路徑的池化向量,經(jīng)過sigmoid函數(shù)產(chǎn)生u-i的預測評分Dui,如式(13)所示:
(13)
其中,mpooling_con的mpooling和con分別代表maxpooling操作和全連接操作。
協(xié)同過濾方法雖然不能解釋推薦結(jié)果,但具有較高的推薦準確率。為使協(xié)同過濾具有更好的解釋性,本文提出了RCKC模型。RCKC結(jié)合知識圖譜與協(xié)同過濾方法,采用TransE方法得到知識圖譜中實體語義表示向量,再利用協(xié)同過濾思想根據(jù)向量的相似性推薦與用戶喜歡物品語義相近的物品。
根據(jù)2.1.2節(jié)可知,每個實體都可以用TransE算法得到對應的語義表示向量。RCKC根據(jù)這些語義表示向量計算每個物品和其他物品的語義相似性。對物品i和物品j的語義相似性進行評分,計算公式如下:
(14)
以I表示整個語義相似矩陣,Iij表示物品i和物品j的語義相似性評分,||ei-ej||1表示ei-ej的L1范數(shù)結(jié)果,即將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推薦對應預測評分相加,經(jīng)過sigmoid函數(shù)產(chǎn)生最終的預測評分。用戶u和物品i的RCKC預測評分是Cui,RCKC模型的預測評分是Dui,最后融合生成的預測評分計算公式如下:
(16)
其中,α、β分別為RCKC預測評分Cui和RCKD的預測評分Dui的比例系數(shù),b為偏置項。
融合策略的訓練過程根據(jù)RCKC和RCKD預測得分的準確性自動調(diào)整其對最終模型的影響程度,同時優(yōu)化RCKC和RCKD的內(nèi)部參數(shù),因此,具有很好的可解釋性。
用戶的推薦列表通過用戶對物品最后預測評分從大到小排序得到,用戶推薦列表生成算法如算法2所示,其中,Eu={item1,item2,…}。
算法2HCKDC推薦列表生成算法
輸入需要預測的物品集Eu,RCKC推薦預測評分列表C,RCKD預測評分列表D,RCKC比例系數(shù)α,RCKD比例系數(shù)β,偏置項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數(shù)據(jù)集。在此基礎上,在IMDB中爬取電影流派、導演、演員信息作為輔助信息,以此擴展知識庫,使知識圖譜能夠獲得更好的性能。
MovieLens-100K數(shù)據(jù)集包含943個用戶、1 682個電影和100 000個評分。去除缺失數(shù)據(jù)后的數(shù)據(jù)集如表1所示。這些數(shù)據(jù)映射到知識圖譜后,共包含7 746個實體、8種關(guān)系和202 183個三元組。其中,三元組不包含測試集中正樣本集的評分與被評分關(guān)系三元組。
表1 去除缺失數(shù)據(jù)后的數(shù)據(jù)集Table 1 Data set after removing the missing data
在協(xié)同過濾中測試考慮評分值和不考慮評分值的情況,可知推薦效果差距很小,甚至考慮評分后還有推薦效果下降的趨勢。因此,實驗不考慮評分值,即如果用戶對某個電影有評分,就假設為該用戶喜歡該電影,評分置為1。將該用戶不喜歡的電影評分設為0。
為使實驗數(shù)據(jù)具有可比性,對所有的實驗都采用相同的訓練集和測試集。產(chǎn)生的訓練集和測試集的正樣本是對加入輔助信息后的99 975個評分數(shù)據(jù)以4 ∶1的比例進行拆分得到的。測試集正樣本的作用是檢驗模型產(chǎn)生的推薦列表中物品是否準確。
對于訓練集中負樣本的選取,本文采用隨機抽取的方式。為使模型能夠?qū)W到更多的負樣本信息,設定對每個用戶抽取的負樣本數(shù)據(jù)量是訓練集正樣本的120%。
由于隨機選取了一些負樣本作為訓練集,如果不把這些負樣本納入測試集,相較于協(xié)同過濾等方法,會使得到的測試集中可能包含的負樣本更少,影響預測結(jié)果的真實性,因此,將除訓練集中正樣本的其他所有樣本作為測試集。
文獻[19]已證明,越短的路徑對推薦結(jié)果越重要,并且路徑長度超過5時會引入噪聲。為加速路徑抽取過程和訓練過程,本文對每一對user-item最多只挖掘5條最短的路徑,即最多挖掘5條長度為3的路徑。
在路徑抽取時,先抽取訓練時所用到的正負樣本的路徑,再抽取用戶到其他物品的路徑。
實驗采用的評價指標為precision@N和MMR@N。precision@N表示每個用戶推薦列表前N項在測試集正樣本中出現(xiàn)的概率的均值,N取值包括1、5、10。MMR@N定義如式(17)所示:
(17)
其中,N設定為10,vj是在top-N推薦列表中正確出現(xiàn)在測試集正樣本的項,rank(ui,vj)表示vj在用戶ui推薦列表的位置數(shù)。
考慮到所有user-item路徑數(shù)量的不確定性,在池化操作中如果用相同池化窗口和池化步長會引起數(shù)據(jù)維度不一致。因此,根據(jù)路徑數(shù)量動態(tài)地調(diào)整池化窗口和池化步長,大小均為(paths_size,1)。
為保證RCKD有效性,本文設置預訓練次數(shù),即在不融合的情況下單獨訓練RCKD的次數(shù)。實驗中RCKD訓練6次時效果最好,因此,將預訓練次數(shù)設置為6次。α、β、b初始值均為0。LSTM隱藏單元數(shù)為64,學習率為0.1,優(yōu)化方法采用隨機梯度下降法。
針對RCKC和RCKD不同推薦列表的預測評分差異性問題,同時考慮到RCKD模型的預測評分屬于[0,1]范圍,在得到RCKC模型的所有推薦結(jié)果后,對推薦列表從前到后以1到0遞減的順序重新設置評分。
在公開數(shù)據(jù)集MovieLens-100K中進行實驗,比較方法為近期比較先進的可解釋推薦方法RKGE和RippleNet。此外,選取經(jīng)典的協(xié)同過濾算法進行對比。實驗結(jié)果如表2和表3所示,其中:User-based-CF表示基于用戶的協(xié)同過濾算法;User-based-CF-CR表示考慮評分值的基于用戶的協(xié)同過濾算法;Item-based-CF表示基于物品的協(xié)同過濾算法;Item-based-CF-CR表示考慮評分值的基于物品的協(xié)同過濾算法。由表3可見,基于用戶的協(xié)同過濾考慮評分值時各性能指標輕微下降,基于物品的協(xié)同過濾考慮評分值時precision@10指標也有所下降。
表2 本文模型與RKGE和RippleN的實驗結(jié)果Table 2 Experimental results of the proposed model,RKGE and RippleN
表3 經(jīng)典協(xié)同過濾算法的實驗結(jié)果Table 3 Experimental results of classical collaborative filtering algorithms
從表2和表3可以看出,本文HCKDC模型的推薦準確性在所有比較方法中最高,協(xié)同過濾、RCKC、RCKD其次,RippleNet和RKGE最差。可以發(fā)現(xiàn),可解釋推薦算法RippleNet和RKGE雖然對其推薦可解釋性較好,但推薦效果不如協(xié)同過濾。在同時具有較好可解釋性情形下,RippleNet和RKGE推薦效率也低于本文的RCKD和RCKC模型。此外,很容易觀察到RCKC和RCKD在融合之后推薦準確率得到進一步提高,這證明了融合策略的有效性。本文模型的可解釋性已在上文第2節(jié)具體描述,由實驗結(jié)果可知,該模型取得了最高的推薦準確率,證明其在有較好可解釋性的情況下具有更高的推薦準確率,驗證了其先進性。
HCKDC訓練過程中各數(shù)據(jù)如圖4~圖6所示。
圖4 HCKDC訓練過程中precision的變化
圖5 HCKDC訓練過程中MRR@10的變化
圖6 HCKDC訓練過程中α與β比值的變化
由圖4和圖5可以看出,MRR@10和precision在epoch為28左右時最好。由圖6可以看出,當訓練次數(shù)為15次左右時,α和β比值基本維持在16.5左右,可見RCKD對整個模型的影響程度很小。但RCKD和RCKC融合后整體推薦效率提高,說明RCKD有效修正了融入知識圖譜后協(xié)同過濾的推薦結(jié)果。
本文構(gòu)建一種結(jié)合知識圖譜、深度學習和協(xié)同過濾的混合推薦模型HCKDC,其由RCKD和RCKC模型構(gòu)成。RCKD模型將知識圖譜推理結(jié)合深度學習模擬得到預測評分,RCKC模型將知識圖譜表示學習結(jié)合協(xié)同過濾思想得到預測評分。把兩種推薦模型得到的同一用戶對同一物品的不同預測評分分別乘以系數(shù)相加,再加上一個偏置項,把所得結(jié)果作為用戶對該物品的最終喜好程度,并通過對用戶按物品預測評分從高到低排序得到最終的物品推薦列表。實驗結(jié)果表明,相較于RKGE、RippleNet模型和經(jīng)典協(xié)同過濾算法,HCKDC模型在可解釋的情況下能夠達到更高的推薦準確率。下一步將引入電影海報等更多內(nèi)容信息,以擴大本文模型的推薦范圍。