推荐算法炼丹笔记:序列化推荐算法SASRec
作者:一元 ,公眾號:煉丹筆記
背景
本文介紹一篇較早使用Self-Attention進行序列化推薦的文章,也是目前大多數序列化推薦算法非常重要的Baseline,最典型的場景可以參見標題,該篇文章的思路也是現在推薦系統崗位經常考的一篇,還不速速學習一波。
序列動態是許多當代推薦系統的一個重要特征,它試圖根據用戶最近執行的操作來捕捉用戶活動的“上下文“。本文提出了一個基于self-attention的序列模型(SASRec),它讓我們可以捕捉長期語義(如RNN),但是,使用注意機制,它的預測基于相對較少的動作(如MC)。在每一個時間步,SASRec都會從用戶的行為歷史中找出哪些項目是“相關的”,并使用它們來預測下一個項目。大量的實證研究表明,該方法在稀疏和密集的數據集上都優于各種最新的序列模型(包括基于MC/CNN/RNN的方法)。此處我們直接介紹模型。
模型
方案描述
1. Embedding層
A. Positional Embedding
2. Self-Attention Block
A.Self-Attention Layer
C.Point-Wise Feed-Forward Network: 盡管self-attention能將之前item的emebdding使用自適應的權重進行集成,但仍然是一個先線性模型,為了加入非線性能力, 我們使用兩層的DDN,
3. Stacking Self-Attention Blocks
在第一個self-attention block之后,學習item的遷移可以學習更加復雜的item遷移,所以我們對self-attention block進行stacking,第b(b>1)的block可以用下面的形式進行定義:
4. Prediction Layer
使用同質(homogeneous)商品embedding的一個潛在問題是,它們的內部產品不能代表不對稱的商品轉換。然而,我們的模型沒有這個問題,因為它學習了一個非線性變換。例如,前饋網絡可以很容易地實現同項嵌入的不對稱性,經驗上使用共享的商品embedding也可以大大提升模型的效果;
顯示的用戶建模:為了提供個性化的推薦,現有的方法常用兩種方法,(1).學習顯示的用戶embedding表示用戶的喜好;(2).考慮之前的行為并且引入隱式的用戶embedding。此處使用并沒有帶來提升。
5. 網絡訓練
方案復雜度分析
1. 空間復雜度
模型中學習的參數來自于self-attention.ffn以及layer normalization的參數,總的參數為:
2. 時間復雜度
我們模型的計算復雜度主要在于self-attention layer和FFN網絡,
里面最耗時間的還是self-attention layer, 不過這個可以進行并行化。
實驗
該次實驗主要為了驗證下面的四個問題:
1. 推薦效果比較
- SASRec在稀疏的和dense的數據集合熵比所有的baseline都要好, 獲得了6.9%的Hit Rate提升以及9.6%的NDCG提升;
2. SASRec框架中不同成份的影響
- 刪除PE: 刪除位置embedding ,在稀疏的數據集上,刪除PE效果變好,但是在稠密的數據集上,刪除PE的效果變差了。
- 不共享IE(Item Embedding): 使用共享的item embedding比不使用要好很多;
- 刪除RC(Residual Connection):不實用殘差連接,性能會變差非常多;
- 刪除Dropout: dropout可以幫助模型,尤其是在稀疏的數據集上,Dropout的作用更加明顯;
- blocks的個數:沒有block的時候,效果最差,在dense數據集上,相比稀疏數據多一些block的效果好一些;
- Multi-head:在我們數據集上,single-head效果最好.
3. SASRec的訓練效率和可擴展性
- SASRec是最快的;
- 序列長度可以擴展至500左右.
小結
在本文中,作者提出了一個新的基于自我注意的序列模型SASRec。SASRec對整個用戶序列進行建模(沒有任何遞歸或卷積操作)。在稀疏和密集數據集上的大量實證結果表明,SASRec模型優于現在最優的基線,并且比基于CNN/RNN的方法快一個數量級。
參考文獻
總結
以上是生活随笔為你收集整理的推荐算法炼丹笔记:序列化推荐算法SASRec的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐大赛如何在一周时间内打进决赛
- 下一篇: JDATA绝对语义识别挑战大赛-季军方案