于嘉瑋, 薛 濤
(西安工程大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院, 西安 710048)
隨著互聯(lián)網(wǎng)技術(shù)和相關(guān)產(chǎn)業(yè)的迅速發(fā)展, 接入互聯(lián)網(wǎng)中的設(shè)備和應(yīng)用呈現(xiàn)指數(shù)上升的趨勢(shì). 推薦系統(tǒng)(recommendation system)作為一種有效過濾信息的手段, 從被提出到現(xiàn)在, 誕生了大量的理論、技術(shù)和應(yīng)用.協(xié)同過濾(collaborative filtering)作為推薦系統(tǒng)的經(jīng)典算法, 基于用戶-項(xiàng)目交互矩陣建模用戶偏好, 為相似的用戶推薦相似的物品. 因?yàn)槠湟子谑褂貌⑶夷苡行Р蹲接脩羝帽粡V泛應(yīng)用在實(shí)際項(xiàng)目中, 然而, 基于協(xié)同過濾的推薦存在數(shù)據(jù)稀疏和冷啟動(dòng)問題[1], 并且在用戶量越來越大的情況下, 其計(jì)算的復(fù)雜度也急劇增加.
近年來, 將知識(shí)圖譜(knowledge graph)中的實(shí)體及關(guān)系信息引入推薦系統(tǒng)中是有效緩解冷啟動(dòng)問題的方法[2]. 目前, 融合知識(shí)圖譜語義信息的方法大致可分為兩類: 基于嵌入的方法和基于路徑的方法. 其中, 基于嵌入的方法主要是以TransE[3], TransR[4]為代表的距離翻譯模型, 其核心思想是將實(shí)體和關(guān)系映射到連續(xù)的向量空間中, 同時(shí)可以保留知識(shí)圖譜原有的結(jié)構(gòu). 基于路徑的方法以構(gòu)造元路徑[5]為核心, 有很好的推薦效果以及可解釋性, 缺點(diǎn)是當(dāng)關(guān)系信息很多時(shí)需要手動(dòng)構(gòu)建元路徑, 工作量較大. 以上方法從語義關(guān)聯(lián)的角度出發(fā), 得到的節(jié)點(diǎn)嵌入表示更適合知識(shí)圖譜的一些內(nèi)部任務(wù)使用, 如: 知識(shí)圖譜補(bǔ)全、三元組分類等, 而不是用于推薦任務(wù). 為了使得到的語義信息更適合于推薦任務(wù), 一種可行的方法是結(jié)合用戶-項(xiàng)目二部圖與知識(shí)圖譜, 構(gòu)建協(xié)同知識(shí)圖譜(CKG)[6]. 從協(xié)同知識(shí)圖譜中挖掘語義信息, 并將獲取到的信息傳遞給推薦模型.
從知識(shí)圖譜中提取信息可以從圖結(jié)構(gòu)的角度出發(fā). 近年來, 圖卷積神經(jīng)網(wǎng)絡(luò)被認(rèn)為能夠很好地建模圖的結(jié)構(gòu)屬性和節(jié)點(diǎn)特征信息[7], 空域圖卷積直接在圖結(jié)構(gòu)上使用卷積操作獲取潛在的關(guān)系信息. 文獻(xiàn)[8]提出的GAT模型將圖卷積操作定義為利用注意力機(jī)制(attention)對(duì)鄰居節(jié)點(diǎn)進(jìn)行有區(qū)別地聚合. 但是GAT 模型沒有充分利用邊上的信息, 且只能用于同構(gòu)圖(homogeneous graph), 在后續(xù)的研究中仍有較大的改進(jìn)空間. 文獻(xiàn)[9]改進(jìn)了GAT 只能用于同構(gòu)圖的問題, 首次將基于注意力機(jī)制的圖神經(jīng)網(wǎng)絡(luò)用于異構(gòu)圖, 但是沒有很好地聚合高階鄰居信息. 文獻(xiàn)[10]基于共同鄰居數(shù)目對(duì)知識(shí)圖譜中的每個(gè)實(shí)體鄰域進(jìn)行排序采樣, 再沿著關(guān)系路徑逐層融合鄰居信息. 文獻(xiàn)[11]提出一種基于知識(shí)圖譜驅(qū)動(dòng)的端到端的圖神經(jīng)網(wǎng)絡(luò)推薦模型, 利用一個(gè)評(píng)分函數(shù)計(jì)算影響因子改變不同鄰居實(shí)體的聚合權(quán)重.
本文在HAN 模型的基礎(chǔ)上, 提出了一種融合協(xié)同知識(shí)圖譜高階鄰居特征的推薦模型CKG-HAN (collaborative knowledge graph hierarchical attention network).該模型首先將二部圖和外部知識(shí)圖譜融合成一個(gè)協(xié)同知識(shí)圖譜, 在協(xié)同知識(shí)圖譜中根據(jù)手動(dòng)構(gòu)建的元路徑將其分成多個(gè)同構(gòu)子圖, 在每個(gè)子圖中使用注意力機(jī)制聚合節(jié)點(diǎn)鄰居信息, 針對(duì)原HAN 模型不能獲取高階信息的問題, 加入了一個(gè)信息聚合層, 該層能夠聚合多跳鄰居信息. 最后融合不同子圖的特征得到充分融合知識(shí)圖譜語義信息的節(jié)點(diǎn)嵌入表示. 在MovieLens-1M數(shù)據(jù)集上與原模型以及一些主流模型進(jìn)行了實(shí)驗(yàn)對(duì)比,CKG-HAN 在Top-K 推薦任務(wù)中, 準(zhǔn)確率提升了1.1%,召回率提升了1.2%.
協(xié)同知識(shí)圖譜G由用戶-項(xiàng)目二部圖GI和外部知識(shí)圖譜G2融合而成. 二部圖表示為GI={(u,interact,i)|u∈U,i∈I},U代表用戶集合,I代表項(xiàng)目集合,interact代表用戶u與項(xiàng)目i有交互. 知識(shí)圖譜表示為G2={(h,r,t)|h,t∈E,r∈R},E代表實(shí)體集合,R代表實(shí)體間關(guān)系的集合.協(xié)同知識(shí)圖譜的一個(gè)示例如圖1 所示.
圖1 協(xié)同知識(shí)圖譜示例
從圖1 中可以看出, 用戶和項(xiàng)目之間的關(guān)系是單一的, 項(xiàng)目和實(shí)體之間包含多種不同的關(guān)系. 例如, 項(xiàng)目節(jié)點(diǎn)代表電影, 實(shí)體節(jié)點(diǎn)代表演員, 圖1 中的演員e1可以同時(shí)主演兩部電影i1和i3, 此時(shí)i1和i3就可以通過元路徑電影-演員-電影建立連接, 所有通過電影-演員-電影這條元路徑建立連接的項(xiàng)目構(gòu)成一個(gè)子圖. 通過其他類型的元路徑建立連接的項(xiàng)目構(gòu)成另外的子圖, 我們需要綜合同一項(xiàng)目在不同的元路徑下的特征得到其最終特征.
為了使推薦結(jié)果有更好的準(zhǔn)確性和可解釋性, 我們不僅要對(duì)用戶和項(xiàng)目的交互進(jìn)行建模, 還要考慮項(xiàng)目之間的關(guān)系信息. 知識(shí)圖譜在提供額外屬性信息的同時(shí)也蘊(yùn)含大量的關(guān)系信息, CKG-HAN 模型首先要將知識(shí)圖譜與用戶點(diǎn)擊記錄充分融合成協(xié)同知識(shí)圖譜,作為輸入推薦模型的數(shù)據(jù), 之后利用改進(jìn)的分層圖注意力機(jī)制充分挖掘語義信息和高階鄰居信息, 得到最終的特征表示后, 計(jì)算特征間的相似度得到交互概率.CKG-HAN 模型的整體架構(gòu)如圖2 所示.
圖2 CKG-HAN 模型架構(gòu)
從圖中可以看出, 模型的處理過程分為兩個(gè)階段:
在構(gòu)建協(xié)同知識(shí)圖譜階段, 需要預(yù)處理知識(shí)圖譜, 使知識(shí)圖譜中包含全部的項(xiàng)目以及與之相關(guān)的實(shí)體作為補(bǔ)充. 之后擴(kuò)展二部圖, 加入一個(gè)代表關(guān)系的維度, 和知識(shí)圖譜中的三元組按行拼接在一起形成協(xié)同知識(shí)圖譜.
在推薦階段, 推薦模塊的處理分為節(jié)點(diǎn)注意力層和關(guān)系注意力層. 對(duì)于節(jié)點(diǎn)注意力層, 計(jì)算中心節(jié)點(diǎn)及其鄰居節(jié)點(diǎn)之間的注意力系數(shù), 得到節(jié)點(diǎn)級(jí)注意力機(jī)制的特征表達(dá). 對(duì)于關(guān)系注意力層, 聚合來自不同子圖的特征. 最后通過一個(gè)全連接層得到交互概率.
節(jié)點(diǎn)注意力層要解決的問題是如何學(xué)習(xí)節(jié)點(diǎn)鄰居的重要性并進(jìn)行融合. 由于知識(shí)圖譜中的節(jié)點(diǎn)具有異構(gòu)性, 不同類型的節(jié)點(diǎn)具有不同的特征空間, 所以需要一個(gè)變換矩陣MΦi, 將不同類型節(jié)點(diǎn)的特征投影到同一特征空間中. 變換過程如下所示:
其中,hi表示原始特征;h′i表示投影特征. 通過變換操作,節(jié)點(diǎn)注意力機(jī)制可以處理不同類型的節(jié)點(diǎn).
在考慮鄰居節(jié)點(diǎn)對(duì)目標(biāo)節(jié)點(diǎn)的重要性時(shí), 注意力機(jī)制[12]不僅能夠加速模型訓(xùn)練的過程, 而且能夠很好地捕捉局部信息, 很適合學(xué)習(xí)鄰居節(jié)點(diǎn)對(duì)于目標(biāo)節(jié)點(diǎn)的重要程度. 對(duì)于節(jié)點(diǎn)對(duì)(i,j)和其對(duì)應(yīng)的元路徑 Φ可以構(gòu)造如下表示:
此外, 由于異構(gòu)圖具有無標(biāo)度性, 節(jié)點(diǎn)之間的連接分布不均, 少數(shù)節(jié)點(diǎn)有很多與之相連的節(jié)點(diǎn), 多數(shù)節(jié)點(diǎn)則連接較少. 為解決上述問題, 可以重復(fù)若干次求注意力系數(shù)的操作, 即多頭注意力機(jī)制. 使用多頭注意力機(jī)制的好處是可以穩(wěn)定模型學(xué)習(xí)的過程, 獲取更多關(guān)于鄰居節(jié)點(diǎn)的信息, 具體計(jì)算公式如下:
其中, ||表示拼接操作, 是一種集成多個(gè)注意力頭輸出結(jié)果的方式. 通過重復(fù)K次式(3)中的操作并拼接每次的結(jié)果, 得到多頭注意力機(jī)制的嵌入表示.
(2) GraphSage 聚合函數(shù)[15]將兩種特征進(jìn)行拼接,并經(jīng)過一個(gè)非線性變換:
(3) Bi-Interaction 聚合函數(shù)[6]考慮兩種特征之間的相互作用:
其中,W1和W2是線性變換矩陣; °表示兩個(gè)矩陣對(duì)應(yīng)位置相乘的操作. 從后續(xù)的實(shí)驗(yàn)中可以得出結(jié)論, Bi-Interaction 聚合函數(shù)效果最好, 因?yàn)槠湄S富了特征交互. 最后我們經(jīng)過多個(gè)聚合層, 每次聚合相當(dāng)于向外擴(kuò)展了一跳, 因?yàn)閺牡诙娱_始, 每個(gè)聚合層的輸入是上一層計(jì)算后的輸出, 具體的層數(shù)作為超參數(shù).
元路徑集合{Φ1,···,Φp}經(jīng)過節(jié)點(diǎn)注意{力層, 可以得}到同一節(jié)點(diǎn)在不同元路徑下的特征表達(dá), 用nΦ1,···,nΦp表示, 將其輸入關(guān)系注意力層進(jìn)行進(jìn)一步的處理. 節(jié)點(diǎn)注意力層的處理流程如圖3 所示.
圖3 節(jié)點(diǎn)注意力層處理流程
在經(jīng)過節(jié)點(diǎn)注意力層的處理后, 我們得到了同一節(jié)點(diǎn)在不同元路徑下的特征表達(dá), 每條元路徑代表一種關(guān)系信息, 每個(gè)節(jié)點(diǎn)都可能包含在多種不同的元路徑中. 關(guān)系注意力層主要解決的問題是如何聚合不同元路徑下的關(guān)系信息.
與節(jié)點(diǎn)注意力層中的操作類似, 定義一個(gè)可學(xué)習(xí)的向量q與一個(gè)全連接層, 計(jì)算得到注意力分?jǐn)?shù), 計(jì)算方法如下:
對(duì)注意力分?jǐn)?shù)進(jìn)行標(biāo)準(zhǔn)化處理, 得到不同元路徑下鄰居節(jié)點(diǎn)對(duì)目標(biāo)節(jié)點(diǎn) 的相關(guān)性權(quán)重值, 最后利用學(xué)習(xí)到的權(quán)重作為系數(shù), 我們可以融合這些不同元路徑下的節(jié)點(diǎn)信息, 以獲得最終的節(jié)點(diǎn)嵌入表示.
模型選用的損失函數(shù)為BPR 損失函數(shù)[16], 使用BPR 損失函數(shù)的目的是讓正樣本和負(fù)樣本之間得分之差盡可能大, 為觀測(cè)到的用戶與項(xiàng)目間的交互分配更高的分?jǐn)?shù), 損失函數(shù)定義如下:
圖4 關(guān)系注意力層處理流程
本文使用的實(shí)驗(yàn)環(huán)境為Intel i7-9750H 處理器,NVIDIA GTX1660Ti 顯卡, 16 GB 運(yùn)行內(nèi)存. 軟件環(huán)境為Python 3.6, PyTorch 1.6.0.
本文模型在超參數(shù)的設(shè)置上經(jīng)多次試驗(yàn)得出一組較好的取值, 迭代次數(shù)200, 學(xué)習(xí)率0.005, 多頭注意力機(jī)制的頭數(shù)H為4, 聚合層的層數(shù)為3, 使用Adam 優(yōu)化器進(jìn)行學(xué)習(xí)率的自適應(yīng)調(diào)節(jié).
本文使用的數(shù)據(jù)集是電影推薦場(chǎng)景MovieLens-1M數(shù)據(jù)集, 該數(shù)據(jù)集包含6000 個(gè)用戶與近4000 部電影的100 萬條交互記錄. 根據(jù)數(shù)據(jù)集中出現(xiàn)的電影, 搜集電影相關(guān)的屬性信息來構(gòu)建知識(shí)圖譜, 數(shù)據(jù)集中已有關(guān)于電影的類型信息, 所以本文在IMDB 上使用爬蟲獲取了與電影相關(guān)的導(dǎo)演和演員信息, 數(shù)據(jù)集的情況統(tǒng)計(jì)如表1 所示.
表1 數(shù)據(jù)集概況
其中, 知識(shí)圖譜中的3 種關(guān)系可以對(duì)應(yīng)3 種不同的元路徑, 分別為電影-演員-電影MAM, 電影-導(dǎo)演-電影MDM, 電影-類型-電影MTM. 對(duì)于每一位用戶, 選取其有交互記錄的電影的80%作為訓(xùn)練集, 20%作為測(cè)試集, 并且在訓(xùn)練時(shí)加入一個(gè)隨機(jī)的無交互記錄的負(fù)例, 在測(cè)試時(shí)去除每個(gè)用戶有交互記錄的正樣本, 對(duì)其余項(xiàng)目給出預(yù)測(cè). 本文采用的評(píng)價(jià)指標(biāo)包括準(zhǔn)確率Precision@K和召回率Recall@K,K表示推薦列表的長度, 表示為用戶推薦預(yù)測(cè)評(píng)分最高的K部電影,K的取值為[1, 5, 10, 20].
為了驗(yàn)證模型的有效性, 本文選取了幾類主流的模型進(jìn)行對(duì)比:
(1) FM[17]: FM 是一個(gè)結(jié)合支持向量機(jī)(SVM)和因式分解的模型, 使用因式分解的參數(shù)對(duì)變量之間的關(guān)系進(jìn)行建模, 適用于數(shù)據(jù)稀疏的場(chǎng)景.
(2) NFM[18]: 由于FM 模型對(duì)于特征的組合僅限于二階, 缺少對(duì)特征之間深層次關(guān)系的抽取. 因此, NFM提出來就是在FM 的基礎(chǔ)上引入神經(jīng)網(wǎng)絡(luò), 實(shí)現(xiàn)對(duì)特征的深層次抽取.
(3) CKE[19]: 采用包括異構(gòu)網(wǎng)絡(luò)嵌入和深度學(xué)習(xí)嵌入的兩種嵌入方法自動(dòng)從知識(shí)圖譜中提取語義表示,通過執(zhí)行知識(shí)圖譜嵌入和協(xié)作聯(lián)合過濾, CKE 可以同時(shí)從知識(shí)圖譜中提取特征并且從中獲取隱式的用戶和項(xiàng)目之間的關(guān)系.
(4) HAN[9]: 改進(jìn)了GAT 只能用于同構(gòu)圖的問題,首次將基于注意力機(jī)制的圖神經(jīng)網(wǎng)絡(luò)用于異構(gòu)圖.
在MovieLens-1M 數(shù)據(jù)集上, 將CKG-HAN 模型與上述幾種推薦算法進(jìn)行了對(duì)比實(shí)驗(yàn). 現(xiàn)將對(duì)比結(jié)果繪制成表格, 統(tǒng)計(jì)各模型在K=20 的情況下的準(zhǔn)確率與召回率, 結(jié)果如表2 所示.
表2 推薦模型性能對(duì)比
在推薦長度為20 時(shí), 本文提出的CKG-HAN 模型與以上4 個(gè)基準(zhǔn)模型相比, 在2 個(gè)評(píng)價(jià)指標(biāo)上均取得了最佳效果. 與原HAN 模型相比, 在準(zhǔn)確率上提高了1.1%, 在召回率上提高了1.2%. CKG-HAN 模型的優(yōu)勢(shì)在于: (1)引入?yún)f(xié)同知識(shí)圖譜, 將交互記錄與知識(shí)圖譜兩個(gè)相互獨(dú)立的內(nèi)容聯(lián)系在一起; (2)新增高階信息聚合層, 將鄰居節(jié)點(diǎn)的高階信息有區(qū)別地聚合到中心節(jié)點(diǎn)的表示中, 挖掘了基于元路徑的語義信息.
圖5 與圖6 是模型之間的詳細(xì)對(duì)比圖. 從圖中可以看出, 4 個(gè)基準(zhǔn)模型中, FM 與NFM 由于更多地關(guān)注特征交互帶來的影響, 沒有引入額外的信息, 效果并不是很好, 由此可見引入知識(shí)圖譜這種結(jié)構(gòu)化數(shù)據(jù)的必要性. CKE 效果較好, 影響其性能的原因可能是引入外部信息之后噪聲增多, 這也證明了需要對(duì)特征進(jìn)行有區(qū)別地聚合的重要性. HAN 效果最佳, 因?yàn)槠浼尤肓俗⒁饬C(jī)制, 能夠有區(qū)別地進(jìn)行鄰居聚合, 并且HAN的走勢(shì)平緩, 說明多頭注意力機(jī)制也能更好地穩(wěn)定模型訓(xùn)練過程. 實(shí)驗(yàn)結(jié)果證明, CKG-HAN模型在基于協(xié)同知識(shí)圖譜的情況下, 在公共數(shù)據(jù)集上的Top-K 推薦任務(wù)中取得了更好的效果.
圖5 模型Precision 性能對(duì)比
圖6 模型Recall 性能對(duì)比
對(duì)于模型中的超參數(shù)設(shè)置, 本文也進(jìn)行了實(shí)驗(yàn)驗(yàn)證其取值的影響. 在節(jié)點(diǎn)注意力層使用了多頭注意力機(jī)制, 圖7 顯示了頭數(shù)H在不同取值下對(duì)準(zhǔn)確率的影響, 可以看出H的取值為4 時(shí)效果最好, 當(dāng)H為6 時(shí)準(zhǔn)確率反而降低, 這與GAT 模型中作者建議取值為2 或3 的結(jié)論相似.
圖7 多頭注意力機(jī)制的頭數(shù)性能對(duì)比
在聚合高階鄰居時(shí), 本文使用了3 種不同的聚合函數(shù), 圖8 中對(duì)比了這3 種聚合函數(shù)以及不使用聚合函數(shù)的情況.
圖8 聚合函數(shù)效果對(duì)比
從圖中可以看出, 不使用聚合函數(shù)的效果最差,fGCN聚合器在兩個(gè)指標(biāo)上都優(yōu)于fGraphSage, 一個(gè)可能的原因是GraphSage 沒有將中心節(jié)點(diǎn)特征與其鄰居節(jié)點(diǎn)特征進(jìn)行交互.fBi-Interaction則增強(qiáng)了這一點(diǎn), 在聚合多跳特征的同時(shí)進(jìn)行多種形式的特征交互, 取得了最好的效果, 因此它證明了在執(zhí)行信息聚合和傳播時(shí)特征交互的重要性.
本文在HAN 模型的基礎(chǔ)上, 主要針對(duì)其無法獲取高階信息的問題, 新增了一個(gè)聚合層聚合多跳鄰居信息, 從而提出了CKG-HAN 模型, 該模型能有區(qū)別地聚合節(jié)點(diǎn)周圍高階鄰居的信息, 得到蘊(yùn)含豐富語義的節(jié)點(diǎn)特征表示. 然后結(jié)合MovieLens-1M 數(shù)據(jù)集和外部知識(shí)圖譜構(gòu)建協(xié)同知識(shí)圖譜作為輸入數(shù)據(jù), 在Top-K 推薦任務(wù)中CKG-HAN 取得了比原模型和幾類基準(zhǔn)模型更好的效果, 準(zhǔn)確率與召回率分別提升了1.1%和1.2%,證明我們成功將模型用于推薦領(lǐng)域并且取得了效果上的提升.
在實(shí)驗(yàn)過程中我們發(fā)現(xiàn), 隨著知識(shí)圖譜關(guān)系類型的增加, 需要手動(dòng)構(gòu)建大量元路徑, 生成很多子圖.在下一步的工作中, 將考慮不使用元路徑, 直接在同一張圖中進(jìn)行計(jì)算; 當(dāng)前用到的知識(shí)圖譜僅考慮了一些簡(jiǎn)單的屬性信息, 引入更多信息會(huì)使計(jì)算更加復(fù)雜, 如何引入更豐富的語義信息也是一個(gè)值得改進(jìn)的方向.