劉 峰,王寶亮,潘文采
(1.天津大學 信息與網絡中心,天津 300072;2.天津大學 電氣自動化與信息工程學院,天津 300072)
隨著互聯網技術的高速發展,人類社會進入了信息爆炸的時代。為緩解信息過載問題,對推薦系統的研究迫在眉睫。推薦系統主要根據用戶行為推薦用戶偏好的內容[1],在電子商務[2]、新聞[3]、短視頻[4]等領域發揮著重要作用。
用戶-物品推薦是推薦系統比較常見的運用,其對應于圖模型中的二部圖。大多數網絡表示學習法不能直接應用在二部圖模型中研究同質網絡問題。網絡表示學習法主要構建適合處理節點類型較多的網絡知識圖譜進而解決異質網絡問題,而二部圖模型缺乏針對性。文獻[5]提出基于圖模型的推薦算法可以通過隨機游走理論解釋,但該算法時間復雜度較高且不能體現用戶節點與物品節點的差異性。
將網絡表示學習法運用到推薦算法中具有較好的效果[6]。傳統網絡表示學習法是根據一定的假設構造矩陣,保留了網絡結構信息的矩陣,進一步得到節點的低維特征向量,如LLE[7]、IsoMap[8]、Laplacian Eigenmap[9]等方法。以上算法雖然在小網絡上具有較好的效果,但時間復雜度較高,在大規模網絡上應用困難。近年來,人們提出用于學習圖的卷積神經網絡結構。
推薦算法需考慮用戶與物品大量交互和物品自身屬性的豐富性問題。基于領域的推薦算法相似度表達簡單;基于矩陣分解的推薦算法相似度表達沒有考慮到用戶與物品的多維特征;基于協同過濾的推薦算法不能充分提取信息。因此,利用多維特征提高推薦算法的表示能力已成為需要研究的問題。
本文提出基于網絡表示學習的卷積協同過濾推薦算法。將二分網絡分成用戶與物品兩個同質網絡,并在各自網絡上利用GraphSAGE 模型進行訓練得到兩類節點的嵌入表示。在此基礎上,采用外積運算得到兩類節點的關系矩陣,最終通過卷積神經網絡捕捉特征中每一維的交互關系完成推薦任務。
通過使用GraphSAGE[10]模型完成網絡表示學習的任務。GraphSAGE 模型用于監督式學習和非監督式學習,還可以選擇是否使用節點的屬性進行訓練。該方法適于解決外部信息多樣的推薦問題,對于將圖加入到新節點時不用重新訓練整個模型,提高算法的泛用性。
GraphSAGE 模型是針對同質圖問題進行構建的,通過節點的屬性信息和網絡結構信息生成節點的嵌入表示。嵌入表示是每個節點學習各自的聚合函數,通過該函數聚合節點的鄰域信息。該算法的前向傳播分為采樣、聚合、預測3 個步驟[10]。
在聚合和預測時,每階鄰居節點通過使用不同的函數聚合鄰居節點特征,將目標節點特征表示和鄰居節點聚合屬性連接后通過非線性變換得到目標節點的更新嵌入表示,所有節點逐層進行迭代。該算法提出均值聚合函數(Mean Aggregator)、LSTM Aggregator、池化聚合函數(Pooling Aggregator)。均值聚合函數對采樣鄰居節點特征向量的每個維度求均值,作為目標節點的特征向量;LSTM Aggregator[11]具有較強的數據表達能力,但對數據順序敏感。池化聚合函數(Pooling Aggregator)通過對目標節點的鄰居節點做非線性變換并進行池化操作。GraphSAGE 前向傳播算法偽代碼如算法1 所示。

對于反向傳播部分,采用非監督學習方式。參考SkipGram 模型,采用基于圖的損失函數使相鄰節點有更相似的特征表達,損失函數如式(1)所示:

其中,zu為節點u通過GraphSAGE 生成的嵌入表示,節點ν為節點u在k層采樣內得到的鄰居,σ為sigmoid 函數,Pn為負采樣的概率分布,Q為負樣本數目。
1.2.1 算法的整體設計
對于用戶與物品二分網絡的問題,本文算法將二部圖分解成物品與物品的同質網絡和用戶與用戶的同質網絡,利用GraphSAGE 模型將用戶的網絡特征結構和屬性特征融合,得到具有相同維度的嵌入表達。對用戶與物品的特征向量進行外積運算,即通過矩陣表示用戶與物品特征每個維度之間的關系。最終通過卷積神經網絡提取物品與用戶的潛在關系。本文算法流程如圖1 所示。

圖1 本文推薦算法流程Fig.1 Procedure of the proposed recommendation algorithm
在用戶與物品推薦場景下,通常物品和用戶的屬性信息和物品與用戶的交互信息是已知的。在這種環境下,通過圖的結構來表示它們之間的關系。用戶和物品節點是圖的節點,物品與用戶的交互關系是圖的連邊。通過這些映射就形成了物品與用戶的二部圖模型。假設推薦場景中包含m個用戶、n個物品,用戶節點集合用U={u1,u2,…,um}表示,物品節點集合用V={ν1,ν2,…,νn}表示。上述推薦問題對應的用戶-物品二部圖表示為G=(U,V,E,W),E為圖G中所有邊的集合,eij表示節點ui與νj的連邊;W為圖G中用戶與物品的交互權重矩陣,wij為圖G中eij對應的權重。
同質網絡問題包括用戶網絡和物品網絡兩部分。以物品網絡為例,不同的物品有著相似的適用群體,如乒乓球和球拍有很強的關聯性。對于用戶網絡,如果兩個用戶都是運動愛好者,則兩者有著相似的愛好。因此,同質網絡也有著深刻的聯系。
將用戶-物品二部圖分解為兩個同質圖。對于圖G,定義用戶節點的一階相似度為:


得到|V|×|V|維的物品相似度矩陣和|U|×|U|維的用戶相似度矩陣,根據WV和W^U 構建用戶同質圖GU和物品同質圖GV。在使用WU、WV構建用戶同質圖與物品同質圖之前,根據WU、WV中權重分布情況適當去掉權重過低的邊,避免噪聲干擾影響后續計算結果。
構建用戶及物品屬性特征需考慮用戶及物品的屬性信息類型。對于結構化數據,將其中的非離散數據離散化,進行one-hot 編碼得到特征編碼;對于非結構化數據,若為本文信息常使用TF-IDF[12]或LDA 算法[13]進行結構化處理,若為音頻、視頻、圖像等信息則使用相對應的深度學習方法轉化為結構化數據。通過GraphSAGE 模型得到的用戶屬性特征矩陣AU、物品屬性特征矩陣AV轉換為用戶特征矩陣MU與MV,表示如下:

假設得到的嵌入表示維度都為t,則可以表示用戶特征矩陣MU∈?m×t和物品特征矩陣MV∈?n×t。
利用外積運算得到用戶與物品特征交互矩陣,對于用戶u 與物品表示用戶u 的特征向量表示物品i 的特征向量,則Mu,i的計算公式如下:

在協同過濾中,通常使用矩陣分解表示物品與用戶的關系并對物品與用戶的關系做內積,只使用Mu,i中對角線上的信息。因多層感知機(Multilayer Perceptron,MLP)算法在理論上可以擬合任何函數關系,但是需要大量數據進行訓練。在用戶與物品推薦系統中,每個用戶的行為信息是有限的,所以本算法未采用直接拼接用戶、物品特征后通過MLP 進行學習的方案。利用有限數據訓練的深層網絡會降低其性能,且很難保證MLP 收斂到真實模型。同時在實驗部分,直接拼接用戶、物品特征不經過卷積神經網絡訓練,直接通過MLP 進行對比實驗,進一步說明加入卷積神經網絡增強了算法的效果。
本算法使用外積對物品與用戶的信息交互進行建模,并利用卷積神經網絡進行訓練,減少了訓練所需數據量的同時也減少了模型中需要訓練的參數。
1.2.2 卷積神經網絡結構設計
卷積神經網絡(Convolutional Neural Network,CNN)模型中的參數定義比傳統模型更復雜,其參數設計的一般規律可總結為以下4 個方面:
1)卷積層一般使用較小的卷積核,卷積核越大,輸出的特征圖越小,難以提取數據的特征,而且卷積核越小,相應的參數也越小。
2)卷積步長一般設置較小,便于更好地提取特征。
3)池化層常使用2×2 的池化窗口。池化層的作用是對輸入數據進行空間降維,當池化操作過大時,數據信息易丟失,最終導致網絡性能下降。
4)全連接層的層數一般不宜超過3 層,全連接層數越多,訓練難度越大,越容易造成過擬合和梯度消散。
本模型的CNN 部分如圖2 所示。采用常見的卷積網絡模型進行設計,為避免丟失過多的結構信息,沒有使用卷積層和池化層將矩陣數據壓成一維。模型由3 層全連接層和6 層卷積層組成,卷積核大小均為3×3,步長為1×1。為了使輸入輸出的特征圖大小不變,將進行填充操作。每2 層卷積層后加入池化層進行最大值池化,池化核大小為2×2,步長為2×2。對特征圖進行下采樣,并在之后2 個卷積層中將通道數翻倍,以此類推,在最后的卷積層添加Flatten 層將數據壓平并連接MLP 網絡,逐漸將輸出維度縮小到一維。整個流程用式(7)表示,其中為最終神經網絡的輸出。

圖2 卷積神經網絡示意圖Fig.2 Schematic diagram of convolutional neural network

其中,σ為非線性函數,除最后一層全連接層為sigmoid 激活函數外,其余所有卷積層與全連接層均使用ReLu 激活函數。總體的模型參數如表1所示。

表1 卷積神經網絡部分模型參數Table 1 Convolutional neural network partial model parameter
1.2.3 損失函數設計
模型損失函數主要是平方損失函數,定義該函數的前提是觀察的結果服從高斯分布。在實際問題中,用戶與物品的交互信息不一定服從高斯分布。本算法采用二分類的思想,將用戶與物品的關系采用“0”和“1”表示,0 表示不相關,1 表示相關表示卷積網絡的輸出,代表預測物品i 與用戶u 相關的可能性。為了使具有概率性的含義,將其取值范圍限制在[0,1],因此在神經網絡的最后一層激活函數選用sigmoid 函數,使用的損失函數如式(8)所示:

其中,Y為正采樣集合,Y-為負采樣集合,yui表示用戶u 與物品i 的聯系表示卷積網絡最后的輸出。
最終模型訓練時采用Adam 優化算法[14],模型在MLP 部分添加Dropout 層以解決訓練過擬合的問題[15],增強模型泛化能力。
Movielens-100k 數據集包含用戶提供的電影評分數據。該數據集包括10 萬組用戶電影評分信息,評分為1~5的整數,以及用戶的性別、年齡等類別標簽信息。
Last.fm-2k 數據集包括近10 萬組用戶對歌手的收聽信息,用戶對某歌手的關系權值是用戶對該歌手所有作品的播放次數,還有1 萬組用戶間好友關系,以及近20 萬組用戶對歌手添加的標簽信息。Movielens 和Last.fm 的基本統計信息如表2 所示。

表2 實驗數據集信息統計Table 2 Experimental data set information statistics
為驗證本文算法的有效性,實驗部分選取了具有代表性的ItemKNN[16]、BPR[17]、MF[18]、NeuMF[19]、ConvNCF[20]算法作為對比算法。
實驗在ubuntu-16.04環境下進行,使用python-3.6.5開發,使用的庫包主要為numpy-1.14.3、networkx-2.3、keras-2.0.5、sklearn-0.20.0。
模型訓練時需要提供正負樣本進行學習,本文對Movielens 與Last.fm 數據集進行相同的處理。在排除實驗測試集所需正樣本后,對考慮每一位用戶,假設其包含的正樣本數為n,設定負采樣系數為ns。對于該用戶將從其沒有發生過交互的物品集中隨機抽取ns×n個物品作為負樣本,保證對于每個用戶其正負樣本比例都是一樣的,以下實驗數據中如沒有特殊說明ns的取值均為4。將全部樣本的90%作為訓練集,10%作為驗證集。
為驗證算法在推薦問題下的性能,選用HR@k與NDCG@k 作為評價指標,以綜合衡量算法結果在無序評價指標和有序評價指標下的性能。
1)召回率
設R(u)是測試集上為用戶u 產生的推薦列表,T(u)是用戶發生過交互行為的物品列表。召回率定義為推薦列表中用戶最終發生交互的物品在測試集中的占比,計算公式如下:

Re值越大,表示推薦算法的召回率越高。由于Re的值與推薦列表的長度密切相關,因此常寫作Re@k 以直接表明條件設置,表示為HR@k。
2)歸一化折損累計增益
歸一化折損累計增益(Normalized Discounted Cummulative Gain,NDGG)對推薦結果在列表中的排名增加了懲罰,計算公式如下:

其中,reli表示位置i推薦結果的相關性,k表示推薦列表的長度。考慮到評價指標需要衡量推薦算法對不同用戶的推薦效果,因此提出NDCG 評價指標,對用戶u 的NDCG@k 的計算公式如下:

其中,I@K 為推薦算法為某一用戶返回的最佳推薦結果列表,最終N@k 的計算公式為:

NDCG 的取值范圍是[0,1],且越接近1,推薦效果越好。
2.5.1 性能分析
以下實驗數據均為5 次獨立實驗結果的平均值。本文與對比算法在Movielens數據集上的結果如表3 所示,在Last.fm 數據集上的結果如表4 所示。根據實驗數據可以看出,本文提出的算法較ItemKNN 算法的性能有顯著提升,而基于神經網絡的NeuMF 算法在Movielens 與Last.fm 上的表現均比傳統方法要好。ConvNCF 算法與本算法都優于其他對比算法,說明利用卷積神經網絡進行協同過濾是有效的。與ConvNCF算法相比,本文算法在Movielens 數據集上將HR@5 提升了1.89 個百分點、NDCG@5 提升了2.19 個百分點,在Last.fm 數據集上將HR@5 提升了1.09 個百分點,NDCG@5 提升了3.32 個百分點。因此,本算法在用戶-物品二分網絡的推薦問題上可以提升性能。

表3 對比算法在Movielens 數據集上的實驗結果Table 3 Experiment results of comparison algorithm on Movielens datasets

表4 對比算法在Last.fm 數據集上的實驗結果Table 4 Experiment results of comparison algorithm on Last.fm datasets
2.5.2 聚合器選擇對算法性能的影響分析
在上述2 個數據集上,Mean、LSTM、Pooling 這3 種聚合器的表現對比如圖3 所示,其中NG 是NDCG 的縮寫。Pooling 聚合器的性能最好,Mean 聚合器的性能最差,LSTM 聚合器的性能與Pooling 較為接近。由于LSTM 聚合器構成鄰居節點序列時具有不確定性,因此LSTM 聚合器性能偶爾優于Pooling 聚合器性能。LSTM 訓練學習時間較長,因此,使用Pooling 聚合器的效果最佳。

圖3 3 種聚合器性能對比Fig.3 Performance comparison of three aggregators
2.5.3 算法收斂性分析
式(7)是本文推薦算法的基本模型,由于是二分類問題,因此可用“0”和“1”表示是否為推薦的物品。選擇sigmoid 函數將結果限制在0 和1 之間得到具體的損失函數,如式(8)通過最小化損失函數訓練模型參數。
通過實驗驗證本模型的收斂性。在訓練學習過程中,采用早停法避免過擬合現象的發生。在Movielens數據集上訓練500 次迭代,實驗結果如圖4 所示。HR@10 在訓練學習時比NDCG@10 更穩定。隨著訓練次數的增加,兩者均表現出穩定的狀態,因此本算法的收斂性能良好。

圖4 訓練損失、HR@10 與NDCG@10 的訓練結果Fig.4 Training loss,HR@10 and NDCG@10 training results
2.5.4 參數敏感性分析
參數敏感性是衡量算法的指標。本算法主要分析卷積層數對推薦效果的影響。將物品與用戶的交互矩陣壓縮成一維向量,采用MLP 替代卷積神經網絡,作為卷積神經網絡的消融實驗。調整卷積神經網絡的層數使輸出的特征圖尺寸依次為16×16、8×8、4×4、2×2、1×1,將其壓成一維。根據維度大小設計合適的MLP 并完成后續訓練。將上述5 組實驗依次稱為Conv1~Conv5,在上述2 個數據集上完成的實驗結果如圖5 所示。在協同過濾學習中加入卷積神經網絡比單獨使用MLP 的效果更好。隨著卷積層數的增加和特征圖尺寸的縮小,HR@10 與NDCG@10都存在極值點,呈現先上升后下降的趨勢。因此,適當調整網絡層數與最終保留特征圖的尺寸能獲得最有效的信息。

圖5 卷積層數的敏感性分析Fig.5 Sensitivity analysis of convolution layers
本文推薦問題是一種二分類問題,其負采樣較靈活,因此需考慮負采樣比例對模型性能的影響。設置負采樣系數ns為2、4、6、8、10。在2 個數據集上進行實驗實驗結果如圖6 所示。ns為4~6 較為合理。

圖6 訓練集負采樣個數的敏感性分析Fig.6 Sensitivity analysis of the number of negative samples in the training set
用戶、物品的節點嵌入維度也會影響模型的效果。本實驗將嵌入維度調整為8、16、32、64。實驗結果如表5 所示,整體上各項評價指標隨著維度的增加而增加。增大嵌入維度可以更好地保留有效信息,但當維度過大時,訓練參數會急劇增加,從而導致訓練時間大大增加。在實際情況下,需要結合需求選擇合適的維度。

表5 用戶、物品節點嵌入維度的敏感性分析Table 5 Sensitivity analysis of embedded dimensions of user and item nodes
本文提出基于網絡表示學習與深度學習的推薦算法。將二部圖模型運用于網絡表示學習法,將用戶與物品二分網絡分解為兩個同質網絡。通過外積運算表示用戶與物品特征每一維的關系矩陣,使用卷積神經網絡捕捉特征中每一維的高階交互關系。與其他算法相比,在數據集上測試的推薦算法召回率和折損率都有相應的提升并具有良好的收斂性。下一步將節點的屬性信息考慮進網絡表示學習法,并進行對比實驗研究。