標籤:

《Parallel Recurrent Neural Network Architecture for Feature-rich Session-based Recommendation》筆記

轉載請註明出處:西土城的搬磚日常

原文鏈接:Parallel Recurrent Neural Network Architectures for Feature-rich Session-based Recommendation

來源:RecSys 2016

問題介紹

在基於會話的用戶物品推薦場景中,item-item為目前普遍採用的模型,大部分的item-item模型僅包括用戶的點擊物品的基本信息,考慮到點擊的物品還具有image,text description等其它特徵,本文作者設計了一系列的RNN網路來利用這些特徵,嘗試通過rich feature改善推薦結果,並在本文中給出了多種針對parellel-RNN的訓練方法。

相關工作

上圖為所有本文中所涉及到的模型,左側三個為非p-RNN的基準模型,右側三個為本文提出的三種不同結構的p-RNN。

P-RNN Architectures

p-RNN模型即為對於物品的每一個特徵,分別採用不同的並行的RNN網路來進行訓練。最後不同的結構通過不同的連接方式從隱藏層產生輸出。將不同特徵通過並行的網路進行訓練的原因為不同特徵,例如ID和image,一個為one hot vector,一個為圖像抽取的特徵向量,稀疏度差別很大,分開訓練會對調參帶來便利。

1.Parallel:物品的ID向量和feature向量獨立的從輸入各自的網路到輸出,計算出各自的score,然後通過加權合併,最後通過一個激勵函數產生最終的輸出。

2.Parallel shared-W:與第一個網路區別在於從隱藏層到輸出採用共享參數矩陣W,將各自隱藏層加權合併之後,乘以共享參數矩陣,最後通過激勵函數輸出,可以理解為將兩個網路的信息合併這一步從輸出層移到了隱藏層。

3.Parallel interaction:與第一個網路區別在於feature網路的隱層在計算輸出前,與ID網路的隱層做element-wise級的乘操作,再進行自己的矩陣運算得到輸出,而ID網路的結構不變。

Loss Function

採用了TOP1 loss作為損失函數,具體為:

網路的輸出為N維的向量,N為所有item的數量,每一維的值為對應item的分數,對應著下一次點擊的可能性。因為N很大,直接計算包括所有item的loss變的很困難,所以文中在計算loss時採用了抽樣,其中Ns即為抽樣值(維數),r?s,i為目標item的分數,r?s,j為抽樣中其他(negative)item的分數,Ileft{cdot right} 為指示函數,在訓練中用sigmod函數近似代替。在優化上述損失函數過程中,通過調整參數使得i的分數變高。但是會有一個問題,當一些與目標item相似的item出現在抽樣中時,會使得目標item的分數變的越來越高,使得損失函數不穩定,本文採取了添加關於其他item的正則項,將其分數向0調整,修正後的損失函數為:

Session-parallel Mini-batches

本文在batch訓練上借鑒了Session-based Recommendations with Recurrent Neural Networks中的session-parallel mini-batches方法。

原因有兩個:1、不同session的長度差別非常大,劃分不理想。2、實驗目的就是為了捕捉session內容隨著時間step的變化,傳統的串列劃分batch沒有意義。

Feature Extraction

本文的網路的輸入直接為已經處理好的特徵向量,ID為one hot vector,image為通過CNN網路抽取的圖像特徵向量,text description為unigram+bigram通過TF-IDF的詞袋模型。提前將特徵向量訓練好再送入網路中也為調參帶來便利。

Strategies for Training p-RNNs

本文不僅提出了多種p-RNN的模型,同時也針對提出的模型制定了一些訓練中的策略。本文中的p-RNN並行網路中的不同分支雖然前向傳播時互相獨立,但如果按標準的反向傳播進行學習時(同一數據的loss在整個網路中進行反向傳播),會同時學習到數據中相同的聯繫,所以容易達到局部最優,本文在訓練順序上提出了一些適合於p-RNN的方式。

1.Simultaneous:整個網路的所有參數同時進行訓練,用作baseline。

2.Alternating:每一個epoch對不同的網路分支進行訓練。比如第一個epoch對ID網路進行訓練,這是固定feature網路的參數;下一個epoch固定ID網路的參數,訓練feature網路。當每個網路都分支訓練完一遍後從頭繼續循環。

3.Residual:每個網路分支依次訓練,但是不會循環,每個網路分支的單次訓練長度比Alternating要長,比如ID網路訓練10個epoch,接著feature網路訓練10個epoch。每個網路分支基於之前訓練過的網路分支的residual error的ensemble進行訓練。

4.Interleaving:對於每個mini-batch,在網路分支間交替訓練,每個網路分支基於之前網路分支的residual error進行訓練。更為頻繁的交替訓練能使得網路之間的訓練更為平衡。

實驗結果

訓練集

本文在兩個數據集上進行了實驗:VIDXL——從類似YouTube的一個視頻網站上收集的用戶觀看視頻記錄;CLASS——從一個分類網站上收集的用戶產品瀏覽記錄。

實驗結果

VIDXL實驗結果:

從實驗結果可以發現:

1、使用RNN網路進行序列預測的優勢完全體現出來,僅僅使用了ID only的網路就比baseline結果提高了不少。

2、Feature only的網路表現的不好,原因可能是僅僅通過feature(在這個數據集中為image中抽取的特徵)無法充分表示item。

3、ID與feature聯合的結果並不如ID only的結果,可能是單層的GRU對於差別較大的兩種混合的特徵無法完全的抽取出關係,feature的部分干擾了原本結果更好的ID部分。

4、所有的p-RNN結構中,樸素的結構反而獲得了更好的結果,說明過於複雜的網路在同樣的基礎的訓練方法上,可能沒有得到充分的利用,並不一定不好。

作者選擇了Parallel做了進一步的實驗:

VIDXL實驗結果:

CLASS實驗結果:

從實驗結果中可以得出:

1、hidden units的增加,增大了RNN網路的容量,獲得了更好的結果,這是意料之中的,另外作者通過實驗發現在超過1000個hidden units後實驗結果並無明顯提升。

2、Feature only的網路在增加了hidden units之後,實驗結果超過了baseline,說明隨著此時的RNN網路學習能力增強(容量擴大),能更多的捕捉到feature中的關係。

3、在ID only和Parallel(int)的比較中發現,在保證了相同的Recall結果的同時,獲得了更好的MRR,因為RNN網路原本的強大學習能力,使得在Recall上無明顯差異,而增加了rich feature的p-RNN,能在結果的rank上提升指標,驗證了作者的想法。

最後以柱狀圖體現p-RNN的improvement:

簡評

本文在基於RNN網路做Session-based物品推薦的大背景下,關注平時沒用用到的metadata,圍繞物品本身的rich feature,設計了parallel-RNN網路,通過大量的對比實驗,驗證了多特徵對於用戶點擊預測指標能起到一定的提升。思路非常清晰,實驗也很完整,大量的對比,能從中發現許多關於訓練和模型結構的有用信息,也算良心。


推薦閱讀:

KPI&項目&技術&產品
UCB演算法升職記——LinUCB演算法
【推薦系統那些事兒·二】常用推薦策略介紹
【博客存檔】Machine Learning With Spark Note 2:構建一個簡單的推薦系統
【翻譯+批註】亞馬遜推薦二十年

TAG:推荐系统 |