GNN入門


—— A Comprehensive Survey on Graph Neural Networks 綜述筆記

GNN basic

基礎性概念主要參考以下文獻:

A Gentle Introduction to Graph Neural Networks (distill.pub)

Understanding Convolutions on Graphs (distill.pub)

最簡單的GNN框架。關鍵是更新和聚合操作。

更新

GNN blocks 也叫GNN layer,簡化版的layer中對每個節點分別進行MLP(輸入n維特征x,輸出n維隱藏特征h) 不考慮節點間關聯性(connectivity)。

聚合

在更新中考慮關聯性:先聚合 再更新。

這里的pooling function也叫聚合,可以是相鄰節點的sum, average。

具體實消息傳遞時使用矩陣乘法。將鄰接矩陣A和特征矩陣x相乘就實現了使用求和聚合的簡單消息傳遞。

k次更新后,可以聚合到k階鄰居的信息。

image-20220113105652375

論文將GNN分為四類:

recGNN

循環圖神經網絡 (Recurrent Graph Neural Networks, RecGNNs) 基本上算是 GNN 的先驅成果。RecGNN 通過循環神經架構學習節點表示。它們假設圖中的節點不斷與其鄰居交換信息/消息,直到達到穩定的平衡。RecGNN 在概念上很重要,並啟發了后來對卷積圖神經網絡的研究。

convGNN

上面提到的考慮關聯性的多層GNN架構就是 convGNN。具體來說卷積圖神經網絡 (Convolutional Graph Neural Networks, ConvGNNs) 的主要思想是通過匯總節點自身的特征 和鄰居的特征 來生成節點的表示形式。與 RecGNN 不同,ConvGNN 堆疊多個圖卷積層以提取高級節點表示。

論文將convGNN 進一步分成兩種:基於譜的和基於空間的。

基於譜的convGNN

在基於譜的圖神經網絡中,圖被假定為無向圖,無向圖的一種等價數學表示是正則化圖拉普拉斯矩陣,即\(\mathbf{L}=\mathbf{I}_{\mathbf{n}}-\mathbf{D}^{-\frac{1}{2}} \mathbf{A D}^{-\frac{1}{2}}\)

其中,A為圖的鄰接矩陣,D為對角矩陣,對角線上值為度數.

正則化圖拉普拉斯矩陣具有實對稱半正定的性質。利用這個性質,正則化拉普拉斯矩陣可以進行特征值分解\(\mathbf{L}=\mathbf{U} \boldsymbol{\Lambda} \mathbf{U}^{T}\)

其中U是由L的特征向量構成的矩陣,\(\Lambda\)是對角矩陣,對角線上的值為L的特征值。

正則化拉普拉斯矩陣的特征向量構成了一組正交基,被稱為譜(spectrum)。

可以用特征向量的線性組合來表示輸入特征x,線性組合的系數\(\hat x\)被稱為x的譜表示。

\[x=\sum_{i=1}^{n} \hat{x_{i}} u_{i}=U \hat{x_{1}} \]

這里將x和\(\hat x\)的轉換定義為傅里葉變換

\[\begin{array}{l} \mathscr{F}(\mathrm{x})=\mathrm{U}^{T} \mathrm{x} \\ \mathscr{F}^{-1}(\hat{\mathrm{x}})=\mathrm{U} \hat{\mathrm{x}} \end{array} \]

現在我們可以來定義對輸入特征x的圖卷積操作了

\[\begin{aligned} \mathrm{x} *_{G} \mathrm{~g} &=\mathscr{F}^{-1}(\mathscr{F}(\mathrm{x}) \odot \mathscr{F}(\mathrm{g})) \\ &=\mathrm{U}\left(\mathbf{U}^{T} \mathrm{x} \odot \mathbf{U}^{T} \mathrm{~g}\right) \end{aligned} \]

其中,g是我們定義的濾波器filter;\(\bigodot\)表示Hadamard product。

基於譜的圖卷積網絡都遵循這樣的模式,它們之間關鍵的不同點在於選擇的濾波器不同。

現有的基於譜的圖卷積網絡模型有以下這些:Spectral CNN、Chebyshev Spectral CNN (ChebNet)、Adaptive Graph Convolution Network (AGCN)

基於譜的圖卷積神經網絡方法的一個常見缺點是,它們需要將整個圖加載到內存中以執行圖卷積,這在處理大型圖時是不高效的。

例子 ChebNet

image-20220113103546392

這個式子比較復雜,本質上是一個多項式過濾器(polynomial filter),具體計算embedding h時比較直觀,令x前面的系數為:

\[p_{w}(L)=\sum_{i=1}^{d} w_{i} T_{i}(\tilde{L}) \]

則可以這樣計算:

上面把系數提取出來了,更加通用的計算方法如下

基於空間的

基於空間的圖卷積神經網絡的思想主要源自於傳統卷積神經網絡對圖像的卷積運算,不同的是它基於節點的空間關系來定義圖卷積的。

對於一般的圖,基於空間的圖卷積將中心節點表示和相鄰節點表示進行聚合,以獲得該節點的新表示。

例子 GCN

以GCN為例,這里的主要區別是求mean時只考慮鄰居節點。

GCN原論文中的歸一化是下面的形式,推導過程中同時借鑒了基於譜的方法和基於空間的方法。

Graph Autoencoders

圖自動編碼器 (Graph Autoencoders, GAEs) 是無監督的學習框架,可將節點編碼到潛在的矢量空間中,並從編碼后的信息中重建圖數據。 最終目的是利用神經網絡結構將圖的頂點表示為低維向量。

目前基於GCN的自編碼器的方法主要有:Graph Autoencoder (GAE)和Adversarially Regularized Graph Autoencoder (ARGA)

典型的解決方案是利用多層感知機作為編碼器來獲取節點嵌入,其中解碼器重建節點的鄰域統計信息,如positive pointwise mutual information (PPMI)或一階和二階近似值。

最近,研究人員已經探索了將GCN作為編碼器的用途,將GCN與GAN結合起來,或將LSTM與GAN結合起來設計圖自動編碼器。

圖自編碼器的其它變體有:

Network Representations with Adversarially Regularized Autoencoders (NetRA)

Deep Neural Networks for Graph Representations (DNGR)

Structural Deep Network Embedding (SDNE)

Deep Recursive Network Embedding (DRNE)

DNGR和SDNE學習僅給出拓撲結構的節點嵌入,而GAE、ARGA、NetRA、DRNE用於學習當拓撲信息和節點內容特征都存在時的節點嵌入。圖自編碼器的一個挑戰是鄰接矩陣A的稀疏性,這使得解碼器的正條目數遠遠小於負條目數。為了解決這個問題,DNGR重構了一個更密集的矩陣,即PPMI矩陣,SDNE對鄰接矩陣的零項進行懲罰,GAE對鄰接矩陣中的項進行重加權,NetRA將圖線性化為序列。

STGNNs

時空圖神經網絡(STGNNs) 旨在從時空圖學習隱藏模式,這種模式在各種應用中變得越來越重要,例如交通速度預測,駕駛員操縱預期和人類行為識別。 STGNN 的關鍵思想是同時考慮空間依賴性和時間依賴性。 許多當前的方法將圖卷積與 RNN 或 CNN 集成在一起以捕獲空間依賴性,從而對時間依賴性進行建模。

Graph Generative Networks

圖生成網絡的目標是在給定一組觀察到的圖的情況下生成新的圖。圖生成網絡的許多方法都是特定於領域的。例如,在分子圖生成中,一些工作模擬了稱為SMILES的分子圖的字符串表示。在自然語言處理中,生成語義圖或知識圖通常以給定的句子為條件。最近,人們提出了幾種通用的方法。一些工作將生成過程作為節點和邊的交替形成因素,而另一些則采用生成對抗訓練。這類方法要么使用GCN作為構建基塊,要么使用不同的架構。

MOFs可能的應用

圖的表示

雖然我們只為每個屬性描述了帶有矢量化信息的圖,但圖結構更靈活,可以容納其他類型的信息。幸運的是,消息傳遞框架足夠靈活,通常使 GNN 適應更復雜的圖結構是關於定義如何通過新的圖屬性傳遞和更新信息。

例如,我們可以考慮多邊圖或多重圖 ,其中一對節點可以共享多種類型的邊,當我們想要根據節點類型對節點之間的交互進行不同建模時,就會發生這種情況。例如,對於社交網絡,我們可以根據關系類型(熟人、朋友、家人)指定邊緣類型。可以通過為每種邊緣類型設置不同類型的消息傳遞步驟來調整 GNN。

我們還可以考慮嵌套圖,例如一個節點代表一個圖,也稱為超節點(hypernode)圖。 嵌套圖對於表示層次信息很有用。例如,我們可以考慮一個分子網絡,其中一個節點代表一個分子,如果我們有一種方法(反應)將一個分子轉換為另一個分子,則兩個分子之間共享一條邊 。在這種情況下,我們可以在嵌套圖上學習,方法是讓 GNN 在分子級別學習表示,另一個在反應網絡級別學習表示,並在訓練期間在它們之間交替。

另一種類型的圖是超圖 ,其中一條邊可以連接到多個節點,而不僅僅是兩個。對於給定的圖,我們可以通過識別節點社區並分配連接到社區中所有節點的超邊來構建超圖。

batch采樣

訓練神經網絡的一種常見做法是使用根據訓練數據(小批量)的隨機常數大小(批量大小)子集計算的梯度來更新網絡參數。由於彼此相鄰的節點和邊的數量的可變性,這種做法對圖提出了挑戰,這意味着我們不能擁有恆定的批量大小。

使用圖進行批處理的主要思想是創建保留較大圖的基本屬性的子圖。這種圖采樣操作高度依賴於上下文,並且涉及從圖中子選擇節點和邊。這些操作在某些情況下(引文網絡)可能有意義,而在其他情況下,這些操作可能過於強大(分子,其中子圖僅代表一個新的較小的分子)。

如何對圖進行采樣是一個開放的研究問題。 如果我們關心在鄰域級別保留結構,一種方法是隨機采樣均勻數量的節點,即我們的節點集。然后添加與節點集相鄰的距離為 k 的相鄰節點,包括它們的邊。 每個鄰域都可以被認為是一個單獨的圖,並且可以在這些子圖的批次上訓練 GNN。損失可以被掩蓋以僅考慮節點集,因為所有相鄰節點都將具有不完整的鄰域。更有效的策略可能是首先隨機采樣單個節點,將其鄰域擴展到距離 k,然后在擴展集中選擇另一個節點。一旦構建了一定數量的節點、邊或子圖,就可以終止這些操作。如果上下文允許,我們可以通過選擇初始節點集然后對恆定數量的節點進行二次采樣(例如隨機,或通過隨機游走或 Metropolis 算法)來構建恆定大小的鄰域。


免責聲明!

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



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