惠康華,計 瑜,王 進,賀懷清
(中國民航大學 計算機科學與技術學院,天津 300300)
協同過濾[1,2](collaborative filtering, CF)是一類根據用戶偏好以及相似用戶評價來預測用戶對新物品偏好的方法。隨著深度學習在許多領域的成功應用,針對以神經網絡為基礎的基于模型的協同過濾方法的研究得到越來越多關注。受限的波茲曼分解機(restricted Boltzmann machine,RBM)[3],對用戶或項目打分數據分布進行建模得到兩層無方向生成圖模型,在Netflix挑戰賽中取得較好成績。文獻[4]以 RBM為核心,把用戶和物品的相關性擴展相結合,建立波茲曼模型實現物品推薦。
神經自回歸分布估計[5](neural autoregressive distribution estimator,NADE)是一種基于RBM的方法,不含大量推理計算的隱變量,在不同機器學習問題中表現較好。神經自回歸協同過濾方法[6](neural autoregressive approach to collaborative filtering,CF-NADE)則將神經自回歸與協同過濾相結合,通過在不同打分中共享權重,使得推薦結果得以改善。與NADE二進制向量計算方法不同,CF-NADE能夠根據不同長度的向量進行計算。
與此同時,關于神經網絡的研究,出現許多把支持向量機用作隱藏層的研究成果,如文獻[7,8]提到數據樣本相應的隱藏權重作為支持向量機的輸入,可提高模型預測水準,但底層特征調整不太理想。還有研究驗證了線性支持向量機應用于深度學習頂層會取得較好效果[9,10]。
綜上所述,神經自回歸在協同過濾中有較好實踐,結合支持向量機應用于神經網絡最頂層輸出部分的優勢,本文提出一種基于深度神經向量機自回歸的協同過濾方法(collaborative filtering based on deep neural support vector autoregression,CF-NSVADE)。
本文通過把支持向量回歸(support vector regression,SVR)當作CF-NSVADE模型最頂層激勵函數,替換CF-NADE模型softmax激勵函數作為條件概率,經由SVR基于最小邊緣屬性的對數損失特性,獲得比softmax更優的模型效果。
基于神經自回歸的CF-NADE 模型首次將NADE 模型應用于協同過濾,而且把二元分類延續成多元輸出打分模型。作為驗證推薦算法準確性的數據集目前有Movie-Lens1M,Movielens10M,Goodbooks[11,12]等,把數據集里用戶數目設為N,物品數量設成M,而整數評分的范圍由1至K。 最新的數據集和以往數據集特征不同,相比之下包含的用戶已及物品數目更多,數據稀疏性更強,由此使用經典的基于記憶的協同過濾算法需要較多的時間空間開銷。本文設定單個用戶u之前對D個物品做過評價,所以D?M。 那么單個用戶都會獨立建一個深度學習模型且所有模型都有一樣的參數以及一樣數目的隱節點。但假若某一用戶只有D個物品評分,結果表現為只存在D個可視節點。因此每個CF-NADE有一個訓練樣本,即某一用戶已評價過的物品打分向量,而所有訓練樣本的參數權重以及偏置都相關聯。本文每一用戶u評價向量設ru=(rm1,rm2,…,rmi,…,rmD),mi指被打分的物品評分組,且1≤i≤M,則某一用戶模型搭建如下
(1)
其中,j=1,2,…,i-1,表示mi物品前i-1個元素。通過圖1表示的深度學習自回歸網絡對式(1)進行建模。

圖1 基于神經自回歸的協同過濾預測過程
根據上述CF-NADE方法,CF-NSVADE方法在建立式(1)過程中條件概率的分布模型時,把SVR用于深度學習自回歸,通過替換激勵函數優化損失函數的權重更新程序,使模型預測更準,從而獲得更小的預測打分誤差。算法步驟見表1。

表1 某一用戶u的CF-NSVADE算法描述
詳細步驟及分析如下。
步驟1 把輸入數據輸入隱藏層的節點,先算出公式里面rmj
(2)
其中,g(·) 為某一隱表示的激勵函數,在CF-NADE以及本文所示的算法里都定義為
(3)

步驟2 輸入的數據經過隱藏層后再經由SVR激勵函數輸出為條件概率,那么得到用戶對全部物品在評價范圍1~K上可能性的分布概率。則式(1)利用softmax函數可用如下公式
(4)

(5)

文獻[8]中提到把線性支持向量機當作深度神經網絡頂層的激勵函數會優于softmax激勵函數分類的結果,原因是加入SVR以后,針對損失函數有著良好收斂的權重擬合。本文嘗試利用文獻[13]的概率輸出計算把式(4)softmax計算替換成SVR作為輸出概率值。
該替換的優點在于,SVR相關的最小邊緣損失能夠獲得更好的評估后驗概率,從而能夠把用戶興趣的順序模型代入公式得到良好結果。假若某一用戶對一個物品打分為k,則用戶會對評分的可能性從1到k單調遞增,而從k到K單調減少。之前的模型不曾利用用戶此種打分偏好順序可能性屬性。
想要權重變得可以共享,不同打分的權重可以歸一化,將模型中利用多到一定程度的權重參與描述數據。計算式(4)以及式(5)針對各自的打分k具有的銜接權重Wk,Vk以及bk皆不相等。模型訓練時,針對不同的物品,一部分的打分占用更多的比例,受到更多人的喜歡或厭惡。因此少見的打分歷史有被忽視掉的可能性。因而利用一個物品已知的不同評分使用同一共享參數這樣的方式解決如上小數據易被忽視的難點,把隱藏層修改h(rmj
(6)

(7)
在k≥j情況下,Vj以及bj經由打分k共享。
步驟3 把獨個隱藏層深度學習網絡模型擴展成多層模型。文獻[14]中說明一個用戶不一樣的打分排列作為不一樣的案例,能夠把這種特點用來擴充成多層模型。各個用戶通過不一樣的CF-NSVADE且r里面mi順序為評價順序 (1,2,…,D) 隨機抽樣。針對全部可能性的順序訓練模型就是指針對所有已知rmj
這一過程中,某一訓練更新只會根據唯一隱藏表示h(rmj
h(l)(rmj
(8)
針對l=1,2,…,L,L為隱層數目,則p(rmj=k|rmj
步驟4 通過最小負對數似然公式優化p(r) 函數。經由前文討論,在模型訓練過程中,rmj
(9)
經由計算式(9),模型經過順序mi里隨機分裂點i分成不同物品的評估打分,正如真實情況會在i點一樣。求和歷史元素是因為歷史元素求和結果為D,針對被評估打分的物品在輸入順序里存在分裂點有D-i+1個可能性,本文為該物品分裂點位置選擇隨機。
步驟5 通過條件概率評估打分。訓練模型之后,已知某一用戶歷史有過的評價r=(rm1,…,rmi,…,rmD),那么沒有評價過的物品m*打分評估是

(10)
最后,物品m*得到評價在1~K上條件概率的分布就會根據評價1~K做乘法再相加,最終獲取打分是1~K的評估。
神經自回歸分布估計可以很好用于協同過濾領域,條件概率模型的基礎也可以很好地用于協同過濾,經由某一用戶建造一個評價條件概率分布的模型從而評估打分,擴展成為整個數據的打分評估模型,而且神經自回歸分布估計和RBM相比較不會利用對比散度方法計算因而少浪費很多資源,本文經過計算條件概率分布模型的更改讓協同過濾方法得到優化。
本文將SVR應用于神經自回歸協同過濾模型,根據SVR用于深度學習頂層激勵函數的辦法替換softmax得到輸出條件的概率,SVR模型在計算損失函數的計算里面能夠通過最小邊緣性質優化計算過程,那么SVR計算進行中能夠使得數據點以及公式計算結果距離和最小。本節將從多個不同角度驗證本文所提算法的可行性。
本文選取不同公開數據集得到打分預測,其中 MovieLens1M 以及Movielens10M為電影數據[11],Goodbooks為圖書打分數據[12]。訓練模型時,給定數據集隨機選擇10%的打分數據作為測試集,剩余90%的打分數據作為訓練集,訓練集中的5%作為驗證集。本節實驗過程中,利用打分結果3為未經過歷史用戶打分的默認打分。評估計算誤差從而對比各個預測方法,主要計算MAE值
(11)
其中,M是物品數目,N是用戶數目。那么MAE越小越好。
Movielens1M數據集包含6040個用戶對3900多個物品約100萬個不記名打分,每個用戶最少對20個物品打分。Movielens1M數據集的打分是5分制,增幅是1。Movielens10M 數據集包含71 567個用戶對10 681個物品約1000多萬個打分,用戶為隨機選擇且至少對20個物品打分。打分采用5分制,和Movielens1M數據集不同之處在于,Movielens10M打分增幅為0.5。本節實驗中將 Movielens10M 打分結果轉化為10分制,打分增幅為1。Goodbooks數據源自Kaggle算法比賽,由9986個用戶對48 871個書籍約600萬個打分數據。GoodBooks數據打分為5分制,增幅是1。
硬件環境:Intel(R) Core i5 CPU@ 2.9GHz,8GB內存;
操作系統:MacOS 64位;
編程軟件:Python 2.7.10;
其它軟件:theano。
(1)Movielens1M數據集實驗結果
首先,在深度學習的10個迭代程序里對比CF-NADE和CF-NSVADE的結果。實驗中首先使用一層隱藏層,隱藏節點數是500,通過Adam計算 (b1=0.1,b2=0.001,ε=10-8) 損失函數。學習率是0.001,開始檢驗時不考慮順序特性的影響。
如圖2所示,在模型不斷迭代過程中,利用SVR為激勵函數的模型誤差比softmax作為激勵函數的模型誤差小。進一步觀察可以發現,CF-NSVADE在迭代初期誤差減少較多,逐漸地兩個模型皆趨于穩定。此外,在迭代過程中,兩個模型學習速率均有所降低,因為CF-NSVADE算法將softmax進行了替換,改為SVR激勵函數,SVR模型需要擬合最小邊緣計算的特征,式(9)復雜度相較于softmax更高一些,但是最小負對數似然計算提高了模型的精確度,使得CF-NSVADE算法在后續迭代過程中一直保持更為準確的預測結果。

圖2 CF-NADE和CF-NSVADE兩個模型迭代對比
(2)λ值選擇對模型的影響
文獻[3]提到把用戶興趣的順序屬性加入計算結果將會更優。倘若某一用戶對一個物品打分k,則用戶評價的可能性會由1至k單調遞增,而由k至K單調減少。之前計算過程把不一樣的打分作為不一樣的標簽,未計算順序屬性。
比如rmi=k,則用戶打分可能性順序為
k>k-1>…>1
(12)
k>k+1>…>K
(13)
給模型添加順序可能性打分特性,式(4)則變為

(14)

Chybrid=(1-λ)Creg+λCord
(15)
其中,λ為確定Cord參數的超參數,相關實驗結果如圖3所示。

圖3 序列屬性損失函數權重λ對MAE值的影響
將考慮到用戶評分興趣順序特征屬性的損失函數代入到模型中,根據圖3所示結果能夠看出,λ越大表示順序特征的原因導致損失函數比例權重高,評估結果越準確。一方面驗證了本文提出的CF-NSVADE方法,相比CF-NADE在不同序列屬性權重下仍然表現良好,并能夠得到順序特性對于實驗結果較好的影響和優化,對后續協同過濾方法研究有一定的參考價值。
(3)Movielens1M數據集采用不同隱藏節點數的實驗結果
為了進一步驗證CF-NSVADE方法的有效性,不妨在上述實驗基礎上將λ設定為1,然后從不同隱藏節點數量的角度對模型預測結果進行評估。如圖4所示,實驗結果表明當隱藏層里面的隱節點數量逐漸變多時,兩個模型的評估誤差結果皆在降低,整個節點數量改變過程中都是CF-NSVADE方法優于CF-NADE方法。結合前文分析能夠發現,本文所提出的CF-NSVADE方法能夠實現對CF-NADE深度學習自回歸方法的改進。

圖4 隱藏層不同節點數量的模型對比
(4)多數據集多方法對比
考慮到矩陣分解[2](matrix factorization,MF)是目前認可度較高的協同過濾模型,因此本節除了和CF-NADE方法比較,還與非負矩陣分解模型[15](non-negative matrix factorization,NMF)進行對比。NMF方法通過把矩陣分解成較低維度的矩陣乘法形式,從而讓大量計算變得不那么復雜。除了Movielens1M,本文還選取Movielens10M以及Goodbooks兩個規模較大數據集,實驗結果見表2。

表2 CF-NSVADE、CF-NADE及NMF在
從上述多個實驗結果可以看出,本文提出的CF-NSVADE模型在一定程度上能夠讓已有的深度學習自回歸預測模型有更好的表現,而且在加入用戶打分可能性的順序特性時,同樣可以讓算法預測準確度增加。本文將SVR用于深度神經自回歸網絡的最后一層激勵函數來替換softmax,可以為其它適用于深度學習模型這一類型問題的優化提供一個可選途徑。此外,CF-NSVADE模型在保證深度學習自回歸方法適用于CF模型的同時,利用SVR于擬合最小邊緣的損失函數過程中的優勢,使得協同過濾模型方法得到一定程度的改善。
本文經由SVR在深度學習自回歸算法最后一層用于激勵函數的形式讓已經有良好效果的深度學習自回歸協同過濾方法得到改善。由CF-NADE 模型的啟發,以及SVM在深度神經網絡方法的最后層激勵函數的分類模型中表現高于softmax,再者加入用戶打分順序屬性影響,將其考慮在模型設計過程中。不同數據集上多個角度的對比實驗結果均表明將SVR當作激勵函數放入概率模型會優于softmax激勵函數的方法。
本文主要討論SVR在協同過濾的線性神經自回歸過程中的合理應用。今后研究的方向更加要融入SVR多樣化的使用,不僅要考慮數據集的評價得分,還將嘗試SVR對物品及用戶特性、興趣停留時間、樣本點擊以及產生數據的時間信息[16,17]等高維數據的回歸能力分析。