紀佳琪 姜學東
(河北民族師范學院 河北 承德 067000)
隨著大數據時代的到來,人們已經進入了信息爆炸時代,推薦系統對緩解信息過載問題起到了重要的作用,在電子商務、社交網絡、在線新聞等領域得到了廣泛應用。傳統的推薦模型可以分為三類:協同過濾推薦模型、基于內容的推薦模型和混合推薦模型[1]。協同過濾推薦模型又可以分為基于用戶的協同過濾模型、基于物品的協同過濾模型和基于矩陣分解的協同過濾模型。其中,基于矩陣分解的協同過濾模型以其較好的推薦效果得到了廣泛的應用。其基本原理是把用戶屬性和物品屬性分別映射到兩個隱空間,使用兩個隱向量來表示用戶和物品,然后把這兩個隱向量的內積作為用戶對物品喜好程度的預測值。以此為基礎,眾多學者采用多種方法對其改進以增加性能,如與基于鄰域的模型進行集成[2],考慮物品內容屬性的主題模型[3]和基于知識的模型[4]等。然而由于矩陣分解中的內積操作是線性的,因此并不能很好地捕獲用戶和物品間復雜的交互信息,無法從根本上進一步提升推薦性能。
近些年,深度學習由于其強大的非線性表征能力,在計算機視覺[5-6]、語音識別[7]和自然語言處理[8]等領域獲得了突破性進展。然而把深度學習應用到推薦系統領域的研究還處于起步階段,并且這些研究主要是利用其對物品的文本描述信息[9]、音樂的聲音信息[10]或圖像信息[11]進行建模后再結合用戶和物品的隱向量做內積操作,其本質仍是線性的,并沒有很好地利用深度學習強大的非線性表征能力。
本文將使用深度學習技術對用戶和物品的交互數據進行學習,建立一個深度協同過濾推薦模型。該模型是非線性的,使用了多層神經網絡進行特征抽象后得出推薦結果。模型很好地將深度學習與協同過濾算法進行了結合,有效地提升了推薦系統的性能。
在推薦系統研究領域,經常用到顯式數據和隱式數據。使用顯式數據的推薦算法一般用于評分預測,而使用隱式數據的推薦算法一般用于推薦排序(也叫Top-K推薦)。本文使用矩陣分解和深度學習技術對隱式數據進行建模。
設|m|和|n|分別代表用戶數和物品數,定義用戶和物品的交互矩陣R∈R|m|×|n|。該矩陣可以來源于用戶評分矩陣,對于有評分的項設為1,無評分的項設為0,見圖1。

圖1 用戶評分矩陣的轉換

(1)
式中:k表示隱空間的維度。矩陣分解模型假設隱空間中每個維度之間都是相互獨立的,并且使用相同的權重進行線性組合,因此矩陣分解模型可以看作是隱向量等權重的線性組合模型。
深度學習是在二十世紀五六十年代神經網絡的基礎上發展起來的,擁有輸入層、隱藏層和輸出層。當隱藏層數目很多時稱為深度神經網絡。輸入的特征向量通過隱含層變換達到輸出層,在輸出層得到分類結果。隨著對深度學習研究的進展,很多深度模型可以應用于推薦系統領域。Cheng等[12]利用多層感知機設計了一種深廣學習(Wide&Deep Learning)模型,通過利用用戶特征、情境特征和項目特征等多源異構數據進行收集App推薦,模型具有較高的記憶能力和泛化能力。Covington等[13]通過利用用戶信息、情境信息、歷史行為數據和項目的特征信息等多源異構數據,提出一種深度神經網絡模型用于YouTube視頻推薦。此外,還可以利用卷積神經網絡進行音樂推薦[14],利用RNN進行新聞推薦[15],利用協同降噪自編碼器進行Top-K推薦[16]等。
本節將詳細介紹深度協同過濾推薦算法(Deep Learning based Collaborative Filtering,DLCF)。首先給出整體架構,然后進行形式化表示,最后定義損失函數并給出訓練方法。


圖2 DLCF整體網絡架構
首先分別把用戶和物品的交互矩陣R轉換為用戶向量、物品向量和標簽向量,其轉換過程如圖3所示。其中用戶向量和物品向量是神經網絡的輸入,標簽值用來和預測值做損失計算。然而由于R是|m|×|n|維的,因此用戶向量和物品向量的維度也是|m|×|n|維的,而這個維度過大,從而計算開銷過大。為了解決這個問題,本文將采用抽樣方法對負例進行抽取,即在R中抽取一定比例為0的值進入訓練數據。圖4模擬了抽取過程,其負例抽取的比例是正例的2倍。采用這樣的抽樣方法很好地解決了數據稀疏性所帶來的問題。

圖3 R轉換為用戶向量、物品向量和標簽向量

圖4 對數據采樣,負例數量是正例的2倍

2.1節所述的網絡架構,可以形式化地表示如下:
(2)
式中:P∈Rm×k、Q∈Rn×k分別表示用戶隱空間和物品隱空間(對應圖2中的嵌入層矩陣);Θ是模型參數,本文使用的是深度神經網絡,因此Θ就是各網絡層參數。由此f函數可以表示為:
f(Pu,Qi|P,Q,Θ)=gout(gn(…g2g1(wTx+b)))
(3)
式中:gn表示第n層網絡;gout表示應用某一激活函數(如Sigmoid)后得到的預測結果。

(4)
式中:R+表示訓練數據中的正例(即值為1的數據),R-表示訓練數據中的負例(但不是全部,如2.1節所述是按一定比例進行采樣)。
定義了損失函數后,就可以形式化地表示本文提出的深度神經網絡結構。該架構具有較高的靈活性,通過非線性學習pu和qi的內在交互關系進而得到預測結果:
(5)
式中:wi、bi分別表示第i層的權重、偏置;對于激活函數ai,可以選擇Sigmoid函數、tanh函數和ReLU函數。Sigmoid函數存在飽和區問題[17],即在曲線平緩處產生梯度消失問題及當輸出值接近0或1時學習停止,從而影響推薦效果。tanh函數雖然可以在一定程度上緩解上述問題,但是無法從根本上避免,因為它可以看作是Sigmoid函數的重新縮放(tanh(x)=2sigmoid(2x)-1)。ReLU函數是一個性能良好的函數并且不存在飽和區問題,因此我們選用ReLU作為激活函數。σ是輸出層的激活函數,由于我們的輸出結果要映射到[0,1]區間,因此選用Sigmoid函數。
本文使用Keras進行模型編程實現,模型運行在ubuntu系統上。首先通過實驗確定模型的超參數,然后再與其他基線算法進行比較分析。
本實驗使用了兩個公開的數據集:MovieLens和Book-Crossing。MovieLens數據集廣泛應用于對協同過濾推薦模型的評價,實驗中使用的是MovieLens-10m,它包含一百多萬的評分數據并且每個用戶至少存在20條評分記錄。由于它是顯式數據集,因此我們需要對其進行預處理,把它轉換成隱式數據集,轉換方法是對于有評分的項用1表示(無論評多少分),否則用0表示。Book-Crossing數據集是Cai-Nicolas Ziegler博士使用爬蟲程序從Book-Crossing圖書社區爬取的圖書評分數據。由于原始數據很大,并且有的用戶對物品的評分數目很少,因此數據非常稀疏。為此首先抽取用戶至少存在20條評分記錄的數據,然后再把這些數據轉換為隱式數據。表1列出了預處理后2個數據集的詳細信息。

表1 MovieLens和Book-Crossing數據集詳情
為了評價模型性能,使用了十折交叉驗證,即把數據分割成10個子集,1個子集被保留作為驗證模型的數據,其他9個子集用來訓練。交叉驗證重復10次,每個子集驗證一次,取10次的平均值作為最終的結果。使用命中率(Hit Ratio,HR)和歸一化折損累積增益(Normalized Discounted Cumulative Gain,NDCG)作為評價指標。在HR和NDCG后加@K符號表示推薦列表長度是K時(即做Top-K推薦),HR和NDCG的值。HR的計算公式如下:
(6)
式中:分子表示每個用戶Top-K列表中出現在測試集中的個數總和,分母表示測試集大小。NDCG的計算公式如下:
(7)
式中:reli表示在第i個位置時的“等級關聯性”,一般可以用0/1處理,如果該位置的物品在測試集合中,則reli=1,否則為0。分母是歸一化系數,|REL|表示按照相關性從大到小的順序排序,取前k個組成的集合。
如2.1節所述,我們在訓練階段需要采樣一定的負例,本文采取的方法是在每一輪迭代過程中采樣5倍于正例的負例,這些負例和所有正例作為訓練數據。使用Adam的優化方法,batch-size設置為256,學習率設置為0.000 4。實驗的重點是要確定神經網絡的層數,以及每層中神經元的個數,為此我們分別選取3至8層不同網絡結構進行實驗(固定每層神經元個數都為8),結果如表2所示。

表2 不同網絡層數下HR和NDCG值
從表2可以看出,無論是MovieLens-10m還是Book-Crossing數據集,當網絡層數從3增長到5時,HR和NDCG值都有明顯的增長趨勢,此時網絡層數的增加有助于推薦效果的提升。當網絡層數為7、8時,HR和NDCG不再增加,甚至略有降低,說明無限地增加網絡層數并不能無限制地提升推薦效果。當網絡層數為6時,雖然HR和NDCG都在增加,但增幅不大。雖然本實驗中具有6層網絡比具有5層網推薦效果略有提升,但考慮到網絡層數越多計算量越大,權衡計算量與推薦效果后,我們把網絡層數設置為5。
接下來考慮每個網絡層中神經元的個數。大量實驗表明,沿著網絡正向傳播的方向每層神經元個數遞減的設置方式有利于性能的提高。給出5種神經元個數不同的設置方法,其結果見表3。[32,16,8,4,2]表示每層神經元的個數分別是32、16、8、4、2,以此類推。

表3 不同神經元個數下HR和NDCG值
從表3中可以看出,隨著每層神經元個數的增加,HR和NDCG總體呈上升趨勢,但是在神經元為[128,64,32,16,8]后,即使神經元個數增加了,HR和NDCG上升量卻不大,但計算開銷量卻成倍增加。因此權衡計算量與推薦效果后我們選擇[128,64,32,16,8]作為每層的神經元個數。
通過上述實驗,我們確立了模型超參數,其匯總見表4。后面的對比實驗都是基于這些超參數得出的實驗結果。

表4 模型超參數匯總
為了驗證本文模型的有效性,與以下基線模型進行了對比實驗。
(1) Item-based Collaborative Filtering[18]:基于物品的協同過濾模型,該模型目前在工業界有著廣泛的應用,也是最早基于協同過濾推薦算法的模型之一。
(2) IRCD-CCS[19]:該模型把深度學習方法和協同過濾方法相結合,使用顯式數據解決物品評分問題,其經過顯式數據轉換為隱式數據后也能用于Top-K推薦。
(3) eALS[20]:一種使用矩陣分解對隱式數據進行建模的方法,該方法根據物品的流行度對缺失數據賦予不同的權重,然后使用加權平方作為損失函數進行訓練,取得了良好效果。
圖5顯示了4種模型分別在2個數據集上HR@K和NDCG@K的值(K取值從1到10)。可以看出,本文模型DLCF無論在哪個數據集上都遠好于其他3個模型。這主要是因為基于物品的協同過濾其本質是線性的,無法對復雜的交互進行建模。IRCD-CCS雖然使用SDAE方法進行非線性建模,但相比本文模型其層次不夠深,無法深層次地進行特征抽取。本文使用了深度神經網絡,能夠更好地進行深度建模,取得良好的推薦效果。

(a) MovieLens-10M HR@K

(b) MovieLens-10M NDCG@K

(c) Book-Crossing HR@K

(d) Book-Crossing NDCG@K圖5 當K從1到10時模型在2個數據集上HR和NDCG值
本文把深度學習技術與協同過濾推薦算法進行了結合,設計了使用深度神經網絡的協同過濾推薦模型,該模型能夠深度地非線性學習用戶和物品間的內在聯系,從而產生較好的推薦結果。下一步將繼續關注深度學習在推薦系統中的應用,把物品的屬性特征(如:描述、評論、標簽等)通過深度學習技術學習后作為輸入特征引入到推薦模型中來,從而產生更好的推薦結果。