1. 程式人生 > 其它 >輕量級圖卷積網路LightGCN介紹和構建推薦系統示例

輕量級圖卷積網路LightGCN介紹和構建推薦系統示例

推薦系統是當今業界最具影響力的 ML 任務。從淘寶到抖音,科技公司都在不斷嘗試為他們的特定應用程式構建更好的推薦系統。而這項任務並沒有變得更容易,因為我們每天都希望看到更多可供選擇的專案。所以我們的模型不僅必須做出最優推薦,而且還必須高效地做出推薦。今天介紹的這個模型被稱作:Light Graph Convolution Network 或 LightGCN¹。

讓我們將使用者和專案想象成二分圖中的節點,其中使用者與已經選擇的專案相連。所以尋找最佳推薦專案的問題就變成了連結預測問題。

示例資料集

作為一個實際示例,我們所說的使用者是搜尋音樂藝術家(“專案”)的音樂聽眾。原始資料集可在 ³ 獲得。

該資料集包含 1824 位使用者、6854 位藝術家和 20,664 個標籤。一個普通藝術家與大約 3 個使用者相關聯,而一個普通使用者與大約 11 個藝術家相關聯,因為在這個特定資料集中,藝術家的數量大大超過了使用者。這個資料集的一個特點是可以看到每個新連線的建立時間,這對我們來說非常的重要,因為可以通過連線時間將資料分成訓練集(最早時間)和測試集(最新時間)³。我們的目標是想要建立一個推薦系統模型來預測未來形成的新標籤/連線。

基於嵌入的模型

LightGCN 是一個基於嵌入的模型,這意味著它試圖為使用者和專案找到最佳嵌入(向量)。除此以外,它還在尋找最優評分函式 f,這個函式為新的使用者-專案進行評分,分數高的則會被推薦。

對於嵌入向量,具有相似偏好的使用者的嵌入會相似,而偏好不同的使用者的嵌入會更加不同。

在繼續研究 lightGCN 之前,首先簡單介紹一下的基於嵌入的模型,矩陣分解法在傳統的推薦系統中已被應用多年,並且效果一直都很好,所以它將作為我們的基線模型:

上圖是矩陣分解(MF)過程與原始圖以及嵌入矩陣²的關係。

這裡我們將矩陣分解模型作為基線與 LightGCN 模型進行比較。這裡的評分函式 f 只是兩個嵌入和模型通過最小化矩陣 (R - HW) 的 Frobenious 範數來訓練的標量積,其中矩陣 R 是使用者-專案鄰接矩陣,而矩陣 H 包含使用者嵌入,W 包含專案嵌入²。評分函式 f 在 lightGCN 的情況下是一樣的,但是為了直觀地理解模型,首先要考慮 lightGCN 模型的效能優化目標是什麼。

但是如何衡量效能呢?

一種流行的效能度量是從測試集中獲取所有實際的新使用者邊並計算考慮模型的前 K 個預測(意味著具有最高分數 f(使用者,專案))。這個分數是為每個使用者計算的,然後對所有使用者的分數進行平均以獲得最終分數,稱為 Recall @ K²。

但是Recall@K度量是不可微的,這意味著需要設計一個可微的損失函,這樣lightGCN模型的訓練才能利用梯度找到最優值。

設計這個損失函式的最主要的目標是:未來正邊的計分函式結果是一個較大的數字,而未來負邊的計分函式結果是一個較小的數字²。所以結合這兩個問題的一個比較好的方法是:希望使用者u的給定未來正邊和使用者u的給定未來負邊之間的差值是一個較大的數字:

在使用 sigmoid 函式將兩個分數的差異對映到區間 [0, 1]後,就能夠將分數視為概率。因此對於一個給定使用者u,可以將給定的所有正邊和負邊對的分數組合起來輸入損失函式中。然後在所有使用者中平均這些損失²以獲得最終的損失,這稱為貝葉斯個性化排名 (Bayesian Personalized Ranking BPR) 損失:

LightGCN

下面進入本文的正題,雖然矩陣分解方法僅捕獲圖的一階邊連線結構(僅來自給定節點的直接鄰居的資訊),但我們希望模型能夠捕獲更高階的圖結構。所以使用 LightGCN 來做這件事,它從用矩陣分解初始化的節點嵌入開始訓練:

嵌入初始化後, LightGCN 使用 3 層來完成嵌入的訓練,在每一層中,每個節點通過組合其鄰居的嵌入來獲得新的嵌入。這可以被認為是一種圖卷積(參見下面與影象卷積的比較):

影象卷積(左)可以看作是圖卷積(右)的一個特例。圖卷積是一種節點置換不變的操作。

上圖所示,與卷積層類似堆疊更多層意味著來自給定節點的資訊能夠獲得離該節點更遠的節點的資訊,這樣可以根據需要捕獲更高階的圖結構。但是在每次迭代 k 中,嵌入究竟是如何組合成一個新的嵌入的呢?下面舉兩個例子:

 完整文章:

https://www.overfit.cn/post/4e217d5a562f40f9a5efc4a2b5300b09