閱讀918 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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 輸入為前一時刻隱藏層?tp=webp&wxfrom=5&wx_lazy=1和當前輸入?tp=webp&wxfrom=5&wx_lazy=1輸出為下一時刻隱藏層信息?tp=webp&wxfrom=5&wx_lazy=1GRU 包含兩個門?tp=webp&wxfrom=5&wx_lazy=1:reset 門和?tp=webp&wxfrom=5&wx_lazy=1: update 門,其中?tp=webp&wxfrom=5&wx_lazy=1用來計算候選隱藏層?tp=webp&wxfrom=5&wx_lazy=1,控製的是保留多少前一時刻隱藏層?tp=webp&wxfrom=5&wx_lazy=1的信息;?tp=webp&wxfrom=5&wx_lazy=1用來控製加入多少候選隱藏層?tp=webp&wxfrom=5&wx_lazy=1的信息,從而得到輸出?tp=webp&wxfrom=5&wx_lazy=1。GRU 可以靈活控製長短距離的依賴信息,適合刻畫序列數據。

4eb52359d9f7ea404f1755f0a9c58ffe9fc55b24

到此,已經說明用 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 中的點擊序列,?tp=webp&wxfrom=5&wx_lazy=1, 1 ≤ r < n,通過 one hot encoding 編碼,通過 embedding 層壓縮為低維連續向量作為 GRU 的輸入。 

模型輸出:每一個 item 被點擊的預測概率,y=M(x), where y=[y1, y2...ym]。

M:模型函數。yi 是 item i 的預測點擊概率。

8db450b628e5f22ccb1f22d36a0bb9db33700b5c

訓練策略 

為了提高訓練的效率,文章采用兩種策略來加快簡化訓練代價,分別為:

Training strategy:為了更好的並行計算,論文采用了 mini-batch 的處理,即把不同的session 拚接起來,同一個 sequence 遇到下一個 Session 時,要注意將 GRU 中的一些向量重新初化。

791b04850c0c0ba85fa0cc75c82adb6cea7905d9

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:一種矩陣分解法,公式:
2b1f7924f5d4e4928ecc2f698d9a61a824af3731

  •  TOP1:一種正則估計,公式:
e1c3163b7698c734622bf588c34e5382516a95e7

數據集 

  • 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 的特征向量的平均,把它作為用戶特征向量。

實驗結果及總結

0444bd5ccfe25b28c24c2a5f01c1ce5e722614c9

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

96097baabb2a94b46eba0f6c0c7e3cf229c9a1df

實驗結果及結論

Parallel 並行更新 item ID 和 feature 的模型達到最好的效果,Parallel shared-W 和 Parallel interaction 交互模型並沒有好的效果,可能原因重複的序列信息加重了模型的訓練負擔。

e99d6d0d9abad23b9af0f9d9738e808cd865a503

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 的停留時間

?tp=webp&wxfrom=5&wx_lazy=1,設定單位時間閾值 t。如此我們可以將每個 item 按照單位時間劃分成?tp=webp&wxfrom=5&wx_lazy=1個時間片。如下圖所示,其餘訓練方式與第一篇文章相同,實驗證明可以提升推薦效果。

7055e67ae5c6cc7a02e6b03b08eb6ee718d2b928

實驗結果

b99ecb49aca112db36ac42003d5995730c024b78

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 的輸入。

d1317dfad5e40cdec6d9f028f073df6746979e8e


數據集

98b1f4f33d5dac95434e50e3ac50649c1867c596

Baseline

bff431a53622717174677d890da19ade990ff191

實驗結果

d347719c6a549543c53abcba1b2c273f2a10c4b0

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 中出現的概率是:

d1cbb5a5fe26beb45a93ebe9556391d6f0cb6a25

如果 item i 有出現在 k 個最相近的 session 中,?tp=webp&wxfrom=5&wx_lazy=1,如果沒有,那麼認為該 item 不會出現在當前 session 中。 


Hybrid Approach:將 session-based 方法和 kNN 方法結合推薦效果最好。


實驗結果及結論

78c540067aba3027127bfc9f2408347fb201f03578c540067aba3027127bfc9f2408347fb201f035

結論: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 的方式來泛化數據,可以增強訓練的魯棒性。

a7bb38e1ba3f8fa14fe5720acf7ad49257565d5c

Model pre-training

在推薦中,對於 user 和 item 更新都很快的推薦場景,最近的信息更為重要,文本提出先利用曆史所有數據預訓練出一個模型,然後隻選取最近的數據,以預訓練得到的模型權重作為初始化參數,再訓練一個最終模型。

Use of Privileged information

這是一個 generalized distillation framework。給定序列 [x1,x2...xr] 和對應 label?tp=webp&wxfrom=5&wx_lazy=1,其相應的 privileged sequence 為?tp=webp&wxfrom=5&wx_lazy=1,對應 label 為?tp=webp&wxfrom=5&wx_lazy=1,其中 n 為該 session 總長度(剩餘序列的逆序列)。此時 loss function 變為:

680a0ea2adac5f0ad66d3499583696e464091b8f

其中 L 為距離函數,V(xr) 是 xr 的標簽。

Output embedding

直接預測 item 的 embedding 向量。使預測結果更具有泛化意義,相當於預測了用戶 embedding 後的語義空間中興趣表示,訓練時定義的 loss 為輸出層與該樣本在 embedding 層的 cosine 相似度。 

現有 session-based neural recommendation 論文對比如下:

017dd99a3c5b2486aafbe622dd4b33d9054810fd


原文發布時間為:2017-11-9

本文作者:白婷

本文來自雲棲社區合作夥伴“PaperWeekly”,了解相關信息可以關注“PaperWeekly”微信公眾號

最後更新:2017-11-09 14:34:51

  上一篇:go  【活動已結束】贏取LIFANG.NET.CN 使用權至2023年
  下一篇:go  聚合支付”為什麼很多遊戲商家選擇他