一、摘言
之前協同過濾利用user-item交互歷史很好的表示了user和item。但是由於用戶行為的稀疏性,效果提升有限。
隨着社交網絡的發展,social recommendation system被提出,利用user的周圍鄰居的偏好來減輕用戶稀疏性,從而得到更好嵌入表示模型。
然而現在的社交網絡推薦模型都是簡單的利用周圍鄰居提出靜態模型,而沒有模擬信息在全局的循環傳播過程,這很可能會提升推薦性能。
所以,本文設計了一個層級的影響傳播結構(layer-wise influence propagation structure ),建模用戶的潛在嵌入表示是如何隨着社交傳播過程的持續而改變的。作者還進一步展示了模型的通用性,而且模型也能應用於這些情況,當user or item屬性或者社交網絡結構不可得時。
二、雜記
-
社交推薦的一般路線:把user和item先表示成低維向量,然后求其內積去預測user對item的偏好;
-
文中模型主要思想:提出的模型Diffnet,是基於神經網絡模型模擬社交影響力傳播過程,從而能更好的表示user和item,建模社交推薦。主要思想是為用戶設計一個層次的影響傳播結構,建模在社交傳播過程中,用戶的潛在表示是如何演變的。
-
具體來說,傳播過程首先是在每個用戶的特征融合和用戶隱向量(描述用戶潛在行為偏好)的基礎上,為每個用戶初始化嵌入表示;在item端,由於item不會在社交網絡中傳播,故每個item嵌入表示是由自由的item隱向量和其本身特征融合得到的。隨着影響里傳播到事先定義好的第K步,第K層的用戶興趣表示也就得到了。
-
模型還能無縫銜接到經典的CF模型上,例如BPR和SVD++。
-
貢獻三點:
① 提出一個具有層級傳播結構的DiffNet模型,建模在社交推薦中迭代的動態傳播過程。除此之外,DiffNet有一個融合層,能夠包含協作關系和屬性內容的嵌入表示。(協作關系可能是指user-item的關系。//TODO)
② DiffNet是時間和空間都高效的,而且能泛化到相關的推薦模型上,也能很好的處理沒有用戶和item屬性的情況。
③ 在Yelp和Flickr上實驗結果要比其他模型高13%以上。
三、問題定義和一些准備工作
問題定義:social recommendation 其實都差不多,都是user-user,user-item兩個網絡,然后預測user會不會對item感興趣。
基於潛在嵌入的模式是目前在社交系統中最成功、有效的描述協同信息的方法之一。也就是前文說的社交推薦的一般路線(把user和item先表示成低維向量,然后求其內積去預測user對item的偏好)。那各個文章的看點就是,如何去表征用有限的信息,設計良好的表示方法,去表征user和item,使得解釋性更好,效果更優了。
SVD++:SVD++利用用戶對item的歷史評分記錄,得到更好的user嵌入表示。所以在SVD++中,每個用戶的嵌入表示除了利用經典隱因子模型的嵌入表示,還多了一個描述他歷史評分item信息的嵌入表示,就是:
由於有時候,用戶本身還有一些屬性信息,所以也會把屬性信息加入到公式當中去:
通常,不同的嵌入模型是在嵌入矩陣的表示和優化函數上存在差異。例如BPR。
貝葉斯個性化排序(Bayesian Personalized Ranking,BPR):是一個成功的隱式反饋中基於節點對的優化函數。在BPR中,嵌入矩陣U和V是符合高斯先驗的嵌入表示,等價於在優化函數中加入L2范式的正則項:
當前社交推薦模型沒有考慮到社交傳播過程。而且,當用戶屬性可獲得時,這些社交推薦模型需要重新設計來利用這些屬性,以獲得更好的推薦結果。[17](PS:此模型不是把feature作為可選的選項吧,這樣,有feature的時候,就可以加到模型中,沒有feature的時候,也就是結果差點,這樣就比較flexible了么?)
四、模型真思想
1. 大概了解
輸入:user-item對\(<a,i>\);輸出:用戶u喜歡物品i的概率。
整個框架分為四部分:①嵌入層;②融合層;③層級影響傳播層;④預測層;
基本流程:
- 嵌入層輸出user和item的嵌入表示。
- 對於每個user(item),都是通過融合層,融合用戶的free embedding和user(item)的相關特征,產生hybrid user(item)表示。
- 然后融合的用戶嵌入表示送入影響傳播層,影響傳播層利用一個層級的結構來建模在社交網絡中的傳播過程,這也是DiffNet的核心思想。
- 當影響力傳播過程達到平衡后,輸出層產生最終的user-item預測偏好。
2. 具體過程:
Embedding Layer:把user和item的one-hot表示,映射為潛在表示;
Fusion Layer:此部分叫融合層,其實就是把需要融合的部分\(concat\)起來,然后通過一個\(FC\)層。例如,對於一個用戶a,\(p_a\)(表示???)和用戶相關的屬性\(x_a\)作為輸入,然后(拼接起來,通過一個轉換矩陣\(\mathbf{W}^0\)和一個非線性變換\(g\))輸出融合后的嵌入表示\(h_a^0\),來刻畫基於各種各樣的輸入,用戶初始的興趣。同樣對於item也做同樣的操作,如下公式:
influence Diffusion Layers:把前面的輸入\(h_a^0\)送入這一層,主要是建模用戶潛在的偏好在社交網絡中的動態傳播過程。由於信息在社交網絡中是隨着時間不斷傳播的,所以影響力傳播部分也是根據這個原理,類似的建立網絡結構。每個層k從之前的層中獲得並輸入用戶表示,在當前社交傳播過程結束后,輸出用戶更新的表示。之后,更新的用戶表示又被輸入到下一個層中,在進行下一次傳播過程。
舉個例子,對於用戶a,\(h_a^k\)表示它在k層的隱含向量,把\(h_a^k\)輸入到第K+1層中,就得到了\(h_a^{k+1}\)。此處,\(h_a^{k+1}\)包含兩部分:第一,從第k層,a的信任好友那里聚合的傳播影響力,表示為\(h_{Sa}^{k+1}\):
Pool函數可以用平均池化操作,來計算用戶信任好友在第k層表示的平均值。當然,也可以用max pooling,這都沒啥。第二,跟自己從上一層輸入的銀行向量拼起來,然后通過一個帶激活函數的FC層,公式如下:
傳播深度K是預定義的,最終得到節點在深度為K的表示為\(h_a^K\)。
要注意的是,在這個影響力傳播過程部分,沒有用到任何跟item相關的向量,是因為item的隱含向量是靜態的,不能在社交網絡中傳播。(PS:靜態的應該也可以在網絡中進行傳播,或許可以考慮過程中如何加入。)
Prediction Layer:給定用戶a的嵌入表示\(h_a^K\)和item i的融合向量\(v_i\),建模預測用戶a的偏好:
這里就是把用戶\(a\)所有喜歡的item,\(R_a\),全部拼接到用戶的最終表示\(u_a\)當中去。
模型(●ˇ∀ˇ●)訓練,類似於BPR,作者設計了一個基於pair-wise ranking 的損失函數:
\(\sigma\)是softmax函數,\(\Theta=[\Theta_1,\Theta_2]\),其中\(\Theta_1=[P,Q]\),\(\Theta_2=[F,[W^k]^{K-1}_{k=0}]\)在正則化項內(上式應該是寫錯了吧,\(\Theta\)應該沒有下標1。\(D_a = \{(i, j) |i \in R_a \and j \in V − R_a \}\)表示用戶a和他喜歡的物品 集合\(R_a\)之間的pairwise training data。
訓練的過程中還用了復雜楊,在訓練過程中,隨機挑選10個沒有觀察到的偽負反饋。
PS:看到這里感覺好熟悉啊,總是感覺我在那里看過這篇文章,可又想不起來了,后來想了一下,原來我看的是“SocialGCN:An Efficient Graph Convolutional Network based Model for Social Recommendation”(AAAI‘19),這兩篇文章是同一批人寫的,用的方法其實變化不大。
3. 使用GCN對比的算法:
作者說使用的思想和GCN差不多,所以要和一些使用GCN的方法比較一下。
- GC-MC:少有的幾個把GCN應用到推薦的工作。GC-MC定義了一個user-item的二部圖。每個用戶的嵌入表示集合了周圍相關的item的表示。同樣,每個item的嵌入表示集合了周圍相關的用戶的嵌入表示。但是在圖卷積操作的時候,僅卷積用戶和item的一層可見網絡,忽略了圖中層級的傳播結構。
- PinSage:通過用戶的行為,構建了item-item的關系圖,一個GCN算法PinSage就被提出來了。PinSage可以結合item關系和節點屬性,產生item嵌入表示。主要的貢獻就是,如何設計有效的采樣方式來加速training,在消息在item-item網絡中進行傳播時,作者的工作做了一個循環的信息傳播社交網絡,這更加真實的反映了用戶如何動態的被社交影響力影響的。把FCN應用在推薦中是非常自然的,據作者所知,這之前未被研究過。
五、實驗部分
作者想在實驗部分主要回答三個問題:
- DiffNet是不是有效?
- DiffNet是不是能應對各種稀疏數據?
- DiffNet各部分的有效性是怎么樣的?
1. 實驗設置
數據集:
Yelp數據集中用戶評分是1~5,作者進行了閾值處理,大於3的認為喜歡。使用gensim 工具中Word2vec模型,通過平均池化其他用戶和item的嵌入表示,獲得用戶和item的表示。
Flickr是一個who-trust-whom的在線圖片分享網絡。用戶會分享圖片,其他用戶會對圖片點贊,表示喜歡。在此,針對圖片是有其類別的groundtruth的,所以通過VGG16學習出4096維向量。對於用戶就是平均池化他喜歡的圖片的表示。
在兩個數據集中都出了預處理,過濾掉少於2個評分記錄或者2個社交邊的用戶;移除少於2個評分的item。最終選擇了10%作為測試,90%作為訓練,訓練集中又選了了10%作為驗證,數據集具體情況如下表:
BaseLine和評價標准:
- 對邊算法:BPR、FM、TrustSVD、ContexMF、GC-MC、PinSage。
- 評價標准HR:用戶在測試數據中喜歡,而且已經被預測的Top-k的list命中的數量。
- 評價標准NDCG:考慮的是命中的item如果在推薦列表的前面,則給一個較高的分數。
參數設置:
Adam、lr=0.001,bs=512;正則化參數\(\lambda=[0.0001,0.001,0.01,0.1]\)發現0.001最好。aggregating function發現平均池化效果要比最大池化好。層數K=2,跟GCN差不多。ReLU函數防止梯度消失。用batch normalization防止internal covariate shift problem。
實驗結果:
在不同稀疏性上也做了實驗:
在不同的傳播層數也做了實驗:
通過去掉user和item的屬性特征,對比了實驗:
實驗比較詳細。
Related work:
//TODO
六、參考文獻
[1]. Wu, Le, et al. “A Neural Influence Diffusion Model for Social Recommendation.” SIGIR 2019 - Proceedings of the 42nd International ACM SIGIR Conference on Research and Development in Information Retrieval, 2019, pp. 235–44, doi:10.1145/3331184.3331214.
[2]. Wu, Le, et al. SocialGCN: An Efficient Graph Convolutional Network Based Model for Social Recommendation. 2017, www.aaai.org.