【論文筆記】注意力機制的協同過濾模型 Attentive Collaborative Filtering(ACF)
- 2019 年 10 月 7 日
- 筆記
導讀
隨著科技的發展,多媒體內容(圖片、影片等內容)成為當今的網路資訊的主要內容。為了在高度動態的環境中為用戶篩選大量的多媒體內容。我們需要在網路多媒體內容中引入推薦系統,特別是基於協同過濾的系統,本文主要介紹一種加入了注意力機制的協同過濾模型 Attentive Collaborative Filtering(ACF)——旨在解決多媒體推薦中的項目與組件級隱式回饋問題。
No.1
核心思想
ACF是一種分層神經網路,它根據項目級別的項目和組件級別的內容對用戶的偏好分數進行建模。ACF以貝葉斯個性化排名(Bayesian Personalized Ranking,BPR)作為基本模型,引入注意力機制,以解決多媒體推薦中的項目與組件級隱式回饋問題。主要由兩個注意力模組組成:組件(component)級注意力模組,學習對於項目中的組件(component)內容的偏好評分,並且對於每個項目的內容特徵進行表示;項目(item)級別的注意力模組,學慣用戶對於項目偏好的評分並且根據用戶與之交互的項目集來表徵用戶。
No.2
準備工作
符號及名詞解釋
- item:圖片與影片
- component :圖片的一塊區域或者影片的一幀.
- item-level implicitness:用戶對於item的喜好是未知的(即使是喜歡,但喜歡程度未知)
- Component-Level implicitness:對於item的不同的component的喜好是未知的(影片的播放記錄並不能說明用戶喜歡這個影片的全部)。
- 多媒體中的隱式回饋(implicit feedback):對照片的點贊、瀏覽的影片、下載的音樂等。
- R:表示 user_item交互矩陣(R∈R ^ { M * N},M和N分別表示用戶和項目的數量。)
- R(i):表示與用戶i交互的所有項目集合
- U = [u_1,…,u_i]表示用戶潛在向量
- V = [v_1,…,v_l]表示項目潛在向量
- x_{lm}:輸入,表示項目l集合中第m個組件的特徵
- 丨x_{l*}丨:表示項目集合的長度
- p_l:表示輔助項目潛在向量,被用來基於用戶交互的項目集上表示用戶
- ~x_l:表示內容特徵,由Component級別的注意力模組求得
- α(i,l):項目級注意力模組權重,表示用戶i在項目l中的偏好。
- β(i,l,m):Component級注意力模組權重,表示用戶i在項目l的第m個組成部分(component)的偏好程度
Bayesian Personalized Ranking( BPR )
基於貝葉斯後驗優化的個性化排序演算法將用戶對項目的評分(顯示回饋「1」,隱式回饋「0」)處理為一個pair對的集合,其中j為評分為1的物品,k為評分為0的物品。BPR不像在SVD中那樣以基於點的方式學習(point-wise),而是模擬一個用戶和兩個項目的三元組(三元組<i,j,k>表示對用戶i來說,相對於項目k用戶i更喜歡項目j)。BPR的目標函數為:
其中:
- σ是sigmoid 函數
- λ是正則化參數
- ^R_{ij}為 user_item交互矩陣,表示為:
丨涉及論文《BPR: Bayesian Personalized Ranking from
Implicit Feedback》
No.3
模型
框架
上圖為ACF的框架,主要包含了組件(component)級注意力模組與項目(item)級注意力模組。各模組的輸入輸出如下:
Component-Level Attention
組件級的注意力模組式利用兩層神經網路來求得組件(component)級注意力權重β(i, l,m),然後根據注意權重(β(i, l,m))構建內容表示特徵( ~x_l)。用戶 i 的項目 l 的第m個組件特徵 x_lm的注意力得分為:
其中:
- 矩陣W_{2 *}和偏置b_2是第一層神經網路的參數;
- 矢量w_2和偏置c_2是第二層參數;
- ϕ( )是RELU函數
在得到注意力得分 b(i, l,m)之後需要通過使用Softmax函數進行歸一化來獲得最終的組件component)級權重 β(i, l,m)
在獲得組件級注意力權重β(i,l,m)之後,可以得到用戶i對於項目l中的哪一部分更感興趣,即可求得用戶 i 的偏好項目l的內容特徵 ~x_l:
Item-Level Attention
項目級別注意力模組的目標是選擇代表用戶偏好的項目,然後聚合項目資訊的表示以表徵用戶。與組件級注意模組一樣,項目級別注意力模組也是使用兩層神經網路來計算項目級注意力權重α( i,l)。給定用戶潛在表示u_i,項目潛在向量v_l,鄰域輔助項目向量p_l 和項目內容特徵~x_l之後,可以得到項目級注意力得分a( i,l):
其中:
- 矩陣W-{1 *}和偏置b_1是第一層參數;
- 矢量w_1和偏置c_1是第二層參數;
- ϕ( )是RELU函數
注意力得分(a(i,l))在經過Softmax歸一化後可以獲得最終的項目級權重α( i,l)。
則聚合項目的表示得到的用戶表徵為:
即最終的用戶表示為:
目標函數
ACF通過優化觀察到的項目(positive)和未觀察到項目(non observable)之間的成對排名(pair wise)對BPR的目標函數進行了優化。ACF的目標函數可以表示為:
在RBF模型中,我們知道
在AFM中除了用u_i明確地參數化每個用戶i之外,ACF還在與用戶i有交互的項目集合R(i)上對用戶進行建模。用戶i的最終表示為:
因此,目標函數表示為:
在得到目標函數之後,可以使用梯度下降法來進行優化。該模型的偽程式碼為:
No.4
實驗
程式碼地址:
https://github.com/ChenJingyuan91/ACF
雖然作者開源了程式碼,但只提供了模型實現部分,但對於組件內容特徵的提取並未詳細說明,因此此論文無法復現。
數據
論文中使用了Pinteres(影像),Vine(影片)數據集進行對比實驗,數據集示例如下:
特徵提取
在原始的圖片(影片)不能直接進行訓練,需要先提取圖片(影片)中的組件特徵(即論文中的x_{l*}),對於圖片或者影片數據集,特徵提取方法如下:
- 圖片:文中使用 ResNet152 架構中的res5 層提取得到圖片的組件特徵(x_{l*})。例如:對於每個影像,7×7×2048特徵圖可以被視為影像中49個不同區域的2048-D的49個特徵向量。
- 影片:對於每個影片,組件被認為是影片的一幀,使用ResNet-152中pool5層的輸出作為每幀的特徵向量。
參數設置
- batch size: [256,512]
- 潛在特徵維度(latent feature dimension) :[32,64,128],在不指定維度時,只顯示D=128的結果
- 學習率:[0.001,0.005,0.01,0.05,0.1]
- 正則值: [0.00001,0.0001,0.001,0.01,0.1,0]
- K=100
評估方法
為了評估項目推薦的效果,文中使用了 leave-one-out 評估方法,只保留用戶最近的一次交互作為測試集,使用top-K推薦中常用的HR@K(Hit Ratio)與NDCG@K(Normalized Discounted Cumulative Gain)作為評價指標。
- HR:評價推薦的前 K個 items 中,有多少是能夠命中用戶實際偏好的。該指標是評價召回率的(值越大越好),計算公式為:
- NDCG:
其中:
- 若top-K中第i個位置的項目在測試集中,r_i為1,否則·為0
- Z_k為IDCG的計算公式,Z_k表示為:
實驗結果
為了更好地驗證ACF模型的效果,這篇論文對比了不同模型在不同數量的預測向量、TOP-K列表的不同位置以及不同稀疏程度的用戶上的表現。
除了模型對比,該論文還比較了注意機制在項目和組件級別的影響(表2)以及用戶資訊(U),項目資訊(V和P)和內容資訊(X)的影響(表3)。
從表2中可以得到項目級別的注意機制對我們的模型貢獻更多。可能是由於項目級關注機制可以捕獲所有用戶的交互中的代表項,而組件級注意力機制可能僅在具有豐富內容的複雜項目中起作用。
從表3可以知道注意機制可以利用每個用戶和項目的特徵來提高推薦任務的性能。並且在提高推薦系統的性能上用戶資訊比項目資訊更有用。
論文地址:
http://staff.ustc.edu.cn/~hexn/papers/sigir17-AttentiveCF.pdf