張 昕,劉思遠,徐雁翎
遼寧大學 信息學院,沈陽110036
項目推薦是最有效的也是應用最廣泛的信息過濾和信息發現的方法之一。目前為了滿足用戶個性化興趣的推薦系統已經投入了大量的研究。在典型的推薦方法中,基于協同過濾[1]的方法利用用戶的歷史偏好,取得了顯著的成效。但是推薦系統普遍面臨兩個問題:一是用戶-項目矩陣通常是非常稀疏的,即數據稀疏性問題;二是對于新加入推薦系統的用戶與項目,由于沒有其歷史交互信息所以無法對其進行建模與推薦,即冷啟動問題。協同過濾方法在數據稀疏以及冷啟動的情況下效果相對較差。解決此問題的一個常見思路是導入輔助信息,豐富推薦系統中對于用戶與項目的描述,從而有效彌補用戶興趣的稀疏或缺失。在各類輔助信息(如用戶概況[2]、社交網絡、圖像等)中,知識圖譜作為一種新興的輔助信息,其中包含大量的結構化數據[3],近年來逐漸受到研究者的關注。
知識圖譜是由大量的實體和關系組成的多關系有向圖。更具體地說,知識圖譜中的每條邊都以(頭實體、關系,尾實體)的形式表示為一個三元組,也稱為事實、頭實體與尾實體通過關系連接。近年來,大量的知識圖譜如Google 知識圖譜、DBpedia 和Microsoft 的Satori 被創建并成功地應用于許多場景中,例如知識圖譜補全[4]、知識問答、詞嵌入[5]、文本分類等諸多領域,在推薦系統中也得到了廣泛應用。圖1 所示為電影推薦的典型場景,其中《霸王別姬》《建黨偉業》《無問西東》三部影片為用戶的觀看記錄,根據知識圖譜可以得知影片的導演、類型和主演分別是“陳凱歌”“愛情”和“劉燁”,隨后就可以向用戶推薦陳凱歌導演,劉燁主演的“無極”和同樣是愛情類型的電影“怦然心動”。

圖1 知識圖譜在電影推薦中的應用Fig.1 Application of knowledge graph in movie recommendation
利用知識圖譜來提高推薦系統的性能,也稱作知識感知推薦,在一定程度上解決了推薦系統的數據稀疏性以及冷啟動問題。傳統的推薦算法利用項目屬性信息來緩解冷啟動問題,而知識圖譜可以看成是對于項目屬性的拓展,具有更高維度的語義信息[6],可以更好地解決冷啟動問題;對于數據稀疏性問題,引入知識圖譜后所關注的不再是整個用戶-項目矩陣,而是與用戶交互的項目在知識圖譜中通過實體傳播得到的實體,從而解決數據稀疏性問題。除此之外,知識感知推薦的優勢還包括:(1)知識圖譜引入了項目之間的語義關聯,有助于發現項目之間的潛在關系,提高推薦的準確性;(2)知識圖譜包含各種類型的關系,有助于合理地擴展用戶的興趣,增加推薦的多樣性;(3)知識圖譜將用戶的歷史記錄與推薦的項目連接起來,為推薦系統帶來了可解釋性。
一般來說,現有的知識感知推薦算法可分為兩類:
一類是基于嵌入的方法,使用知識圖譜嵌入(KGE)算法對一個知識圖譜進行預處理,并將學到的實體嵌入到一個推薦框架中。例如,協同知識庫嵌入(CKE)[7]將CF 模塊與知識嵌入、文本嵌入和項目的圖像嵌入結合在一個貝葉斯框架中。深度知識感知網絡(deep knowledge-aware network,DKN)[8]將實體嵌入和詞嵌入作為兩個不同的模塊,然后設計一個CNN 框架將它們組合在一起進行新聞推薦。融合循環知識圖譜和協同過濾電影推薦算法[9]將協同過濾與循環知識圖譜嵌入相結合進行電影推薦。但是這些方法中采用的知識圖譜嵌入算法學習到的嵌入對于表示項目間的關系不太直觀和有效。
另一類是基于路徑的方法,通過探索知識圖譜與項目之間的各種連接模式,為推薦提供額外的信息。例如,個性化實體推薦(PER)[10]將知識圖譜視為異構信息網絡(HIN),提取基于元路徑/元圖的潛在特征來表示用戶與項目之間沿不同類型關系路徑/圖的連通性。Luo等人研究了一種基于社交網絡的推薦算法Hete-CF[11],該算法通過基于元路徑的相似性對用戶-項目、用戶-用戶和項目-項目進行建模。基于路徑的方法以更自然、更直觀的方式使用知識圖譜,但是這些方法效果的好壞很大程度上取決于人工設計的元路徑的質量和數量,而這又需要領域知識。這在很大程度上限制了這些方法生成高質量推薦的能力。
針對現有推薦算法的局限性,本文提出了一種新的推薦模型——結合注意力機制的知識感知推薦算法。該算法的關鍵思想是應用注意力機制獲取偏好傳播,旨在預測用戶對項目的點擊率,以用戶與項目的交互和知識圖譜作為輸入,并輸出用戶參與該項目(例如,點擊、瀏覽)的概率。對于每個用戶,將其歷史興趣作為知識圖譜的中心,然后沿著知識圖譜逐層向外擴展。對于知識圖譜的每一層使用注意力機制研究每個實體的重要性,以此獲取用戶對不同項目的興趣,從而更好地預測點擊率。
綜上所述本文的貢獻如下:
(1)在知識感知推薦算法中同時結合了基于嵌入和基于路徑的方法。使用知識圖譜嵌入的同時無需任何人工設計,可以自動發現從用戶歷史記錄中的項目到候選項的路徑。
(2)應用了注意力機制為合并到推薦系統中的實體賦予不同的重要性。
(3)給出一個將知識圖譜作為輔助信息引入到推薦系統的端到端框架。
知識圖譜嵌入是將知識圖譜中的實體與關系嵌入到低維連續的向量空間中,并且保持知識圖譜的固有結構。知識圖譜嵌入的方法可分為兩類:(1)基于平移的嵌入方法(如TransE[12]、TransH[13]、TransR 等),其中TransE是最具代表性的方法之一,將實體和關系都表示為同一空間中的向量,其基本思想是使頭實體的嵌入與關系嵌入的和盡可能的接近尾實體的嵌入。(2)語義匹配模型,例如Co-mplEx[14]和RESCAL[15],通過匹配實體和關系的潛在語義來衡量知識圖譜三元組的合理性。例如,RESCAL 將關系表示為滿秩矩陣的形式,由于實體與關系之間都為矩陣運算,所以實體與關系的信息可以進行深層次的交互。但是這些方法更適合圖文應用,例如鏈接預測。本文方法在推薦的同時進行了嵌入,可以看作是一種特殊設計的知識圖譜嵌入方法,能夠更好地服務于推薦。
注意力機制與人類的視覺觀察具有相同的特性,即人眼在感知外界事物時并不是從頭到尾觀察一遍,而是根據自身的需求關注該事物特定的一部分。注意力機制對數據的不同部分賦予不同的重要性,從而使人們能夠專注于最重要的數據。起初引入注意力機制[16]是為了解決基于編解碼器框架處理序列到序列的轉換任務,由于其能夠自動地發現輸入數據的重點后來被廣泛應用于機器翻譯、統計學習和推薦系統[17]。本文使用注意力機制來探索輸入項目、用戶歷史記錄以及知識圖譜中實體之間的關系。
在一個典型的推薦系統中,用戶集和項目集分別表示為U={u1,u2,…}和V={v1,v2,…}。用戶與項目的交互矩陣Y={yuv|u∈U,v∈V},其中:

若yuv的值為1,則表示用戶u與項目v之間存在交互,如點擊、觀看、瀏覽等行為。值得注意的是本文在推薦中使用的是隱式反饋,即通過用戶行為間接的反應用戶偏好。Y中的值為1 僅表示已觀察到用戶與相應項目之間的交互,盡管此類交互不能確保用戶真正喜歡該項目,但它們是有關用戶可能喜歡的信息的來源。同樣,Y中的值為0并不表示用戶對項目不感興趣。在本文中,觀察到的交互被視為模擬用戶潛在興趣的積極項目,而未觀察到的交互被模擬為不感興趣的消極項目。除了交互矩陣Y,已知內容還包括知識圖譜G,它由大量的實體-關系-實體三元組(h,r,t) 組成。其中h∈E,r∈R,t∈E分別表示一個三元組的頭實體、關系和尾實體,E和R表示知識圖譜中實體和關系的集合。
在已知交互矩陣Y和知識圖G的情況下,目標是學習一個CTR 預測模型,以預測用戶u對每個輸入項目v的點擊概率。
框架如圖2 所示,將項目v、用戶-項目交互以及知識圖譜G作為輸入。首先,根據用戶u的歷史點擊項以及知識圖譜根據本文的實體傳播方法得到多個合并實體集。然后,將項目v和實體集中的實體進行嵌入,通過注意力機制得到基于注意力機制的用戶表示。最后,使用用戶u的最終表示u和項目v的嵌入v進行CTR預測。

圖2 框架圖Fig.2 Frame diagram
知識圖譜包含各種實體以及實體之間復雜的關系,這些實體為探索用戶興趣提供了潛在的視角。然而對于特定的用戶,所有的實體對于用戶的偏好并不具有同等的重要性,并且有些實體與該用戶是無關的(稱為噪聲)。為了降低噪聲對于結果的影響,將用戶點擊歷史中的實體合并到知識圖譜中,使每個合并的實體都與用戶相關。
實體傳播過程如圖3所示,將用戶u點擊的歷史記錄記為Lu={vu,1,…,vu,m,…,vu,|S|},其中vu,m代表用戶u點擊的第m個項目,則實體傳播可以定義為:

圖3 實體傳播Fig.3 Entity propagation


其中,H為最大傳播次數,經過H次傳播得到H+1 組相關實體。
實體集的大小可能隨著跳數k的增加而變得越來越大,從而導致引入無關實體并且增大計算量。本文從以下幾個方面解決該問題:(1)知識圖譜中的大量實體它們只有傳入鏈接但沒有傳出鏈接。(2)在諸如電影或書籍推薦的特定推薦場景中,關系可以限于與場景相關的類別,以減小實體集的大小并提高實體之間的相關性。(3)在實踐中,最大跳數H通常不會太大,因為距離用戶歷史點擊項太遠的實體帶來有用信息的同時也會產生更多的噪聲。將在實驗部分討論H的選擇。(4)在本文算法中設置固定大小的實體集,而不是使用完整的實體集,進一步減少計算開銷。
傳統的推薦方法及其變體學習用戶和項目的潛在表示,然后通過應用特定函數(例如內積)計算項目評分。在本文中,為了探索用戶和項目之間的交互,提出了一種基于注意力機制的偏好傳播方法,以獲取用戶的潛在興趣。注意力機制可以描述為將query和key-value映射到輸出。輸出為value的加權和,其中分配給每個value的權重由query與key通過兼容性函數計算得到。

圖4 基于注意力機制的用戶表示Fig.4 User representation based on attention mechanism

然后通過softmax 函數對value進行加權求和得到用戶對于項目v的一階響應:

其中,softmax函數可以表示為:



本文算法中使用知識圖譜G和隱式反饋矩陣Y,學習目標是最大化模型參數Θ的后驗概率:

其中,Θ包括所有實體、關系和項目的嵌入,則有:

根據貝葉斯定理,在式(10)中,右側第1項p(Θ)計算模型參數Θ的先驗概率。根據文獻[7],將p(Θ)設為具有零均值和對角協方差矩陣的高斯分布:

式(10)中右側第2項是給定Θ計算知識圖G的似然函數。在本文算法中,使用3階張量分解方法來定義知識圖譜嵌入的似然函數:

如果(h,r,t)∈G,則Ih,r,t等于1,否則為0。根據式(12),可以在同一計算模型下統一知識圖譜嵌入中實體-實體對和項目-實體對在偏好傳播中的得分函數。式(10)中右側最后一項是給定Θ和知識圖譜時得到的隱式反饋的似然函數,其定義為伯努利分布的乘積:

取式(10)的負對數,得到損失函數如下:

其中,V和E分別是所有項目和實體的嵌入矩陣,Ir是知識圖譜中指標張量I對于關系r的切片,而R是關系r的嵌入矩陣。在式(14)中,第1項計算的是交互Y的正確標注數據和預測值之間的交叉熵損失,第2項計算知識圖譜Ir的正確標注數據和重構的指標矩陣ETRE之間的平方誤差,第3項計算的是用于防止過度擬合的正則化項。
本文采用隨機梯度下降(SGD)算法來優化損失函數。在每次訓練中,為了使計算效率更高,按照文獻[18]中的負采樣策略從Y中隨機抽取1個小批量的正/負反饋,從G抽取1 個小批量的true/false 三元組。然后,針對模型參數Θ計算損失函數L的梯度,并基于采樣的小批量數據通過反向傳播更新所有參數。本文將在實驗部分中討論超參數的選擇。
本章給出算法在兩個通用數據集上的實驗結果,并與代表性推薦算法進行性能對比。首先介紹實驗所用數據集、對比算法和相關參數設置,然后給出點擊率預測以及top-K推薦在這兩個推薦場景中的結果,最后討論實驗中超參數的選擇。
本文選取2個通用數據集進行實驗。其中MovieLens-1M數據集是電影推薦中廣泛使用的數據集,由MovieLens網站上約1 000 000 個顯式反饋(評級范圍從1 到5)組成。Book-Crossing數據集包含了Book-Crossing社區中1 149 780個顯式反饋(評級范圍從0到10)組成。
由于MovieLens-1M 數據集和Book-Crossing 數據集對于電影與書籍的反饋都為顯式反饋,本文將其轉換為隱式反饋。對于用戶已進行評級的電影或書籍(MovieLens-1M 數據集的評級閾值為4,Book-Crossing數據集考慮數據稀疏性不設置閾值)標記為1,并對相同數量的未評分電影進行采樣,作為負(標記為0)的隱式反饋,然后使用用戶和項目的ID嵌入作為原始輸入。
本文所使用的知識圖譜由文獻[19]生成,MovieLens-1M 的知識圖譜包含20 195 個三元組和12 種關系。Book-Crossing知識圖譜表包含19 793個三元組和25種關系。由于過濾掉了知識圖譜中沒有相應實體的項目,因此用戶,項目和交互的數量比原始數據集要少。表1為數據集預處理后的詳細統計信息。

表1 數據集的詳細統計數據Table 1 Detailed statistics of data set
本文選取以下代表性算法進行對比:
(1)CKE將CF與結構知識、文本知識和圖像知識結合在一個統一的貝葉斯框架中進行推薦。由于文本知識和視覺知識在本文中不可用,所以使用CKE 的CF+結構知識模塊。
(2)DKN融合了實體嵌入和詞嵌入,為每個輸入新聞生成一個知識感知嵌入向量,然后對用戶進行動態建模,其中電影和書籍的標題用于生成詞嵌入,實體嵌入由TransH學習。
(3)PER 將知識圖譜視為HIN(異構信息網絡),并提取基于元路徑的特征來表示用戶和項目之間的連通性。在本文中使用PER的所有項-屬性-項(例如“電影-導演-電影”)。
(4)LibFM[20]是CTR場景中廣泛使用的基于特征的因式分解模型。本文將用戶ID,商品ID 以及從TransR獲得的實體嵌入結合起來,作為LibFM的輸入。
(5)Wide&Deep[21]是一個通用的深度推薦模型,將線性通道(Wide)與非線性通道(Deep)結合使用。與LibFM類似,本文將用戶ID、項目ID和TransR學到的項目嵌入結合起來作為Deep&Wide的輸入。
表2中給出了完整的超參數設置,其中d表示項目和知識圖譜的嵌入維度,η表示學習率。通過優化驗證集上的AUC來確定超參數。考慮到過高的跳數并不會進一步提高性能,且會產生更大的計算開銷,本文實驗中為MovieLens-1M 和Book-Crossing 兩個數據集設置跳數分別為6 和4。為了公平考慮,所有對比算法的維度設置與表2中相同。

表2 數據集超參數設置Table 2 Data set hyperparameter settings
對于每個數據集,訓練集和測試集的比例為8∶2。每個實驗重復3次,并對結果取平均值。在兩個實驗場景中評估本文算法:(1)在點擊率(CTR)預測中,將訓練的模型應用于測試集中,并給出預測的點擊概率。使用ACC和AUC來評估CTR預測的性能。(2)在top-K推薦中,使用訓練模型為測試集中的每個用戶選擇具有最高點擊概率的前K項,并選擇Precision@K、Recall@K、F1@K這三個參數來評估推薦集。
Top-K推薦的對比實驗結果如圖5 所示。其中圖5(a)、(b)和(c)分別為MovieLens-1M數據集上Precision、Recall和F1的對比結果;圖5(d)、(e)和(f)分別為Book-Crossing數據集上Precision、Recall和F1的對比結果。

圖5 Top-K推薦對比結果Fig.5 Top-K recommendation comparison results
由圖5所示對比結果可以看出:
(1)CKE 的表現比其他算法差,這可能是因為只輸入了結構知識,沒有圖像知識和文本知識輸入。
(2)DKN 與其他算法相比表現最差。這是因為電影和書名太短而且不明確,無法提供有用的信息。
(3)PER 的推薦結果表現不盡如人意,因為用戶定義的元路徑很難達到最佳。
(4)作為兩種通用推薦工具,LibFM和Wide&Deep都表現出了令人滿意的性能,表明可以很好地利用知識圖譜的知識來實現他們的算法。
CTR預測的對比實驗結果如表3所示,本文算法在兩個數據集的所有評估方法中表現最佳。具體來說,在電影推薦中,AUC 的性能比其他算法高出1.1%至27.8%,在書籍推薦中高出2.5%至13.8%。

表3 CTR預測對比結果Table 3 Comparison results of CTR prediction
通過在實驗中改變知識圖譜中每一跳實體集數量及跳數,以進一步分析對本文算法性能的影響。在兩個數據集上不同跳數下AUC 的實驗結果如表4 所示。可以看出當H為4 或6 時,本文方法可以獲得最佳性能。這是由于知識圖譜中與用戶歷史點擊項距離跳數越多的實體與用戶的相關性越低。但是當跳數太小時則很難從知識圖譜中獲取額外的信息。

表4 跳數對AUC結果的影響Table 4 Impact of hop count on AUC results
在兩個數據集上不同實體集數量下AUC的實驗結果如表5 所示,可以觀察到隨著實體集數量的增加,算法的性能首先得到提升,因為更大的實體集可以從知識圖譜中獲得更多的知識。但是,當數量進一步增加時性能會下降,因為過多的實體集可能會帶來無關信息。實驗結果表明實體集數量為32時算法能夠獲得最佳性能。

表5 每跳實體集中實體數量對AUC結果的影響Table 5 Impact of number of entities in each hop entity concentration on AUC results
在實驗中改變參數d和λ2,分析其對算法性能的影響。將d從2逐漸調整到64,將λ2從0調整到0.5,同時保持其他參數不變。MovieLens-1M 上的AUC 的結果如圖6 所示。由圖中可以觀察到,隨著d的增加,性能首先得到提升,因為具有較大維度的嵌入可以編碼更多有用的信息。可能由于過度擬合,在d=16 之后性能下降。由圖6(b)中可以看出,當λ2=0.01 時,算法可以獲得最佳性能。這是因為具有較小權重的KGE項不能提供足夠的正則化約束,而較大的權重會誤導目標數。

圖6 超參數對于實驗結果的影響Fig.6 Influence of hyperparameters on experimental results
本文提出了一種基于注意力機制的知識感知推薦算法,通過結合知識圖譜中的實體來推斷用戶的潛在興趣,從而解決推薦系統中的數據稀疏性和冷啟動問題。算法首先通過用戶的歷史記錄在知識圖譜中擴展出的實體作為外部知識,然后通過注意力機制計算給定的用戶-項目對的CTR 預測,最后形成端到端的推薦框架。通過在兩個公共數據集上進行對比實驗,表明本文方法相比于現有典型推薦方法,在評估指標(例如AUC、ACC 和Recall@top-K)方面取得了顯著的進步。在未來,計劃進一步評估模型在更多數據集上的可行性,并在改進本文嵌入方法的同時將知識圖譜補全引入到模型中。