惠康華,計 瑜,王 進,賀懷清
(中國民航大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,天津 300300)
協(xié)同過濾[1,2](collaborative filtering, CF)是一類根據(jù)用戶偏好以及相似用戶評價來預(yù)測用戶對新物品偏好的方法。隨著深度學(xué)習(xí)在許多領(lǐng)域的成功應(yīng)用,針對以神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的基于模型的協(xié)同過濾方法的研究得到越來越多關(guān)注。受限的波茲曼分解機(restricted Boltzmann machine,RBM)[3],對用戶或項目打分?jǐn)?shù)據(jù)分布進行建模得到兩層無方向生成圖模型,在Netflix挑戰(zhàn)賽中取得較好成績。文獻[4]以 RBM為核心,把用戶和物品的相關(guān)性擴展相結(jié)合,建立波茲曼模型實現(xiàn)物品推薦。
神經(jīng)自回歸分布估計[5](neural autoregressive distribution estimator,NADE)是一種基于RBM的方法,不含大量推理計算的隱變量,在不同機器學(xué)習(xí)問題中表現(xiàn)較好。神經(jīng)自回歸協(xié)同過濾方法[6](neural autoregressive approach to collaborative filtering,CF-NADE)則將神經(jīng)自回歸與協(xié)同過濾相結(jié)合,通過在不同打分中共享權(quán)重,使得推薦結(jié)果得以改善。與NADE二進制向量計算方法不同,CF-NADE能夠根據(jù)不同長度的向量進行計算。
與此同時,關(guān)于神經(jīng)網(wǎng)絡(luò)的研究,出現(xiàn)許多把支持向量機用作隱藏層的研究成果,如文獻[7,8]提到數(shù)據(jù)樣本相應(yīng)的隱藏權(quán)重作為支持向量機的輸入,可提高模型預(yù)測水準(zhǔn),但底層特征調(diào)整不太理想。還有研究驗證了線性支持向量機應(yīng)用于深度學(xué)習(xí)頂層會取得較好效果[9,10]。
綜上所述,神經(jīng)自回歸在協(xié)同過濾中有較好實踐,結(jié)合支持向量機應(yīng)用于神經(jīng)網(wǎng)絡(luò)最頂層輸出部分的優(yōu)勢,本文提出一種基于深度神經(jīng)向量機自回歸的協(xié)同過濾方法(collaborative filtering based on deep neural support vector autoregression,CF-NSVADE)。
本文通過把支持向量回歸(support vector regression,SVR)當(dāng)作CF-NSVADE模型最頂層激勵函數(shù),替換CF-NADE模型softmax激勵函數(shù)作為條件概率,經(jīng)由SVR基于最小邊緣屬性的對數(shù)損失特性,獲得比softmax更優(yōu)的模型效果。
基于神經(jīng)自回歸的CF-NADE 模型首次將NADE 模型應(yīng)用于協(xié)同過濾,而且把二元分類延續(xù)成多元輸出打分模型。作為驗證推薦算法準(zhǔn)確性的數(shù)據(jù)集目前有Movie-Lens1M,Movielens10M,Goodbooks[11,12]等,把數(shù)據(jù)集里用戶數(shù)目設(shè)為N,物品數(shù)量設(shè)成M,而整數(shù)評分的范圍由1至K。 最新的數(shù)據(jù)集和以往數(shù)據(jù)集特征不同,相比之下包含的用戶已及物品數(shù)目更多,數(shù)據(jù)稀疏性更強,由此使用經(jīng)典的基于記憶的協(xié)同過濾算法需要較多的時間空間開銷。本文設(shè)定單個用戶u之前對D個物品做過評價,所以D?M。 那么單個用戶都會獨立建一個深度學(xué)習(xí)模型且所有模型都有一樣的參數(shù)以及一樣數(shù)目的隱節(jié)點。但假若某一用戶只有D個物品評分,結(jié)果表現(xiàn)為只存在D個可視節(jié)點。因此每個CF-NADE有一個訓(xùn)練樣本,即某一用戶已評價過的物品打分向量,而所有訓(xùn)練樣本的參數(shù)權(quán)重以及偏置都相關(guān)聯(lián)。本文每一用戶u評價向量設(shè)ru=(rm1,rm2,…,rmi,…,rmD),mi指被打分的物品評分組,且1≤i≤M,則某一用戶模型搭建如下
(1)
其中,j=1,2,…,i-1,表示mi物品前i-1個元素。通過圖1表示的深度學(xué)習(xí)自回歸網(wǎng)絡(luò)對式(1)進行建模。
圖1 基于神經(jīng)自回歸的協(xié)同過濾預(yù)測過程
根據(jù)上述CF-NADE方法,CF-NSVADE方法在建立式(1)過程中條件概率的分布模型時,把SVR用于深度學(xué)習(xí)自回歸,通過替換激勵函數(shù)優(yōu)化損失函數(shù)的權(quán)重更新程序,使模型預(yù)測更準(zhǔn),從而獲得更小的預(yù)測打分誤差。算法步驟見表1。
表1 某一用戶u的CF-NSVADE算法描述
詳細(xì)步驟及分析如下。
步驟1 把輸入數(shù)據(jù)輸入隱藏層的節(jié)點,先算出公式里面rmj
(2)
其中,g(·) 為某一隱表示的激勵函數(shù),在CF-NADE以及本文所示的算法里都定義為
(3)
步驟2 輸入的數(shù)據(jù)經(jīng)過隱藏層后再經(jīng)由SVR激勵函數(shù)輸出為條件概率,那么得到用戶對全部物品在評價范圍1~K上可能性的分布概率。則式(1)利用softmax函數(shù)可用如下公式
(4)
(5)
文獻[8]中提到把線性支持向量機當(dāng)作深度神經(jīng)網(wǎng)絡(luò)頂層的激勵函數(shù)會優(yōu)于softmax激勵函數(shù)分類的結(jié)果,原因是加入SVR以后,針對損失函數(shù)有著良好收斂的權(quán)重擬合。本文嘗試?yán)梦墨I[13]的概率輸出計算把式(4)softmax計算替換成SVR作為輸出概率值。
該替換的優(yōu)點在于,SVR相關(guān)的最小邊緣損失能夠獲得更好的評估后驗概率,從而能夠把用戶興趣的順序模型代入公式得到良好結(jié)果。假若某一用戶對一個物品打分為k,則用戶會對評分的可能性從1到k單調(diào)遞增,而從k到K單調(diào)減少。之前的模型不曾利用用戶此種打分偏好順序可能性屬性。
想要權(quán)重變得可以共享,不同打分的權(quán)重可以歸一化,將模型中利用多到一定程度的權(quán)重參與描述數(shù)據(jù)。計算式(4)以及式(5)針對各自的打分k具有的銜接權(quán)重Wk,Vk以及bk皆不相等。模型訓(xùn)練時,針對不同的物品,一部分的打分占用更多的比例,受到更多人的喜歡或厭惡。因此少見的打分歷史有被忽視掉的可能性。因而利用一個物品已知的不同評分使用同一共享參數(shù)這樣的方式解決如上小數(shù)據(jù)易被忽視的難點,把隱藏層修改h(rmj
(6)
(7)
在k≥j情況下,Vj以及bj經(jīng)由打分k共享。
步驟3 把獨個隱藏層深度學(xué)習(xí)網(wǎng)絡(luò)模型擴展成多層模型。文獻[14]中說明一個用戶不一樣的打分排列作為不一樣的案例,能夠把這種特點用來擴充成多層模型。各個用戶通過不一樣的CF-NSVADE且r里面mi順序為評價順序 (1,2,…,D) 隨機抽樣。針對全部可能性的順序訓(xùn)練模型就是指針對所有已知rmj
這一過程中,某一訓(xùn)練更新只會根據(jù)唯一隱藏表示h(rmj
h(l)(rmj
(8)
針對l=1,2,…,L,L為隱層數(shù)目,則p(rmj=k|rmj
步驟4 通過最小負(fù)對數(shù)似然公式優(yōu)化p(r) 函數(shù)。經(jīng)由前文討論,在模型訓(xùn)練過程中,rmj
(9)
經(jīng)由計算式(9),模型經(jīng)過順序mi里隨機分裂點i分成不同物品的評估打分,正如真實情況會在i點一樣。求和歷史元素是因為歷史元素求和結(jié)果為D,針對被評估打分的物品在輸入順序里存在分裂點有D-i+1個可能性,本文為該物品分裂點位置選擇隨機。
步驟5 通過條件概率評估打分。訓(xùn)練模型之后,已知某一用戶歷史有過的評價r=(rm1,…,rmi,…,rmD),那么沒有評價過的物品m*打分評估是
(10)
最后,物品m*得到評價在1~K上條件概率的分布就會根據(jù)評價1~K做乘法再相加,最終獲取打分是1~K的評估。
神經(jīng)自回歸分布估計可以很好用于協(xié)同過濾領(lǐng)域,條件概率模型的基礎(chǔ)也可以很好地用于協(xié)同過濾,經(jīng)由某一用戶建造一個評價條件概率分布的模型從而評估打分,擴展成為整個數(shù)據(jù)的打分評估模型,而且神經(jīng)自回歸分布估計和RBM相比較不會利用對比散度方法計算因而少浪費很多資源,本文經(jīng)過計算條件概率分布模型的更改讓協(xié)同過濾方法得到優(yōu)化。
本文將SVR應(yīng)用于神經(jīng)自回歸協(xié)同過濾模型,根據(jù)SVR用于深度學(xué)習(xí)頂層激勵函數(shù)的辦法替換softmax得到輸出條件的概率,SVR模型在計算損失函數(shù)的計算里面能夠通過最小邊緣性質(zhì)優(yōu)化計算過程,那么SVR計算進行中能夠使得數(shù)據(jù)點以及公式計算結(jié)果距離和最小。本節(jié)將從多個不同角度驗證本文所提算法的可行性。
本文選取不同公開數(shù)據(jù)集得到打分預(yù)測,其中 MovieLens1M 以及Movielens10M為電影數(shù)據(jù)[11],Goodbooks為圖書打分?jǐn)?shù)據(jù)[12]。訓(xùn)練模型時,給定數(shù)據(jù)集隨機選擇10%的打分?jǐn)?shù)據(jù)作為測試集,剩余90%的打分?jǐn)?shù)據(jù)作為訓(xùn)練集,訓(xùn)練集中的5%作為驗證集。本節(jié)實驗過程中,利用打分結(jié)果3為未經(jīng)過歷史用戶打分的默認(rèn)打分。評估計算誤差從而對比各個預(yù)測方法,主要計算MAE值
(11)
其中,M是物品數(shù)目,N是用戶數(shù)目。那么MAE越小越好。
Movielens1M數(shù)據(jù)集包含6040個用戶對3900多個物品約100萬個不記名打分,每個用戶最少對20個物品打分。Movielens1M數(shù)據(jù)集的打分是5分制,增幅是1。Movielens10M 數(shù)據(jù)集包含71 567個用戶對10 681個物品約1000多萬個打分,用戶為隨機選擇且至少對20個物品打分。打分采用5分制,和Movielens1M數(shù)據(jù)集不同之處在于,Movielens10M打分增幅為0.5。本節(jié)實驗中將 Movielens10M 打分結(jié)果轉(zhuǎn)化為10分制,打分增幅為1。Goodbooks數(shù)據(jù)源自Kaggle算法比賽,由9986個用戶對48 871個書籍約600萬個打分?jǐn)?shù)據(jù)。GoodBooks數(shù)據(jù)打分為5分制,增幅是1。
硬件環(huán)境:Intel(R) Core i5 CPU@ 2.9GHz,8GB內(nèi)存;
操作系統(tǒng):MacOS 64位;
編程軟件:Python 2.7.10;
其它軟件:theano。
(1)Movielens1M數(shù)據(jù)集實驗結(jié)果
首先,在深度學(xué)習(xí)的10個迭代程序里對比CF-NADE和CF-NSVADE的結(jié)果。實驗中首先使用一層隱藏層,隱藏節(jié)點數(shù)是500,通過Adam計算 (b1=0.1,b2=0.001,ε=10-8) 損失函數(shù)。學(xué)習(xí)率是0.001,開始檢驗時不考慮順序特性的影響。
如圖2所示,在模型不斷迭代過程中,利用SVR為激勵函數(shù)的模型誤差比softmax作為激勵函數(shù)的模型誤差小。進一步觀察可以發(fā)現(xiàn),CF-NSVADE在迭代初期誤差減少較多,逐漸地兩個模型皆趨于穩(wěn)定。此外,在迭代過程中,兩個模型學(xué)習(xí)速率均有所降低,因為CF-NSVADE算法將softmax進行了替換,改為SVR激勵函數(shù),SVR模型需要擬合最小邊緣計算的特征,式(9)復(fù)雜度相較于softmax更高一些,但是最小負(fù)對數(shù)似然計算提高了模型的精確度,使得CF-NSVADE算法在后續(xù)迭代過程中一直保持更為準(zhǔn)確的預(yù)測結(jié)果。
圖2 CF-NADE和CF-NSVADE兩個模型迭代對比
(2)λ值選擇對模型的影響
文獻[3]提到把用戶興趣的順序?qū)傩约尤胗嬎憬Y(jié)果將會更優(yōu)。倘若某一用戶對一個物品打分k,則用戶評價的可能性會由1至k單調(diào)遞增,而由k至K單調(diào)減少。之前計算過程把不一樣的打分作為不一樣的標(biāo)簽,未計算順序?qū)傩浴?/p>
比如rmi=k,則用戶打分可能性順序為
k>k-1>…>1
(12)
k>k+1>…>K
(13)
給模型添加順序可能性打分特性,式(4)則變?yōu)?/p>
(14)
Chybrid=(1-λ)Creg+λCord
(15)
其中,λ為確定Cord參數(shù)的超參數(shù),相關(guān)實驗結(jié)果如圖3所示。
圖3 序列屬性損失函數(shù)權(quán)重λ對MAE值的影響
將考慮到用戶評分興趣順序特征屬性的損失函數(shù)代入到模型中,根據(jù)圖3所示結(jié)果能夠看出,λ越大表示順序特征的原因?qū)е聯(lián)p失函數(shù)比例權(quán)重高,評估結(jié)果越準(zhǔn)確。一方面驗證了本文提出的CF-NSVADE方法,相比CF-NADE在不同序列屬性權(quán)重下仍然表現(xiàn)良好,并能夠得到順序特性對于實驗結(jié)果較好的影響和優(yōu)化,對后續(xù)協(xié)同過濾方法研究有一定的參考價值。
(3)Movielens1M數(shù)據(jù)集采用不同隱藏節(jié)點數(shù)的實驗結(jié)果
為了進一步驗證CF-NSVADE方法的有效性,不妨在上述實驗基礎(chǔ)上將λ設(shè)定為1,然后從不同隱藏節(jié)點數(shù)量的角度對模型預(yù)測結(jié)果進行評估。如圖4所示,實驗結(jié)果表明當(dāng)隱藏層里面的隱節(jié)點數(shù)量逐漸變多時,兩個模型的評估誤差結(jié)果皆在降低,整個節(jié)點數(shù)量改變過程中都是CF-NSVADE方法優(yōu)于CF-NADE方法。結(jié)合前文分析能夠發(fā)現(xiàn),本文所提出的CF-NSVADE方法能夠?qū)崿F(xiàn)對CF-NADE深度學(xué)習(xí)自回歸方法的改進。
圖4 隱藏層不同節(jié)點數(shù)量的模型對比
(4)多數(shù)據(jù)集多方法對比
考慮到矩陣分解[2](matrix factorization,MF)是目前認(rèn)可度較高的協(xié)同過濾模型,因此本節(jié)除了和CF-NADE方法比較,還與非負(fù)矩陣分解模型[15](non-negative matrix factorization,NMF)進行對比。NMF方法通過把矩陣分解成較低維度的矩陣乘法形式,從而讓大量計算變得不那么復(fù)雜。除了Movielens1M,本文還選取Movielens10M以及Goodbooks兩個規(guī)模較大數(shù)據(jù)集,實驗結(jié)果見表2。
表2 CF-NSVADE、CF-NADE及NMF在
從上述多個實驗結(jié)果可以看出,本文提出的CF-NSVADE模型在一定程度上能夠讓已有的深度學(xué)習(xí)自回歸預(yù)測模型有更好的表現(xiàn),而且在加入用戶打分可能性的順序特性時,同樣可以讓算法預(yù)測準(zhǔn)確度增加。本文將SVR用于深度神經(jīng)自回歸網(wǎng)絡(luò)的最后一層激勵函數(shù)來替換softmax,可以為其它適用于深度學(xué)習(xí)模型這一類型問題的優(yōu)化提供一個可選途徑。此外,CF-NSVADE模型在保證深度學(xué)習(xí)自回歸方法適用于CF模型的同時,利用SVR于擬合最小邊緣的損失函數(shù)過程中的優(yōu)勢,使得協(xié)同過濾模型方法得到一定程度的改善。
本文經(jīng)由SVR在深度學(xué)習(xí)自回歸算法最后一層用于激勵函數(shù)的形式讓已經(jīng)有良好效果的深度學(xué)習(xí)自回歸協(xié)同過濾方法得到改善。由CF-NADE 模型的啟發(fā),以及SVM在深度神經(jīng)網(wǎng)絡(luò)方法的最后層激勵函數(shù)的分類模型中表現(xiàn)高于softmax,再者加入用戶打分順序?qū)傩杂绊?,將其考慮在模型設(shè)計過程中。不同數(shù)據(jù)集上多個角度的對比實驗結(jié)果均表明將SVR當(dāng)作激勵函數(shù)放入概率模型會優(yōu)于softmax激勵函數(shù)的方法。
本文主要討論SVR在協(xié)同過濾的線性神經(jīng)自回歸過程中的合理應(yīng)用。今后研究的方向更加要融入SVR多樣化的使用,不僅要考慮數(shù)據(jù)集的評價得分,還將嘗試SVR對物品及用戶特性、興趣停留時間、樣本點擊以及產(chǎn)生數(shù)據(jù)的時間信息[16,17]等高維數(shù)據(jù)的回歸能力分析。