本文論文的題目是《Improved Recurrent Neural Networks for Session-based Recommendations》
論文下載地址為:https://arxiv.org/abs/1606.08117
本文仍然使用RNN做基于會話的推薦迫像,但在此基礎(chǔ)上蠢熄,提出了幾種提升預(yù)測效果的方法粉捻,我們一起來學(xué)習(xí)一下吧娃承。
1、基礎(chǔ)模型
基本的RNN模型如下圖所示:
而對于其中一個序列迫悠,其過程如下:
對于一個輸入序列x= [x1,x2,....,xr-1,xr]忆家,模型輸出y=M(x),并使用交叉熵?fù)p失或者rank的損失函數(shù)(如上一篇中提到的BPR和TOP1損失函數(shù))來進(jìn)行模型的訓(xùn)練。
2雀监、模型改進(jìn)
本節(jié)介紹幾種針對基礎(chǔ)模型的改進(jìn)双吆。包括Data augmentation、Adapting to temporal changes会前、Use of privileged information好乐、Output embeddings for faster predictions,咱們細(xì)細(xì)道來瓦宜。
2.1 Data augmentation
第一種方式是數(shù)據(jù)增強(qiáng)蔚万,本文提出了兩種增強(qiáng)的方式。
第一種方式临庇,便是將一條長度為n的序列拆分成n-1條訓(xùn)練數(shù)據(jù)反璃,假設(shè)一條長度為4的序列(l1,l2,l3,l4),將其拆分成3條數(shù)據(jù),即((l1),l2),((l1,l2),l3),((l1,l2,l3),l4)假夺。如下圖所示:
第二種方式淮蜈,是將點擊序列中的一些數(shù)據(jù)隨機(jī)的丟掉,可以增強(qiáng)訓(xùn)練的魯棒性已卷,如下圖所示:
2.2 Adapting to temporal changes
用戶的行為偏好是隨著時間而變化的梧田,近期的行為能夠更好的代表當(dāng)前用戶的偏好。因此啊,我們可以定義一個近期的時間節(jié)點裁眯,比如近半年之內(nèi)鹉梨,只用這部分?jǐn)?shù)據(jù)去訓(xùn)練模型。但是呢穿稳,這樣會造成訓(xùn)練數(shù)據(jù)太少存皂。
所以文中使用預(yù)訓(xùn)練的方法。即用所有的數(shù)據(jù)先預(yù)訓(xùn)練模型司草,然后只用近期的數(shù)據(jù)進(jìn)行模型的進(jìn)一步訓(xùn)練艰垂。
2.3 Use of privileged information
這里是使用privileged information(不知是否可以翻譯為超越信息)來訓(xùn)練模型。假設(shè)有序列[x1,x2,....,xr,xr+1,...,xn-1,xn]埋虹,當(dāng)此條訓(xùn)練數(shù)據(jù)是使用[x1,x2,....,xr]預(yù)測xr+1猜憎,那么其對應(yīng)的privileged information是[xn,xn-1,...,xr+2]。
思路是搔课,用戶點擊某item后的點擊序列中實際上能提供該item的信息胰柑,這些信息盡管在實際預(yù)測時使用不上,但在訓(xùn)練時我們可以加以利用爬泥。具體做法上柬讨,先使用privileged information訓(xùn)練一個模型,作為teacher模型袍啡,然后訓(xùn)練一個student模型踩官,即我們實際想要學(xué)習(xí)的模型。
假設(shè)teacher模型是M*境输,模型輸出是M*(x*)蔗牡,student模型是M,模型輸出為M(x)嗅剖,預(yù)測的實際輸出(即label對應(yīng)的one-hot encoding)為V(xn)辩越,那么此時的損失函數(shù)為:
2.4 Output embeddings for faster predictions
模型在最后輸出層的參數(shù)數(shù)目為H * N,H是GRU單元的size信粮,N是item的數(shù)量黔攒。當(dāng)我們的item數(shù)目過多的時候,這樣不僅訓(xùn)練慢强缘,同時在預(yù)測階段的時間也會比較長督惰。有兩種常見的方法,即我們在word2vec中見過的旅掂,hierarchical softmax和負(fù)采樣姑丑。
本文提出了一種新的做法,即輸出層預(yù)測的不再是點擊每個item的概率辞友,而是直接輸出item的embedding栅哀,并與label對應(yīng)的item的embedding進(jìn)行對比震肮,計算cosine距離作為損失。
但是留拾,這種方法需要item的embedding十分準(zhǔn)確戳晌,本文提出的方法是使用模型訓(xùn)練出的item embedding作為label。而這里的模型可以是使用基準(zhǔn)模型+前三種改進(jìn)方式訓(xùn)練出的模型痴柔。
3沦偎、實驗效果及結(jié)論
好了,論文實驗了上面幾種改進(jìn)方法的效果:
M1:基準(zhǔn)RNN模型 + 數(shù)據(jù)增強(qiáng)
M2:基準(zhǔn)RNN模型 + 數(shù)據(jù)增強(qiáng) + 預(yù)訓(xùn)練
M3:基準(zhǔn)RNN模型 + privileged information
M4:基準(zhǔn)RNN模型 + Output embeddings咳蔚,這里使用的item embedding是使用M1模型訓(xùn)練出的豪嚎。
模型結(jié)果如下:
左面的結(jié)果,GRU size是100谈火,右邊是GRU size是1000侈询。虛線是基準(zhǔn)模型的結(jié)果,橫軸的負(fù)數(shù)代表使用的訓(xùn)練集糯耍。比如扔字,我們將所有的訓(xùn)練集按照時間先后排序,-8即代表使用最近的1/256的數(shù)據(jù)集進(jìn)行訓(xùn)練温技,-6代表使用最近的1/64的數(shù)據(jù)集進(jìn)行訓(xùn)練革为,0就是使用所有的訓(xùn)練集進(jìn)行訓(xùn)練。
可以看到舵鳞,M2的效果最好震檩,同時,使用最近1/64的數(shù)據(jù)可以得到最好的效果蜓堕。