圖模型+Bert香不香?徹底基於注意力機制的圖表徵學習模型Graph-Bert


做者 | Jiawei Zhang、Haopeng Zhang、Congying Xia、Li Sun
譯者 | 凱隱
編輯 | Jane
出品 | AI科技大本營(ID:rgznai100)

【導讀】本文提出了一種全新的圖神經網絡 Graph-Bert,僅僅基於 Attention 機制而不依賴任何類卷積或聚合操做便可學習圖的表示,而且徹底不考慮節點之間的鏈接信息。經過將原始圖分解爲以每一個節點爲中心的多個子圖來學習每一個節點的表徵信息,這不只能解決圖模型的預訓練問題,還能經過並行處理還提升效率。
論文地址:
https://arxiv.org/abs/2001.05140
簡介
傳統的圖神經網絡存在許多嚴重影響模型性能的問題,例如模型假死和過於平滑問題。模型假死和過於平滑均可以歸結於傳統 GNN 的類卷積特徵學習方式以及基於聚合操做(mean,max,sum)的信息更新方式,這會致使隨着模型層數加深,模型會逐漸喪失對輸入的響應,所以通常GNN都是隻堆疊不超過兩層。同時,模型學習到的不一樣節點的表徵信息也會愈發類似,從而變得沒法區分。此外,因爲傳統GNN都考慮圖中的固有內在鏈接(即邊),所以沒法對圖數據進行並行化處理。
爲了解決以上問題,本文提出了Graph-Bert,Bert 是一個用於NLP的模型,其核心在於 attention 機制,將這種機制拓展到圖結構數據上,即是 Graph-Bert。Graph-Bert 將原始圖採樣爲多個子圖,而且只利用attention機制在子圖上進行表徵學習,而不考慮子圖中的邊信息。所以Graph-Bert能夠解決上面提到的傳統GNN具備的性能問題和效率問題。
此外,傳統 GNN 受限於圖結構的多樣性,沒法進行跨任務的預訓練,而 Graph-Bert 因爲不考慮圖中的邊信息,所以並不受限於圖結構,能夠很好地進行預訓練和遷移學習。
模型結構介紹
Graph-Bert 主要由四部分組成:

一、將原始圖分解爲無邊子圖(不考慮子圖中的邊信息)
二、節點輸入特徵的嵌入表示
三、基於圖transformer的節點表徵學習編碼器,編碼器的輸出做爲學習到的節點特徵表示。
四、基於圖transformer的解碼器
(一)無邊子圖分解
這部分對應上圖中的step1,主要將原始輸入圖分解爲多個子圖,每一個子圖都包含一箇中心節點和固定數量的鄰居節點,鄰居節點就表明了中心節點的上下文信息,所以如何爲中心節點選取鄰居節點是這一步的關鍵。方法有不少種,本文采用的是top-K關係值方法,相似於KNN算法,計算每一個節點與其餘全部節點的關聯(intimacy)程度,而後選取關係值最大的前K個點做爲鄰接節點。關係矩陣的計算方法採用pagerank算法:
表示列歸一化(隨機遊走歸一化)的鄰接矩陣A,即 ,D 是度矩陣,注意A和D都是相對於輸入圖而言的。給定圖G以及該圖的關係矩陣S,那麼就能夠獲得圖中任意節點vi的上下文信息:

這裏節點vi的鄰居節點vj既能夠是距離較近的,也能夠是距離較遠的,並不侷限於邊鏈接。
(二)節點輸入特徵嵌入表示
  • 節點的排序
不一樣於圖片像素和句子中的詞,圖的節點並無明確的順序,理論上咱們在表示節點特徵時,交換任何兩個節點在矩陣中的順序都不該該影響最終結果(置換不變性),然而在用矩陣表示節點特徵信息時,矩陣的行/列必須和權重矩陣(例如FC層)列/行進行對應,不然即使是同一特徵矩陣,在不一樣的行排列下也會獲得不一樣的計算結果,這顯然是不合理的。所以仍是須要按照必定的順序來對每一個子圖的輸入節點特徵向量(矩陣)進行排序,從而獲得特徵矩陣(張量)。這裏按照前面計算獲得的關聯值由大到小進行排序。
  • 特徵向量嵌入表示
經過四種方法來逐步獲得每一個節點特徵向量的嵌入表示:
一、原始特徵向量嵌入
這一步主要將原始特徵嵌入到一個新的特徵空間,對於不一樣類型的輸入數據可使用不一樣的Embed函數,例如對於圖片可使用CNN,對於序列信息則可使用LSTM。
二、Weisfeiler-Lehman 絕對角色嵌入
這一步學習每一個節點在全局圖(即輸入圖)中的惟一表示,經過WL算法完成。WL算法根據節點在圖中的結構位置來標記節點,結構位置相同的節點會獲得相同的標記,這裏的結構位置是指節點在完整圖(而不是子圖)中的位置,所以與子圖無關。節點的WL絕對角色嵌入向量計算方法爲:
這一步主要是獲取節點全局位置的信息,詳細細節能夠參考原文。
三、基於關聯值的相對位置嵌入
相較於上一步基於WL的全局位置嵌入,這一步主要是獲取節點在子圖中的局部信息:
P是一個位置函數,對於中心節點vi,P(vi)=1,對於其餘的周圍節點vj,和vi關聯值越大,P(vj)越小。
四、基於節點距離的相對距離嵌入
這一步主要是平衡上面兩步的嵌入值,經過計算兩個節點在原始圖(考慮邊)中的相隔的邊距離來計算嵌入值:
因爲這一步是基於全局圖的,所以不一樣子圖中的相同節點之間獲得的H值是相同的。
(三)基於編碼-解碼器的圖Transformer
谷歌提出的Transformer模型是一種基於全attention的sequence to sequence模型,在NLP任務上取得了比LSTM更好的成績。這裏將Transformer方法推廣到了圖結構數據。首先將上面計算到的四種嵌入表示聚合,以做爲編碼器的輸入:
聚合方法能夠有多種,例如max, sum, mean等。以後經過多層attention操做來逐步更新節點的表示:
QKV都是輸入特徵矩陣H(l-1)的複製,這裏額外添加了一個mask矩陣M,能夠學習到子圖的上下文信息。
整個Transoformer包含2K層,前K層是編碼器,後K層是解碼器,經過自迴歸來監督訓練,最終編碼器的輸出即爲學習到的節點特徵表示zi。此外還在編碼器輸入和輸入之間添加了res鏈接。
Graph-Bert預訓練與微調
主要介紹 Graph-Bert 在圖表徵學習任務中的預訓練和微調,對於預訓練,主要考慮節點屬性重建以及圖結構恢復任務,對於表徵學習相關應用,主要考慮節點分類和圖聚類任務。
(一)模型預訓練
一、節點原始特徵重建
如何從學習到的節點特徵表示中還原原始輸入特徵是採用預訓練模型時須要關注的點:
在監督時天然採用和編碼-解碼器相同的監督方式:
考慮到節點的特徵可能很是稀疏,這裏額外加入了一個Mask矩陣:
二、圖結構重建
經過圖結構重建來保證模型能學習到圖的結構信息,該任務依然是做爲預訓練任務。圖的結構能夠用一個標籤向量y來表示,yij表示節點i和j之間的鏈接關係,包含兩個值(i->j, j->i),所以咱們須要預測的是:
損失函數採用多類交叉熵損失函數便可:
考慮到圖比較稀疏時,大部分節點之間都沒有鏈接(例如對於一個總節點數爲100,平均1階鄰居節點數爲5的圖,其鄰接矩陣就有95%的地方爲0),須要對負例(即無鏈接的節點對)進行採樣來保證正負例平衡。
經過將上述兩種不一樣的學習任務與變量正則化項結合,咱們能夠定義正式訓練前的目標函數。經過優化該目標函數將有助於對Graph-Bert進行有效的預訓練。
(二)模型遷移與微調
在將Graph-Bert應用在新任務中時,既能夠直接使用模型學習到的圖特徵表示,也能夠根據實際狀況作一些必要的調整。這裏主要考慮節點分類和圖聚類任務,其中圖聚類任務能夠直接使用學習到的特徵表示,而節點分類還須要作一些調整。
一、節點分類
經過額外添加FC層和softmax來進行節點分類:
相應的損失函數爲:
所以額外須要訓練的就是FC層,經過將FC層和原來的Graph-Bert結合,並從新訓練,就能夠完成節點分類的任務。
二、圖聚類
圖聚類主要是將圖中的節點分爲多類,因爲聚類屬於非監督的無參算法,所以不須要額外添加權重,直接在學習到的節點特徵上進行聚類便可,使用諸如K-means的算法就能夠完成,須要優化的目標函數爲:
該函數中仍然包含了一些變量,能夠用EM算法來高效地學習,而不是反向傳播。
總結
本文提出的Graph-Bert模型屬於Bert模型在圖結構數據上的拓展,在必定程度上下降了對節點間固有鏈接的依賴,使得模型能夠更好的進行預訓練和並行計算。筆者我的認爲這種思想和點雲很類似,具體區別還有待探究。

(*本文爲AI科技大本營翻譯文章,轉載請微信聯繫 1092722531)


精彩推薦算法



一、評選進行中,參與投票即有機會參與抽獎,60+公開課免費學習
微信



二、【Python Day——北京站】現已正式啓動, 「新春早鳥票」火熱開搶! 2020年,咱們還將在全國多個城市舉辦巡迴活動,敬請期待! 活動諮詢, 可掃描下方二維碼加入官方交流羣~

CSDN「Python Day」諮詢羣 🔽
來~一塊兒聊聊Python

若是羣滿100人,沒法自動進入,可添加會議小助手微信:婷婷,151 0101 4297(電話同微信)網絡

相關文章
相關標籤/搜索