Graph Embedding總結


圖嵌入應用場景:可用於推薦,節點分類,鏈接預測(link prediction),可視化等場景

一、考慮網絡結構

1.DeepWalk (KDD 2014)

(1)簡介

  • DeepWalk = Random Walk + Skip-gram
  • 論文鏈接
  • 作者:Bryan Perozzi, Rami Al-Rfou, Steven Skiena
  • 主要思想:
    • 假設鄰域相似,使用DFS構造鄰域
    • step1:DeepWalk思想類似word2vec,word2vec是通過語料庫中的句子序列來描述詞與詞的共現關系。關鍵問題是如何描述節點與節點的共現關系。DeepWalk給定當前訪問起始節點,從其鄰居中隨機采樣節點作為下一個訪問節點,重復此過程,直到訪問序列長度滿足預設條件,產生大量詞序列(句子);
    • step2:然后將這些詞序列作為訓練樣本輸入word2vec,用Skip-gram + Hierarchical softmax進行訓練,得到詞的embedding。
  • 適用場景:只適用於無權邊,僅利用二階相似度

(2)舉例

  • 數據集:wiki數據集(2405個網頁,17981條網頁間的關系)
  • 輸入樣本:node1 node2 <edge_weight>
  • 輸出:每個node的embedding
  • 實現代碼
  • 效果:比較臨近的節點在 Embedding 空間更為接近,且結構更為相似的節點,距離也更近。這就是網絡節點的同質性(homophily)和結構性(structural equivalence)

 

2.LINE(Large-scale Information Network Embedding)(WWW 2015)

(1)簡介

  • 論文鏈接
  • 作者:Jian Tang, Meng Qu , Mingzhe Wang, Ming Zhang, Jun Yan, Qiaozhu Mei
  • 主要思想:
    • 假設鄰域相似,利用DFS(一階)、BFS(二階)構造鄰域
    • 一些定義:
      • First-order proximity(1 階相似度,同質性相似,僅適用於無向圖)用於描述圖中成對頂點之間的局部相似度,形式化描述為若節點之間存在直連邊,則邊的權重即為兩個頂點的相似度,若不存在直連邊,則 1 階相似度為0。 如下圖,節點 6 和 7 之間存在直連邊,且邊權較大,則認為兩者相似且 1 階相似度較高,而 5 和 6 之間不存在直連邊,則兩者間 1 階相似度為 0。
      • Second-order proximity(2 階相似度,結構性相似,適用於無向圖|有向圖):僅有1階相似度顯然不夠,如下圖,雖然節點 5 和 6 之間不存在直連邊,但是他們有很多相同的相鄰節點 (1,2,3,4),這其實也可以表明5和6是相似的,而 2 階相似度就是用來描述這種關系的。 形式化定義為,令表示頂點 u 與所有其他頂點間的1階相似度,則 u 與 v 的2階相似度可以通過 $p_u$ 和 $p_v$ 的相似度表示。若u與v之間不存在相同的鄰居頂點,則2階相似度為0。

 

  • 適用場景:
    • 一階相似度僅適用於無向圖,而不適用於有向圖;
    • 二階相似度

(2)舉例

 

  相比 DeepWalk 純粹隨機游走的序列生成方式,LINE 可以應用於有向圖、無向圖以及邊有權重的網絡,並通過將一階、二階的鄰近關系引入目標函數,能夠使最終學出的 node embedding 的分布更為均衡平滑,避免 DeepWalk 容易使 node embedding 聚集的情況發生。

 

3.Node2Vec---DeepWalk的進一步改進(2016)

如果單純使用用戶行為生成的物品相關圖,固然可以生成物品的embedding,但是如果遇到新加入的物品,或者沒有過多互動信息的長尾物品,推薦系統將出現嚴重的冷啟動問題。**為了使“冷啟動”的商品獲得“合理”的初始Embedding,阿里團隊通過引入了更多補充信息來豐富Embedding信息的來源,從而使沒有歷史行為記錄的商品獲得Embedding。**

生成Graph embedding的第一步是生成物品關系圖,通過用戶行為序列可以生成物品相關圖,利用相同屬性、相同類別等信息,也可以通過這些相似性建立物品之間的邊,從而生成基於內容的knowledge graph。而基於knowledge graph生成的物品向量可以被稱為補充信息(side information)embedding向量,當然,根據補充信息類別的不同,可以有多個side information embedding向量。

**那么如何融合一個物品的多個embedding向量,使之形成物品最后的embedding呢?最簡單的方法是在深度神經網絡中加入average pooling層將不同embedding平均起來,阿里在此基礎上進行了加強,對每個embedding加上了權重**,如圖7所示,對每類特征對應的Embedding向量,分別賦予了權重a0,a1…an。圖中的Hidden Representation層就是對不同Embedding進行加權平均操作的層,得到加權平均后的Embedding向量后,再直接輸入softmax層,這樣通過梯度反向傳播,就可以求的每個embedding的權重ai(i=0…n)。

在實際的模型中,阿里采用了$e^{a_j}$而不是$a_j$作為相應embedding的權重,一是避免權重為0,二是因為$e^{a_j}$在梯度下降過程中有良好的數學性質。

阿里的EGES並沒有過於復雜的理論創新,但給出一個工程性的結合多種Embedding的方法,降低了某類Embedding缺失造成的冷啟動問題,是實用性極強的Embedding方法。

 

4.GraphSAGE(Graph SAmple and aggreGatE)

論文來自:Inductive Representation Learning on Large Graphs

 

 

Inductive learning v.s. Transductive learning

首先我們介紹一下什么是inductive learning. 與其他類型的數據不同,圖數據中的每一個節點可以通過邊的關系利用其他節點的信息,這樣就產生了一個問題,如果訓練集上的節點通過邊關聯到了預測集或者驗證集的節點,那么在訓練的時候能否用它們的信息呢? 如果訓練時用到了測試集或驗證集樣本的信息(或者說,測試集和驗證集在訓練的時候是可見的), 我們把這種學習方式叫做transductive learning, 反之,稱為inductive learning. 顯然,我們所處理的大多數機器學習問題都是inductive learning, 因為我們刻意的將樣本集分為訓練/驗證/測試,並且訓練的時候只用訓練樣本。然而,在GCN中,訓練節點收集鄰居信息的時候,用到了測試或者驗證樣本,所以它是transductive的。

(1)概述

GraphSAGE是一個inductive框架,在具體實現中,訓練時它僅僅保留訓練樣本到訓練樣本的邊。inductive learning 的優點是可以利用已知節點的信息為未知節點生成Embedding. GraphSAGE 取自 Graph SAmple and aggreGatE, SAmple指如何對鄰居個數進行采樣。aggreGatE指拿到鄰居的embedding之后如何匯聚這些embedding以更新自己的embedding信息。下圖展示了GraphSAGE學習的一個過程:

  • 對鄰居采樣
  • 采樣后的鄰居embedding傳到節點上來,並使用一個聚合函數聚合這些鄰居信息以更新節點的embedding
  • 根據更新后的embedding預測節點的標簽

(2)算法細節

節點 Embedding 生成(即:前向傳播)算法

缺圖

采樣 (SAmple) 算法

GraphSAGE采用了定長抽樣的方法,具體來說,定義需要的鄰居個數S, 然后采用有放回的重采樣/負采樣方法達到S,。保證每個節點(采樣后的)鄰居個數一致是為了把多個節點以及他們的鄰居拼成Tensor送到GPU中進行批訓練。

聚合器 (Aggregator) 架構

GraphSAGE 提供了多種聚合器,實驗中效果最好的平均聚合器(mean aggregator),平均聚合器的思慮很簡單,每個維度取對鄰居embedding相應維度的均值,這個和GCN的做法基本一致(GCN實際上用的是求和):

舉個簡單例子,比如一個節點的3個鄰居的embedding分別為 [1,2,3,4],[2,3,4,5],[3,4,5,6] 按照每一維分別求均值就得到了聚合后的鄰居embedding為 [2,3,4,5].

論文中還闡述了另外兩種aggregator: LSTM aggregator 和 Pooling aggregator

參數學習

  到此為止,整個模型的架構就講完了,那么GraphSAGE是如何學習聚合器的參數以及權重變量W的呢? 在有監督的情況下,可以使用每個節點的預測label和真實label的交叉熵作為損失函數。在無監督的情況下,可以假設相鄰的節點的輸出embeding應當盡可能相近,因此可以設計出如下的損失函數:

   其中$z_u$是節點$u$的輸出embedding, $v$是節點*u*的鄰居(這里鄰居是廣義的,比如說如果$v$和$u$在一個定長的隨機游走中可達,那么我們也認為他們相鄰),是$P_n$負采樣分布,$Q$是負采樣的樣本數量,所謂負采樣指我們還需要一批不是鄰$v$居的節點作為負樣本,那么上面這個式子的意思是相鄰節點的embedding的相似度盡量大的情況下保證不相鄰節點的embedding的期望相似度盡可能小。

  GraphSAGE采用了采樣的機制,克服了GCN訓練時內存和顯存上的限制,使得圖模型可以應用到大規模的圖結構數據中,是目前幾乎所有工業上圖模型的雛形。然而,每個節點這么多鄰居,采樣能否考慮到鄰居的相對重要性呢,Graph Attentioin Networks克服了這一困難。

 

5.GAT

基本的圖神經網絡算法GCN, 使用采樣和聚合構建的inductive learning框架GraphSAGE, 然而圖結構數據常常含有噪聲,意味着節點與節點之間的邊有時不是那么可靠,鄰居的相對重要性也有差異,解決這個問題的方式是在圖算法中引入“注意力”機制(attention mechanism), 通過計算當前節點與鄰居的“注意力系數”(attention coefficient), 在聚合鄰居embedding的時候進行加權,使得圖神經網絡能夠更加關注重要的節點,以減少邊噪聲帶來的影響。

三種注意力機制算法,都可以用來生成鄰居的相對重要性

  • 學習注意力權重(Learn attention weights)

  • 相似性注意力(Similarity-based attention)

  • 注意力引導的隨機游走(Attention-guided walk)

首先我們對“圖注意力機制”做一個數學上的定義:

定義(圖注意力機制):給定一個圖中節點$v_0$ 和$v_0$的鄰居節點$\left\{v_{1}, \cdots, v_{\vert\Gamma_{v_{0}}\vert}\right\} \in \Gamma_{v_{0}}$(這里的 $\Gamma_{v_{0}}$ 和GraphSAGE博文中的 $\mathcal{N}(v_0)$ 表示一個意思)。注意力機制被定義為將$\Gamma_{v_{0}}$中每個節點映射到相關性得分(relevance score)的函數$f^{\prime} :\left\{v_{0}\right\} \times \Gamma_{v_{0}} \rightarrow[0,1]$,相關性得分表示該鄰居節點的相對重要性。滿足:
$$\sum_{i=1}^{\vert\Gamma_{v_{0}}\vert} f^{\prime}\left(v_{0}, v_{i}\right)=1$$ (1)

 

學習注意力權重

論文來自:Graph Attention Networks

核心思想是利用參數矩陣學習節點和鄰居之間的相對重要性。

給定節點$v_{0}, v_{1}, \cdots, v_{\vert\Gamma_{x_{0}}\vert}$相應的特征(embedding) $\mathbf{x}_{0}, \mathbf{x}_{1}, \cdots, \mathbf{x}_{\vert\Gamma_{o^{*}}\vert}$,節點$v_0$和節點$v_j$注意力權重$\alpha_{0, j}$可以通過以下公式計算:
$$
\alpha_{0, j}=\frac{e_{0, j}}{\sum_{k \in \Gamma_{v_{0}}} e_{0, k}}
$$
其中,$e_{0,j}$表示節點$v_j$對節點$v_0$的相對重要性。在實踐中,可以利用節點的屬性結合softmax函數來計算,間的$e_{0,j}$相關性。比如,GAT 中是這樣計算的:
$$
\alpha_{0, j}=\frac{\exp \left(\text { LeakyReLU }\left(\mathbf{a}\left[\mathbf{Wx}_{0} \| \mathbf{Wx}_{j}\right]\right)\right)}{\sum_{k \in \Gamma_{v_{0}}} \exp \left(\text { LeakyReLU }\left(\mathbf{a}\left[\mathbf{W} \mathbf{x}_{0} \| \mathbf{W} \mathbf{x}_{k}\right]\right)\right)}
$$
其中,$\mathbf{a}$ 表示一個可訓練的參數向量, 用來學習節點和鄰居之間的相對重要性,$\mathbf{W}$也是一個可訓練的參數矩陣,用來對輸入特征做線性變換,$||$表示向量拼接(concate)。

如上圖,對於一個目標對象$v_0,a_{0,i}$ 表示它和鄰居$v_i$的相對重要性權重。$a_{0,i}$可以根據$v_0$和$v_i$的 embedding $x_0$和$x_i$計算,比如圖中$\alpha_{0, 4}$是由$x_0, x_4, \mathbf{W}, \mathbf{a}$共同計算得到的。

基於相似性的注意力

論文來自:Attention-based Graph Neural Network for Semi-supervised Learning

上面這種方法使用一個參數向量aa學習節點和鄰居的相對重要性,其實另一個容易想到的點是:既然我們有節點vv的特征表示xx,假設和節點自身相像的鄰居節點更加重要,那么可以通過直接計算xx之間相似性的方法得到節點的相對重要性。這種方法稱為基於相似性的注意力機制,
$$
\alpha_{0, j}=\frac{\exp \left(\beta \cdot \cos \left(\mathbf{W} \mathbf{x}_{0}, \mathbf{W} \mathbf{x}_{j}\right)\right)}{\sum_{k \in \Gamma_{v_{0}}} \exp \left(\beta \cdot \cos \left(\mathbf{W} \mathbf{x}_{0}, \mathbf{W} \mathbf{x}_{k}\right)\right)}
$$
其中,$\beta$表示可訓練偏差(bias),cos函數用來計算余弦相似度,和上一個方法類似,$\mathbf{W}$是一個可訓練的參數矩陣,用來對輸入特征做線性變換。

這個方法和上一個方法的區別在於,這個方法顯示地使用coscos函數計算節點之間的相似性作為相對重要性權重,而上一個方法使用可學習的參數$\mathbf{a}$學習節點之間的相對重要性。

注意力引導的游走法

論文來自:Graph Classification using Structural Attention

前兩種注意力方法主要關注於選擇相關的鄰居信息,並將這些信息聚合到節點的embedding中。第三種注意力的方法的目的不同。GAM方法在輸入圖進行一系列的隨機游走,並且通過RNN對已訪問節點進行編碼,構建子圖embedding。時間tt的RNN隱藏狀態$\mathbf{h}_{t} \in \mathbb{R}^{h}$編碼了隨機游走中$1, \cdots, t$ 步訪問到的節點。然后,注意力機制被定義為函數 $f^{\prime} : \mathbb{R}^{h} \rightarrow \mathbb{R}^{k}$,用於將輸入的隱向量$f'\left(\mathbf{h}_{t}\right)=\mathbf{r}_{t+1}$映射到一個k維向量中,可以通過比較這kk維向量每一維的數值確定下一步需要優先游走到哪種類型的節點(假設一共有k種節點類型)。下圖做了形象的闡述:

如上圖,$h_3$聚合了長度$L=3$的隨機游走得到的信息$\left(x_{1}, x_2, x_{3}\right)$,我們將該信息輸入到排序函數中,以確定各個鄰居節點的重要性並用於影響下一步游走。

 

 6.SR-GNN

(1)背景

隨着互聯網上信息量的快速增長,推薦系統能夠幫助用戶緩解信息過載的問題,進而有效幫助用戶在眾多Web應用程序中(比如:搜索、電子商務、媒體流網站等)選擇自己感興趣的信息。大多數現有的推薦系統都假設一個前提:用戶畫像(user profile)和歷史活動信息是被不斷記錄的。

然而實際上,在許多服務中,用戶的信息可能是未知的,並且只有處於當前正在進行的會話中的用戶歷史行為可用。因此,在一個會話中,能對有限的行為進行建模並相應地生成推薦是非常重要的。但是在這種場景下,需要依靠豐富的user-item交互信息的傳統推薦系統無法產生令人滿意的推薦結果。

基於會話的推薦系統簡介:

  • 基於馬爾可夫鏈的推薦系統:該模型基於用戶上一次的行為來預測用戶的下一次行為,然而由於強獨立性相關假設,該模型的預測結果並不十分准確。

  • 基於循環神經網絡(RNN)的推薦系統:相比於傳統的推薦問題,基於會話的推薦問題的不同點在於如何利用用戶的短期會話交互信息數據來預測用戶可能會感興趣的內容。

基於會話的推薦可以建模為序列化問題,也就是基於用戶的短期歷史活動記錄來預測下一時刻可能會感興趣的內容並點擊閱覽。而深度學習中的RNN模型正是一類用於處理序列數據的神經網絡。隨着序列的不斷推進,RNN模型中靠前的隱藏層將會影響后面的隱藏層。於是將用戶的歷史記錄交互數據作為輸入,經過多層神經網絡,達到預測用戶興趣的目的。該模型也達到了令人滿意的預測結果。

然而,該模型也有兩處不足:

  • 第一點就是在基於會話的推薦系統中,會話通常是匿名的且數量眾多的,並且會話點擊中涉及的用戶行為通常是有限的,因此難以從每個會話准確的估計每個用戶表示(user representation),進而生成有效推薦內容。

  • 第二點是利用RNN來進行的建模,不能夠得到用戶的精確表示以及忽略了item中復雜的轉換特性。

 

(2)SR-GNN概述

SR-GNN模型可以更好的挖掘item中豐富的轉換特性以及生成准確的潛在的用戶向量表示。SR-GNN模型的工作流如下:

 

 

7.文本分類

圖中節點的數量是單詞數量+文檔數量,O開頭的是文檔節點,其他的是詞節點。圖中黑線的線代表文檔-詞的邊,灰色的表示詞-詞的邊。R(x)表示x的embedding表示。節點的不同顏色代表文檔的不同類型。

本文提出的TextGCN的初始輸入向量是詞和文檔全部用one-hot編碼表示。文檔-詞的邊基於詞在文檔中的出現信息,使用TF-IDF作為邊的權重。詞-詞的連邊基於詞的全局詞共現信息。詞共現信息使用一個固定大小的滑動窗口在語料庫中滑動統計詞共現信息,然后使用點互信息(PMI)計算兩個詞節點連線的權重。具體如下:

 

其中:

  • #W表示滑動窗口的總數量;
  • #W(i)表示在一個語料庫中包含單詞i的滑動窗口數量;
  • #W(i,j)表示同時包含單詞i和單詞j的滑動窗口的數量;
  • PMI為正表示詞與詞之間的語義相關性較高,為負表示兩個詞之間的語義聯系較小或者不存在,所以我們只給PMI為正的兩個詞節點連線。

 

結論:Text GCN可以捕獲文檔和詞的關系以及全局詞共現信息,文檔節點的標簽信息可以通過他們的鄰居節點傳遞,傳遞給其他的單詞和文檔。在情感分類任務上(MR語料)上Text GCN沒有表現出優於其他基准模型的結果,主要是因為GCN忽略了詞序信息,這在情感分類當中時非常有用的。

實驗還證明了參數的敏感性。在Text GCN中,窗口大小和第一層GCN輸出的向量維度大小的選擇都對結果有影響,較小的窗口不能得到有效地全局詞共現信息,太大的窗口會使得本來關系並不密切的兩個節點之間產生連邊。

在本文的實驗中,Text GCN可以有很好的文本分類結果,但是不能快速生成embedding,也不能為新的文本作分類。在未來的工作中可以引入歸納機制,注意力機制,發展無監督的text GCN框架。

 

 

 

參考文獻:

【1】Graph Embedding:深度學習推薦系統的基本操作

 【2】Graph Convolutional Networks for Text Classification解析

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM