1. 簡介
論文:Session-based Recommendations with Recurrent Neural Networks撒遣。本文第一次提出將RNN網(wǎng)絡(luò)用于基于session的推薦。session可以理解為當(dāng)你進(jìn)入app管跺,直到你推出app這段時間义黎,也可以限定一定的時間范圍比如30分鐘』砼埽基于session的推薦即在你進(jìn)入app后根據(jù)你短時間內(nèi)的交互行為做的推薦廉涕。本文直接對用戶的session點擊序列使用RNN網(wǎng)絡(luò)進(jìn)行建模。
2. GRU4rec模型
- 文本的模型結(jié)構(gòu)如下所示艇拍,假設(shè)用戶的session點擊序列為:
狐蜕,則將
輸入多層GRU網(wǎng)絡(luò),預(yù)測下一次可能點擊的商品卸夕。
- 點擊商品序列先經(jīng)過one-hot編碼层释,然后通過embedding層得到低維稠密向量。之后經(jīng)過多層的GRU網(wǎng)絡(luò)快集,最后通過一層全連接層贡羔,預(yù)測下次點擊每個商品的概率。每個商品都存在兩個embedding向量(輸入商品id->embedding假設(shè)為
)个初,第一個是輸入層商品
對應(yīng)的embedding向量乖寒,第二個是輸出層商品
對應(yīng)的向量(輸出商品id->embedding假設(shè)為
)。則最終預(yù)測點擊商品
的概率為
院溺;
GRU4rec模型結(jié)構(gòu).png
2.1 訓(xùn)練中小trick
Session-parallel mini-batch
由下圖可以看出session1的長度為4宵统,session2的長度為3,session3的長度為6覆获,session4的長度為2马澈,session5的長度為3。假設(shè)設(shè)置batch_size=3弄息,則當(dāng)取第3個batch的時候痊班,session2已經(jīng)結(jié)束了。此時按照順序?qū)ession4中的序列拼接在session2后面摹量,并且重置GRU的隱狀態(tài)值為初始隱狀態(tài)涤伐。
Session-parallel mini-batch說明.png
Sampling On the output
最終預(yù)測每個商品下一次點擊的概率馒胆,當(dāng)商品數(shù)量非常大的時候計算量很大。所以論文采用了一種取巧的方式凝果,將同一個batch中其他session的下一次點擊商品作為當(dāng)前點擊商品的負(fù)樣本祝迂。例如,則對應(yīng)的負(fù)樣本為
器净。
2.2 模型損失函數(shù)
文本中采用了兩種pairwise損失函數(shù):BPR損失和TOP1損失型雳。其中表示負(fù)樣本個數(shù),
表示正樣本預(yù)測概率山害,
表示負(fù)樣本預(yù)測概率纠俭。
BPR損失函數(shù)
TOP1損失函數(shù)
參考資料
- 最原始論文:Session-based Recommendations with Recurrent Neural Networks
https://arxiv.org/pdf/1511.06939.pdf - Session-Based Recommendations 【論文和代碼集合】
https://paperswithcode.com/task/session-based-recommendations - 推薦系統(tǒng)遇上深度學(xué)習(xí)(四十)-使用RNN做基于會話的推薦 【重點閱讀】
https://mp.weixin.qq.com/s/Va-KGqqj17ts0NiJsJYYWQ - 參考tensorflow代碼:https://github.com/Songweiping/GRU4Rec_TensorFlow
https://github.com/nlpming/tensorflow_practice/tree/master/recommendation/Basic-SessionBasedRNN-Demo