廣告行業中那些趣事系列11:推薦系統領域必學的Graph Embedding

摘要:推薦系統領域最近大火的Graph Embedding可以很好的解決傳統的Sequence Embedding無法解決現實世界中諸如社交關係等圖結構的問題。本文重點講解了Graph Embedding中具有代表性的DeepWalk、LINE、SDNE、Node2Vec和阿里的EGES等模型,希望對Graph Embedding感興趣的小夥伴有所幫助。

 

目錄

01 爲什麼要學習Graph Embedding

02 對應到我們的業務場景

03 從DeepWalk到EGES的GraphEmbedding成長史

    1. 打開Graph Embedding大門的DeepWalk

    2. 微軟的LINE

    3. 第一個將深度學習模型引入圖表示的SDNE

    4. 斯坦福大學的Node2vec

    5. Graph Embedding的最佳實踐阿里的EGES

 

01 爲什麼要學習Graph Embedding

自從谷歌的Word2Vec引爆Embedding技術潮流,就有“萬物皆可Embedding”之說。傳統的Embedding比如Word2Vec通過句子等序列式的樣本來學習文本的表徵形式。而參考Word2Vec思想而生的Item2Vec則通過商品組合這種序列式去生成商品的Embedding。這種傳統的Embedding稱爲“Sequence Embedding”。

現實世界中類似社交關係、搜索和購買行爲、蛋白體結構、交通網絡數據以及最近很火的知識圖譜等都是一種圖的表示關係,傳統的基於序列的Embedding則顯得無能爲力。所以從2014年開始一些業內學者開始研究使用Embedding來表徵圖結構,這就是Graph Embedding技術的由來。

Graph Embedding的中心思想是找到一種映射函數將網絡中的每個節點轉換爲低維度的潛在表示,也就是使用低維、稠密的向量來表示網絡中的節點。Graph Embedding的一個輸入和輸出如下圖所示:

圖1 Graph Embedding的輸入和輸出表示

上圖中我們輸入的是一個圖結構,輸出則是將圖中各個節點映射到二維空間的Embedding,通過計算節點間Embedding的距離長短可以獲取物品之間的相似度關係。目前Graph Embedding技術已經應用於推薦系統、計算廣告領域等,並且在實踐後取得了不錯的線上效果,所以值得我們學習。

 

02 對應到我們的業務場景

瞭解了Graph Embedding技術的由來,秉持着“技術最終的歸宿都是服務於業務以及不落地的算法都是耍流氓”的業務爲王的精神,我們來看看可以用Graph Embedding技術做什麼。使用阿里論文中的一張用戶購買商品行爲序列的例子來說明:

 

圖2 用戶購買商品序列生成商品關係結構圖

上圖中左邊是用戶購買商品的順序圖,比如用戶1先後購買了D、A、B三種商品。通過用戶購買商品的順序序列我們可以得到右邊的商品關係有向圖,可以看到一共有A到F六種商品。通過構建商品的圖結構,使用Graph Embedding的方式更好的表徵商品,我們可以更好的理解商品之間的關聯,最終實現商品推薦的目的。

知乎使用Graph Embedding技術來構建用戶Embedding的實踐以及在知乎收藏夾數據中的應用。下圖是可視化的方式表示知乎用戶關係圖:

圖3 知乎用戶關係圖

說完別人的,再看看我們實際業務場景中可以用Graph Embedding技術做什麼。之前說過我們標籤組主要是給用戶打上興趣標籤,其中很重要的一塊是就是item打標,其實就是實現數據源分類。已知的是其他團隊通過構建用戶啓動app順序的圖關係實現app的Embedding表徵,從而實現app推薦及分類任務。不僅如此,還有其他大廠通過Graph Embedding技術應用於信息流推薦場景

 

03 從DeepWalk到EGES的GraphEmbedding成長史

總的來說,Graph Embedding主要包含以下不同的分類以及對應的算法模型。GraphEmbedding算法全家桶如下圖所示:

 

圖4 Graph Embedding算法全家桶

從2014年至今,Graph Embedding技術飛速發展。下面選出其中具有代表性的模型進行詳細分析:

1. 打開Graph Embedding大門的DeepWalk

可以說2014年提出的DeepWalk算法是打開Graph Embedding大門的先行者。DeepWalk算法的主要思想是在物品組成的圖結構上隨機遊走生成大量的物品序列,然後把這些序列作爲訓練樣本放到Word2Vec中進行訓練,最終得到物品Embedding。總體來說是一種將圖結構轉換成序列,然後底層使用Word2Vec這種Sequence Embedding的方式。

圖5 DeepWalk算法的四個步驟

DeepWalk算法整個流程如上圖所示分成四個主要的步驟:

  • 圖a是用戶購買商品的行爲序列關係。比如用戶1購買了D、A、B三種商品。這裏需要說明的是存在一個時間域的概念,就是用戶在一段時間內購買商品的順序關係,比如用戶2購買完B、E之後經過了一段時間接着買D、E、F,這裏將時間分成了兩個域,分別是BE和DEF

  • 根據圖a用戶購買商品的行爲序列關係得到圖b這樣的有向有權圖

  • 圖c是使用隨機遊走的方式隨機選擇起始點重新生成物品序列

  • 圖d是把重新生成的物品序列作爲訓練樣本放到Word2Vec中的Skip-Gram模型中去訓練得到物品的Embedding向量

整個流程最重要的是第三步的使用隨機遊走的方式生成物品序列,下面進行詳細說明。這裏需要定義隨機遊走的跳轉概率,也就是到達節點v_i後下一步遍歷鄰接節點v_j的概率。如果物品關係是一個有向有權圖,那麼節點v_i跳轉到v_j的概率定義如下:

圖6 節點v_i跳轉到節點v_j的概率定義圖

其中N+(v_i)是所有和v_i鄰接的出邊的集合,這裏需要強調下出邊,因爲是有向圖。如果是無向圖則代表所有和v_i相鄰的邊的集合。M_ij是節點v_i到v_j邊的權重。從公式中可以看出這個所謂的隨機遊走算法會傾向於向權重更大的節點靠近。

2. 微軟的LINE

2014年DeepWalk打開Graph embedding的大門之後,2015年微軟緊跟其後提出了LINE(Large-scale InformationNetwork Embedding)模型。LINE的核心思想是通過一階相似度(First-order proximity)和二階相似度(Second-orderproximity)明確定義瞭如何表徵圖中節點的相似度。通過下圖說明一階相似度和二階相似度:


圖7 LINE模型的一階相似度和二階相似度說明圖

其中一階相似度是用於描述圖中節點之間的局部相似度,對應圖中形式化的描述就是節點之間存在直接相連的邊,比如上圖中的節點6和7之間存在直接相連的邊,所以1階相似度較高;僅有一階相似度還遠遠不夠,比如節點5和6,雖然沒有直接相連,但是因爲有大量重合的邊1-4,所以認爲節點5和6也是相似的,二階相似度則是用於描述這種關係。論文中還做了以下三點優化:首先一階相似度和二階相似度可以分開進行訓練,可以根據實際的應用場景進行拼接使用;然後,使用邊採樣EdgeSample解決了因爲權重範圍過大導致學習率難以控制的問題;最後,考慮冷啓動的問題,當一個節點邊較少時通過2階鄰居也就是它的3階點去處理二階相似度。

相比於DeepWalk純粹隨機遊走的序列生成方式,LINE可以應用於有向圖、無向圖以及有有向有權圖,並通過將一階和二階的鄰近關係引入目標函數,讓節點最終學到的Embedding分佈更爲均衡平滑,避免了DeepWalk容易使node Embedding聚集的情況。

3. 第一個將深度學習模型引入圖表示的SDNE

2016年清華國家實驗室在KDD會議發表的論文提出了SDNE(Structural Deep NetworkEmbedding)模型。論文認爲DeepWalk算法的缺點是缺乏明確的優化目標,雖然LINE模型通過一階相似度和二階相似度分別學習網絡的局部信息和全局信息,但是通過簡單的拼接兩個向量並不是最優的方法。針對這個問題,SDNE模型基於LINE進行擴展,將深度學習引入Graph Embedding,使得模型具有更強的非線性表達能力。模型中還設計了一個同時掃描局部和全局網絡信息的目標函數,利用半監督的方式去擬合模型。

SDNE模型將圖的網絡結構信息分成local和global,對應LINE模型中的一階相似度和二階相似度。SDNE模型使用非監督的AutoEncoder去計算二階相似度,還原節點的上下文信息;同時使用監督的方式去計算一階相似度,對應的監督樣本是直接相連的節點。SDNE模型的網絡結構如下圖所示:


圖8 SDNE模型網絡結構圖

上圖中左邊是一個自動編碼器結構,輸入是鄰接矩陣,輸出則是重構後的鄰接矩陣。通過優化重構後鄰接矩陣的損失函數可以保留節點的全局結構特性。圖中綠色的y_i就是我們需要的Embedding向量,模型通過一階損失函數拉近相鄰接節點的Embedding向量距離,從而保留節點的局部結構特性。注意論文圖中的Global和Local畫反了。

4. 斯坦福大學的Node2vec

2016年斯坦福大學進一步改進DeepWalk算法並提出了Node2vec模型,模型的核心思想是使用深度優先搜索(Deepth-First Search)和廣度優先搜索(Breadth-FirstSearch)替代隨機遊走權重,使得Graph Embedding的結果在同質性結構性中進行權衡。通過下圖說明DFS和BFS的區別:

圖9 深度優先搜索(DFS)和廣度優先搜索(BFS)示意圖

上圖中紅色箭頭表示BFS搜索,節點u會更傾向於搜索和它直接相連的節點S1、S2、S3,BFS更注重獲取網絡的結構性特徵。因爲在Node2vec模型中存在所謂的“返回概率”,也就是說u搜索到了S1,同時也有很大的概率從S1返回到u,所以最終的結果是u在自己鄰接的節點來回震盪,相當於對u周圍的網絡結構進行了一次微觀掃描,也就是論文中說的microscope view。因爲這個微觀掃描更容易得到微觀結構的觀察,所以BFS搜索更容易使Embedding結果反映網絡的結構性。這裏的結構性是一階、二階範圍內的微觀結構。

這裏通過一個例子說明使用BFS搜索導致圖中不同位置(這裏的不同位置是指節點在圖中是位於中心還是邊緣)節點的Embedding差別很大。對比上圖中的節點u和節點S9,其中u是局部網絡的中心點,而S9是一個邊緣節點。當網絡採用BFS搜索策略進行隨機遊走時節點u因爲處於局部網絡的中心所以會被多次遍歷到,而且會和直接相連的節點S1-S4等節點發生聯繫。但是邊緣位置的節點S9無論從遍歷次數還是鄰接點的豐富程度上都不如u,所以最終的結果是節點u和節點S9兩者的Embedding差異會非常大,從而一定程度上達到了區分物品的目的。

同理,上圖中藍色箭頭表示DFS搜索,節點u會更傾向於搜索更遠的節點S4、S5、S6,DFS更注重獲取網絡的同質性特徵。這裏的同質性是指在相對較廣的範圍內能發現一個類似社區聚集的具有本質區別的性質。如果要發現這種性質,肯定要通過DFS深度優先搜索的策略進行更廣範圍內的搜索。所以說DFS是對整個圖進行了一次宏觀掃描,也就是論文中說的macroscope view。因爲只有在宏觀的視角下才能發現社區的聚集性和集團內部節點的同質性。

關於網絡的結構性和同質性在知乎上看到一個熱評感覺比較有意思,放上來和大家一起欣賞下:周遊了世界(DFS深度優先搜索)才知道中國人和外國人之間的本質的區別即同質性;周遊了中國(BFS寬度優先搜索)才知道中國人之間的結構性,個體之間細小的差異。

說完同質性和結構性,那麼在Node2vec算法中具體如何控制BFS和DFS的傾向性呢?主要通過節點間的跳轉概率。下圖展示了Node2vec算法從節點t跳轉到v之後,在v節點跳轉到周圍節點的跳轉概率:

圖10 Node2Vec模型如何控制BFS和DFS的傾向性

論文中表示從節點v跳轉到x_i的概率公式爲:

圖11 Node2Vec節點跳轉概率公式

其中w_vx是節點v到x的權重,a_pq(t,x)的定義如下所示:

圖12 Node2Vec傾向性參數p和q

其中d_tx控制a_pq(t,x)的值,代表節點t和x_i的距離。這裏的節點t是節點v跳轉之前的節點。參數p稱爲返回參數(returnparameter),p越小,隨機遊走回節點t的可能性就更大,Node2vec就更加註重表達網絡的結構性;參數q稱爲進出參數(in-out parameter),控制節點v去往節點X2、X3的概率。節點t和X2、X3的距離是2(t->v->X2/X3),所以q越小,隨機遊走到距離t節點更遠的X2和X3的概率就越大,Node2vec就更加註重表達網絡的同質性。節點X1是個比較特殊的存在,因爲X1是節點t和節點v的公共鄰居,和t的距離是1,所以設置爲1。就這樣通過設置p和q的權重我們可以控制隨機遊走的方式更傾向於DFS還是BFS。

下圖是論文中證明Node2vec靈活表達同質性和結構性特點的節點可視化圖。可以看出圖中上部分通過BFS策略網絡更加註重結構性,也就是節點相鄰的點之間的Embedding比較相似,更注重微觀結構microscope view;而圖中下部分則通過DFS策略網絡更加註重同質性,也就是中心或者邊緣的節點之間的Embedding比較相似,更注重宏觀結構macroscope view。

圖13 Node2Vec模型結果可視化圖

Node2vec這種網絡的結構性和同質性在推薦系統中也是可以直觀的解釋的。結構性關注的節點是在系統中的相對位置,比如是在中心位置還是邊緣位置,而不關心節點本身的特有的屬性。這種類似每個品類的熱門熱銷商品等容易有這樣的特點。而同質性剛好相反,更多關注內容之間本身的相似性,比如同品類、同店鋪、同價格區間等更容易表現同質性。對應於咱們實際業務中用於數據源打標場景,目的是對app進行區分,也就是數據源分類,更加註重的是app本身內容之間的相似性,所以使用同質性來進行區分可能更加合理。

實際業務場景中同質性和結構性這兩種Embedding在推薦系統中都是非常重要的特徵表達。正因爲Node2vec具有很好的靈活性以及挖掘不同特徵的能力,所以可以把不同Node2Vec生成的Embedding融合之後一起輸入到後續的深度學習網絡中,從而保留商品的不同特徵信息。

5. Graph Embedding的最佳實踐阿里的EGES

2018年阿里公佈了在淘寶應用的Graph Embedding模型EGES(Enhanced GraphEmbedding with Side Information),模型核心思想是在DeepWalk生成的Graph Embedding的基礎上加入了補充信息side information。

之前說過DeepWalk算法會將用戶購買商品的序列關係轉換成商品圖結構。但是對於那些新上架的商品因爲缺少用戶購買行爲序列,所以無法構建商品圖結構,歸根結底其實就是冷啓動的問題。針對這個問題阿里提出了利用相同屬性、相同類別等相似性信息構建商品之間的邊,從而生成基於內容的Knowledge Graph。

圖14 Knowledge Graph表示圖

通過這種Knowledge Graph生成的基於物品內容信息的向量可以稱爲補充信息(sideinformation)的Embedding 向量。多個不同的補充信息就會對應多個不同的side information Embedding向量。現在又面臨新的問題,如何融合多個補充信息的Embedding向量從而形成物品最終的Embedding向量呢?阿里提出了在深度神經網絡中加入average pooling層將不同的Embedding平均,並在每個Embedding加上了權重。如下圖所示,對不同補充信息的Embedding向量分別賦予不同的權重a_0到a_n。

圖中的隱藏表示層(HiddenRepresentation)就是對不同Embedding進行加權平均操作的神經網絡層,將加權平均後的Embedding向量直接輸入Softmax層,通過梯度下降的反向傳播算法就可以得到每個Embedding向量的權重a_i。這裏需要注意的是EGES模型採用了e^a_i來表示對應Embedding的權重a_i,目的是既可以避免權重爲0,又可以在梯度下降的過程中使用e^a_i良好的數學性質。

圖15 阿里的EGES模型的流程圖

下圖是論文中展示通過EGES模型實現冷啓動商品的推薦效果圖:

圖16 EGES模型冷啓動效果圖

下圖是論文中將EGES模型得到的商品的Embedding通過PCA降維能達到很好的聚類效果圖:

圖17 EGES模型輸出Embedding用於聚類

總體來說阿里的EGES模型雖然沒有複雜的理論創新,但是給出了一個結合多種Embedding的實用性極強的工程性的方法average pooling。通過這種方法可以有效解決因爲部分Embedding缺失導致的冷啓動問題,所以非常有借鑑價值。

 

總結

本篇首先講了下由於傳統的Sequence Embedding無法解決現實世界中諸如社交關係等圖結構的問題,所以業內開始研究Graph embedding技術;然後講了下阿里和知乎使用Graph Embedding技術應用於實際業務,同時我們也可以使用該技術來解決數據源分類和信息流場景下的廣告推薦問題;最後分別講了DeepWalk、LINE、SDNE、Node2Vec和阿里的EGES等具有代表性的Graph Embedding模型,爲我們後面使用Graph Embedding技術打下了堅實的理論基礎。

參考資料

[1] [DeepWalk] DeepWalk- Online Learning of SocialRepresentations (SBU 2014)

[2] [LINE] LINE - Large-scale Information NetworkEmbedding (MSRA 2015)

[3] [Node2vec] Node2vec - Scalable Feature Learningfor Networks (Stanford 2016) [4] [SDNE] Structural Deep Network Embedding (THU2016)

[5] [Alibaba Embedding] Billion-scale CommodityEmbedding for E-commerce Recommendation in Alibaba (Alibaba 2018)

 

最新最全的文章請關注我的微信公衆號:數據拾光者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章