推薦系統遇上深度學習(三十三)--Neural Attentive Item Similarity Model

2021-12-10 小小挖掘機

收錄於話題 #推薦系統遇上深度學習 95個內容

在介紹本篇之前,先說一下上一篇中的錯誤,在第三十一篇中,我們介紹了自注意力機制在推薦系統中的應用,文章使用的是表示學習的思路。最後的預測評分越低,代表用戶i和物品j越相近,但是之前的文章中沒有仔細思考這一點,所以可能誤導了大家。不過該文章已經重新推送,原文已經刪除。大家可以先回顧一下上一篇文章:推薦系統遇上深度學習(三十一)--使用自注意力機制進行物品推薦

好了,回歸本文!

論文名稱:《NAIS: Neural Attentive Item Similarity Model for Recommendation》
論文地址:https://arxiv.org/pdf/1809.07053.pdf

基於物品的協同過濾ItemCF是推薦領域常用的方法,其關鍵是評估item之間的相似性。本文將要介紹Neural Attentive Item Similarity Model(簡稱NASI)來解決ItemCF問題。該模型將注意力機制和神經網絡相結合,提升了模型的預測準確性。接下來,我們將從基本的ItemCF問題入手,一步步得出NASI模型。

1、ItemCF問題簡介1.1 標準ItemCF問題

為了預測用戶u對於物品i的評分,ItemCF的最基本思想是計算物品i與用戶u之前交互過的所有物品的相似性,預測評分計算公式如下:

其中,Ru+是用戶所有交互過的物品,ruj是用戶u對物品j的反饋,sij是物品i和物品j的相似性。其中,ruj可以是顯式的評分,如0-5評分,也可以是隱式的反饋,如點擊為1,未點擊為0。

物品之間的相似性,直觀的方法是根據用戶-物品交互矩陣,將物品i所在的列作為其向量表示,進一步使用餘弦相似度等度量方式計算物品之間的相似性。但是這種方法缺乏針對推薦的優化,類似於一種靜態方法,物品的向量不是通過優化得到的。因此性能並不是那麼優秀。所以接下來我們將介紹Learning-based Methods,這些方法可以自適應地從數據中學習item相似度,從而提高itemCF的準確性。

1.2 Learning-based Methods for Item-based CF

Learning-based Methods通過優化一個目標函數,來學習item之間的相似性,如SLIM(short for sparse Linear Method)方法中,目標函數設定為:

上面的目標函數中,S代表物品的相似度矩陣。而預測評分的計算仍然基於1.1中的方法。假設物品個數為I,那麼模型需要優化的參數有I * I個。上面的式子同時使用L1正則和L2正則,防止了過擬合,增加了模型的稀疏性。但也存在一定的缺點,當物品集數量很大時,參數太多難以優化,同時,模型只能學習同時被打過分的物品之間的兩兩的相似性。

為了解決這個問題,我們又有了FISM(short for factored item similarity model)方法,其用低維度嵌入向量表示每一個物品。對於每一個物品,都有兩個嵌入向量p和q,當物品是預測的物品時,使用p,當物品是交互歷史中的物品時,使用q,此時用戶評分計算方式如下:

FISM只考慮隱式反饋。對於上面的預測模型,可以通過優化推薦的標準損失(對數損失或者平方損失)來學習物品的嵌入向量表示p和q。

雖然FISM方法取得了不錯的性能,但我們認為,當獲得用戶的表示時,它對用戶的所有歷史項目的平等處理會限制其表示能力。因此,我們將注意力機制加入其中,用於區分歷史item的重要性,提出了NASI模型。

2、NASI模型介紹

這裡,我們仍然只考慮隱式反饋,模型設計過程如下:

2.1 第一版

在第一版的設計中,我們認為每個物品有一個固定的注意力權重aj,因此評分預測計算如下:

很顯然,這是不合理的,我們沒有考慮目標物品對於歷史物品的影響。於是我們有了第二版設計。

2.2 第二版

在第二版的設計中,我們使用aij來表示歷史物品j和目標物品i的權重,評分計算如下:

這樣顯然也是有缺陷的,當訓練集中物品i和物品j沒有同時出現過時,aij是無從學習的。於是我們有了第三版設計。

2.3 第三版

第三版設計中,我們使用嵌入向量計算出權重,即:

f通常用一個神經網絡來表示,主流的計算方法有以下兩種:

通過f計算出的權重,我們還需要通過softmax進行歸一化,因此,評分預測的計算如下:

這麼做看似是完美了,但是在實際的實驗中,卻沒有取得理想的效果。這個問題主要來自softmax,在傳統的注意力機制使用的場景中,如CV、NLP中,注意力機制的長度變化不是很大(這裡的長度指圖像中的區域個數,句子中單詞的個數等等),但是在推薦領域中,用戶的歷史交互長度可能變化很大。在MovieLens和Pinnterest數據中,用戶歷史長度的分布如下圖所示:

可以看到,對於兩個真實數據集,用戶的歷史長度變化很大,具體而言,用戶歷史長度的均值和方差分別為(166,37145),(27,572)。在MovieLens數據集中,所有用戶的平均長度為166,最大長度為2313。也就是說,最活躍用戶的平均注意力權重是1/2313,比平均用戶(即,1/166)少大約14倍。如此大的注意權重差異將導致優化模型的item嵌入是個問題。(可以簡單的想,同樣的物品i和物品j,在活躍用戶和非活躍用戶中得到的aij差異會非常大)

為了解決用戶歷史長度不同的問題,我們便有了最終版的NAIS模型。

2.4 最終版

在最終版的模型中,我們對活躍用戶的注意力權重進行一定的懲罰,如下:

而模型的損失函數使用對數損失+L2正則:

模型的框架圖如下:

好了,模型介紹就到這裡了,關於模型中的一些細節,大家可以閱讀原論文。

3、NASI代碼實現

作者給出了Python2版本的代碼:https://github.com/AaronHeee/Neural-Attentive-Item-Similarity-Model

這個代碼在Python3中是無法運行的,主要是Python3中range函數得到的不是list,需要使用list()函數進行轉換,Python3版本的代碼地址:https://github.com/princewen/tensorflow_practice/tree/master/recommendation/Basic-NAIS-Demo

推薦閱讀:

推薦系統遇上深度學習(二十五)--當知識圖譜遇上個性化推薦

推薦系統遇上深度學習(二十六)--知識圖譜與推薦系統結合之DKN模型原理及實現

推薦系統遇上深度學習(二十七)--知識圖譜與推薦系統結合之RippleNet模型原理及實現

推薦系統遇上深度學習(二十八)--知識圖譜與推薦系統結合之MKR模型原理及實現

推薦系統遇上深度學習(二十九)--協同記憶網絡理論及實踐

推薦系統遇上深度學習(三十)--深度矩陣分解模型理論及實踐

推薦系統遇上深度學習(三十一)--使用自注意力機制進行物品推薦

推薦系統遇上深度學習(三十二)--《推薦系統實踐》思維導圖

有關作者:

石曉文,中國人民大學信息學院在讀研究生,美團外賣算法實習生

簡書ID:石曉文的學習日記(https://www.jianshu.com/u/c5df9e229a67)

天善社區:https://www.hellobi.com/u/58654/articles

添加微信sxw2251,可以拉你進入小小挖掘機技術交流群喲!

相關焦點