康嘉鈺,蘇凡軍
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
目前在推薦算法領(lǐng)域,數(shù)據(jù)為驅(qū)動(dòng)的推薦系統(tǒng)受到越來(lái)越多的關(guān)注。這些系統(tǒng)會(huì)引導(dǎo)用戶從大量可能的選項(xiàng)中發(fā)現(xiàn)與用戶興趣相關(guān)度高的產(chǎn)品或服務(wù)[1-2]。隨著用戶對(duì)推薦技術(shù)依賴的加強(qiáng),推薦系統(tǒng)如何為用戶提供精準(zhǔn)的推薦成為亟待解決的重點(diǎn),在許多算法中往往都會(huì)忽視用戶的興趣漂移問(wèn)題[3]。比如一部電影的受歡迎程度會(huì)隨著時(shí)間變化而變化,用戶喜歡的電影類型也會(huì)受到短期的流行影響而變化。因此,在推薦系統(tǒng)中如何利用長(zhǎng)短期興趣變化達(dá)到精準(zhǔn)推薦顯得尤為重要。
針對(duì)推薦系統(tǒng)的長(zhǎng)短興趣問(wèn)題,文獻(xiàn)[4]描述了基于長(zhǎng)短期興趣的協(xié)同過(guò)濾方法的優(yōu)點(diǎn),并介紹了一種基于循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)的長(zhǎng)短期興趣預(yù)測(cè)方法。文獻(xiàn)[5]將MF模型與RNN模型相結(jié)合來(lái)進(jìn)行推薦,其通過(guò)MF模型來(lái)挖掘用戶長(zhǎng)期興趣特征,利用RNN模型來(lái)挖掘用戶一段時(shí)間內(nèi)的興趣變化,同時(shí)考慮到了用戶長(zhǎng)短期的變化。文獻(xiàn)[3]提出了一種使用RNN來(lái)負(fù)責(zé)短期興趣,前饋神經(jīng)網(wǎng)絡(luò)負(fù)責(zé)長(zhǎng)期興趣的推薦模型。這些模型均采用一般的訓(xùn)練方法訓(xùn)練,Szegedy等人[6]發(fā)現(xiàn)在模型訓(xùn)練中添加一些輕微的干擾就可以輕易改變模型的預(yù)測(cè)結(jié)果。深度學(xué)習(xí)模型遭遇干擾時(shí)所表現(xiàn)的脆弱性,給推薦系統(tǒng)帶來(lái)了極大的風(fēng)險(xiǎn)。并且會(huì)使模型對(duì)歷史信息的利用不充分,對(duì)隱層特征的挖掘不精確。
最近,文獻(xiàn)[7]將對(duì)抗訓(xùn)練策略應(yīng)用于圖片解讀任務(wù)中,效果十分優(yōu)秀。文獻(xiàn)[8]提出了一種基于生成對(duì)抗網(wǎng)絡(luò)的序列生成方法,使用強(qiáng)化學(xué)習(xí)的策略梯度來(lái)實(shí)現(xiàn)序列數(shù)據(jù)生成。文獻(xiàn)[9]提出了基于IRGAN框架的新生成檢索模型和判斷模型,使IRGAN在搜索項(xiàng)目、推薦項(xiàng)目方面得到了較大的提升。文獻(xiàn)[10]提出了一種GAN框架的流式推薦模型。由此可見,生成對(duì)抗網(wǎng)絡(luò)在各種任務(wù)中都具有有效性,且在推薦系統(tǒng)中同樣具有有效性。對(duì)于提升深度學(xué)習(xí)模型對(duì)干擾的魯棒性,使用對(duì)抗生成網(wǎng)絡(luò)也是行之有效的解決方法。
基于上述綜述,文中提出了一種基于生成對(duì)抗框架(GAN)的Top-N推薦模型L-GAN。采用對(duì)抗訓(xùn)練的策略優(yōu)化LSTM推薦模型,重點(diǎn)考慮用戶和項(xiàng)目之間的興趣漂移問(wèn)題。L-GAN模型使用生成器產(chǎn)生推薦列表,并用判斷器區(qū)別推薦列表與真實(shí)數(shù)據(jù),通過(guò)判斷器與生成器不斷對(duì)抗訓(xùn)練,使生成器最終產(chǎn)生的推薦列表與真實(shí)數(shù)據(jù)極為相似。提出的基于生成對(duì)抗網(wǎng)絡(luò)的L-GAN推薦算法,主要有幾點(diǎn)貢獻(xiàn):
(1)使用對(duì)抗訓(xùn)練策略來(lái)訓(xùn)練LSTM推薦模型,使用用戶行為周期數(shù)據(jù)作為輸入,由生成器生成推薦列表,判斷器來(lái)識(shí)別推薦列表是否合理;
(2)在判斷器中使用孿生神經(jīng)網(wǎng)絡(luò)來(lái)判斷生成列表的合理性;
(3)通過(guò)將數(shù)據(jù)分割為行為周期數(shù)據(jù),同時(shí)考慮了數(shù)據(jù)長(zhǎng)期與短期的興趣偏好變化,使數(shù)據(jù)的隱層特征獲取更加準(zhǔn)確。
提出的模型主要使用LSTM模型來(lái)有效利用長(zhǎng)短期興趣漂移變化。LSTM模型是一種改進(jìn)的時(shí)間循環(huán)神經(jīng)網(wǎng)絡(luò),可以學(xué)習(xí)時(shí)間序列長(zhǎng)短期依賴信息,由于神經(jīng)網(wǎng)絡(luò)包含時(shí)間記憶單元,比較適合于對(duì)時(shí)間序列中的間隔和延遲事件進(jìn)行處理和預(yù)測(cè)[11]。每一個(gè)時(shí)刻t的LSTM單元由輸入門it、遺忘門ft、輸出門ot、細(xì)胞記憶單元ct和隱層狀態(tài)ht組成。這些門是根據(jù)先前的隱藏狀態(tài)ht-1和時(shí)刻t的輸入xt計(jì)算出來(lái)的。
it=sigmoid(W[ht-1,xt])
(1)
ft=sigmoid(W[ht-1,xt])
(2)
ot=sigmoid(W[ht-1,xt])
(3)
通過(guò)遺忘部分存在的細(xì)胞記憶和增加新的細(xì)胞記憶內(nèi)容來(lái)更新時(shí)刻t的細(xì)胞記憶??梢杂霉?4)表示遺忘過(guò)程,公式(5)表示細(xì)胞記憶更新過(guò)程。
It=tanh(W[ht-1,xt])
(4)
ct=ft⊙ct-1+it⊙It
(5)
當(dāng)更新完LSTM單元的記憶內(nèi)容后,時(shí)刻t的隱層狀態(tài)為:
ht=ot⊙tanh(ct)
(6)
每一個(gè)LSTM單元的更新可以由簡(jiǎn)式ht=LSTM(ht-1,xt)表示。在利用長(zhǎng)短期興趣做預(yù)測(cè)時(shí),輸入量xt應(yīng)該來(lái)自于用戶時(shí)刻t的行為周期,行為周期可以理解為一段時(shí)間內(nèi)用戶評(píng)價(jià)項(xiàng)目的評(píng)價(jià)記錄合集。
假設(shè)行為周期中的矩陣R為用戶-項(xiàng)目評(píng)價(jià)矩陣,由用戶集U與項(xiàng)目評(píng)分集M組成,使用符號(hào)rij,t來(lái)表示時(shí)刻t時(shí),用戶i對(duì)項(xiàng)目j的評(píng)價(jià)。rij,t的數(shù)值越大,表示用戶i對(duì)項(xiàng)目j的興趣越大。文中提出的L-GAN模型主要是將LSTM模型應(yīng)用于GAN的框架中。
圖1 L-GAN模型結(jié)構(gòu)
GAN[12]是由生成器G和判斷器D構(gòu)成的。文中模型中的判斷器D用來(lái)區(qū)分訓(xùn)練集中的真實(shí)高評(píng)分項(xiàng)目與生成器G預(yù)測(cè)的高評(píng)分項(xiàng)目或推薦列表;生成器G使用預(yù)測(cè)出的高評(píng)分項(xiàng)目或推薦列表來(lái)欺騙判斷器D。生成對(duì)抗訓(xùn)練策略的目的是,通過(guò)生成出的推薦列表不斷地與用戶真實(shí)歷史評(píng)價(jià)對(duì)抗訓(xùn)練,使推薦列表中的項(xiàng)目與用戶歷史喜歡的項(xiàng)目特征達(dá)到高度接近或重合。結(jié)構(gòu)如圖1所示。
具體的目標(biāo)可以用如下公式表示:
Ez~P(z)[log(1-D(G(z)))]
(7)
其中,x為來(lái)自訓(xùn)練集的真實(shí)數(shù)據(jù),G(z)表示由生成器生成的高評(píng)價(jià)項(xiàng)目或推薦列表,z也是來(lái)自訓(xùn)練集的真實(shí)數(shù)據(jù)。為了使生成器G產(chǎn)生更加真實(shí)的推薦列表且判斷器D的判斷結(jié)果更加準(zhǔn)確,將LSTM模型運(yùn)用于生成器G與判斷器D中,加強(qiáng)對(duì)數(shù)據(jù)長(zhǎng)短期興趣偏好的敏感度,以提高對(duì)隱層特征的挖掘。
生成器將一個(gè)行為周期的用戶-項(xiàng)目評(píng)價(jià)矩陣R作為輸入,生成用戶i的推薦列表。但是用戶-項(xiàng)目評(píng)價(jià)矩陣一般為高維稀疏的,不利于模型的訓(xùn)練??梢韵韧ㄟ^(guò)矩陣分解降維的方法預(yù)處理矩陣R。文中使用具有自編碼器的編碼網(wǎng)絡(luò)對(duì)矩陣進(jìn)行預(yù)處理[13],將其降維拆分為向量xi,t和向量xj,t,xi,t為用戶i在一定時(shí)間內(nèi)對(duì)所有評(píng)價(jià)過(guò)的項(xiàng)目的評(píng)價(jià)向量,xj,t為在一定時(shí)間內(nèi)所有評(píng)價(jià)過(guò)項(xiàng)目j的用戶對(duì)項(xiàng)目j的評(píng)價(jià)向量。在時(shí)刻t,評(píng)分rij,t取決于用戶時(shí)間狀態(tài)hi,t和項(xiàng)目時(shí)間狀態(tài)hj,t。因?yàn)橛脩舻臅r(shí)間狀態(tài)變化依賴于用戶評(píng)價(jià)向量的變化,同理項(xiàng)目的時(shí)間狀態(tài)變化也是由項(xiàng)目評(píng)價(jià)向量變化決定的。所以可以使用兩個(gè)LSTM模型分別輸入兩個(gè)向量,分別得到用戶時(shí)間狀態(tài)hi,t和項(xiàng)目時(shí)間狀態(tài)hj,t。為了同時(shí)考慮用戶與項(xiàng)目的變化,文中將它們的內(nèi)積作為預(yù)測(cè)時(shí)刻t用戶i對(duì)項(xiàng)目j的評(píng)分rij,t。
xi,t,xj,t=Encoder(R)
(8)
hi,t=LSTM(hi,t-1,xi,t)
(9)
hj,t=LSTM(hj,t-1,xj,t)
(10)
rij,t=hi,t⊙hj,t
(11)
通過(guò)這樣的方法,按照時(shí)間戳的順序,依次將行為周期的評(píng)價(jià)矩陣輸入,對(duì)一定時(shí)間段內(nèi)用戶i沒有評(píng)價(jià)過(guò)的項(xiàng)目進(jìn)行預(yù)測(cè)評(píng)分,預(yù)測(cè)評(píng)分最高的前幾個(gè)項(xiàng)目按預(yù)測(cè)評(píng)分從高到低排序,即可視為生成出的推薦列表。生成器的模型如圖1所示。生成器的目標(biāo)函數(shù)可以表示為:
(12)
其中,M為項(xiàng)目集,D(xi,t,xm,t,xn,t)為判斷器的模型,xn,t為生成器產(chǎn)生的推薦列表中的高評(píng)分項(xiàng)目向量。訓(xùn)練生成器是為了與判斷器對(duì)抗,從而使判斷器無(wú)法區(qū)分出推薦結(jié)果與真實(shí)數(shù)據(jù),即為使G(z)產(chǎn)生的結(jié)果更接近真實(shí)數(shù)據(jù),則目標(biāo)是使判斷器判斷的相似度D(G(z))最大,為了便于計(jì)算可求得log(1-D(xi,t,xm,t,xn,t))最小化結(jié)果。
判斷器使用孿生神經(jīng)網(wǎng)絡(luò)框架(siamese network framework)。孿生神經(jīng)網(wǎng)絡(luò)可以很好地區(qū)分隱層特征,常用于特征之間的對(duì)比任務(wù)。該框架分為特征提取網(wǎng)絡(luò)和相似度計(jì)算兩個(gè)部分[14]。為了更精準(zhǔn)地識(shí)別項(xiàng)目間基于長(zhǎng)短興趣偏好的隱層特征的區(qū)別,孿生網(wǎng)絡(luò)框架中的特征提取網(wǎng)絡(luò)使用類似于生成器中LSTM模型的用法,這時(shí)的輸入應(yīng)該使用用戶向量xi,t,用戶歷史評(píng)價(jià)高分項(xiàng)目向量xm,t和生成器預(yù)測(cè)的高分項(xiàng)目向量xn,t,如圖1所示。通過(guò)對(duì)比時(shí)刻t用戶評(píng)價(jià)過(guò)的高分項(xiàng)目與推薦出的項(xiàng)目狀態(tài)的相似度來(lái)判斷生成器推薦是否準(zhǔn)確。特征提取網(wǎng)絡(luò)的公式可表示為:
xi,t,xm,t=Encoder(R)
(13)
rim,t=LSTM(hi,t-1,xi,t)⊙LSTM(hm,t-1,xm,t)
(14)
rin,t=LSTM(hi,t-1,xi,t)⊙LSTM(hn,t-1,xn,t)
(15)
在孿生網(wǎng)絡(luò)內(nèi)特征提取網(wǎng)絡(luò)中使用的權(quán)重是共享的[15]。文中模型選用了對(duì)比損失函數(shù)(contrastive loss)[16]作為求得相似度的方法。根據(jù)其計(jì)算出的相似度,可以判斷生成器預(yù)測(cè)結(jié)果是否準(zhǔn)確。判斷器模型可以表示為:
max(1-d,0)2
(16)
d=‖rim,t-rin,t‖2
(17)
其中,d為對(duì)比樣本的歐氏距離,y表示兩個(gè)樣本是否相似,y為1時(shí)表示兩個(gè)樣本相似,為0則表示不相似。需要注意的是,在訓(xùn)練優(yōu)化判斷器的階段,需要使用用戶評(píng)價(jià)過(guò)的其他項(xiàng)目向量xl,t代替預(yù)測(cè)項(xiàng)目向量xn,t。目的是為了用真實(shí)的數(shù)據(jù)來(lái)更新優(yōu)化判斷模型中的共享權(quán)重。因此判斷器的目標(biāo)函數(shù)表示為:
(18)
其中,U為用戶集。公式中的第一項(xiàng),來(lái)源均為真實(shí)數(shù)據(jù),得到的相似度概率D(x)越大越好。而第二項(xiàng)是判斷生成器的推薦列表與真實(shí)數(shù)據(jù)的相似度,判斷器的作用是鑒別它們的區(qū)別,所以其鑒別的相似度結(jié)果D(G(z))應(yīng)越小越好,為了統(tǒng)一形式方便計(jì)算,第二項(xiàng)改為1-D(G(z)),這樣整個(gè)公式不會(huì)出現(xiàn)矛盾。
算法訓(xùn)練流程總結(jié)如下(在訓(xùn)練模型的時(shí)候,判斷器與生成器通過(guò)對(duì)抗訓(xùn)練的策略交替進(jìn)行更新優(yōu)化):
算法:算法訓(xùn)練流程。
輸入:訓(xùn)練集S
初始化:使用隨機(jī)數(shù)來(lái)初始化生成器G與判斷器D的權(quán)重,預(yù)處理訓(xùn)練集S
訓(xùn)練生成器G:
(a)生成時(shí)刻t用戶i的項(xiàng)目推薦列表
(b)從推薦列表中選出預(yù)測(cè)高分項(xiàng)目樣本集N
(c)forn∈{1,2,…,N}:
用戶i的歷史高分項(xiàng)目m來(lái)自訓(xùn)練集S
使用判斷器D來(lái)區(qū)分k,m
End for
(d)通過(guò)生成器的目標(biāo)函數(shù)(12)來(lái)更新生成器G
訓(xùn)練判斷器D:
(a)用戶i的歷史高分項(xiàng)目m與評(píng)價(jià)過(guò)的其他項(xiàng)目l均來(lái)自訓(xùn)練集S
(b)判斷器D判斷m,l的相似度
(c)通過(guò)判斷器的目標(biāo)函數(shù)(18)來(lái)更新判斷器D
until兩個(gè)模型均收斂
為了驗(yàn)證文中算法的推薦效果,選擇了兩個(gè)公開的數(shù)據(jù)集(MovieLens-100K(http://grouplens.org/datasets/movielens)和Netflix-3M(https://www.kaggle.com/netflix-inc/netflix-prize-data))進(jìn)行實(shí)驗(yàn)。這兩個(gè)數(shù)據(jù)集均有用戶對(duì)電影的評(píng)級(jí),評(píng)價(jià)等級(jí)為從1到5,5為最高評(píng)分。并且它們還提供了電影的發(fā)行時(shí)間以及詳細(xì)的用戶信息。對(duì)每個(gè)數(shù)據(jù)集,去掉沒有明顯信息的用戶及電影,按照時(shí)間戳粒度隨機(jī)分為若干個(gè)訓(xùn)練集與測(cè)試集。其中MovieLens-100K的時(shí)間戳粒度設(shè)為5天,Netflix-3M的時(shí)間戳粒度設(shè)為1天。兩個(gè)數(shù)據(jù)集的詳細(xì)信息如表1所示。
表1 數(shù)據(jù)集信息
為了對(duì)推薦效果進(jìn)行定量的評(píng)價(jià),使用推薦精度(precision)、NDCG、MRR作為推薦算法的度量標(biāo)準(zhǔn)。這些評(píng)價(jià)指標(biāo)的值越大,推薦算法的效果越好[17-18]。
推薦精度可以表示用戶喜歡項(xiàng)目在推薦列表中的比例,對(duì)于推薦列表大小為k的推薦精度公式為:
(19)
其中,R(k)為生成推薦列表的數(shù)量,T(k)為實(shí)現(xiàn)正確推薦的推薦列表數(shù)量。
NDCG(normalized discounted cumulative gain)廣泛作為對(duì)Top-N推薦系統(tǒng)的推薦列表的評(píng)價(jià)指標(biāo)。用公式可以表示為:
(20)
(21)
其中,reli為推薦列表位置i的推薦結(jié)果的相關(guān)性。如果排名i的項(xiàng)目相關(guān)性好,reli=1,否則等于0。IDCG為理想情況下的DCG,即為DCG的最大值。
MRR(mean reciprocal rank)是將推薦列表中一個(gè)預(yù)測(cè)準(zhǔn)確的結(jié)果的位置的倒數(shù)作為準(zhǔn)確度,再對(duì)所有準(zhǔn)確度求平均值。
(22)
其中,Q為推薦項(xiàng)目的數(shù)量,rankq為第q個(gè)推薦項(xiàng)目第一次出現(xiàn)在推薦列表中的位置。
實(shí)驗(yàn)選用TimeSVD++[19]、R-RNN[20]和IRGAN[9]模型進(jìn)行對(duì)比。TimeSVD++推薦算法是一種對(duì)于靜態(tài)的基于矩陣分解技術(shù)的推薦算法的改進(jìn)算法。R-RNN模型采用與文中生成器類似的推薦算法,并通過(guò)Adam算法對(duì)其參數(shù)進(jìn)行優(yōu)化。IRGAN用于信息檢索領(lǐng)域,可以生成出按偏好相關(guān)的推薦列表。
在實(shí)驗(yàn)中進(jìn)行Top-N推薦時(shí),對(duì)推薦列表長(zhǎng)度k取不同值分別進(jìn)行實(shí)驗(yàn),以k為3、6、9時(shí)的實(shí)驗(yàn)結(jié)果作為樣本,各項(xiàng)實(shí)驗(yàn)結(jié)果如表2和表3所示。
實(shí)驗(yàn)結(jié)果表示,文中提出的L-GAN模型相對(duì)于對(duì)比模型在推薦精度和準(zhǔn)確度上都有較明顯的提升。TimeSVD++推薦算法和R-RNN模型推薦效果明顯低于使用GAN訓(xùn)練的模型,證明通過(guò)生成對(duì)抗訓(xùn)練可以更好地獲取隱層特征。L-GAN雖采用與R-RNN模型類似的推薦列表生成方式,但在訓(xùn)練時(shí)通過(guò)判斷器的反饋會(huì)提升推薦列表的精度。L-GAN在各個(gè)指標(biāo)對(duì)比中均略微高于IRGAN,顯示了L-GAN較好的推薦效果。這是因?yàn)長(zhǎng)-GAN模型的優(yōu)勢(shì)在于能夠考慮用戶和電影之間短期和長(zhǎng)期聯(lián)系,尤其是模型中LSTM部分明確考慮了用戶行為的動(dòng)態(tài)性。在實(shí)驗(yàn)結(jié)果中,當(dāng)推薦列表容量大小增加時(shí),三個(gè)模型的推薦效果均呈現(xiàn)不同程度的下降。
表2 推薦結(jié)果(MovieLens-100K)
表3 推薦結(jié)果(Netflix-3M)
在生成對(duì)抗網(wǎng)絡(luò)框架的基礎(chǔ)上,提出了一種L-GAN推薦模型,通過(guò)生成器產(chǎn)生推薦列表,判斷器區(qū)分真?zhèn)卧u(píng)分項(xiàng)目的方法,準(zhǔn)確挖掘數(shù)據(jù)基于長(zhǎng)短期興趣偏好變化的隱層特征,使推薦列表更加精準(zhǔn)。在兩個(gè)大型開源數(shù)據(jù)集上的實(shí)驗(yàn),證明了該模型推薦效果的有效性與準(zhǔn)確性,且對(duì)數(shù)據(jù)的隱層特征挖掘更精準(zhǔn)。實(shí)驗(yàn)結(jié)果也顯示了隨著推薦列表增加,推薦效果出現(xiàn)降低的問(wèn)題,因此今后會(huì)針對(duì)這一問(wèn)題展開研究。