王 光,石山山
遼寧工程技術大學,遼寧 葫蘆島 125000
為了更及時高效地為用戶提供有效信息以提升用戶的體驗感,多種推薦算法被廣泛地應用在不同的領域,比如音樂[1]、電影[2]、飲食[3]等物品的推薦。目前,常用的推薦算法主要可以分為三類:基于協同過濾的推薦算法[4-5]、基于內容的推薦算法[6-7]和基于知識的推薦算法[8-9]。由于前兩個算法存在著數據稀疏、解釋性不強等問題,可以采取引入輔助信息的方式來補足稀疏數據中所缺失的交互信息,比如用戶瀏覽歷史記錄、社交網絡、評論信息、物品關聯信息等,以此來加強推薦算法的性能。
知識圖譜(knowledge graph,KG)作為包含實體屬性信息的異構網絡,通過關系路徑擴展實體的鄰域節點從而獲得實體的嵌入表示。而用戶的偏好可以通過向知識圖譜中輸入用戶的評分、用戶評論信息、瀏覽時長等參數進行計算。目前基于知識圖譜所設計的推薦算法大概可以分為三類:基于embedding的方法[10-12]、基于PATH的方法[13-14]、聯合方法[15-17]。(1)基于embedding方法是將數據信息轉化為低維稠密的實體向量。文獻[10]將隱藏的知識層面的度量加入算法中,首先將新聞投入到知識圖譜中獲得相關實體,然后通過KCNN(knowledgeaware convolutional neural network)轉化為向量表示,最后使用注意力機制(attention-based user interest extraction)獲得用戶歷史向量表示以提升推薦的精確度;文獻[11]將通過知識圖譜學習到的嵌入加入到TUP(translation-based user preference)中對物品與用戶的隱式反饋進行建模,提升算法的可解釋性;文獻[12]采用距離感知抽樣方法計算最短路徑并對其進行排序并根據最短的K條路徑構建高階子圖,首先將其轉化為Matrix 矩陣,然后采用圖神經網絡來計算權值并使用門控更新,最終使用MLP 進行預測。由于嵌入方法可能會依賴知識圖譜內的語義關系而導致很難直觀地表征物品間的聯系。(2)基于PATH的方法是根據知識圖譜內部路徑進行學習。為了能夠自動學習實體之間的路徑,文獻[13]首先獲取知識圖譜中實體對之間的路徑,然后采用循環網絡技術對其進行編碼并采用共享公共參數以避免出現過擬合的現象,最終使用池化操作根據用戶的偏好區分路徑以生成推薦列表?;赑ATH的方法是以獲取到的路徑為基礎進行操作導致設計路徑困難且很難對算法進行優化,因此提出了將二者進行聯合的方法。(3)基于聯合的方法是前兩種算法進行結合。文獻[15]首次提出將基于嵌入與基于路徑的方法進行結合,以用戶的歷史興趣為基礎沿著知識圖譜中的路徑進行傳播以獲取到用戶的潛在興趣,與基于元路徑的方法不同的是Ripple net 根據概率進行實體的傳播,從而獲得實體的鄰域集合并將其轉化為特征;文獻[16]與文獻[15]相似,以物品為基礎,將獲得物品的特征與用戶特征相結合以獲得用戶的點擊率。由于知識圖譜傳播過程中會產生較大的噪聲,文獻[17]提出加入注意力網絡,從知識圖譜中獲得鄰居節點的特征并不斷地遞歸傳播,使用注意力機制對節點進行區分以提高推薦的精準性。
目前已有的雙端知識圖譜推薦算法中,文獻[18]提出融合知識圖譜的雙端在線學習資源推薦算法以提高推薦的準確性,但該算法注重用戶端的信息提取,忽視了物品方面本身所具有的特性。文獻[19]提出使用卷積網絡對用戶和物品屬性及其關系進行推薦的雙端知識圖譜算法,明顯地提升了推薦算法的性能,但算法中忽視了用戶與實體交互信息的重要性。上述的論文中采用引入外部信息提升推薦系統的效果,但沒有過多考慮到用戶偏好與物品特性的關系,不能非常準確地計算用戶的偏好以及基于用戶偏好的物品特性。相同的電影對于不同的用戶來說可能是不同類型的,因此本文將用戶嵌入向量引入到物品端的計算中,可以使物品鄰域信息的傳播方向更符合用戶的喜好。
目前已有的基于神經網絡的研究算法中,文獻[20]提出將CNN(convolutional neural network)與LSTM(long short-term memory)進行融合的金融交易算法以擁有更好的魯棒性。文獻[21]提出使用DQN 網絡結合用戶的長短期興趣以更精準地建模用戶興趣。文獻[22]提出將層次知識網絡與多層感知機進行結合以提高話題的推薦效果。在諸多論文的實驗中可以看出,Ripple Net[15]、KGCN[16]、KGAT[17]等算法最優結果層數為兩層。以KGCN[16]算法為例,為減少計算量,采用固定數量采樣法以及隨機性的鄰域傳播方向,其選取的數據并未取決于用戶的喜好。因此采用注意力網絡可以指定更準確的傳播方向,根據注意力權值對鄰域進行選擇,減少噪聲的引入。
由于已有論文中忽視用戶與物品的聯結作用,導致推薦模型存在缺陷,為此提出基于知識圖譜和注意力網絡的雙端推薦算法。本文的主要貢獻有以下三點:(1)利用知識圖譜內的異構信息,設計雙端注意力網絡從用戶端與物品端中獲取更有效的鄰域。(2)為更準確地計算用戶是否喜歡該物品,在物品端的注意力網絡中添加用戶偏好以計算更符合用戶喜好的物品嵌入向量。(3)對數據集MovieLens-1M和Book-Crossing進行實驗,評估算法的有效性,與基線模型相比,評估指標AUC、F1、precision、recall均有提升。
為了解決已有的知識圖譜-推薦算法中忽略用戶端與物品端的信息交互以及鄰域實體計算方式存在的問題,本文將雙端注意力網絡與知識圖譜進行融合,總體框架如圖1 所示。該模型以用戶瀏覽記錄(user view record)和物品信息(item)作為輸入??驁D由三個主要層次組成:(1)知識傳播層:根據雙端注意力網絡計算的權值,沿著KG 中的鏈路進行傳播以獲取鄰域集合。(2)注意力網絡層:將知識傳播層獲取的鄰域集合進行注意力權值計算,用戶端注意力網絡對用戶瀏覽記錄中的三元組進行權值計算以獲取有效鄰域;物品端注意力網絡將用戶的偏好與物品鄰域三元組結合以計算符合用戶喜好的有效鄰域。(3)預測層:聚合不同層次的用戶和物品的向量表示以生成用戶表示向量和物品表示向量,使用預測函數進行預測。
用戶的瀏覽記錄及其鄰域信息可以體現用戶對于某一類物品的喜好。以向用戶推薦電影為例,用戶u1觀看過屬于科幻片系列的《復仇者聯盟》,可以認為該用戶喜好科幻片系列的電影。在算法中,獲取用戶觀看記錄的鄰域信息,通過embedding層生成嵌入向量并聚合以表示用戶。對于物品節點,物品鄰域包含著對于物品本身信息的擴展。電影《復仇者聯盟》的導演是喬斯·韋登,則可以沿著知識圖譜中的鏈路對該導演的信息進行擴展,在注意力網絡中加入用戶的偏好獲取更符合用戶喜好的鄰域信息,將鄰域信息進行聚合以表示物品。由于鄰域的權重分配是提高推薦算法性能的重要因素之一,KGCN[16]是使用關系的重要度作為鄰域節點之間的權重值,KGAT[17]是采用注意力網絡對不同節點分配權值,CKAN[23]是采用知識感知注意網絡對節點分配權值。受以上算法啟發,本文為用戶端與物品端分別設計注意力網絡對路徑分配權值,獲得用戶向量和物品向量以預測用戶點擊率。
用戶的瀏覽記錄可以有效地展示用戶的偏好,例如用戶如果經常看《鋼鐵俠》《復仇者聯盟》《綠巨人》等電影,有理由認為用戶對科幻類型的電影感興趣;用戶如果經??茨硞€導演的電影,則可以認為用戶對這位導演的電影感興趣;用戶對演員、電影所屬國家的選擇也是如此。為更好地計算用戶偏好,本文采用基于用戶的注意力網絡對用戶瀏覽記錄中三元組信息進行計算以獲取更符合用戶喜好的鄰域,從而計算用戶的有效表示。對于用戶u,將其瀏覽記錄定義為Vu={v|yuv=1},則用戶的偏好表示可以定義為:
其中,N0u ={(h,r,t)|(h,r,t)∈Gandh∈Vu}為用戶瀏覽記錄的鄰域信息,et為尾部實體的嵌入表示,為面向三元組的注意力得分,根據圖1中注意力網絡,將h、r、t輸入至網絡中獲得用戶的偏好得分。
在網絡中加入dropout 層以防止發生過擬合,首先使用伯努利分布生成隨機失活向量ru∈Rm,然后生成dropout層加入網絡中。注意力網絡表述如下:
其中,u∈U表示用戶,r∈R 表示關系,p為隨機失活概率。非線性激活函數選擇Tanh與Sigmoid,將首部實體與尾部實體加入至激活函數中。選擇使用Tanh函數可以使注意力權值依賴于三者的關系,并且使用Sigmoid可以更加細微地進行分類。W與b為可訓練的參數,其下標代表其所屬層數。
最后將獲取到的注意力權值進行歸一化:
由于用戶瀏覽記錄在知識圖譜內傳播的實體較多,因此為獲取用戶更精準的偏好,將注意力權值進行排序并選用排名前ku的樣本作為鄰域。其表述如下:
其中,ku為用戶端鄰域采樣大小。
為了提高算法的聚合效果,本文選擇了三種聚合方法,如公式(7)~(9)所示:
最終將獲取到的用戶表示u與其鄰域表示向量uNu使用聚合器進行聚合,從而獲得用戶嵌入表示u。
物品v通過知識圖譜G獲取其鄰域信息,對于實體h,本文采用Nh={(h,r,t)|(h,r,t)∈G} ,其中h∈ε,r∈R,t∈ε。采用Trans方法通過嵌入embedding獲取到三元組的向量{(eh,er,et)|eh,et∈Rm,er∈Rn} ,本文根據三元組在關系空間中的距離判斷eh與et的關系:
設定距離閾值為ε,若distance≤ε,則判定在關系空間中eh與et是接近的,否則二者應遠離。由此設置函數d(h,r,t)計算三元組(h,r,t)距離的得分:
其中,Wr∈Rm×n為基于關系r的轉換矩陣,將實體eh與et投影至關系空間中。若d(h,r,t)數值越大,說明eh與et越貼近,三元組越符合用戶的喜好。
由于物品的信息較多,則需要在鄰域的初始集合中選擇更符合用戶喜好的元組,即d(h,r,t)排名前kv的三元組可以作為中心實體的初始集合S0v。
其中,kv為物品端采樣數量。
為使正負樣本之間得分差距變大,設置函數:
其中(h,r,t′)?G是通過在三元組(h,r,t)隨機將t進行替換而獲得的無效三元組,通過學習損失函數Ld可以更好地獲得物品的嵌入表示。
以用戶觀看電影為例,有些用戶會以演員為主選擇相應的電影,有些用戶也會以電影題材或者導演等因素為主選擇電影,由此認為用戶偏好側重點會影響到用戶對實體的選擇。知識圖譜中各個實體e∈E的鄰域權重由πru(u,r,t)決定。選用聚合器將獲取到的鄰域實體與權重進行聚合以獲取物品v的最終表示:
其中,(h,r,t)是基于關系r的首部實體和尾部實體之間的權值,加入用戶對關系的偏好則為(u,r,t)。
在物品端加入dropout 層,根據概率p′使用伯努利分布生成隨機失活向量rv,注意力網絡表述如下:
其中,非線性激活函數、參數的選擇與用戶端一致,在這里不過多敘述。最后將注意力權值進行歸一化:
由于Sv計算復雜度較高,因此將每個節點的注意力權值進行排序,采樣排名前kv的樣本作為鄰域的方式來降低復雜度。
根據公式(14)~(18)、(7)~(9),使用聚合器將物品與物品的鄰域不斷從外向里進行聚合,最終獲得物品向量Vu。
通過在上文中所獲得的用戶u與物品v的最終表示u和Vu,使用預測函數:
其中,σ(x)為Sigmoid函數。損失函數如下:
其中,第一項為所有用戶的真實值與預測值之間的交叉熵的損失,使用p(x)函數作為服從正態分布的負采樣,Cu=|{v:yuv=1} |為用戶u的負采樣。
為更好地對算法性能進行評估,本文選擇擁有用戶與物品交互信息的數據集MovieLens-1M 與Book-Crossing。其中MovieLens-1M是包含電影信息、用戶評價信息的數據集,用戶的評級為0~5;Book-Crossing 數據集是包含書籍信息、用戶評價信息的數據集,用戶的評級為0~10。具體信息如表1所示。

表1 選用數據集的具體信息Table 1 Details of selected datasets
為了驗證算法的有效性,本文選用四種基于知識圖譜的推薦算法作為比較對象。
KGCN[16]:物品信息放入知識圖譜內進行擴展,以固定數量采樣的方式獲取領域并計算特征。
CKAN[23]:將協同傳播與知識圖譜相結合,設計一個動態的知識感知注意機制以獲得頭部實體與關系的權值,實現尾實體的注意力嵌入。
KGCN-LS[24]:將知識圖轉化為特定于用戶的加權圖,為避免評分過少導致的過擬合現象,加入標簽平滑正則項對損失函數進行優化。
KCAN[25]:提出全局相似度保持和局部知識蒸餾以挖掘更準確的用戶偏好。
本文采用的實驗環境為Win10,使用python-3.8、sklearn-0.24.1、tensorflow-2.5.0。在兩種實驗場景中進行實驗:(1)在點擊率(CTR)預測中,將測試集放入算法中進行預測,使用AUC 和F1 評估預測性能。(2)在Top-K推薦中,將測試集放入算法中為用戶推薦點擊率前K的物品,使用precision@K、recall@K對數據集進行評估。具體參數設置如表2所示。

表2 參數設置Table 2 Parameters setting
表中-u 為用戶端,-v 為物品端,k為采樣數,d為維度,m為跳數,lr為學習率,L2 為正則化權重。
按照6∶2∶2比例將數據集劃分為訓練集、驗證集和測試集,每個基線算法重復3 次實驗并取平均值,點擊率(CTR)預測場景的實驗結果如表3所示。

表3 CTR場景下的AUC和F1預測結果Table 3 Results of AUC and F1 in CTR prediction
通過觀察四種基線算法可以發現:KCAN側重于實體的相似度,而KGCN、KGCN-LS僅聚合物品的鄰域信息,CKAN考慮首部實體與關系的權值卻忽略了尾部實體重要性。針對上述提到的不足,本文提出了雙端注意力網絡的知識圖譜推薦算法,實驗證明在數據集MovieLens-1M 中,相比于最優算法AUC 提升了2.1 個百分點,F1 提升了2.3 個百分點。在數據集Book-Crossing中,相比于最優算法AUC 提升了2.6 個百分點,F1 提升了2.4個百分點。在表中的-u表示僅在用戶端設定注意力網絡,-i 表示僅在物品端設定注意力網絡。通過對比,說明雙端注意力網絡可以有效提升算法的性能。
通過與其他算法的對比可以看出,在算法中提出兩端聚合可以有效地提高算法性能,將尾實體考慮至注意力網絡中可以進一步提高算法的有效性。在Top-K推薦場景下的實驗結果如圖2~5所示。

圖2 MovieLens-1M數據集上Top-K推薦準確率Fig.2 Precision@K in Top-K recommendation on MovieLens-1M dataset

圖3 Book-Crossing數據集上Top-K推薦準確率Fig.3 Precision@K in Top-K recommendation on Book-Crossing dataset

圖4 MovieLens-1M數據集上Top-K推薦召回率Fig.4 Recall@K in Top-K recommendation on MovieLens-1M dataset

圖5 Book-Crossing數據集上Top-K推薦召回率Fig.5 Recall@K in Top-K recommendation on Book-Crossing dataset
從上述四張圖中可以看出,本文算法的準確率、回歸率在MovieLens-1M 和Book-Crossing 數據集上均明顯高于其他基線算法,表明添加注意力機制可以有效提升算法性能。KCAN與KGCN準確率與回歸率較低,說明用戶端與物品端相結合可以提高算法的性能;CKAN與其他算法相比加入了動態知識感知注意機制,說明加入注意機制對鄰域信息的選擇有重要意義。但由于CKAN是將首部實體與關系加入知識圖譜,未考慮到尾部實體的重要性,因此本文提出根據用戶與物品的不同屬性分配相應注意力值的雙端注意力網絡。通過實驗證明,使用兩種注意力網絡是可行的,并且不會導致算法的復雜度較高。當采樣大小為4 與4 時,運行時間為2 min/epoch;當采樣大小為64 與64 時,運行時間為5 min/epoch。經調查可知KGCN 算法的運行時間是優于其他基線算法的,KGCN 運行時間為7 min/epoch,因此證明本文算法的時間復雜度較低。
表4表示跳數對AUC的影響,從中可以看出跳數取值過低、過高都會影響AUC,過高會引入噪音,過低則會減少算法內所聚合的信息,從而影響算法性能。表5表示嵌入維度對AUC 的影響,從中可以看出提高維度可以有效地提升AUC,但維度過高會導致AUC下降,說明合適的嵌入維度可以更加有效地編碼信息。

表4 跳數對AUC的影響Table 4 Ⅰmpact of layer on AUC value

表5 嵌入的向量維度對AUC的影響Table 5 Ⅰmpact of embedding vector dimension on AUC value
表6表示聚合器的選擇對AUC的影響,從表中可以看出MovieLens-1M 數據集使用Sum 聚合器表現最好,Book-Crossing 數據集使用Concat 聚合器表現最好,因此說明合適的聚合器對提升算法性能是很重要的。

表6 聚合器選擇對AUC的影響Table 6 Ⅰmpact of aggregator selection on AUC value
表7~10表示兩個數據集中不同的采樣大小對AUC與F1 的影響,從表中可以看出隨著采樣大小的增大,AUC 和F1 也隨之增大,但取值過大或過小都會引起性能的下降。在數據集MovieLens-1M 中,當采樣大小設置為user-64 與item-8 時,AUC 與F1 取得最大值。在數據集Book-Crossing 中,當采樣大小設置為user-64 與item-64時,AUC與F1取得最大值。因此說明合適的取樣大小可以提高算法的性能。

表7 數據集MovieLens-1M中采樣數對AUC的影響Table 7 Ⅰmpact of different sampling sizes on AUC in MovieLens-1M dataset

表8 數據集MovieLens-1M中采樣數對F1的影響Table 8 Ⅰmpact of different sampling sizes on F1 in MovieLens-1M dataset

表9 數據集Book-Crossing中采樣數對AUC的影響Table 9 Ⅰmpact of different sampling sizes on AUC in Book-Crossing dataset

表10 數據集Book-Crossing中采樣數對F1的影響Table 10 Ⅰmpact of different sampling sizes on F1 in Book-Crossing dataset
假設電影神奇四俠和鋼鐵俠是被用戶觀看過并給予較高的評分,DEKGAN 經過計算為用戶推薦電影復仇者聯盟。表11表示待推薦電影復仇者聯盟的實體聯系及其各元組權值排序,從中可以看出用戶對相同演員的電影更為偏愛,因此推薦復仇者聯盟的理由可以認為是用戶喜歡科幻類電影,尤其是擁有相同主演的電影。由此可以看出推薦結果是基于用戶的偏好以及知識信息,以此獲得更好的推薦結果可解釋性。

表11 推薦復仇者聯盟的解釋Table 11 Explanation of recommended avengers alliance
將知識圖譜與推薦算法相融合是為了可以獲取用戶與物品的更多信息,以輔助算法更準確地向用戶進行推薦。許多用戶對物品的喜愛點通常是不同的,但現有的推薦算法是單獨考慮用戶偏好和物品向量,因此研究用戶對物品喜好的側重點是很重要的。本文針對用戶-關系-物品三者之間的信息進行探索,提出一種融合雙端注意力網絡的知識圖譜推薦算法。該算法提出雙端注意力網絡,分別對用戶-關系、物品-用戶、實體三元組賦予基于知識的權重,以更好、更準確地形成用戶向量和物品向量。盡管本文算法提高了推薦性能,但算法中網絡優化問題仍有待進一步解決。在未來工作中,如何設計注意力網絡對用戶范圍進行分析以完成物品對用戶的預測,是進一步研究的方向。