樊艷清,紀佳琪
(1. 河北民族師范學院信息中心,承德 067000;2. 河北民族師范學院數學與計算機科學學院,承德 067000;3. 河北省文化旅游大數據技術創新中心,承德 067000)
推薦系統已廣泛應用于電子商務、新聞、音樂、電影、短視頻等領域,已成為互聯網應用必不可少的關鍵技術之一。以電子商務領域為例,其與實體店不同,電子商務門戶網站能夠售賣數以百萬計的產品。用戶不可能在有限的時間內篩選所有商品,推薦系統可以使目標用戶快速發現自己想購買的物品,因此用戶越來越依賴于推薦系統給他們推薦喜歡的商品。推薦系統不僅給用戶購物帶來好的用戶體驗,也增加了商家的收入。
在推薦系統剛出現時,使用了經典的基于信息檢索的方法,如基于內容的過濾[1]。然而,這些技術依賴于專家知識,并且只能應用于某一特定行業,如應用于圖書的推薦系統就很難應用于電影推薦,因此很難建立一個通用的模型。這導致了它并沒有得到廣泛的應用,取而代之并得到廣泛應用的其中一種方法是協同過濾推薦模型[2]。協同過濾推薦模型可以分為幾個分支,最初是采用基于鄰域的方法,它直觀、易于理解和實現,但缺乏準確性;第二種方法是基于分類的方法,這會產生稍好的結果,但很難解釋;第三種方法,也是目前較流行的方法,即基于隱語義模型(latent factor model),這種方法更為抽象,需要對數學有很好的理解才能進行解釋,但推薦效果更為準確[3]。
近些年,深度學習由于其具有強大的特征提取能力,已被廣泛應用到計算機科學的各個方面:自然語言處理、語音處理、計算機視覺等[4],其在信息檢索方面也有一些應用。基于深度學習的成功,本文提出了一種基于深度學習的隱語義協同過濾推薦模型。淺層的隱語義模型是基于矩陣分解的方法,本文在基本隱語義模型的基礎上把其擴展到更深的版本,使用深度學習方法,把矩陣分解擴展為深度矩陣分解版本。
基于鄰域的模型最初想法來源于人們在電子商務活動中的規律,它發現用戶u一定與某些用戶具有相同的喜好,因此可以根據相似用戶的喜好給用戶u做推薦。在這些相似用戶中,會給每個用戶分配不同的權重,相似度越高權重也就越大。這些相似用戶對物品I的評分再乘以他們對應的權重就是用戶u對物品i的喜好程度。以上描述可以形式化地表示如下:
其中:u表示需要推薦物品的用戶,表示用戶u對物品i的預測評分(即預測的喜好程度)。我們找到用戶u的所有近鄰v,然后用每個近鄰的權重wv乘以這個近鄰對物品i的評分,最后把所有結果進行加和就可以得到。這種鄰域模型又稱為基于用戶的協同過濾推薦模型[5]。
以上是從用戶的角度來看待協同過濾,我們也可以從物品的角度來看待協同過濾,從而產生了基于物品的協同過濾模型[6]。基于物品的協同過濾算法不需要尋找相似用戶,而是尋找相似物品,給用戶推薦那些和他們之前喜歡的物品相似的物品。其具體過程是用戶u對物品i的預測評分是用戶u對所有與物品i相似物品的評分乘上這些物品的權重后加和得到的。
隱語義模型是一種基于物品過濾推薦模型的推廣,隱語義模型[7]認為每個用戶可以用用戶的屬性表示,每個物品也可以用物品的屬性表示,而這些屬性是什么事先并不知道,因此這些屬性稱為隱屬性,即隱語義。對于具有m個用戶,k個隱語義的用戶隱矩陣Pm×k和具有n個物品,k個隱語義的物品隱矩陣Qk×n,用戶對物品預測評分矩陣(即隱語義模型)的計算方式如圖1所示。

圖1 隱語義模型
圖1的計算過程可以形式化表示如下:
對用戶隱語義矩陣Pm×k和物品隱語義矩陣Qk×n實際是求解如下的優化問題。
其中:R是實際評分矩陣,‖ · ‖2是2范式的正則化項,用來防止過擬合問題,λ是正則化參數。
受限玻爾茲曼機[8]作為深層信念網絡的構建塊得到了一定發展,最初也使用它來解決協同過濾問題。然而,由于其輸入需限制為1或0,因此受限玻爾茲曼機在基于上下文的協同過濾場景中并未得到廣泛使用。修正的高斯-伯努利受限玻爾茲曼機也不適用于此類輸入,因為它期望連續值輸入在0到1之間。
近年來,基于自動編碼器的協同過濾技術顯示出良好的效果[9],它們依賴于一個神經網絡,其輸出與輸入相同。用于協同過濾時輸入(和輸出)存在缺失值,當數據中存在此類缺失條目時,相應的網絡權重不會更新。一旦訓練完成,編碼器的表示與解碼器相乘,得到完整的評分矩陣。通過與隱語義模型的相似性分析,可以把網絡權重看作是用戶隱語義表示或物品隱語義表示。深度堆疊式自動編碼器也可以用于協同過濾,一般說來它和自動編碼器的輸入和輸出一樣,淺層和深層自動編碼器的唯一區別在于后者有更多層的編碼器和解碼器,然而實踐證明過深的層次對效果的提升幫助不大。
還有一些基于深度學習的協同過濾模型的研究都是啟發性的[10]。如向深度神經網絡中的輸入一般是用戶和物品的ID 及用戶對物品的評分,輸出是用戶對物品評分的預測值。此類模型最大的缺陷是用戶和物品的ID 不包含彼此的任何有用信息(如用戶或物品的屬性特征、用戶對物品的評價特征等)。因此,這些基于深度學習的協同過濾模型對預測評分的準確性有限。
在隱語義模型中,某一用戶可以用k維隱向量表示(P矩陣中的一行),某一物品也可以用k維隱向量表示(Q矩陣中的一列)。本文中,我們可以把這種隱向量的表示方式轉換成一種神經網絡的表示方式,即把用戶隱向量的表示轉換成物品隱向量到用戶對物品評分的一種神經網絡連接,如圖2 所示。該神經網絡的輸入是所有用戶對物品j的評分,用rj表示,輸出是物品j的隱向量表示,用qj表示。這樣就把隱語義模型的最初表示形式轉換成了神經網絡的表示形式,接下來就可以對網絡進行擴展,使其成為一個深度神經網絡模型。在深度學習體系結構中,來自上一層的隱語義表示可以充當到下一層的輸入。本文就以上述方式提出了基于深度學習的隱語義協同過濾推薦模型。

圖2 神經網絡表示隱向量
基于深度學習的隱語義協同過濾推薦模型如圖3所示,圖3中的隱藏層可以擴展到更深層次。理論上講,隨著網絡的加深,會提取到更深層次的隱語義表示。比如當我們選擇一本書或一部電影時,對于普通的隱語義模型來說只有一少部分隱語義會影響用戶的選擇(對于一本書來說影響的因素可能是作者、類型、出版社;對于一部電影來說,可能是明星、導演、題材)。然而對于深度隱語義來說,不僅能夠捕捉到上述的隱語義,還能夠捕捉到其他更深層次的特征。例如,更深層次的神經網絡節點可能捕捉到用戶的性格特征:內向、外向、中性等,也可能捕捉到物品的一些深層次特征,這些特征的捕獲不需要人為干預,深度神經網絡會根據不同的數據集自動完成。基于這些更抽象的特征,本文的模型比其他的模型具有更優的魯棒性和準確性。基于此,我們詳細介紹本文提出模型的具體形式化表示。

圖3 基于深度學習的隱語義協同過濾推薦模型
如1.2 節所述,在標準的隱語義模型中,評分矩陣可以看作是用戶隱矩陣和物品隱矩陣的乘積。
本文的深度隱語義模型中,我們將多層的用戶隱語義和一個物品隱語義進行結合,假設有2個用戶隱語義,則可以表示為
其中:P1和P2是2 層用戶隱語義矩陣,Q是物品隱語義矩陣。因此該模型很容易擴展到N層用戶隱語義,如公式所示。
由于R是評分矩陣,在實際數據集中,矩陣中的很多值都是缺失的,因此我們把缺失值的位置都填充為零,可以形式化表示為公式。
其中:·表示點乘,I是只包含0 或1 的矩陣。結合公式(6)就可以形成本文的深度隱語義模型,見公式。
因此,我們需要優化求解如下損失函數:
本文使用投影梯度法對上述問題進行求解,從而形成了本文的算法框架。
上述算法的關鍵是如何迭代求解Rk+1,Pk+11,Pk+12,Pk+13,…,Pk+1N,Qk+1,由于是在非凸集上進行求解,所以很難直接得到全局最小值。因此,本文提出了對約束進行交替投影的方法[11],以得出該問題的近似解。每個變量都將以Gauss-Seidel[12]的方式依次處理,然后投影到其關聯的約束集上。具體形式化的表示如下:
公式中的Projection+表示在正方向上的投影,也就是說如果值出現負數我們會把它置為0(使用ReLU 函數即可完成)。然后可以應用矩陣P在線性約束R上的投影R=A∪B的一般性質,如下:
公式中的+號表示偽逆矩陣(pseudo-inverse),因此公式(10)的具體展開計算見公式(12)。
結合算法(1)和公式(12)就完成了模型參數的求解,在后續的實驗中該算法也能較好地收斂。
本文使用Movielens 提供的3 個電影評分數據集對模型進行評估。
(1)movie-100K:該數據集包含了943 個用戶對1682部電影的一萬個評分。
(2)movie-1M:該數據集包含了6040 個用戶對3900部電影的一百萬個評分。
(3)movie-10M:該數據集包含了71567 個用戶對10681部電影的一千萬個評分。
這些數據集官方在提供時已經劃分好了訓練集和測試集,本實驗中我們使用5折交叉驗證得到實驗結果。
圖4 顯示模型在movie-100K 上損失值的變化趨勢,從圖4可以看到,損失值很快下降到最低點,說明模型的收斂速度較快。我們在其他兩個數據集上也得到了相同的實驗結果,由于篇幅關系,本文不再另行給出。

圖4 訓練損失值變化趨勢
本文提出的模型主要有兩個超參數,一個是神經網絡的層數,另一個是投影梯度法的步長γ值。一般說來,神經網絡的層數和數據量有一定的關系。如果數據量過少,網絡層數過多時很容易造成模型過擬合,通過本文的實驗數據(表1~表3)可以看出,當網絡隱藏層數大于3時,效果并沒有提升。由于每層的神經元個數設置多少并沒有統一的理論支撐,本文也是根據以往的經驗采取逐層減半的方法。首先我們只設置1個隱藏層,這個隱藏層的神經元個數分別設置為[8,16,32,64,…,128,256],在三個數據集上的實驗結果如圖5所示,從圖5我們可以看出當神經元個數為128 時,模型的效果最好。這個結果決定了我們后續增加隱藏層時每層神經元個數的設置。比如,當有2 個隱藏層時,我們把隱藏層的神經元個數分別設置為64-32;當有3個隱藏層時,每個隱藏層神經元個數分別設置為64-32-16;當有4 個隱藏層時,每個隱藏層神經元個數分別設置為64-32-16-8。實驗中發現當隱藏層為4時,效果不僅沒有提升反而略有下降。

表1 在數據集movie-100K上的實驗結果

表2 在數據集movie-1M上的實驗結果

表3 在數據集movie-10M上的實驗結果

圖5 不同隱藏層數在三個數據集上MAE值
接下來我們需要設置投影梯度法的步長γ。在實驗中,我們發現當γ的值在0.01~0.8 之間時,對最終的結果影響不大,但是在這個范圍外,算法效果會下降。因此我們隨機在上述范圍內固定了一個γ值為0.1。
本文選取了一些基于深度學習的經典推薦模型作為比較對象,分別是(1)collaborative deep learning(CDL)、(2)marginalized deep autoencoder(MDA)和(3)deep matrix factorization(DMF)。本文選取了精確度(Precision)和召回率(Recall)作為模型的評價指標,其中Precision@N表示推薦數量為N時模型的精確度。在三個數據集上各模型的實驗結果見表1~表3。
從實驗結果可以看出,本文提出的模型整體效果要比其他模型效果好,雖然隱語義模型和深度學習模型對于推薦結果的解釋性較差,但是實驗結果說明隱語義模型結合深度神經網絡能夠更好地提取特征,從而提升推薦結果的性能。從模型自身對比來看,當本文模型隱藏層數逐步增加到3 層時,推薦的效果也逐步增高;但是當隱藏層數達到4層時,推薦效果不增反降,這主要因為層數增加造成學習的參數增加,過多的參數會造成模型過擬合。
本文介紹了基于深度學習的隱語義協同過濾推薦模型,通過把淺層隱語義模型和深度學習技術相結合,形成了深度隱語義模型。通過使用交替投影的方法對模型進行了優化,并且模型收斂較快。與其他深度模型對比,實驗結果表明,本文提出模型的Precision和Recall都高于其他深度模型。近年來張量分解、因子分解在機器學習中越來越重要,由于張量維度更高,能表示更多維度的用戶或物品特征,因此在未來的工作中,我們將研究把多級張量分解和深度學習進行結合來完成推薦。