自監督-Self-supervised Learning on Graphs:Deep Insights and New Directions
動機
- 圖資料於影象或者文字資料不同, 影象或者文字時屬於歐式資料且都是服從獨立同分布; 而對於圖資料而言, 它是非歐式資料, 並且圖中的節點相互連線表示著他們獨立同分布的
貢獻
- 探究了圖上的自監督任務, 具體來說, 圖有多種潛在的代理任務; 因此, 瞭解
SSL
在什麼時候和為什麼適用於GNN
, 以及哪種策略可以更好地整合GNN
的SSL
是很重要的 - 在圖上啟發
SSL
的新方向. 特別是, 研究這些見解是如何激發更復雜的方法來設計代理任務的. 為了實現第一個目標,直接基於屬性和結構資訊設計了基本型別的代理任務. 通過深入分析SSL
對GNN
效能的影響,在圖上得出了一些關於SSL
SelfTask
設計更先進的代理任務, 經經驗證明, 在各種圖資料集上實現最先進的效能
前置知識
問題說明
一個圖表示: \(\mathcal{G} = (\mathcal{V}, \mathcal{E}, X)\), \(\mathcal{V} = \{v_1,v_2,...,v_N\}\) 表示 \(N\) 個節點的集合, \(\mathcal{E}\) 表示邊集, \(X = [x_1, x_2, ... , x_N]\) 是特徵矩陣, 其中節點 \(v_i\) 的特徵為 \(x_i\) , 圖結構資訊用一個鄰接矩陣表示: \(A \in [0,1]^{N\times N}\)
其中 \(\theta\) 是用於 \(f_{\theta}\) 的引數, \(f_{\theta}(\mathcal{G})_{v_i}\) 預測節點 \(v_i\) 的標籤, \(\ell(\cdot,\cdot)\) 定義為損失函式用於測量真實標籤和預測標籤的度量.
問題1
給定圖的資料集,該資料集表示為帶有成對標記資料 \(\mathcal{D}_{L} =(\mathcal{V}_{L},\mathcal{Y}_{L})\) 的圖 \(G= (A,X)\), 目標是構建一個具有相應損失函式 \(\mathcal{L}_{self}\) 的自監督代理任務, 該任務可以與特定於任務的 \(\mathcal{L}_{task}\) 整合, 以學習一個能夠更好地推廣未標記資料的圖神經網路 \(f_θ\)
Basic Pretext Tasks on Graphs(基本代理任務)
Structure Information(結構資訊)
在圖中提取自監督資訊的第一自然選擇是資料背後的固有結構. 這是因為與影象和文字不同. 在圖中, 我們的資料例項是相關的(即節點連結在一起). 因此, 一個主要方向是基於未標記節點的區域性結構資訊, 或者它們如何與圖的其餘部分相關聯, 為它們構建自我監督資訊. 換句話說, 用於建立自監督藉口任務的結構資訊可以被分類為區域性或全域性結構資訊
區域性結構資訊
-
\[\mathcal{L}_{self} (\theta',A,X,\mathcal{D}_{U}) = \frac{1}{|\mathcal{D}_{U}|} \sum_{v_i \in \mathcal{D_{U}}}(f_{\theta'}(\mathcal{G})_{v_i} - d_i)^2 \]NodeProperty(節點特徵: eg 度)
: 在此任務中, 旨在預測圖中每個節點的屬性, 如它們的度、區域性節點重要性和區域性聚類係數. 這個代理任務的目標是(進一步)鼓勵GNN
除了正在優化的特定任務之外, 還學習本地結構資訊. 在這項工作中, 我們使用節點度作為代表性的本地節點屬性進行自我監督, 而將其他節點屬性(或其組合)作為一項未來工作. 更正式地說, 我們讓 \(d_i = \sum_{j = 1}^{N} A_{i,j}\) 定義為 \(v_i\) 的度, 並將自監督代理任務的相關損失構造為:中 \(\theta\) 用於表示圖神經網路模型的引數 \(f_{\theta}\), \(\mathcal{D_{U}}\) 表示圖中未標記節點和相關代理任務標籤的集合, 並且使用\(f_{\theta'}(\mathcal{G})_{v_i}\) 表示節點 \(v_i\) 的預測本地節點屬性(在本例中是預測節點度). 構建與本地節點屬性相關的自監督代理任務的直覺是最終引導來自
GNN
的特徵(即節點表示)來儲存該資訊. 這依賴於這樣的假設, 即這樣的節點屬性資訊與感興趣的特定任務相關. -
\[\mathcal{L}_{self} =(\theta',A,X,\mathcal{D}_{U}) = \frac{1}{{\mathcal{M_e}}} \sum_{v_i,v_j \in \mathcal{M}_e} \ell(f_w(f_{\theta'}(\mathcal{G})_{v_i} - f_{\theta'}(\mathcal{G})_{v_j|}),1) + \frac{1}{\bar{\mathcal{M_e}}} \sum_{v_i,v_j \in \bar{\mathcal{M}_e}} \ell(f_w(f_{\theta'}(\mathcal{G})_{v_i} - f_{\theta'}(\mathcal{G})_{v_j|}),0) \]EdgeMask(邊掩蔽)
: 對於邊遮蔽任務, 我們尋求發展自我監督不僅基於單個節點本身, 而是基於圖中兩個節點之間的連線成對地. 具體來說, 首先隨機遮蔽一些邊, 然後要求模型重建被遮蔽的邊. 具體做法首先掩蔽的邊 \(m_e\) 定義為集合 \(\mathcal{M}_e \subset \mathcal{E}\), 並對大小相等的節點對(即 \(|\bar{\mathcal{M}_e}| =|\bar{\mathcal{M}}_e|=m_e\)) 的集合 \(\mathcal{M}_e=\{(v_i,v_j)|v_i, v_j\in \mathcal{V}~~~and~~~~ (v_i,v_j) \notin\mathcal{E} \}\) 進行取樣. 然後, 這裡的SSL
代理任務是預測給定節點對之間是否存在連結. 更正式地說, 我們將相關損失構建為:其中 \(f_{\theta'}(\mathcal{G})_{v_i}\) 參見節點 \(v_i\) 的嵌入, \(\ell(\cdot,\cdot)\) 是交叉熵損失, \(f_w\) 線性對映到 \(1\) 維, 而\(v_i\) 和 \(v_j\) 之間具有連結的類別由 \(1\) 和 \(0\) 表示. 總之, 這種方法有望幫助
GNN
瞭解有關本地連線的資訊.
全域性結構資訊
-
\[\mathcal{L}_{self}(\theta',A,X,\mathcal{D}_{U}) = \frac{1}{|\mathcal{S}|} \sum_{v_i,v_j \in \mathcal{S}} \ell(f_w(|f_{\theta'}(\mathcal{G})_{v_i} - f_{\theta'}(\mathcal{G})_{v_j}|),C_{p_{i,j}}) \]PairwiseDistance(雙向距離)
: 邊掩蔽代理任務是從基於掩蔽的區域性結構角度出發, 試圖恢復/預測圖中的區域性邊. 我們進一步開發了 “(PairwiseDistance)雙向距離
”, 旨在通過成對比較來指導圖神經網路維護全域性拓撲資訊. 換句話說, 藉口任務被設計成能夠區分/預測不同節點對之間的距離. 我們注意到, 距離可以通過多種方式來測量, 例如是否在相同的連線部分/叢集中, 個性化的PageRank
或其他計算節點相似度的全域性鏈路預測方法[12]等. 在這項工作中, 類似於[11]中的全域性上下文預測, 我們選擇使用最短路徑長度作為節點之間距離的度量. 更具體地說, 我們首先計算所有節點對 \(\{(v_i,v_j)|v_i,v_j \in \mathcal{V}\}\) 的成對節點最短路徑長度 \(p_{ij}\), 並進一步將長度分為四類 \(p_{ij} = 1、p_{ij}= 2、p_{ij}= 3、p_{ij}≥4\). 為兩個節點之間的路徑長度選擇四個的原因是,GNN
應該能夠在某種程度上正確判斷兩個節點之間的距離, 但是如果我們要包括更多的類, 它將: 1)需要更多的計算來發現所有實際的成對距離(如果大於 \(4\)); 以及 2)潛在地過度匹配圖中的一些較長的成對距離, 與較短的路徑長度相比, 這些距離變得相當嘈雜. 此外, 由於在訓練過程中使用目標中的所有節點對在計算上是昂貴的, 因此在實踐中, 我們在每個時期隨機抽樣一定數量的節點對用於自我監督,SSL
損失然後可以被公式化為如下的多類分類問題 -
\[\mathcal{L}_{self}({\theta'},A,X,\mathcal{D}_{U}) = \frac{1}{|\mathcal{D}_{U}|} \sum_{v_i \in \mathcal{D}_{U}}\|f_{\theta'}(\mathcal{G})_{v_i} - d_{i}\|^2 \]Distance2Clusters(距離簇)
: 儘管PairsewiseDistance
採用了一種取樣策略來降低時間複雜度, 但它仍然非常耗時, 因為我們需要計算所有節點對的成對距離. 相反, 我們通過預測從未標記的節點到預定義的圖簇的距離(同樣根據最短路徑長度)來匯出一個新的探索全域性結構資訊的SSL
代理任務. 這將迫使表示學習每個節點的全域性位置向量. 換句話說, 不是一個節點成對地預測到圖中任意其他節點的距離, 而是我們建立一組與圖簇相關聯的固定錨/中心節點, 然後每個節點將預測到這組錨節點的距離. 具體來說, 我們首先對圖進行劃分, 得到 \(\{C_1, C_2, ..., C_k\}\) 通過應用METIS
圖劃分演算法[13], 因為它在文獻中被普遍使用. 在每個叢集 \(C_j\) 中, 我們將具有最高度的節點指定為相應叢集的中心, 表示為 \(c_j\). 然後, 我們可以有效地為每一個節點建立一個叢集距離向量 \(d_i \in \mathbb{R}^{k}\), 其中 \(d_i\) 的第 \(j\) 個元素的距離是從 \(v_i\) 到中心 \(C_j\) . 因此,Distance2Clusters
的SSL
目標是預測這個距離向量, 優化問題可以表述為多元迴歸問題:
Attribute Information(屬性資訊)
AttributeMask(屬性掩蔽)
: 這個任務類似於EdgeMask
, 但是我們希望GNN
可以通過SSL
學習更多的屬性資訊. 因此,我們隨機遮蔽(即設定為零)節點 \(m_a\) 的特徵 \(\mathcal{M}_a \subset \mathcal{V}\), 然後要求自監督重構這些特徵, 更正式地說:
然而,大多數真實資料集的特徵通常是高維和稀疏的。因此,在實踐中,我們首先使用主成分分析(PCA
)在應用屬性遮蔽之前獲得減少的密集特徵
PairwiseAttrSim(節點相似)
: 與影象等其他領域的資料樣本相比, 在圖結構資料中, 聚合過程實際上是合併來自多個例項的特徵, 以發現學習到的表示. 因此, 給定具有相似屬性的兩個節點, 它們的學習表示不一定相似(與例如兩個精確的影象將在典型的深度學習模型中獲得相同的表示相比). 更一般地, 由於來自兩個節點區域性鄰域的GNN
聚集特徵, 兩個節點在輸入特徵空間中的相似性在學習的表示中不能得到保證. 這可能會產生一把雙刃劍, 因為儘管我們希望利用GNN
的本地鄰域來增強節點特徵變換, 但我們仍然希望在某種程度上保持資料例項相似性的概念, 並且不允許節點的鄰域大幅改變其屬性簽名. 因此, 我們建立了節點屬性相似性的基於屬性的SSL
代理任務. 由於大多數成對相似度接近於零, 我們開發了以下成對取樣策略. 首先, 我們將 \(\mathcal{T}_s\) 和 \(\mathcal{T}_d\) 分別表示具有最高相似性和不相似性的節點對的集合,我們更正式地將其定義為:
其中 \(s_{ij}\) 測量 \(v_i、v_j\)(根據餘弦相似性)節點特徵相似性和 \(K\) 是為每個節點選擇的頂部/底部對的數量. 現在,我們可以將回歸問題如下
\[\mathcal{L}_{self}(\theta',A,X,\mathcal{D}_{U}) =\frac{1}{\mathcal{T}}\sum_{(v_i,v_j \in \mathcal{T})}\|f_w(|f_{\theta'}(\mathcal{G})_{v_i} - f_{\theta'}(\mathcal{G})_{v_j}) - s_{ij}\|^2 \] 其中 \(\mathcal{T} = \mathcal{T}_s \cup \mathcal{T}_d\) 並且 \(f_w\) 線性對映到一維.
訓練方式
Joint Training(聯合訓練)
聯合訓練的目標是同時優化自監督損失 \(\mathcal{L}_{self}\) 和監督損失 \(\mathcal{L}_{task}\), 聯合訓練如下圖所示; 其本質上可以分為兩個階段: 特徵提取過程和自監督的代理任務以及下游任務, 對於特徵提取層我們使用的是相同的引數 \(\theta_z\), 其特徵提取便可以表示為 \(f_{\theta} \rightarrow Z\) , 而相應的節點嵌入 \(z_i = f_{\theta_z}(\mathcal{G}_{v_i})\) ,而對於各自向的任務則用相應的引數, 使用 $f_{\theta_y}(z_i) \rightarrow \hat{y_i} $ 表示介面卡/分類器通過 \(f_{\theta}\) 將節點 \(v_i\) 的embeding
\(z_i\) 對映到預測的類, 此外,自監督代理任務可以被公式化以利用相同的特徵提取器 \(f_{\theta_z}\) 和額外的介面卡 \(f_{\theta_s}\), 因此, 總體目標可定義如下:
Two-stage Training(兩次訓練)
兩次訓練的目的就是預訓練 (pretrain
) 和微調 (Fine-tuning
)
不同策略的訓練效果比較
- 實驗結果表明聯合訓練方式實際上是比預訓練-微調的訓練方式更加的有效, 由於聯合訓練沒有那麼複雜, 只需要調節引數 \(\lambda\) 即可, 而預訓練-微調訓練方式由更高的靈敏度且工作量很大, 所以效果沒有那麼好.
- 對於一些自監督任務來時, 有全域性資訊的能更好的幫助模型提高分類準確率, 而區域性資訊提升的準確率比較低, 由此也可以知道
GCN
一般能學習的區域性的資訊, 而不能學習到全域性特徵資訊. - 為什麼自監督代理任務可以提升
GCN
, 正如我們前面提到的,GCN
對於節點分類自然是半監督的, 已經探索了未標記的節點. 因此, 一些自我監督無濟於事的一個可能原因可能是, GCN本身已經可以瞭解到這些資訊. 如果是這種情況, 那麼在額外的自我監督代理任務上的訓練可能不會進一步提高效能可以為了驗證這個假設, 我們在來自GCN
的原始節點特徵和節點表示上訓練邏輯迴歸分類器(沒有自監督代理任務) 去預測代理任務, 上圖表示了GCN
可以學習到圖的一些區域性資訊而很少能學習到一些全域性資訊.
思想
SelfTask: Distance2Labeled
首先研究修改效能最好的全域性結構藉口任務之一 Distance2Cluster
, 以考慮來自標記節點的資訊. 為了將標籤資訊與圖結構資訊相結合, 提出預測每個節點到標籤節點 (\(\mathcal{V}_L\)) 的距離向量作為 SSL
任務. 對於類 \(c_j \in \{1,...,K\}\) 和未標記節點 \(v_i\in \mathcal{V}_U\), 我們計算了從 \(v_i\) 到類 \(c_i\) 中所有標記節點的平均、最小和最大最短路徑長度. 因此, 節點 \(v_i\) 的向量距離可以表示為 \(d_i\in \mathbb{R}^{3K}\). 在形式上, SSL
目標可以表述為如下的多元迴歸問題:
這個公式可以看作是加強全域性結構代理的一種方式,但主要集中在利用標記節點的任務特定資訊上
SelfTask: ContextLabel
利用結構、屬性和當前標記的節點為每個節點構建鄰居標記分佈上下文向量, 如下所示:
\[f_s(A,X,\mathcal{D}_{L},\mathcal{V}_{U}) \rightarrow \{\bar{y}_i|v_i \in \mathcal{V}_{U}\} \]更具體地說,定義節點的上下文通過其 \(k\) 跳鄰居中的所有節點, 其中標籤分佈向量的第 $c $ 個元素可以定義為:
\[\bar{y}_{ic} = \frac{|\mathcal{N}_{\mathcal{V}_L}(v_i, c)| + |\mathcal{N}_{\mathcal{V}_U}(v_i, c)|}{|\mathcal{N}_{\mathcal{V}_L}(v_i)| + |\mathcal{N}_{\mathcal{V}_U}(v_i)|} ~~~ c = 1,...,K \]其中 \(\mathcal{N}_{\mathcal{V}_{U}}(v_i)\) 定義為鄰居集合從 \(\mathcal{V}_U\) 中的節點 \(v_i\), \(\mathcal{N}_{\mathcal{V}_U}(v_i, c)\) , 表示鄰域集中已經被賦值了類c(對於 \(V_L\) 鄰域集有類似的定義), 而 \(\mathcal{D}_U = (\mathcal{V}_U, \{ y_i|v_i\in \mathcal{V}_U\})\)). 此外, 基於常規任務等價概念的代理任務的目標函式可以被表述為:
\[\mathcal{L}_{self}(\theta',A,X,\mathcal{D}_U) = \frac{1}{|\mathcal{D}_U|} \sum_{v_i \in \mathcal{D}_U}\|f_{\theta'}(\mathcal{G})_{v_i} - \bar{y}_i\|^2 \]可以選擇幾種方法將標籤資訊擴充套件到所有未標記的節點. 一種方法是使用基於結構等價的方法, 在這種方法中, 選擇使用標籤傳播(\(LP\)), 因為它只使用 \(A\)(儘管其他方法, 如最短路徑, 可以在這裡擴充套件, 如在Distance2Lable
中使用的). 另一種方法是同時使用結構等價和屬性等價, 其中我們使用利用兩者的迭代分類演算法(\(ICA\)). 鄰居標籤分佈上下文向量 \(\{ \bar{y}_i | v_i \in \mathcal{V}_U\}\) 可能有噪聲,因為包含了由 \(f_s\) 產生的弱標籤(例如,當使用 \(LP\) 或 \(ICA\) 時). 接下來我們介紹兩種改進 ContextLabel
的方法
SelfTask: EnsembleLabel
有各種方法來定義基於相似性的函式,如線性規劃和獨立分量分析。因此,一種改進ContextLabelis的可能方法是整合各種函式。如果在fs內部使用LP和ICA時,我們讓一個nodevito的類概率分別為σLP(vi)和σICA(vi),那麼我們可以將它們組合起來選擇yias,
\[\bar{y}_i= \arg\max_c σ_{LP}(v_i) + σ_{ICA}(v_i),~~~~~c = 1...K \]我們可以使用集合的YF來構造上下文標籤分佈, 如公式 \((12)\) 並遵循等式中定義的代理目標 \((13)\).
SelfTask: CorrectedLabel
我們設計了修正標籤作為替代介面任務, 通過迭代改進上下文向量來增強上下文標籤. 更具體地說, 我們採用迭代訓練 GNN
和校正標籤的方法, 類似於[20]中使用訓練和校正階段的迭代訓練. 在訓練階段, 我們使用校正後的標籤為未標記的節點構建校正後的上下文標籤分佈向量, 類似於等式 \((12)\) 除了用於 SSL
任務的 \(\mathcal{D}_U= (\mathcal{V}_U,\{ \hat{y}_i|v_i \in \mathcal{V}_U\})\) 之外,我們還使用\(\mathcal{D}_U= (\mathcal{V}_U,\{ \bar{y}_i|v_i \in \mathcal{V}_U\})\) 來表示具有其校正的上下文標籤分佈的未標記資料樣本. 然後, 在原始(例如 \(y_i\) )和校正(例如 \(y_i\) )上下文分佈上訓練 GNN
\(f_θ\),其中損失可以表述:
其中第一和第二項分別適合原始和校正的上下文分佈, \(α\) 控制來自校正的上下文分佈的貢獻. 在標籤校正階段, 我們使用經過訓練的 GCN
來選擇類別原型 \(Z_c= \{z_{c1},...,z_{cp}\}\)(表示為深層要素), 用於生成校正後的標籤. 更具體地說, 首先隨機取樣同一個類中的節點來計算它們的成對相似性矩陣, 其中基於它們的嵌入來計算兩個節點之間的餘弦相似性. 然後我們將每個節點的密度 \(ρ_i\) 定義為:
其中 \(S_c\) 是一個常數值(我們選擇它作為[20]中建議的前 \(40\%\)中的值)和 \(sign(x) = 1,0 ~~~~if~~~~~x >0,= 0 ~~~or~~~ <0\)。 根據公式,較小的 \(ρ\) 表示該節點與同一類中的其他節點不太相似. 標籤不一致的節點通常彼此隔離,而標籤正確的節點應該彼此靠近. 因此, 我們選擇具有頂級目標 \(ρ\) 值的節點作為類原型. 然後我們計算修正後的標籤 \(\hat{y}_i \in \{ 1,...,K \}\) 對於節點 \(v_i \in \hat{\mathcal{V}_U}\)
\[y_i = \arg \max_c \frac{1}{p}\sum_{i =1}^{p} \cos(f_0(\mathcal{G})_{v_i},z_{cl}),c= 1...K \]其中 \(cos(\cdot,\cdot)\) 用於表示兩個樣本之間的餘弦相似性. 換句話說, 我們用\(v_i\) 和 \(p\) 之間的平均相似度來表示 \(v_i\) 和相應類之間的相似度, 然後將相似度最大的類分配給 \(c\). 通過迭代這兩個階段, GNN
可以逐漸學習校正後的標籤(例如,\(\hat{y}i\)).
實驗
結論
仔細研究了用於節點分類任務的 GNNs
中的 SSL
. 首先為圖介紹了各種基本的 SSL
代理任務, 並給出了詳細的實證研究, 以瞭解 SSL
何時以及為什麼適用於 GNNs
, 以及哪種策略可以更好地適用於 GNNs
. 接下來, 基於我們的見解, 我們提出了一個新的方向自我監督任務來構建高階代理任務, 進一步利用特定任務的自我監督資訊. 在真實資料集上的大量實驗表明, 我們的先進方法獲得了最先進的效能. 未來的工作可以在探索新的藉口任務和在預訓練圖神經網路中應用所提出的SSL策略上進行.