MLP,GCN,GAT,GraphSAGE, GAE, Pooling,DiffPool
MLP GCN GAT區(qū)別與聯(lián)系
在節(jié)點表征的學習中:
- MLP節(jié)點分類器只考慮了節(jié)點自身屬性,忽略了節(jié)點之間的連接關系,它的結果是最差的;
- 而GCN與GAT節(jié)點分類器,同時考慮了節(jié)點自身屬性與周圍鄰居節(jié)點的屬性,它們的結果優(yōu)于MLP節(jié)點分類器。
從中可以看出鄰居節(jié)點的信息對于節(jié)點分類任務的重要性。
基于圖神經(jīng)網(wǎng)絡的節(jié)點表征的學習遵循消息傳遞范式:
- 在鄰居節(jié)點信息變換階段,GCN與GAT都對鄰居節(jié)點做歸一化和線性變換(兩個操作不分前后);
- 在鄰居節(jié)點信息聚合階段都將變換后的鄰居節(jié)點信息做求和聚合;
- 在中心節(jié)點信息變換階段只是簡單返回鄰居節(jié)點信息聚合階段的聚合結果。
GCN與GAT的區(qū)別在于鄰居節(jié)點信息聚合過程中的歸一化方法不同:
-
前者根據(jù)中心節(jié)點與鄰居節(jié)點的度計算歸一化系數(shù);
-
后者根據(jù)中心節(jié)點與鄰居節(jié)點的相似度計算歸一化系數(shù)。
-
前者的歸一化方式依賴于圖的拓撲結構,不同節(jié)點其自身的度不同、其鄰居的度也不同,在一些應用中可能會影響泛化能力。
-
后者的歸一化方式依賴于中心節(jié)點與鄰居節(jié)點的相似度,相似度是訓練得到的,因此不受圖的拓撲結構的影響,在不同的任務中都會有較好的泛化表現(xiàn)。
另外,GCN利用了拉普拉斯矩陣,GAT利用attention系數(shù)。一定程度上而言,GAT會更強,因為 頂點特征之間的相關性被更好地融入到模型中。
一些問題
GCN是一種全圖的計算方式,一次計算就更新全圖的節(jié)點特征。學習的參數(shù)很大程度與圖結構相關,這使得GCN在inductive任務上遇到困境。
我認為最根本的原因是GAT的運算方式是逐頂點的運算(node-wise),這一點可從公式(1)—公式(3)中很明顯地看出。每一次運算都需要循環(huán)遍歷圖上的所有頂點來完成。逐頂點運算意味著,擺脫了拉普利矩陣的束縛,使得有向圖問題迎刃而解。
GAT中重要的學習參數(shù)是 W 與 a(·) ,因為上述的逐頂點運算方式,這兩個參數(shù)僅與頂點特征相關,與圖的結構毫無關系。所以測試任務中改變圖的結構,對于GAT影響并不大,只需要改變 Ni,重新計算即可。
與此相反的是,GCN是一種全圖的計算方式,一次計算就更新全圖的節(jié)點特征。學習的參數(shù)很大程度與圖結構相關,這使得GCN在inductive任務上遇到困境。
GCN GAT GraphSAGE
GraphSAGE的提出
前面說的GCN的缺點也是很顯然易見的,第一,GCN需要將整個圖放到內(nèi)存和顯存,這將非常耗內(nèi)存和顯存,處理不了大圖;第二,GCN在訓練時需要知道整個圖的結構信息(包括待預測的節(jié)點), 這在現(xiàn)實某些任務中也不能實現(xiàn)(比如用今天訓練的圖模型預測明天的數(shù)據(jù),那么明天的節(jié)點是拿不到的)。
在介紹GraphSAGE之前,先介紹一下Inductive learning和Transductive learning。注意到圖數(shù)據(jù)和其他類型數(shù)據(jù)的不同,圖數(shù)據(jù)中的每一個節(jié)點可以通過邊的關系利用其他節(jié)點的信息。這就導致一個問題,GCN輸入了整個圖,訓練節(jié)點收集鄰居節(jié)點信息的時候,用到了測試和驗證集的樣本,我們把這個稱為Transductive learning。然而,我們所處理的大多數(shù)的機器學習問題都是Inductive learning,因為我們刻意的將樣本集分為訓練/驗證/測試,并且訓練的時候只用訓練樣本。這樣對圖來說有個好處,可以處理圖中新來的節(jié)點,可以利用已知節(jié)點的信息為未知節(jié)點生成embedding,GraphSAGE就是這么干的。
GraphSAGE是一個Inductive Learning框架,具體實現(xiàn)中,訓練時它僅僅保留訓練樣本到訓練樣本的邊,然后包含Sample和Aggregate兩大步驟,Sample是指如何對鄰居的個數(shù)進行采樣,Aggregate是指拿到鄰居節(jié)點的embedding之后如何匯聚這些embedding以更新自己的embedding信息。下圖展示了GraphSAGE學習的一個過程
第一步,對鄰居采樣(k=1,第一跳最多采樣3個;k=2,第二跳最多采樣兩個)
第二步,采樣后的鄰居embedding傳到節(jié)點上來,并使用一個聚合函數(shù)聚合這些鄰居信息以更新節(jié)點的embedding(從最內(nèi)層開始更新,總共對紅色節(jié)點更新兩次)
第三步,根據(jù)更新后的embedding預測節(jié)點的標簽
GrapgSage優(yōu)點
(1)利用采樣機制,很好的解決了GCN必須要知道全部圖的信息問題,克服了GCN訓練時內(nèi)存和顯存的限制,即使對于未知的新節(jié)點,也能得到其表示
(2)聚合器和權重矩陣的參數(shù)對于所有的節(jié)點是共享的
(3)模型的參數(shù)的數(shù)量與圖的節(jié)點個數(shù)無關,這使得GraphSAGE能夠處理更大的圖
(4)既能處理有監(jiān)督任務也能處理無監(jiān)督任務
Graph Attention Networks(GAT)
為了解決GNN聚合鄰居節(jié)點的時候沒有考慮到不同的鄰居節(jié)點重要性不同的問題,GAT借鑒了Transformer的idea,引入masked self-attention機制,在計算圖中的每個節(jié)點的表示的時候,會根據(jù)鄰居節(jié)點特征的不同來為其分配不同的權值。
GAT優(yōu)點
(1)訓練GCN無需了解整個圖結構,只需知道每個節(jié)點的鄰居節(jié)點即可
(2)計算速度快,可以在不同的節(jié)點上進行并行計算
(3)既可以用于Transductive Learning,又可以用于Inductive Learning,可以對未見過的圖結構進行處理
三者特點
GCN:訓練是 full-batch 的,難以擴展到大規(guī)模網(wǎng)絡,并且收斂較慢;
GAT:參數(shù)量比 GCN 多,也是 full-batch 訓練;只用到 1-hop 的鄰居,沒有利用高階鄰居,當利用 2 階以上鄰居,容易發(fā)生過度平滑(over-smoothing);
GraphSAGE:雖然支持 mini-batch 方式訓練,但是訓練較慢,固定鄰居數(shù)目的 node-wise 采樣,精度和效率較低。
三者的缺點:
1.GCN 的缺點在于它靈活性差,transductive,并且擴展性非常差,除此之外這篇論文借助驗證集來早停幫助性能提升,跟它半監(jiān)督學習的初衷有點相悖。
2.GraphSage 這篇論文旨在提升 gcn 擴展性和改進訓練方法缺陷。它將模型目標定于學習一個聚合器而不是為每個節(jié)點學習到一個表示,這中思想可以提升模型的靈活性和泛化能力。除此之外,得益于靈活性,它可以分批訓練,提升收斂速度。但是它的問題是因為節(jié)點采樣個數(shù)隨層數(shù)指數(shù)增長,會造成模型在 time per batch 上表現(xiàn)很差,弱于 GCN,這方面的詳細討論可以參考 Cluster-GCN 這篇論文。
3.GAT 這篇論文創(chuàng)新之處是加入 attention 機制,給節(jié)點之間的邊以重要性,幫助模型學習結構信息。相對的缺點就是訓練方式不是很好,其實這個模型可以進一步改,用 attention 做排序來選取采樣節(jié)點,這樣效果和效率方面應該會有提升。
共同缺點
這三種模型針對的圖結構都是 homogeneous 的,也就是只有同一種節(jié)點和連邊,如果是異質(zhì)網(wǎng)絡(heterogeneous)則不能直接處理。能解決的任務目前來說主要是通過 embedding 做節(jié)點分類和連邊預測。
三者應用方面區(qū)別
GCN 和 GraphSAGE 均是各向同性的網(wǎng)絡結構,某些情況下學習表示的能力較差一些,只能用于無向圖。而 GAT 是各向異性的,考慮了各個鄰居節(jié)點的權重,可以用于有向圖。
GCN 和 GAT 在最開始被提出來的時候,是不考慮自身節(jié)點信息的,因此性能比較差,后來人們對圖矩陣增加自環(huán)的方式來一定程度上緩解這個問題。而 GraphSAGE 被設計出來就考慮了節(jié)點本身的信息。
BenchmarkGNN 文章在各個任務上對這幾種方法進行了比較,GCN 是性能最差的,GAT 性能介于中間,GraphSAGE 性能較好。另外 GCN 和 GAT 均可以使用殘差連接的方式來提升性能。
參考:
MLP GCN GAT
GCN與GAT之間的重要聯(lián)系和區(qū)別
GCN, GAT, GraphSAGE對比【整理】
圖神經(jīng)網(wǎng)絡入門必讀: 一文帶你梳理GCN, GraphSAGE, GAT, GAE, Pooling, DiffPool
總結
以上是生活随笔為你收集整理的MLP,GCN,GAT,GraphSAGE, GAE, Pooling,DiffPool的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AC-Campus准入控制--Mac
- 下一篇: web16(ColorBox插件编写)