Pinterest:將GCN應用於影象推薦

極驗發表於2019-03-21

Pinterest是國外的一款社交軟體,採用的是瀑布流的形式展現圖片內容,無需使用者翻頁,新的圖片不斷自動載入在頁面底端,讓使用者不斷的發現新的圖片。可以說是圖片版的Twitter,使用者可以瀏覽、收藏、關注自己喜歡的圖片。

該平臺最主要的價值就是通過分析大量使用者留下的興趣痕跡,幫助使用者發現和匹配他們感興趣的想法和商品。隨著使用者量的增加和網站物件的增加,該團隊不得不考慮如何使自己的搜尋引擎變得更加智慧。

Pinterest:將GCN應用於影象推薦

2018年,該平臺和史丹佛大學的研究人員共同發表了一篇論文,提出了PinSage的GCN[1]。

PinSage 背景


PinSage,一個能夠學習節點嵌入的隨機遊走GCN,輸入的圖是包含數十億物件的web-scale graph,圖中的節點是影象。通過這種方法能夠根據鄰居節點的資訊來實現更加強大和準確的節點嵌入。比如,如果讓機器識別影象,床欄和花園柵欄會比較相似,讓機器分辨起來很困難,但是在構建的Graph中,大門和花園柵欄通常會成為鄰居節點,但是床和大門卻很少相鄰。通過graph的構建,可以建立其影象背後的語義關係,而不僅僅是影象的內容。

Pinterest工程師表示他們的PinSage是目前最大的深度圖嵌入應用,並且也是圖卷積在推薦系統中應用的一大突破。(該團隊使用英偉達Tesla GPU的和cuDNN -accelerated TensorFlow深度學習框架,用大約18TB位元組的資料,75億例子圖訓練卷積網路,30億board和Pin節點。)

目前業界將GCN應用於推薦系統的主要困難就是圖的規模太大,可能有數十億個節點和上百億的邊。而在大資料的工作環境中想要擴充套件GCN並不容易,比如現在的推薦系統在訓練GCN的時候,都需要對全圖進行拉普拉斯操作,但是對於有數十億上百億節點的大規模圖來說,這不太可行。

PinSage 創新


PinSage則是一個高度可擴充套件的GCN框架,該框架可以對具有30億個節點,180億條邊的圖進行操作,這比一般的GCN應用的圖大10000倍。

使用者主要使用Pinterest來儲存和管理他們感興趣的線上內容的可視標籤(Pins),包括食品、衣服、產品等等。這些Pins相關聯內容的集合定義為boards。將Pinterest的環境建模為一個二部圖,由兩個不相交的集合組成,一個是Pins,一個是boards。簡單來說Pin為一個item,board是使用者定義的上下文。

on-the-fly convolution

傳統GCN演算法通過將特徵矩陣乘上完整拉普拉斯運算元的冪來執行卷積,PinSage則通過對節點周圍的鄰域進行取樣並動態構建計算圖來執行區域性卷積。這些動態構建的計算圖指定了如何在特定節點周圍執行區域性卷積,由此減輕在訓練期間對整個圖進行操作的需要。

Pinterest:將GCN應用於影象推薦圖1
通過隨機遊走構建卷積

在完整的節點鄰域上進行卷積將導致巨大的計算圖,因此採取取樣的方式。那如何定義鄰域就需要考慮,也就是如何選擇一組鄰居進行卷積呢?在PinSage中,通過模擬隨機遊走並選擇具有最高訪問次數的鄰居來定義基於重要性的鄰域。這樣做有兩方面好處:

1、允許聚合器在聚合鄰居向量時考慮鄰居的重要性,將這種方法成為importance pooling。

2、選擇固定數量的節點進行聚合允許在訓練期間控制演算法的記憶體佔用。

Mapreduce inference

給定一個完全訓練好的GCN模型,用訓練好的模型為所有節點生成嵌入仍然是一個挑戰,包括那些在訓練中隱藏的節點。簡單地計算具有區域性共解的節點的嵌入會導致由節點K-hop鄰域之間的重疊引起的重複計算。

圖如1中所示,節點嵌入自上而下的聚合很適合Google的大規模資料集運算框架,Map reduce,在Mapreduce中將所有節點上的每個聚合步驟分解為三個操作:map、join和reduce。簡而言之,對於每個聚合步驟,使用map將所有節點投影到潛在空間,而不需要任何重複的計算,然後join將它們傳送到層次結構上相應的上層節點,最後reduce以執行聚合以獲得上層節點的嵌入。

模型結構

Node embedding前向傳播演算法

考慮為節點z生成嵌入zu依賴與該節點的輸入特徵和鄰域。

Pinterest:將GCN應用於影象推薦

1、執行聚合函式Pinterest:將GCN應用於影象推薦,對u鄰居節點的feature計算聚合表達Pinterest:將GCN應用於影象推薦,引數是每個鄰居節點的權重

2、第二行中選用concat(),因為根據論文[2],concat的效果要比直接取這兩者的平均更好。

3、第三行使得訓練更加穩定,並且對歸一化嵌入執行近似最近鄰搜尋更加有效(論文中第3.5節)。該演算法的輸出是一個u的表示,它包含了關於它自己和它的區域性圖鄰域的資訊。

模型訓練演算法

Pinterest:將GCN應用於影象推薦

使用者學習

通過在不同的學習表徵之間進行比較看一看PinSage的有效性。在研究中,向使用者呈現查詢Pin的影象,以及通過兩種不同的推薦演算法檢索的兩個Pin。然後使用者被要求選擇兩個候選Pin中的哪一個(如果有的話)與查詢Pin更相關。使用者被指示在諸如視覺外觀、物件類別和個人身份等方面找到推薦Pin和查詢Pin之間的各種關聯。如果兩個推薦Pin看起來同等相關,使用者可以選擇“同等”。如果三分之二的使用者對同一個問題沒有達成共識,我們認為結果是不確定的。

Pinterest:將GCN應用於影象推薦

上圖顯示了比較結果,其中Pixie是一個純粹的基於圖的方法[3],具有最高分數的item將作為檢索推薦。在使用者認為更相關的item中,大約有60%左右的首選item是由PinSage推薦的。

Pinterest:將GCN應用於影象推薦

上圖給出了幾種推薦的例子,分析了優勢和劣勢。最終視覺、文字和圖資訊,PinSage能夠找到視覺和主題上都相似的推薦。

最後,在實際應用中,Pinterest的Shop and Look產品瀏覽量提高了25%,足以可見GCN在推薦系統中的強大。

參考連結

論文[1]:https://arxiv.org/abs/1806.01973

論文[2]:  https://arxiv.org/abs/1609.02907

論文[3]:https://arxiv.org/abs/1711.07601

https://medium.com/pinterest-engineering/pinsage-a-new-graph-convolutional-neural-network-for-web-scale-recommender-systems-88795a107f48

相關文章