Bridging Collaborative Filtering and Semi-Supervised Learning:paper翻譯與解讀

橋接CF和半監督學習的POI推薦方式。
是一個使用了神經網絡進行POI推薦的工作。

文章中設計了一種叫做PACE的模型聲稱可以解決推薦問題中數據稀疏和存在一些相關的上下文(指的是某些關係會與推薦結果相關,稱作上下文。例如社交關係可能對POI推薦帶來影響)的問題。

模型輸入:one-hot形式的user向量和POI向量

輸出:

1. (user-POI)以0, 1的形式輸出,來代表user是否偏好這個POI

2. user與user之間的社交關係

3. POI之間的地理關係

JP是監督學習,輸入user-poi對,與現有的user-poi對的標籤作比較
JC是無監督學習或者是應用於增強上下文圓滑性的正則化罰項
以上這倆合稱半監督,就對應了標題中的內容。


以上是網絡結構。

從下向上開始看:

1.最下邊一層,對應於上文說的input,輸入user和poi的向量表示。E是一個全連接embedding層。聲稱可以展示出user和poi的隱層因子。

2.然後分別進入S層,這裏對應着前文中輸出內容的兩個上下文輸出。兩個都是softmax層。

3.將E層中的兩個向量連起來,進入到H層。經過一些隱層的處理後,softmax層輸出結果。

模型中訓練這三個內容時把loss function加在一起進行優化。
JP是user-poi的loss function
JCu和JCp是上下文的,在這裏是社交關係和地理位置。
λ代表權重
這個模型說的一點是,現有的模型都是專注於某些上下文,例如用某種特殊方式加入社交成分,用另一種方式加入位置成分,沒有普適性;而此模型不會侷限於這些,可以隨意增加上下文。從以上公式可以看出,此模型把無論是什麼上下文都加在一起,可能就是這樣解決的普適性問題。


H層:

這個公式可以表示我們的最終預測。我們訓練一個Eu和Ep作爲user和poi的矩陣,裏邊每一行都是一個user和一個poi,他們的轉置乘以模型的輸入值也就是one-hot形式,就可以得到我們輸入的那一個特定user和poi的向量。在θ參數的情況下,輸入上述的向量,在H層的h函數的作用下,最終輸出預測結果y_hat。
在這一步只是將兩個向量單純的相連,而不進行對應元素的相乘來融合兩個向量。因爲後者不能進行非線性的操作並且兩者需要embedding在同一個空間。這裏就說明user和poi是單獨embedding的。

這是H層中每一個隱層的情況。q代表隱層數。x是上邊講的兩個向量的連接。
根據論文中描述,隱層的激活函數是relu,然後最後一層再套一個sigmoid。

如何優化這個模型呢?文中設計瞭如下的loss function,是普通交叉熵的特例。

L+ 是labeled pairs 也就是說這個user喜歡這個poi, 而L-並不代表這個人不喜歡這個點,舉個例子,假如說一個人在一個網站喜歡視頻a, b, c,這三個視頻組成L+數據集。但並不代表他不喜歡D,因爲有可能在別的網站上關注,或者是他還沒看過D。本文中的做法是在沒有觀測到的標籤中均勻採樣(我個人認爲不是一個好的辦法),數量和L+相同。


S層:

文中說E層和H層本質上就是用CF對之前的行爲進行建模。

接下來說一說創新點。

文中定義一個上下文圖來編碼上下文信息作爲實例之間的關係。
分別用圖表示地理位置和社交關係。
地理位置圖,v是地點集合,E是點與點之間的邊,在這裏是和實際距離有關
社交關係圖,v是users集合,E是社交關係。


在這篇文章的實際實現中,爲了簡單,地理位置圖通過特定的一個半徑r過濾的均勻邊構成(我的理解是實際距離小於一個數值的情況下就產生一條邊)。
社交關係圖的邊是朋友。(也就是說是朋友關係纔有邊)

對於本文的loss function 我們可以把JC部分看作是一個(基於上下文圖的)正則項。這個正則項是什麼樣的呢?

這個上下文關係和word2vec中的skipgram意思差不多,因此就使用它的loss function,word2vec具體知識詳見http://blog.csdn.net/yinruiyang94/article/details/78324019
(應該就是一種graph embedding吧)


最後是算法


很簡單 先採樣user poi對訓練JP,然後分別採樣user和poi分別訓練兩個上下文網絡,以上三步爲一個循環,就這樣一直循環下去。。。

看了一遍不知道我理解的對不對,大概就是在半監督學習中將上下文信息漸漸學到user和poi的向量表示中,然後用這個包含了上下文關係的進行一個多層的監督學習,得到(user, poi)的表現的一個輸出。
文中聲稱‘While MF is an extremely simple version of PACE without con-
sidering any context’(引用原文),也就是說他的H層就做到了MF的效果。(簡單來說是不是就是一個node2vec + MF呢)

才發現他是有源碼的:https://github.com/yangji9181/PACE2017
大概看了一遍代碼,差不多就是這個意思。

發佈了50 篇原創文章 · 獲贊 46 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章