本篇論文是阿里發表在kdd2019的文章,是gcn在淘寶場景下的實際應用,還提供了源碼,很具有可讀性。
論文地址:https://arxiv.org/pdf/1907.12377.pdf
作者在論文裏面附有對應的代碼地址:https://github.com/peter14121/intentgc-models
論文提出了一個新的基於GCN的大規模推薦算法框架:IntentGC。該算法框架利用GCN來同時捕獲用戶偏好和輔助信息的異構關係。
文章提出瞭如下幾點創新:
1.輔助信息的充分利用。作者捕獲了大量的異構關係用於提升推薦系統的性能。爲了便於建模和提升魯棒性,作者將一階相似的輔助關係轉換成更加魯棒的二階加權關係。比如:如果user1提供了一個query詞“Spiderman”,我們認爲user1和“Spoderman"具有一階相似。如果user1和user2都提供了query詞“Spoderman","IronMan","Thor",我們認爲user1和user2之間具有更加魯棒的二階關係。因爲他們可能都是漫威的粉絲。對於不同類型的輔助對象,就可以生成二階相似度的異構關係。異構關係能顯著的提升模型性能。
2.更快的圖卷機。爲了避免在訓練的時候構造mini-graph,提出了一個新的卷機網絡:IntentNet。該算法比GraphSage更高效更有效。算法核心思想是通過將圖卷機分爲兩部分來避免不必要的特徵交互。
3.異構網絡中的對偶圖卷機。 爲了保持user和item之間的異構性,設計了一個對偶圖卷機模型用於網絡表示學習。第一:利用IntentNet分別學習user節點和item節點。然後將對應的輸出利用全聯接網絡映射到同一空間。這裏作者也嘗試將輔助信息作爲節點的輸入特徵,但是共享了這些輸入特徵的節點,在經過複雜的神經網絡映射後,在高層嵌入空間並不會很接近。而直接把這種輔助信息作爲圖中的一種關係,並利用IntentGC直接學習節點之間的關係,能顯著提升性能。(這一點我也不是很理解,我的感覺是作爲特徵輸入,不是應該會讓節點直接具有更強的關聯性嗎?)
文章主要貢獻如下:
1.提出框架IntentGC,一個有效的圖卷機框架。且這是將用戶顯示偏好和異構關係統一在一個框架中的第一份工作。
2.設計了一個利用了faster gc 機制的圖卷機算法IntentNet。
問題定義
1.Heterogeneous Information Network (HIN 異構信息網絡) 指的是一個無向圖,V是所有的節點集合,E是VxV的邊的集合。每個節點可能屬於不同類型,每條邊也可能屬於不同的類型,當節點類型大於1或者/並且邊的類型大於1,就說該圖爲異構信息網絡。V可以表示爲,其中表示類型r的節點集合。R是類型的總數量。
2.User-Item Recommendation 針對推薦系統,文章將V1表示爲user節點,V2表示爲item節點,之後的V3 到VR再用來表示其他類型的節點(搜索詞,品牌等等)。其中邊的集合 這裏的表示user節點和item節點的邊,剩下的邊都都屬於。然後就可以用歷史行爲構造 ,用未來的數據構造,將推薦問題轉化爲鏈接預測問題。
文章的提出的方法包括三個關鍵點
1.Network Translation
將原始的圖翻譯成一個制定類型的HIN。
2.Faster Convolutional Network:IntentNet
採用向量維度的卷積方法來優化異構關係
3.Vector-wise convolution operation
在翻譯的網絡上,同時學習user和item的embedding表示。
Network Translation
如圖2所示,異構節點和關係不僅提供來豐富的信息,但也引入來以兼容的語義信息和更多的挑戰。在推薦系統中,我們只關心user和item的embedding表示。基於這個,文章採用來一個將原始的輔助關係翻譯成user-user關係或者item-item關係。直觀的,如果user1 和user2都和輔助節點Vr(r>2)有關聯,那麼user1和user2之間就存在一個非直接的關係,所以本文采用來這種二階的相似度來捕獲user之間或者item之間的相似度,相似度大小就直接由他們之間共有的相同類型下的相同鄰域個數來表示。基於這種方法就可以把輔助節點帶來的語義信息編碼近異構的uu關係或者ii關係中。
先從簡單的開始,如果只有一個類型的輔助節點,即,通過在原始的HIN中增加一個新的二階關係,並移除原始的輔助關係就可以獲得一個新的HIN ,其中U和V表示user節點集合和item節點集合,是user和item之間的交互, 和通過輔助信息生成的user之間或者item之間的鏈接。當前只考慮一種輔助信息的話,那麼邊的類型只有一種,否則的話邊和是由多種不同的類型組成。
然後每條邊的分配一個相似度權重,item的同理。就可以爲和構造權重矩陣。並且定義爲節點top P相似節點。
現在進一步考慮 含有R種類型的節點,對於每一種輔助節點類型,生成uu/ii邊,通過這種方式就可以獲得2R-4種類型的異構關係。表示爲,並有對應的權重矩陣,同樣的,節點u和v對應的鄰域表示爲。這裏翻譯的圖叫做user-item HIN,推薦問題就變成了給定user-item HIN G 預測。
Faster Convolutional Network:IntentNet
GCN的核心思想是通過局部過濾器對鄰域的特徵信息進行迭代聚合。但是存在高度的計算複雜度,所以爲了應用本文算法在大規模推薦場景,文章提出了一個新的卷積方式
Vector-wise convolution operation
先只考慮一種類型的輔助關係,然後擴展方法到異構關係。這裏只用user節點去闡述。圖卷積的一層包括兩部分:
1.聚合 2.卷積
聚合是一個pooling層,用於從鄰域中聚合特徵信息,如經典的GraphSage算法,可以形式化爲
其中表示user a在第k-1層卷積後的embedding向量,而AGGREGATE函數就是一個mean pooling。通過這個聚合函數就可以獲得節點u的一個統一的領域表示
聚合後的領域embedding和節點本身embedding就可以通過卷積函數進行合併,經典的卷積函數如下:
將聚合步驟獲得的節點本身embedding向量和節點鄰域embedding向量進行合併,再通過全聯接網絡獲得新的節點embedding向量。本文把這種方式的卷積操作叫做‘bit-wise’卷積。
在表示學習中,卷機操作的目的主要有兩個:
1.學習節點和鄰域之間的交互,這決定了鄰域如何提升結果。
2.學習embedding空間下不同維度的交互,這將自動提取有用的組合特徵。
這裏關鍵的點在於節點本身第i維度和鄰域第j維度的交互帶來的信息量很少,因此並不需要計算所以特徵之間的交互。所以提出了一個基於‘vector-wise’的卷積函數
這裏所有的參數都是基於向量維度的權重,針對向量維度進行加權。如下圖所示
IntentNet
有了卷機操作就可以進一步堆疊卷積層來形成整個網絡,一個卷積網絡輸出的是一個維度的embedding空間,如用戶維度的embeding,所以IntentNet將不同網絡輸出的不同維度的embedding再送入三層全聯接網絡,學習不同維度的embedding之間的交互。
異構關係
我們進一步將IntentNet擴展去捕獲模型中輔助信息的更多異構關係。那麼上面的公式
就需要變成
其中表示第r種領域的聚合向量。
Dual Graph Convolution in HIN
爲了將user和item能在同一空間下進行度量,文章分別使用和去表示user u和item v。另外還對每個user-item鏈接採樣了一個負樣本item去形成一個完整的訓練組。爲user和item分別構造兩個IntentNet,和。通過迭代的運行q次卷積,就能通過和獲得user和item的表示和。
模型的目標是最小化triplet loss:
The IntentGC Framework
框架主要包括三部分:
1.網絡翻譯 2.訓練 3.推理 。具體過程如下:
總結
這是最近看的阿里將GCN在大規模推薦場景中的實際應用論文,感覺作出這個框架確實需要一點功夫,希望能從文章獲得一些經驗,應用在自己的工作中。
完