9 篇頂會論文解讀推薦中的序列化建模:Session-based Neural Recommendation
前言
本文對 Recurrent Neural Network 在推薦領域的序列數據建模進行梳理,整理推薦領域和深度學習領域頂會 RecSys、ICLR 等中的 9 篇論文進行整理。圖片和文字來源於原文,幫助讀者理解,有爭議的請聯係我。
Session-based neural recommendation
首先介紹下 session-based 的概念:session 是服務器端用來記錄識別用戶的一種機製。典型的場景比如購物車,服務端為特定的對象創建了特定的 Session,用於標識這個對象,並且跟蹤用戶的瀏覽點擊行為。我們這裏可以將其理解為具有時序關係的一些記錄序列。
寫作動機
傳統的兩類推薦方法——基於內容的推薦算法和協同過濾推薦算法(model-based,memory-based)在刻畫序列數據中存在缺陷:每個 item 相互獨立,不能建模 session 中 item 的連續偏好信息。
傳統的解決方法
1. item-to-item recommendation approach (Sarwar et al.,2001; Linden et al., 2003) : 采用 session 中 item 間的相似性預測下一個 item。缺點:隻考慮了最後一次的 click 的 item 相似性,忽視了前麵的的 clicks, 沒有考慮整個序列信息。
2. Markov decision Processes (MDPs)(Shani et al., 2002):馬爾科夫決策過程,用四元組<S,A, P, R>(S: 狀態, A: 動作, P: 轉移概率, R: 獎勵函數)刻畫序列信息,通過狀態轉移概率的計算點擊下一個動作:即點擊 item 的概率。缺點:狀態的數量巨大,會隨問題維度指數增加。MDPs 參見博客[1]。
Deep Neural Network 的方法
Deep Neural Network(RNN:LSTM 和 GRU 的記憶性)被成功的應用在刻畫序列信息。因為論文中主要采用 GRU,下麵簡單介紹下 GRU(LSTM 詳解參考博客[2])。
GRU的原理:GRU 輸入為前一時刻隱藏層和當前輸入
,輸出為下一時刻隱藏層信息
。GRU 包含兩個門
:reset 門和
: update 門,其中
用來計算候選隱藏層
,控製的是保留多少前一時刻隱藏層
的信息;
用來控製加入多少候選隱藏層
的信息,從而得到輸出
。GRU 可以靈活控製長短距離的依賴信息,適合刻畫序列數據。
到此,已經說明用 GRU 來刻畫 session 中的序列的合理性。下麵我們來梳理相關的工作。
Session-based recommendations with recurrent neural networks
ICLR 2016
本文的貢獻在於首次將 RNN 運用於 Session-based Recommendation,針對該任務設計了 RNN 的訓練、評估方法及 ranking loss。
-
Motivation (Why):第一篇提出將 RNN 應用到 session-based recommendation 的論文。
-
Main Idea (What):一個 session 中點擊 item 的行為看做一個序列,用 GRU 來刻畫。
-
How:
模型(GRU4REC)架構
模型輸入:session 中的點擊序列,, 1 ≤ r < n,通過 one hot encoding 編碼,通過 embedding 層壓縮為低維連續向量作為 GRU 的輸入。
模型輸出:每一個 item 被點擊的預測概率,y=M(x), where y=[y1, y2...ym]。
M:模型函數。yi 是 item i 的預測點擊概率。
訓練策略
為了提高訓練的效率,文章采用兩種策略來加快簡化訓練代價,分別為:
Training strategy:為了更好的並行計算,論文采用了 mini-batch 的處理,即把不同的session 拚接起來,同一個 sequence 遇到下一個 Session 時,要注意將 GRU 中的一些向量重新初化。
Training data sample:因為 item 的維度非常高,item 數量過大的概率會導致計算量龐大,所以隻選取當前的正樣本(即下一個點擊的 item)加上隨機抽取的負樣本。論文采用了取巧的方法來減少采樣需要的計算量,即選取了同一個 mini-batch 中其他 sequence 下一個點擊的 item 作為負樣本,用這些正負樣本來訓練整個神經網絡。
損失函數
損失函數的選擇也影響著模型的效果,文章嚐試兩種損失函數:
Point-wise ranking loss,即認為負樣本為 0,正樣本為 1 的 loss function,發現訓練出來的模型並不穩定,因為在推薦裏麵,並不存在絕對的正樣本和負樣本,用戶可能對多個 item 存在偏好。
故采用 Pairwise ranking,即正樣本的 loss 要低於負樣本。本文使用了兩種基於 Pairwise ranking 的 loss function:
- BPR:一種矩陣分解法,公式:

- TOP1:一種正則估計,公式:

數據集
-
RecSys Challenge 2015:網站點擊流
-
Youtube-like OTT video service platform Collection
評價指標
recall@20、MRR
Baselines
POP:推薦訓練集中最受歡迎的 item;
S-POP:推薦當前 session 中最受歡迎的 item;
Item-KNN:推薦與實際 item 相似的 item,相似度被定義為 session 向量之間的餘弦相似度;
BPR-MF:一種矩陣分解法,新會話的特征向量為其內的 item 的特征向量的平均,把它作為用戶特征向量。
實驗結果及總結
Parallel Recurrent Neural Network Architectures for Feature-rich Session-based Recommendations
RecSys 2016
這篇文章主要貢獻:探究如何將 item 屬性信息(如文本和圖像)加入到 RNN 框架中,探究了幾種融合 item 屬性的模型框架。
-
Motivation (Why): Items typically have rich feature representations such as pictures and text descriptions that can be used to model the sessions.
-
Main Idea (What): Here we investigate how these features can be exploited in Recurrent Neural Network based session models using deep learning.
- How:
模型架構
模型輸入:item ID, Item features (texts and image)
模型輸出:next click scores of each items
1. Baseline architectures: ID only, Feature only, Concatenated input
2. p-RNN architectures: Parallel, Parallel shared-W, Parallel interaction
實驗結果及結論
Parallel 並行更新 item ID 和 feature 的模型達到最好的效果,Parallel shared-W 和 Parallel interaction 交互模型並沒有好的效果,可能原因重複的序列信息加重了模型的訓練負擔。
Incorporating Dwell Time in Session-Based Recommendations with Recurrent Neural Networks
RecSys 2017
本文的貢獻在於將用戶在 session 中 item 上的停留時間長短考慮進去。
-
Motivation (Why): 用戶在 session 中的 item 停留時間越長,越感興趣。
-
Main Idea (What): We explore the value of incorporating dwell time into existing RNN framework for session-based recommendations by boosting items above the predefined dwell time threshold.
- How:
模型架構
對於 session 中的一個序列 item 集合 x= { [x1,x2...xn] },以及每個 item xi 的停留時間
實驗結果
Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks
RecSys 2017
本文的貢獻在於提出一種層次化的 RNN 模型,相比之前的工作,可以刻畫 session 中用戶個人的興趣變化,做用戶個性化的 session 推薦。
-
Motivation (Why): 用戶的曆史信息反映了用戶的興趣愛好,應該在下一個 session 的推薦中考慮進去。
-
Main Idea (What): 提出一種層次化的 RNN 模型,可以解決 (1) session-aware recommenders:傳遞用戶的曆史興趣愛好到下一個 session 中;(2) session-based recommenders:當用戶沒有曆史記錄時,對用戶當前 session 進行建模。
- How:
模型架構
用兩個 GRU,Session-level GRU 和 User-level 的 GRU 分別刻畫 session 信息和 user曆史信息,模型架構圖如下,對於一個用戶的多個 sessions,當一個 session 結束時,用該 session 的輸出作為當前的 user 的表示,並用來初始化下一個 session 的輸入。
數據集
Baseline
實驗結果
When Recurrent Neural Networks meet the Neighborhood for Session-Based Recommendation
RecSys 2017
本文的貢獻在於提出將 session 中的 RNN 模型,與 KNN 方法結合起來,能夠提高推薦的效果。
-
Motivation (Why): 如果一個 item 在與當前 item 相似的 session 中出現,那麼這個 item 出現的可能性更大。
-
Main Idea (What): 提出一種 Session-based kNN 算法。
- How:
session-based 方法
找出與當前 session 最相近的 k most similar past sessions in the training data。
item i 在當前 session 中出現的概率是:
如果 item i 有出現在 k 個最相近的 session 中,,如果沒有,那麼認為該 item 不會出現在當前 session 中。
Hybrid Approach:將 session-based 方法和 kNN 方法結合推薦效果最好。
實驗結果及結論
結論:item 的共現信號 co-occurrence signals 可以用來預測 sequential patterns。
Improved Recurrent Neural Networks for Session-based Recommendations
DLRS 2016
本文的貢獻在於提出將在 GRU4REC 中引入了四條優化方法。
Data augmentation(數據增強)
給定一個session的輸入序列 [x1,x2...xn] , 可以產生多條訓練數據,如([x1,V(x2)], [x1,x2, V(x3)] )如下圖,可以增加訓練數據。此外,用戶可能出現誤點擊的,用 dropout 的方式來泛化數據,可以增強訓練的魯棒性。
Model pre-training
在推薦中,對於 user 和 item 更新都很快的推薦場景,最近的信息更為重要,文本提出先利用曆史所有數據預訓練出一個模型,然後隻選取最近的數據,以預訓練得到的模型權重作為初始化參數,再訓練一個最終模型。
Use of Privileged information
這是一個 generalized distillation framework。給定序列 [x1,x2...xr] 和對應 label,其相應的 privileged sequence 為
,對應 label 為
,其中 n 為該 session 總長度(剩餘序列的逆序列)。此時 loss function 變為:
其中 L 為距離函數,V(xr) 是 xr 的標簽。
Output embedding
直接預測 item 的 embedding 向量。使預測結果更具有泛化意義,相當於預測了用戶 embedding 後的語義空間中興趣表示,訓練時定義的 loss 為輸出層與該樣本在 embedding 層的 cosine 相似度。
現有 session-based neural recommendation 論文對比如下:
原文發布時間為:2017-11-9
本文作者:白婷
本文來自雲棲社區合作夥伴“PaperWeekly”,了解相關信息可以關注“PaperWeekly”微信公眾號
最後更新:2017-11-09 14:34:51