SASRec: Self-Attentive Sequential Recommendation阅读笔记
SASRec
Self-Attentive Sequential Recommendation
2018年的經典文章
摘要
時序動態是許多現代推薦系統的一個關鍵特征,它們試圖根據用戶最近執行的操作來捕捉用戶活動的“背景”。為了捕捉這種模式,出現了兩種方法:馬爾可夫鏈(MC)和遞歸神經網絡(RNN)。馬爾科夫鏈假設用戶的下一個動作可以根據他們的最后(或最后幾個)動作來預測,而RNN原則上允許發現更長期的語義。一般而言,基于MC的方法在模型簡約性至關重要的極稀疏數據集中執行得最好,而RNN在較密集的數據集中執行得更好,因為較高的模型復雜性是負擔得起的。我們工作的目標是通過提出一個基于自我注意的順序模型(SASRec)來平衡這兩個目標,該模型允許我們捕獲長期語義(如RNN),但使用注意力機制,基于相對較少的動作(如MC)進行預測。在每一個時間步,SASRec都會試圖從用戶的操作歷史中找出哪些項目是“相關的”,并用它們來預測下一個項目。大量的實證研究表明,我們的方法在稀疏和密集數據集上的性能都優于各種最先進的序列模型(包括基于MC/CNN/RNN的方法)。此外,該模型的效率比基于CNN/RNN的同類模型高一個數量級。注意力權重的可視化還顯示了我們的模型如何自適應地處理不同密度的數據集,并揭示活動序列中的有意義的模式。
相關工作
方法
1. 符號系統
M:\mathbf M:M: 項目embedding矩陣;
E:\mathbf E:E: 輸入矩陣,每個用戶不同,是項目embedding的順序堆疊
2. 位置信息
在輸入矩陣的每一行加入對應的位置向量P\mathbf PP, 這里的P\mathbf PP是可學習的。
3. 自注意力層
常規,用了3個投影矩陣,在這里,有個額外的因果關系,由于是序列模型,所以模型在預測第t+1項時,應該只考慮前面的t項。然而,自注意力機制的第t個輸出包含了后續項目的embedding, 會使得模型不穩定,于是作者修改了注意力,禁止了Qi\mathbf Q_iQi?和Kj\mathbf K_jKj?之間的聯系。(怎么實現的這里沒說)
接下來是常規的FFN環節賦予模型非線性,這里用的是RELU激活函數。
4. 注意力模塊堆疊
就是把FFN的輸出作為attention的輸入,再進行一輪attention+FNN的組合,當然,這里會出現三個問題:
所以進行如下操作:
每層添加dropout,然后再把輸入加進去。
5. 預測
前面FNN的輸出就是F\mathbf FF, 再乘上項目embedding矩陣的轉置,就是對應項目iii的預測得分。
額外操作
為了減少參數,并且防止過擬合,作者采用共享的項目embedding矩陣
6. 訓練
oto_tot?被定義為ttt時刻預期的輸出。大S和小s的區別在于:大S是真實序列,不包含填充。
比如定義序列最大長度為5,iii是項目,那么:Su={i1,i2,i3}S^u=\{i_1,i_2,i_3\}Su={i1?,i2?,i3?},s={i0,i0,i1,i2,i3}s=\{i_0,i_0,i_1,i_2,i_3\}s={i0?,i0?,i1?,i2?,i3?},i0i_0i0?就是填充項
oto_tot?就是說:如果上一個項目是填充項,那么輸出就是填充項,當前時刻ttt不是序列末尾時,就輸出原有序列的下一個,到最后ttt時刻,即序列末尾時,輸出的才是預測項目。
7. 損失函數
當oto_tot?是填充項時,忽略。損失函數是二元交叉熵??梢钥闯鰮p失函數的目的是,讓序列內的項目的相關性盡可能大。
總結
和AttRec在注意力機制上的使用的區別在,AttRec少用一個投影矩陣,使得V不同而已。
對數據集的使用僅僅是序列信息,嘗試在模型中融入項目特征,現在的難點在于除了電影數據集以外,序列模型各baseline最常用的數據集有:Movielens-1M,Amazon數據集的beauty,sports,toys.
但是Amazon的數據集的項目特征只有一個“category”,而且數據集需要預處理,數據集也有點大。
總結
以上是生活随笔為你收集整理的SASRec: Self-Attentive Sequential Recommendation阅读笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络渗透测试实验四
- 下一篇: 西安80坐标系转换工具