【圖表示學習算法系列】一:GraphSAGE-歸納式圖表示學習算法

論文題目:Inductive Representation Learning on Large Graphs
論文鏈接:https://arxiv.org/pdf/1706.02216.pdf
論文發表在NIPS2017

0.摘要

在一個大型圖中,對節點的低緯度嵌入表示是十分有用的,之前的算法需要圖中所有的節點信息且對未知數據的泛化能力一般,這種方法被稱爲transductive;而本文的方法被稱爲inductive,,本算法名爲GraphSAGE,對未知數據有較好的泛化能力。簡單的說就是通過一個節點的鄰居信息進行特徵的採樣和聚合,然後學習到一個函數從而爲當前節點生成一個嵌入向量。實驗證明,該算法在可變信息圖(就是說圖不是一成不變的)上對未知數據的分類效果是很好的。

1.前言

在這裏插入圖片描述
基礎的方法是利用降維技術對節點鄰居的高維信息進行提取得到一個密集的嵌入向量,從而實現對當前節點的表達。利用該算法可以作爲上游處理過程(類似於預處理)得到節點的圖嵌入併爲後面的機器學習算法和相關任務提供信息。但是之前的方法都是對單一固定圖進行處理,實際要求需要一個快速的節點嵌入學習方法,並且圖是可變的,未知數據會源源不斷地出現,inductive方法對相似形式特徵的圖具有很好的泛化能力。inductive方法對比transdutive方法,其節點嵌入學習更加困難,需要更好的識別全圖的結構屬性以及節點的鄰域特性。現有的算法主要基於矩陣分解(MF),對於未知數據的泛化能力一般。目前有利用卷積策略進行嵌入學習的方法如GCN,本項工作將會把GCN拓展到歸納式的無監督學習場景中,並使用一種可訓練的聚合函數替代簡單的卷積過程。

本文工作

提出GraphSAGE,不同於基於矩陣分解的嵌入學習方法,該算法學習節點特徵是爲了提高對未知數據的泛化能力。學習每個節點的鄰域的拓撲結構(連接結構)以及節點特徵在鄰域內的分佈特性。並且該算法可以用於無節點特徵的圖中。算法的核心在於訓練一組用於聚合鄰域信息的聚合函數AGGREGATOR,每一個聚合函數聚合的鄰域範圍(跳數)是不同的,並且通過訓練好一組聚合函數,就可以對未知節點進行嵌入生成。算法中設計了無監督的損失函數,並且也可以進行監督式訓練。本文在三個節點分類數據集上測試了算法性能以及對未知數據的嵌入生成能力。

2.方法概述

方法的關鍵在於如何對一個節點的局部鄰居信息進行匯聚。文章分別介紹了前向推理算法和反向傳播算法。

2.1 嵌入生成

算法僞代碼如下:
算法流程
首先給出其中的輸入(1~7)和輸出信息(8):
(1)圖G(V,E)表示頂點集合和邊集合;
(2)每一個節點的特徵信息(一個向量){x}
(3)迭代次數(搜索深度)K
(4)權重矩陣W,用於每一次迭代之間的信息傳遞
(5)非線性函數σ\sigma
(6)可微的聚合函數AGGREGATE
(7)鄰居函數N,得到每一個節點的所有鄰居節點
(8)每一個節點的特徵表達{z}
循環次數k表示迭代次數,每一次迭代,節點都會聚合鄰居的信息,隨着迭代次數增加,節點會獲得越來越多(可以理解爲更遠的鄰居)的節點信息。具體流程如下:
第一行表示初始化,h表示節點的嵌入表達,下標爲節點,上標爲當前迭代次數,一開始迭代次數爲0,節點的嵌入表達初始化爲其自身的特徵信息;當進行第k次循環時,需要對每一個頂點集V中的節點進行更新,更新分爲兩步,第一步獲取鄰居信息,利用函數AGGREGATE將當前節點v的所有鄰居節點u∈N(v)進行聚合(注意的是利用的節點信息均爲上一次迭代的信息,所以在實際計算過程中,節點信息不能只用一個向量集合表示,會出現覆蓋問題),第二步將鄰居信息向量與當前節點的自身向量進行拼接,再利用全連接層和非線性激活函數處理得到新的嵌入表達。最後得到輸出z。因此,算法關鍵在於聚合函數的選擇。
爲了降低計算複雜度,同時因爲Graph爲非歐幾里得結構,鄰接數量不是固定的,所以對鄰居函數N(v)進行重新定義,每次迭代都會選取固定的鄰居數量,實驗表明最佳參數爲迭代次數K=2,兩次迭代所選鄰居數S1*S2<=5。

2.2 參數學習

首先明確的是該算法爲無監督學習算法,利用SGD策略對相關參數進行調優,希望的是鄰接近的點其嵌入表達更具有相似性,反之需要有很大的區分度。
在這裏插入圖片描述
如果該嵌入表達有固定的應用場景,可以適當替換損失函數,比如做節點分類,可以通過節點分類的損失值來更新這裏的embedding結果。

2.3 聚合函數選擇

1.Mean aggregator
將鄰居節點向量按位取均值,即
在這裏插入圖片描述
2.LSTM aggregator
LSTM表達能力更強,但是對順序有要求,所以實驗中採用鄰居節點隨機排序的方式應用LSTM聚合器。
3.Pooling aggregator
每一個鄰居的向量單獨進行全連接層計算並對所有的處理後的向量進行一個按位的最大池化操作:
在這裏插入圖片描述
最大池化操作可以提取到每一個鄰居節點不同層面的信息。

3.實驗

實驗主要分爲三個部分:
(1)利用Web of Science引文數據集對學術論文進行分類;
(2)將貼子分類到不同的社區;
(3)利用生物蛋白之間的相互作用PPI對蛋白質功能進行分類。
實驗過程中,所有預測節點的信息在訓練過程中是不會出現的。實驗設置如下:
設置四個baseline,分別爲
(1)隨機分類器
(2)邏輯迴歸分類器
(3)DeepWalk算法
(4)原始特徵+DeepWalk嵌入表達結果
同時對比四種不同的GraphSAGE算法(利用不同的聚合函數),對於GCN版本,無監督變體採用上文的損失函數,有監督變體利用分類交叉熵損失。非線性函數均採用ReLU函數K=2S1=25S2=10。實驗結果如下:
在這裏插入圖片描述
在這裏插入圖片描述
【注】如果有理解存在偏差或者錯誤的地方,歡迎讀者們給出指導意見!

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