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