李昆侖,孫瑞剛,王 珺
(河北大學(xué) 電子信息工程學(xué)院,河北 保定071000)
隨著互聯(lián)網(wǎng)以及電子商務(wù)的快速發(fā)展,互聯(lián)網(wǎng)上的信息量爆發(fā)式增長(zhǎng),用戶(hù)難以從過(guò)載的數(shù)據(jù)量中找到有用的信息,而個(gè)性化推薦系統(tǒng)是解決這個(gè)問(wèn)題的有效途徑之一.傳統(tǒng)的推薦算法如基于內(nèi)容的推薦算法,協(xié)同過(guò)濾推薦算法等已經(jīng)在推薦系統(tǒng)領(lǐng)域取得了較好的效果[1,2].為了更深層次的利用用戶(hù)的偏好信息,文獻(xiàn)[3]提出了基于深度學(xué)習(xí)的推薦算法.隨著深度學(xué)習(xí)最近幾年的快速發(fā)展,許多深度學(xué)習(xí)算法如xdeepfm,NIFC,NGCF都在推薦系統(tǒng)中獲得了較好的效果[4-6].
與xdeepfm,NIFC,NGCF等深度學(xué)習(xí)推薦算法不同,序列推薦的目標(biāo)是根據(jù)用戶(hù)歷史行為序列來(lái)預(yù)測(cè)用戶(hù)的“不久的將來(lái)”可能的行為,額外考慮了用戶(hù)的購(gòu)買(mǎi)動(dòng)機(jī).為此人們提出了很多解決辦法.文獻(xiàn)[7]提出基于卷積序列嵌入的個(gè)性化Top-N推薦算法,用卷積序列嵌入推薦模型來(lái)解決這一問(wèn)題.其思想是在時(shí)間和潛在空間中嵌入一個(gè)最近的項(xiàng)目序列到一個(gè)“圖像”中,并使用卷積濾波器學(xué)習(xí)序列模式作為圖像的局部特征.該方法提供了一個(gè)統(tǒng)一且靈活的網(wǎng)絡(luò)結(jié)構(gòu),可以捕獲一般偏好和序列信息,在公共數(shù)據(jù)集上得到了較好的效果.文獻(xiàn)[8]將基于相似性度量的方法與馬爾可夫鏈結(jié)合,對(duì)稀疏和長(zhǎng)尾數(shù)據(jù)集進(jìn)行個(gè)性化的序列預(yù)測(cè).該方法能夠在各種大型、真實(shí)世界的數(shù)據(jù)集上獲得較為優(yōu)秀的結(jié)果.文獻(xiàn)[9]基于用戶(hù)的內(nèi)在偏好和序列模型,提出了一種基于評(píng)論驅(qū)動(dòng)的神經(jīng)序列推薦模型(RNS),文獻(xiàn)從評(píng)論中提取用戶(hù)和項(xiàng)目交互,對(duì)每個(gè)用戶(hù)或項(xiàng)目進(jìn)行編碼.在用戶(hù)序列信息的基礎(chǔ)上,設(shè)計(jì)了一種層次化注意力轉(zhuǎn)移機(jī)制,以捕捉用戶(hù)在整體和個(gè)人兩個(gè)層次上的序列信息.該方法在真實(shí)的數(shù)據(jù)集上得到了較好的效果.CosRec提出了一種利用二維卷積網(wǎng)絡(luò)進(jìn)行序列推薦的方法,它將項(xiàng)目序列編碼為三維張量;使用二維卷積濾波器學(xué)習(xí)局部特征;并以前饋方式聚合高階交互特征[10].該方法利用序列特征在公共數(shù)據(jù)集上取得了較好的效果.傳統(tǒng)的序列推薦算法中,大多模型都是對(duì)有序項(xiàng)進(jìn)行處理,因此會(huì)受到用戶(hù)行為序列的單向鏈?zhǔn)浇Y(jié)構(gòu)的約束,如圖1所示,比如用戶(hù)連續(xù)購(gòu)買(mǎi)電腦主機(jī)、鍵盤(pán)和鼠標(biāo)可能會(huì)導(dǎo)致用戶(hù)有強(qiáng)烈的購(gòu)買(mǎi)顯示器意向,而當(dāng)圖中有植物時(shí)就會(huì)影響整個(gè)推薦的效果.另外使用卷積神經(jīng)網(wǎng)絡(luò)CNNs處理序列信息的時(shí)候,卷積運(yùn)算可能丟失部分信息,導(dǎo)致推薦效果有所降低.
圖1 用戶(hù)購(gòu)買(mǎi)示意圖
綜上,傳統(tǒng)序列推薦模型易受到用戶(hù)行為序列的單向鏈?zhǔn)浇Y(jié)構(gòu)約束,如果不適當(dāng)放寬序列的單向鏈?zhǔn)浇Y(jié)構(gòu)的約束,將導(dǎo)致用戶(hù)的突發(fā)性購(gòu)買(mǎi)行為會(huì)影響算法整體的推薦效果,且使用卷積神經(jīng)網(wǎng)絡(luò)處理序列信息會(huì)導(dǎo)致部分信息損失的問(wèn)題,為了解決此類(lèi)問(wèn)題.本文提出了一個(gè)深層2D反卷積神經(jīng)網(wǎng)絡(luò)的序列推薦算法(Deep 2D deconvolution neural networks for Sequence recommendation algorithm,DdosRec),該算法首先通過(guò)成對(duì)編碼實(shí)現(xiàn)不相鄰項(xiàng)之間的交互,跳過(guò)某些不合理的項(xiàng)目,放松單層馬爾可夫序列的約束;其次將傳統(tǒng)的CNN處理序列信息的過(guò)程中運(yùn)用反卷積運(yùn)算,擴(kuò)充輸入數(shù)據(jù)的信息量;改進(jìn)反卷積層中的激活函數(shù),使用leaky ReLU替換傳統(tǒng)的ReLU,Leaky ReLU的激活功能允許對(duì)正信號(hào)和很小的負(fù)梯度數(shù)值,由于導(dǎo)數(shù)總是不為零,這能減少靜默神經(jīng)元的出現(xiàn),允許基于梯度的學(xué)習(xí),解決了ReLU函數(shù)進(jìn)入負(fù)區(qū)間后導(dǎo)致神經(jīng)元不學(xué)習(xí)的問(wèn)題;最后改進(jìn)神經(jīng)網(wǎng)絡(luò)中的損失函數(shù),改進(jìn)的損失函數(shù)可以小幅調(diào)節(jié)神經(jīng)網(wǎng)絡(luò)的損失值,通過(guò)人為的調(diào)節(jié)參數(shù)α和β的大小,使神經(jīng)網(wǎng)絡(luò)更容易找到損失函數(shù)的最小值.可以有效的提高推薦系統(tǒng)的性能.本文對(duì)該算法進(jìn)行了相關(guān)的理論推導(dǎo),并在兩個(gè)不同的數(shù)據(jù)集上證明了該算法在平均準(zhǔn)確率,召回率等方面表現(xiàn)優(yōu)異.
序列推薦算法通常需要知道用戶(hù)之前的歷史消費(fèi)習(xí)慣,以便用來(lái)預(yù)測(cè)用戶(hù)未來(lái)的消費(fèi)傾向.為此,近年來(lái)出現(xiàn)了很多方法,包括馬爾可夫鏈(MCs),循環(huán)神經(jīng)網(wǎng)絡(luò)(RNNs),卷積神經(jīng)網(wǎng)絡(luò),基于自我注意力機(jī)制的卷積神經(jīng)網(wǎng)絡(luò)等[10-13].文獻(xiàn)[14]提出了基于時(shí)間間隔和自我注意力機(jī)制的序列推薦算法,在序列推薦算法的框架內(nèi)對(duì)交互的時(shí)間戳進(jìn)行顯式建模,以探索不同的時(shí)間間隔對(duì)下一項(xiàng)預(yù)測(cè)的影響.CosRec提出了一個(gè)基于二維卷積網(wǎng)絡(luò)的序列推薦算法[10],將項(xiàng)目編碼為三維張量,使用2D卷積濾波器學(xué)習(xí)局部特征并以前饋方式匯總高階交互,有效的提高了推薦算法的性能.受此啟發(fā),本文先將項(xiàng)目進(jìn)行成對(duì)編碼,再用反卷積神經(jīng)神經(jīng)網(wǎng)絡(luò)代替卷積神經(jīng)網(wǎng)絡(luò)提取高階序列信息,將其視為用戶(hù)的短期偏好.再將高階序列信息與用戶(hù)項(xiàng)目交互信息進(jìn)行融合,形成用戶(hù)的長(zhǎng)短期偏好信息用于推薦.
卷積神經(jīng)網(wǎng)絡(luò)(CNNs)的基本結(jié)構(gòu)由輸入層、卷積層(convolutional layer)、池化層(pooling layer,也稱(chēng)為取樣層)、全連接層及輸出層構(gòu)成.卷積層和池化層一般會(huì)取若干個(gè),采用卷積層和池化層交替設(shè)置,即一個(gè)卷積層連接一個(gè)池化層,池化層后再連接一個(gè)卷積層,依此類(lèi)推就形成了一個(gè)卷積神經(jīng)網(wǎng)絡(luò).卷積神經(jīng)網(wǎng)絡(luò)中的卷積層中輸出特征面的每個(gè)神經(jīng)元與其輸入進(jìn)行局部連接,并通過(guò)對(duì)應(yīng)的連接權(quán)值與局部輸入進(jìn)行加權(quán)求和再加上偏置值,得到該神經(jīng)元輸入值,該過(guò)程等同于卷積過(guò)程[15].
卷積神經(jīng)網(wǎng)絡(luò)也被用于其他推薦任務(wù).例如ConvNCF在用戶(hù)和項(xiàng)目嵌入的外積上應(yīng)用CNN來(lái)估計(jì)用戶(hù)與項(xiàng)目的交互[16].GRec通過(guò)一種填隙機(jī)制來(lái)訓(xùn)練編碼器和解碼器并使用CNN來(lái)實(shí)例化通用的GRec算法[17].MARank通過(guò)結(jié)合剩余網(wǎng)絡(luò)和多階注意力機(jī)制,在推薦模型中從多個(gè)角度統(tǒng)一個(gè)人和整體的項(xiàng)目交互[18].SHAN通過(guò)兩層注意力機(jī)制對(duì)用戶(hù)的前幾項(xiàng)和長(zhǎng)期歷史進(jìn)行建模,以獲得用戶(hù)的短期和長(zhǎng)期偏好[19].文獻(xiàn)[20]使用CNN設(shè)計(jì)了一個(gè)基于神經(jīng)網(wǎng)絡(luò)的傳輸組件,通過(guò)組件改善模型的數(shù)據(jù)傳輸效果,以提高推薦效率和推薦準(zhǔn)確性.
圖2 dosrec模塊示意圖
圖2為dosrec模塊示意圖,該模塊由輸入端,嵌入查找層,成對(duì)編碼模塊以及2D反卷積神經(jīng)網(wǎng)絡(luò),融合層組成.用戶(hù)信息|U|和項(xiàng)目信息|I|輸入嵌入查找層生成兩個(gè)嵌入矩陣Eu∈|I|×d和EI∈|u|×d,其中項(xiàng)目嵌入矩陣EI∈|u|×d經(jīng)過(guò)成對(duì)編碼之后形成三維嵌入矩陣,目的是放寬序列單鏈的約束,跳過(guò)某些不合理的項(xiàng)目.隨后將三維嵌入矩陣輸入2D反卷積神經(jīng)網(wǎng)絡(luò)提取反卷積序列嵌入V(u,t),最后將反卷積序列嵌入V(u,t)和用戶(hù)嵌入矩陣Eu進(jìn)行融合.
圖3為深層2D反卷積神經(jīng)網(wǎng)絡(luò)的序列推薦算法的整體框架,分別由輸入端,3個(gè)dosrec模塊,3個(gè)丟棄層,及激活函數(shù)ReLU組成.用戶(hù)和項(xiàng)目的信息經(jīng)過(guò)dosrec模塊處理得到反卷積序列嵌入向量之后,第1個(gè)dosrec模塊的輸出不變,第2、3個(gè)dosrec模塊分別輸入一個(gè)和兩個(gè)丟棄層,目的是既充分利用了用戶(hù)和項(xiàng)目的信息,又在丟棄層的作用下保證訓(xùn)練過(guò)程中不會(huì)產(chǎn)生過(guò)擬合.將其相加并輸入ReLU激活函數(shù),隨后再計(jì)算出用戶(hù)u可能點(diǎn)擊的項(xiàng)目概率,最后利用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)根據(jù)用戶(hù)的嵌入矩陣Eu對(duì)t時(shí)刻的用戶(hù)u進(jìn)行Top-N推薦.
圖3 深層2D反卷積神經(jīng)網(wǎng)絡(luò)的序列推薦算法示意圖
本文所提出的DdosRec算法將通過(guò)前L個(gè)項(xiàng)目的嵌入矩陣反饋到神經(jīng)網(wǎng)絡(luò)中,以捕捉潛在空間序列的特征.將項(xiàng)目和用戶(hù)嵌入兩個(gè)矩陣EI∈|I|×d和Eu∈|u|×d,其中d是潛在維數(shù),ei和eu分別表示EI和Eu的第i行和第u行.生成嵌入矩陣以應(yīng)對(duì)用戶(hù)和項(xiàng)目矩陣中稀疏的id特征,通過(guò)將單個(gè)id映射成一個(gè)稠密向量,變id特征的“精確匹配”為嵌入向量的“模糊查找”,增加高維、稀疏特征數(shù)據(jù)的可用性,從而提升算法的擴(kuò)展能力.嵌入查找層通過(guò)矩陣相乘實(shí)現(xiàn),可以看成一個(gè)特殊的“全連接層”.對(duì)于在t時(shí)刻的用戶(hù)u,通過(guò)在項(xiàng)目嵌入矩陣EI中查找先前的L個(gè)項(xiàng)目來(lái)檢索輸入嵌入矩陣L×d,如公式(1)所示:
(1)
(2)
Houtput=(Hinput-1)×s-2×p+k+op
(3)
其中Houtput表示經(jīng)過(guò)反卷積運(yùn)算后的輸出結(jié)果,Hinput表示反卷積層的輸入數(shù)據(jù),s表示反卷積運(yùn)算中卷積核每次移動(dòng)的步長(zhǎng),p表示輸入的每一條邊補(bǔ)充0的層數(shù),k表示卷積核的尺寸大小,op表示輸出的每一條邊補(bǔ)充0的層數(shù).
(4)
其中⊙代表反卷積運(yùn)算符號(hào).
(5)
(6)
(7)
(8)
Bbn1_1=BatchNorm(Ccon1_1)
(9)
使用批量歸一化可以使用初始較大的學(xué)習(xí)率,提高訓(xùn)練的收斂速度,且批量歸一化自帶正則化的特性,提高網(wǎng)絡(luò)的泛化能力.一定程度上減少了梯度爆炸的出現(xiàn),并減少對(duì)初始參數(shù)的依賴(lài).
將歸一化后的結(jié)果輸入激活函數(shù)Leaky ReLU,得到卷積核為1×1的反卷積層處理后的張量C1_1,如公式(10),公式(11)所示[21]:
(10)
C1_1=LeakyReLU(Bbn1_1)
(11)
與CNN網(wǎng)絡(luò)中常用到的ReLU相比,Leaky ReLU的激活功能允許對(duì)正信號(hào)和很小的負(fù)梯度數(shù)值,由于導(dǎo)數(shù)總是不為零,這能減少靜默神經(jīng)元的出現(xiàn),允許基于梯度的學(xué)習(xí),解決了ReLU函數(shù)進(jìn)入負(fù)區(qū)間后,導(dǎo)致神經(jīng)元不學(xué)習(xí)的問(wèn)題.
隨后將第1個(gè)反卷積層處理后的張量C1_1,輸入到第2層中.后續(xù)每個(gè)卷積層設(shè)計(jì)除了卷積核大小不同,歸一化及激活函數(shù)設(shè)計(jì)均相同.
表1是一個(gè)說(shuō)明性表格.網(wǎng)絡(luò)中每一部分均由兩個(gè)卷積層組成:第1層使用1×1的卷積核來(lái)豐富特征表示;在第2層中將卷積核大小設(shè)置為3×3,隨著網(wǎng)絡(luò)的不斷深入,反卷積網(wǎng)絡(luò)將會(huì)提取到更加復(fù)雜的序列特征張量C,經(jīng)過(guò)反卷積運(yùn)算之后擴(kuò)大了神經(jīng)網(wǎng)絡(luò)處理的信息量,有效防止了原卷積神經(jīng)網(wǎng)絡(luò)中的卷積運(yùn)算中的信息丟失問(wèn)題.最后將反卷積網(wǎng)絡(luò)的輸出張量C輸入丟棄層得到張量Cdropout,防止過(guò)擬合,提高神經(jīng)網(wǎng)絡(luò)處理序列信息的準(zhǔn)確性.
表1 2D反卷積網(wǎng)絡(luò)結(jié)構(gòu)示意圖
其中D表示輸入項(xiàng)目的嵌入層維度.D1,D2,Ddropout分別表示各層的潛在維度尺寸.FC表示全連接層.
在經(jīng)過(guò)4層反卷積之后將結(jié)果輸入全連接層,獲得更多高階和抽象的特征,如公式(12)所示:
V1(u,t)=φf(shuō)c(W[Cdropout]+b)
(12)
其中W∈L×L×2d是將全連接層投影到d維隱藏層的權(quán)重矩陣,b∈d是對(duì)應(yīng)的偏置項(xiàng),φf(shuō)c是全連接層對(duì)應(yīng)的激活函數(shù),本文采用的激活函數(shù)為tanh.V1(u,t)∈d是反卷積序列嵌入,它對(duì)前L個(gè)項(xiàng)目的各種序列特征進(jìn)行編碼.
為了捕獲用戶(hù)的一般偏好,本文將用戶(hù)的嵌入矩陣Eu轉(zhuǎn)換為d維向量并與V1(u,t)進(jìn)行連接,形成第1層融合后的用戶(hù)和項(xiàng)目序列信息向量Qu1.神經(jīng)網(wǎng)絡(luò)第2層在第1層的基礎(chǔ)上將Qu1輸入到丟棄層形成第2層向量Qu2,將結(jié)果輸入丟棄層是為了防止層數(shù)增加而產(chǎn)生的過(guò)擬合現(xiàn)象.如公式(13)所示:
Qu2=dropout(Qu1)
(13)
神經(jīng)網(wǎng)絡(luò)的第3層是在第2層的基礎(chǔ)上再將Qu2輸入到一個(gè)丟棄層形成向量Qu3.如公式(14)所示:
Qu3=dropout(Qu2)
(14)
隨后將3層神經(jīng)網(wǎng)絡(luò)的結(jié)果相加之后得到融合向量Qu,如公式(15)所示:
Qu=Qu1+Qu2+Qu3
(15)
將Qu投影到一個(gè)帶有|Ι|節(jié)點(diǎn)的輸出層,如公式(16)所示:
y(u,t)=W′[Qu]+b′
(16)
其中,b′∈|Ι|為輸出層的偏置項(xiàng),W′∈|Ι|×2d為輸出層的權(quán)重矩陣.輸出層的值y(u,t)大小與項(xiàng)目i和用戶(hù)u在時(shí)間t上的交互可能性有關(guān).V(u,t)旨在捕獲短期序列模型,而用戶(hù)嵌入矩陣Eu表示用戶(hù)的長(zhǎng)期偏好.Qu則表示經(jīng)過(guò)信息融合后的用戶(hù)長(zhǎng)短期偏好.
為了訓(xùn)練網(wǎng)絡(luò),將輸出層的值y(u,t)轉(zhuǎn)換為條件概率,根據(jù)用戶(hù)前L個(gè)交互項(xiàng)預(yù)測(cè)用戶(hù)的下一個(gè)交互項(xiàng)的概率.如公式(17),公式(18)所示:
(17)
其中σ(x)=1/(1+e-x)是sigmoid函數(shù).令Cu={L+1,L+2,…,|Su|}是本文希望為用戶(hù)u做出預(yù)測(cè)的時(shí)間步長(zhǎng)集合.數(shù)據(jù)中所有序列的可能性如公式(18)所示:
(18)
(19)
本文對(duì)二值交叉熵?fù)p失函數(shù)做了改進(jìn),分別在正反饋部分和負(fù)反饋部分之前加入一組系數(shù)(α,β),其中α+β=1,改進(jìn)后的二值交叉熵?fù)p失函數(shù)為:
(20)
改進(jìn)后的損失函數(shù)可以小幅調(diào)節(jié)神經(jīng)網(wǎng)絡(luò)的損失值,通過(guò)人為的調(diào)節(jié)α和β的大小,使網(wǎng)絡(luò)更容易找到損失函數(shù)的最小值.可以有效的提高推薦系統(tǒng)的性能.
模型參數(shù),如Θ={Fk,W,W′,b,b′}等需要通過(guò)最小化訓(xùn)練集上的損失值來(lái)學(xué)習(xí).(d,L,T)等超參數(shù)則需要通過(guò)在驗(yàn)證集上的測(cè)試結(jié)果去調(diào)節(jié).本文的神經(jīng)網(wǎng)絡(luò)通過(guò)Adam優(yōu)化器實(shí)現(xiàn)更快速收斂,Adam優(yōu)化器是具有自適應(yīng)距離估計(jì)的梯度下降算法的一個(gè)變體[22].Adam結(jié)合了AdaGrad和RMSProp算法的優(yōu)點(diǎn),適用于解決高噪聲或稀疏梯度的問(wèn)題,也可以用來(lái)解決大規(guī)模數(shù)據(jù)的參數(shù)優(yōu)化問(wèn)題.
神經(jīng)網(wǎng)絡(luò)訓(xùn)練好之后,為了給t時(shí)刻的用戶(hù)u做推薦.本文將用戶(hù)u的嵌入矩陣Eu提取出來(lái),根據(jù)公式(2)給出的最后L個(gè)項(xiàng)目的嵌入作為神經(jīng)網(wǎng)絡(luò)輸入.從輸出層y中選取值最高的前N個(gè)項(xiàng)目推薦給用戶(hù)u.
本文的算法步驟見(jiàn)表2.本文的神經(jīng)網(wǎng)絡(luò)分3層,第1層用戶(hù)信息和項(xiàng)目信息分別輸入嵌入查找層,項(xiàng)目信息經(jīng)過(guò)成對(duì)編碼之后,進(jìn)入2D反卷積神經(jīng)網(wǎng)絡(luò)處理得到序列信息,為了捕捉用戶(hù)的全局偏好,將單層序列向量V(u,t)與用戶(hù)嵌入矩陣Eu進(jìn)行連接,形成融合后的用戶(hù)和項(xiàng)目序列信息向量Qu1.
表2 深層2D反卷積神經(jīng)網(wǎng)絡(luò)的序列推薦算法步驟
本文實(shí)驗(yàn)均在CPU為I7-9750H,2.60GHz,內(nèi)存為16.00GB,顯卡為英偉達(dá)公司出品的GTX1660Ti的計(jì)算機(jī)上運(yùn)行,實(shí)驗(yàn)環(huán)境為python3.6.參照CosRec的實(shí)驗(yàn)評(píng)估設(shè)置[10],本文在兩個(gè)標(biāo)準(zhǔn)數(shù)據(jù)集MovieLens和Gowalla上評(píng)估了本文提出的方法.數(shù)據(jù)集的統(tǒng)計(jì)信息如表3所示.
表3 數(shù)據(jù)集的統(tǒng)計(jì)信息
MovieLens:廣泛用于評(píng)估協(xié)同過(guò)濾算法的基準(zhǔn)數(shù)據(jù)集.本文在實(shí)驗(yàn)中使用了MovieLens-1M版本.
Gowalla:一個(gè)基于位置的社交網(wǎng)站,用戶(hù)通過(guò)簽到打上時(shí)間戳來(lái)分享他們的位置.
本文遵循與CosRec中相同的預(yù)處理過(guò)程:本文將評(píng)論或評(píng)級(jí)的存在視為隱式反饋(即用戶(hù)與項(xiàng)目交互),使用時(shí)間戳來(lái)確定操作的順序,并分別舍棄ML-1M和Gowalla中少于5個(gè)和15個(gè)操作的用戶(hù)和項(xiàng)目.本文保留每個(gè)用戶(hù)的行為序列中前80%用于訓(xùn)練和驗(yàn)證,其余20%作為評(píng)估模型性能的測(cè)試集.
本實(shí)驗(yàn)用了平均準(zhǔn)確率(MAP),精確率@N(Precision@N)和召回率@N(Recall@N),作為評(píng)價(jià)指標(biāo),其中N分別設(shè)置為1,5,10.
平均準(zhǔn)確率計(jì)算如公式(21)、公式(22)所示:
(21)
(22)
準(zhǔn)確率計(jì)算如公式(23)所示:
(23)
召回率計(jì)算如公式(24)所示:
(24)
其中,N表示給用戶(hù)推薦的項(xiàng)目個(gè)數(shù),M為總用戶(hù)數(shù)量,Iu為推薦給用戶(hù)的項(xiàng)目集合,Vu是用戶(hù)u購(gòu)買(mǎi)項(xiàng)目集合,pui表示i物品在推薦列表中的位置,puj>pui表示j物品在推薦列表中排在i物品之前.
本文使用2個(gè)反卷積模塊,每個(gè)反卷積模塊由2層組成.維度數(shù)從{10,20,30,50,100}中選則,ML-1M和Gowalla分別取20維和100維.在ML-1M數(shù)據(jù)集中馬爾可夫階數(shù)L=6,預(yù)測(cè)下一個(gè)項(xiàng)目的數(shù)量為T(mén)=3,α設(shè)為0.4875,β設(shè)為0.5125.在Gowalla數(shù)據(jù)集中馬爾可夫階數(shù)L為1,預(yù)測(cè)下一個(gè)項(xiàng)目的數(shù)量為T(mén)=1,α設(shè)為0.7,β設(shè)為0.3.學(xué)習(xí)率為0.00025,每一組規(guī)模為512,負(fù)采樣個(gè)數(shù)為3,丟棄率為0.5.上述實(shí)驗(yàn)都是使用PyTorch實(shí)現(xiàn)的.
本文算法的目的是針對(duì)運(yùn)用序列信息進(jìn)行推薦展開(kāi)研究的,可在僅有用戶(hù)和項(xiàng)目交互信息和時(shí)間信息并且數(shù)據(jù)量較小的情況下生成推薦.故選擇需求數(shù)據(jù)種類(lèi)相似的算法作為對(duì)比方法可以更好的證明算法的性能.本文選擇了下列的方法進(jìn)行比較:
基于流行度的推薦:一種簡(jiǎn)單的推薦方法,可以根據(jù)項(xiàng)目的受歡迎程度對(duì)其進(jìn)行排名.
貝葉斯個(gè)性化推薦(BPR):一種經(jīng)典的非序列個(gè)性化推薦方法[23].
基于馬爾可夫鏈的因式分解(FMC):一階馬爾可夫鏈方法,僅根據(jù)最后訪問(wèn)的項(xiàng)目生成推薦[24].
基于馬爾可夫鏈的個(gè)性化因式分解(FPMC):FMC和MF的組合,可以捕獲短期項(xiàng)目的交互以及用戶(hù)的全局偏好[25].
GRU4Rec:一種基于RNN的推薦模型,該模型使用RNN捕獲序列信息并進(jìn)行預(yù)測(cè)[25].
卷積序列嵌入(Caser):一種基于CNN的方法,該方法通過(guò)在前L個(gè)項(xiàng)目的嵌入矩陣上應(yīng)用卷積運(yùn)算來(lái)捕獲高階序列信息[7].
CosRec:一種基于2DCNN的序列模型,將項(xiàng)目編碼為三維張量,使用2D卷積濾波器學(xué)習(xí)局部特征并以前饋方式匯總高階交互[10].
DdosRec-base:為了評(píng)估2D反卷積模塊的有效性,在其他改動(dòng)不變的情況下本文創(chuàng)建了ddosrec-base,該版本使用2D CNN而不是使用2D反卷積模塊處理序列信息.
DdosRec:本文提出的模型深層2D反卷積神經(jīng)網(wǎng)絡(luò).
從表4、表5的實(shí)驗(yàn)結(jié)果可知,BPR等未采用序列模型算法的推薦效果比采用序列模型的算法如(caser,CosRec)更差.這個(gè)實(shí)驗(yàn)結(jié)果證實(shí)了考慮序列信息的重要性.對(duì)比FMC和FPMC,他們只考慮了一階馬爾可夫鏈進(jìn)行建模,而CosRec和本文的模型DdosRec可以捕獲高階序列信息,實(shí)驗(yàn)證明了考慮多階馬爾可夫鏈的效果比只考慮一階馬爾可夫鏈的效果更好.對(duì)比GRU4Rec,該算法使用循環(huán)神經(jīng)網(wǎng)絡(luò)處理序列信息,實(shí)驗(yàn)證明Caser、CosRec和本文的模型DdosRec使用CNN處理序列信息在所選數(shù)據(jù)集中可以取得較好的效果.對(duì)比CosRec證明了本文的反卷積模塊以及運(yùn)用更深層網(wǎng)絡(luò)可以在推薦系統(tǒng)中得到更好的效果.
表4 ML-1M數(shù)據(jù)集中各個(gè)算法實(shí)驗(yàn)結(jié)果對(duì)比
表5 Gowalla數(shù)據(jù)集中各個(gè)算法實(shí)驗(yàn)結(jié)果對(duì)比
對(duì)于DdosRec-base模型,在Gowalla數(shù)據(jù)集上,雖然k=1時(shí)召回率和準(zhǔn)確率比本文最終的模型要高,但綜合指標(biāo)MAP和其余各項(xiàng)評(píng)價(jià)指標(biāo)均是本文的模型DdosRec表現(xiàn)的更好,而在ML-1M數(shù)據(jù)集中本文的模型的表現(xiàn)在所有指標(biāo)上領(lǐng)先于DdosRec-base.
綜上所述,在Gowalla這種稀疏型數(shù)據(jù)集上反卷積模塊在該模型中召回率、準(zhǔn)確率的k值為復(fù)數(shù)時(shí)會(huì)有更好的效果,并且對(duì)于密集型數(shù)據(jù)集ML-1M,本文的反卷積模塊可以更有效的利用數(shù)據(jù)集中的多維信息,提高推薦的效果.
本節(jié)討論二維反卷積模塊中激活函數(shù)的影響,其中其他超參數(shù)及設(shè)置不變,分別創(chuàng)建DdosRec-leaky ReLU和DdosRec-ReLU模型,進(jìn)行對(duì)比實(shí)驗(yàn).
實(shí)驗(yàn)結(jié)果如表6、表7所示.經(jīng)過(guò)實(shí)驗(yàn)對(duì)比在ML-1M和Gowalla數(shù)據(jù)集發(fā)現(xiàn),在大多數(shù)情況下比起傳統(tǒng)的激活函數(shù)ReLU,leaky ReLU在召回率、準(zhǔn)確率、和平均準(zhǔn)確率3個(gè)方面都有較好表現(xiàn),這主要依賴(lài)于leaky ReLU的激活功能允許消息對(duì)正信號(hào)和小負(fù)信號(hào)進(jìn)行編碼,由于導(dǎo)數(shù)總是不為零,這能減少靜默神經(jīng)元的出現(xiàn),允許基于梯度的學(xué)習(xí),有效的提高了推薦算法的整體效果.
表6 ML-1M中不同激活函數(shù)實(shí)驗(yàn)對(duì)比
表7 Gowalla中不同激活函數(shù)實(shí)驗(yàn)對(duì)比
本節(jié)通過(guò)實(shí)驗(yàn)驗(yàn)證本文的模型深層2D反卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)影響,改變算法模型的層數(shù),當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)為:
1層網(wǎng)絡(luò)時(shí),輸入的用戶(hù)和項(xiàng)目信息通過(guò)dosrec模塊處理后,直接輸入ReLU產(chǎn)生預(yù)測(cè);
2層網(wǎng)絡(luò)時(shí),在dosrec處理過(guò)的信息輸入ReLU時(shí),會(huì)在之前輸入Dropout層,并于第一層網(wǎng)絡(luò)進(jìn)行相加,利用處理后的信息再產(chǎn)生預(yù)測(cè);
3層網(wǎng)絡(luò),4層網(wǎng)絡(luò)設(shè)計(jì)同理.同時(shí)其他參數(shù)不變,分別設(shè)置DdosRec-1和DdosRec-2,DdosRec-3,DdosRec-4.
從表8、表9中可以看出,DdosRec-1和DdosRec-2神經(jīng)網(wǎng)絡(luò)層數(shù)較淺,對(duì)用戶(hù)信息和項(xiàng)目的序列信息處理不夠完善,會(huì)損失一部分信息量,導(dǎo)致推薦性能下降.DdosRec-4中加入丟棄層在一定程度上緩解了過(guò)擬合,但是不能完全消除過(guò)擬合的影響,并可能因此引入了很多噪音,干擾了推薦的效果,導(dǎo)致實(shí)驗(yàn)結(jié)果不理想.故本文選取DdosRec-3作為最后的算法框架.
表8 ML-1M中不同層數(shù)的實(shí)驗(yàn)結(jié)果對(duì)比
表9 Gowalla中不同層數(shù)的實(shí)驗(yàn)結(jié)果對(duì)比
本文通過(guò)改變馬爾可夫階數(shù)L和目標(biāo)數(shù)T探討本文算法提取高階信息的能力,與此同時(shí)保持其他最佳的超參數(shù)和模型設(shè)置.分別創(chuàng)建DdosRec-T1,DdosRec-T2,DdosRec-T3,以此來(lái)研究馬爾可夫階數(shù)L和目標(biāo)數(shù)T變化的影響.
關(guān)于馬爾可夫階數(shù)L和預(yù)測(cè)目標(biāo)數(shù)T的影響實(shí)驗(yàn)結(jié)果如圖4,圖5所示,在密集的數(shù)據(jù)集MovieLens中,DdosRec較好的利用了較大L所提供的額外信息,其中 DdosRec-T3的表現(xiàn)最佳,這表明了增大L對(duì)推薦效果是有幫助的.對(duì)于稀疏數(shù)據(jù)集,并不是L的值越大越好.因?yàn)閷?duì)于稀疏數(shù)據(jù)集Gowalla,較高階的馬爾可夫鏈傾向于同時(shí)引入額外的信息和更多的噪聲,故DdosRec-T1取得了最好的推薦效果.與DdosRec-T1和DdosRec-T3相比,DdosRec-T2在這兩個(gè)數(shù)據(jù)集上的表現(xiàn)更加穩(wěn)定.
圖4 ML-1M數(shù)據(jù)集中馬爾可夫階數(shù)L和預(yù)測(cè)目標(biāo)數(shù)T的影響
圖5 Gowalla數(shù)據(jù)集中馬爾可夫階數(shù)L和預(yù)測(cè)目標(biāo)數(shù)T的影響
上述實(shí)驗(yàn)表明,本文算法在ML-1M和Gowalla數(shù)據(jù)集上相較其他算法可以取得更好的效果.并通過(guò)實(shí)驗(yàn)說(shuō)明了本文算法的激活函數(shù),網(wǎng)絡(luò)層數(shù)以及馬爾可夫階數(shù)對(duì)推薦效果的影響,證明本文算法網(wǎng)絡(luò)結(jié)構(gòu)的正確性.
本文主要針對(duì)傳統(tǒng)方法,利用馬爾可夫進(jìn)行序列推薦時(shí),易受到用戶(hù)行為序列單向鏈?zhǔn)浇Y(jié)構(gòu)的約束,如果出現(xiàn)突發(fā)性購(gòu)買(mǎi)項(xiàng)目則影響整體的推薦效果的問(wèn)題,提出了一種深層2D反卷積神經(jīng)網(wǎng)絡(luò)的序列推薦算法.本文在處理信息時(shí)對(duì)項(xiàng)目的嵌入矩陣進(jìn)行了成對(duì)編碼并經(jīng)過(guò)2D反卷積神經(jīng)網(wǎng)絡(luò)捕獲序列信息,隨后和用戶(hù)的嵌入矩陣進(jìn)行融合,獲得用戶(hù)的長(zhǎng)短期偏好,提高推薦準(zhǔn)確性.本文還通過(guò)增加dosrec模塊的層數(shù)并使用Dropout層,既可以充分利用用戶(hù)和項(xiàng)目的信息,又可以防止過(guò)擬合,提高了推薦系統(tǒng)對(duì)數(shù)據(jù)的利用能力.在訓(xùn)練過(guò)程中對(duì)損失函數(shù)進(jìn)行了改進(jìn),使神經(jīng)網(wǎng)絡(luò)更容易找到損失值的最小值.通過(guò)在Moivelens-1M和Gowalla數(shù)據(jù)集上的實(shí)驗(yàn)證明了,本文提出的算法比起傳統(tǒng)的序列推薦算法有效的提高了對(duì)序列信息的處理能力,提高了推薦的準(zhǔn)確性.