陳 斌,李金龍
(中國科學技術大學 計算機科學與技術學院,合肥 230027)
網絡表示學習(Network Representation Learning,NRL),也稱為圖嵌入(Graph Embedding,GE),旨在將圖中節點表示成低維稠密實值向量,然后作為節點的特征被應用于實際應用任務,如節點分類[1]、鏈接預測[2]以及圖分類[3]等.為了獲得更好的網絡表示并且在實際應用任務中獲得更好的表現,需要充分利用圖的拓撲結構、節點特征和邊的特征(如果可用)中蘊含的豐富信息.
由于卷積神經網絡(Convolutional Neural Network)具有提取局部空間特征的能力,近年來已經在各種具有挑戰性的任務中被證明是有前景的,特別是在計算機視覺(Computer Vision,CV)和自然語言處理(Natural Language Processing,NLP)領域.其底層處理的數據,如圖像和文本等都可以表示為特殊形式的圖,都具有規則的網格結構.然而不能將CNN直接應用于一般形式的圖數據,由于存在以下兩個問題:1)圖數據中每個節點的鄰居大小不一;2)節點的鄰居節點沒有固定的順序.
將CNN推廣應用到圖數據上的工作可以分為兩大類,分別為基于頻譜(spectral-based)的方法,和基于空間(spatial-based)的方法.基于頻譜的方法從圖信號處理的角度引入濾波器來定義圖卷積,其中圖卷積運算被解釋為從圖信號中去除噪聲,不同方法[4-6]間關鍵的區別在于濾波器的選擇不同.基于空間的方法則是通過信息傳播來定義圖卷積,相比于基于頻譜的方法具有更好的擴展性.
Kipf等人提出的圖卷積網絡(Graph Convolutional Network,GCN)[7]填補了基于光譜方法和基于空間方法之間的差距,是基于頻譜的圖卷積的一階近似,同時采用鄰域聚合方案,將節點特征與相鄰節點的特征迭代聚合為節點新的特征.
消息傳遞神經網絡(Message Passing Neural Network,MPNN)[8]概述了基于空間的卷積神經網絡的一般框架.它把圖卷積看作一個消息傳遞過程,在這個過程中信息可以沿著邊直接從一個節點傳遞到另一個節點.為了讓信息傳遞得更遠,可以迭代執行K步消息傳遞過程.由于節點的鄰居數量不一致,可能是1個,也可能是1000個甚至更多,GraphSAGE[9]對每個節點進行采樣,以得到固定數量的鄰居,降低了計算時間復雜度.圖注意力網絡(Graph Attention Network,GAT)[10]在進行鄰域聚合時,采用注意力機制為不同的鄰居節點分配不同的權重系數,提升了節點分類的性能.
這些方法在一個圖卷積過程中只考慮了節點的1階鄰居節點,而忽視了節點的高階鄰域信息.因此在實際使用時通過堆疊多個圖卷積層來提升模型性能.GCN在使用兩個圖卷積層時獲得了最佳節點分類性能.然而,當模型變得更深,獲取的信息更多時模型反而表現得更差.GCN模型實際上是Laplacian平滑[11]的一種特殊形式,模型越深會引起過度平滑,導致節點無法區分.實際上,圖卷積層數的選擇仍然是一個有待解決的問題.
由于輸入圖的結構信息是多種多樣的,因此沒有統一的規則來確定圖卷積層的數量,一種替代方案是在一層中混合不同階鄰居節點的信息.JK-Net[12]將網絡的最后一層與之前的隱層連接起來,然后有選擇地利用不同隱層提取的局部信息.MixHop[13]提出新的圖卷積層,使用可訓練聚合參數將不同階鄰居節點的信息進行混合.
在本文中,我們提出了一種新的網絡表示學習模型,即多鄰域注意力圖卷積網絡(MAGCN),綜合考慮了節點的屬性信息、圖的局部(1階鄰域)和全局(高階鄰域)結構信息.本文的創新點有以下3點:1)基于注意力機制,使用鄰接矩陣的冪作為屏蔽矩陣,生成多個融合各階鄰域信息的節點表示;2)為了能夠獲得包含更多信息的節點表示,通過改進的動態路由算法將不同的節點表示自適應地聚合成一個;3)我們在Cora、Citeseer 和Pubmed 3個引文網絡數據集上進行了節點分類實驗,相比其他方法具有更高的分類準確率.
圖1描述了MAGCN模型結構,主要包含兩個部分,即多注意力圖卷積層和隱狀態聚合層.多注意力圖卷積層將鄰接矩陣的冪作為屏蔽矩陣,從各階鄰域提取子結構特征,獲得節點的多個中間表示,我們稱之為隱狀態.隱狀態聚合層用于自適應地將局部結構特征聚合在一起作為最終的節點表示.接下來我們將分別介紹這兩個組成部分.

圖1 MAGCN結構圖Fig.1 Architecture of MAGCN
圖2展示了多注意力圖卷積層的工作流程.該層的輸入為圖的鄰接矩陣A和節點的特征矩陣X,A∈N×N,X∈N×F,N是節點個數,F是節點特征的維度.輸出是新的節點特征矩陣集合,即節點中間表示,我們稱之為節點的隱狀態.輸出的節點中間表示的個數和使用的鄰接矩陣冪的個數一致,即,如果我們使用了鄰接矩陣的1次,2次,…,K次冪,則輸出為H1,H2,…,HK.

圖2 多注意力圖卷積層流程圖Fig.2 Workflow of multi-attention graph convolution layer
首先,我們應用線性函數將節點特征矩陣X轉換成高級別特征X′,線性函數如公式(1)所示:
X′=[X1′,X2′,…,XN′ ]=XWt
(1)
其中,Wt∈F×F′是一個可訓練權重矩陣,F′是第i個節點的高級別特征.Xi′和Xj′之間的注意力系數eij將由兼容性函數a(Xi′,Xj′)計算得到,如公式(2)所示:
(2)
其中wu,wv∈F′是可訓練參數,LeakyReLU是非線性激活函數.注意力系數eij衡量了Xi′和Xj′之間成對的依賴關系.接下來,我們基于節點之間的連邊關系調整注意系數eij,如公式(3)所示:
(3)

為了使不同節點之間的注意力系數易于比較,使用softmax函數對所有注意力系數進行歸一化,如公式(4)所示:
(4)
(5)
其中,σ(·)是非線性激活函數.
我們將公式(3)中的A替換為鄰接矩陣的2次,3次,…,K次冪,從而得到第i個節點與它的高階鄰居之間的注意力系數,這樣我們就可以為每個節點生成多個輸出特征矩陣.這個過程可以用公式(6)來概括.
(6)
其中,k∈{2,…,K},Bk是指將鄰接矩陣的k次冪中大于0的值置為1得到的矩陣;Nik是圖中第i個節點的k階鄰居節點集合,Hik∈F′是第i個節點的第k個隱狀態,σ(·)是非線性激活函數.
多注意力圖卷積層輸出了一組節點隱狀態[H1,…,HK],每一個都捕獲了k階鄰居的局部結構信息,k∈{1,…,K}.為了自適應地將這些隱狀態聚合到節點的最終表示形式,我們提出了隱狀態聚合層.

(7)
(8)
其中,Wk∈F′×F′是一個權重矩陣;ck是耦合系數,是bk(從子膠囊到父膠囊的對數先驗概率)在softmax函數處理下的結果,如公式(9)所示:
(9)

(10)
(11)
其中,⊙是元素級(element-wise)乘法,Hi′表示H′的第i行,∑表示對所有矩陣元素求和.

為了訓練我們的模型,我們使用節點分類任務構建目標函數.在隱狀態聚合層之后,我們得到了節點的最終特征表示矩陣H∈N×F′,然后我們將其輸入到圖卷積層(由公式(12)定義)用于預測未標記節點的標簽.
(12)

我們的模型是通過最小化所有帶標簽節點的交叉熵損失來訓練的,如公式(13)所示:
(13)
其中,yl是帶標簽節點的下標集合,Hlcnode指的是第l個帶標簽節點的圖卷積層輸出的第c項.Ylc表示第l個帶標簽節點的真實值.
為了驗證我們提出的模型(MAGCN)的性能,我們在節點分類任務上與之前的先進模型進行了比較.我們使用了3個基準數據集:Cora,Citeseer和Pubmed[15];這些數據集是引文網絡,其中節點表示文檔,邊表示文檔之間的引用,標簽表示的是文檔所屬的類別.每個節點的特征由詞袋(bag-of-word)表示,特征的維度由語料庫大小決定.對于每個數據集,每種標簽下有20個節點用于訓練.此外,有500個節點用于驗證,1000個節點用于測試.有關這些數據集的詳細統計信息,見表1.

表1 節點分類實驗數據集描述Table 1 Details of datasets for node classification
對于節點分類,在多注意力圖卷積層中,我們使用了多頭注意力機制,即獨立運行圖卷積多次,然后將所有圖卷積后的輸出拼接在一起.對于Cora和Citeseer數據集,多注意力圖卷積層由8個注意力頭組成,每個注意力頭輸出8維特征表示;對于Pubmed數據集,多注意力圖卷積層由4個注意力頭組成,每個注意力頭輸出4維特征表示.此外,所有數據集上的鄰居階數最大值均取值為3.
我們使用Adam[16]隨機梯度下降優化器對我們的模型進行訓練,以最小化訓練節點上的交叉熵,最多訓練3000次,即3000個epochs.Cora、Citeseer和Pubmed數據集的學習率分別設置為0.005、0.0085和0.005,L2正則化的權重分別設置為0.01、0.002和0.005.動態路由迭代次數r設置為3次.我們通過提前停止策略(early stopping strategy)來終止訓練,即驗證集節點上的交叉熵損失在100個連續的epoch都不下降時結束訓練.此外,為了避免過擬合,我們在模型各層之間都使用了Dropout[17],其比率設置為0.5.對于所有數據集,我們運行模型10次,并使用平均分類精度和標準偏差作為最終結果.所有訓練都使用Pytorch-1.2.0,以及Fey等人提供的幾何深度學習擴展庫Pytorch Geometric[18],并在單塊Nvidia GTX-1080Ti GPU卡上完成.
3.3.1 模型對比
我們將我們的模型與DeepWalk[19]、Planetoid[15]、Chebyshev[6]、GCN[7]和GAT[10]進行了比較,這些模型在節點分類精度方面都是目前最先進的模型.Cora、Citeseer和Pubmed數據集上的節點分類精度結果匯總見表2.

表2 節點分類任務分類正確率Table 2 Test accuracy on node classification
對比方法的所有結果均來自其原始文獻.結果表明,我們的模型在所有數據集上始終保持最佳性能,這意味著MAGCN確實能夠通過探索高階鄰域信息來學習更多的鑒別節點的特征.與GAT直接比較,我們的MAGCN在所有3個數據集上的性能分別提高了0.8%、0.8%和0.6%.注意,與同樣使用注意力機制的GAT相比,我們的MAGCN在學習節點表示時僅多考慮了高階鄰居的信息.此外,我們還觀察到,與GAT相比,MAGCN在3個數據集上的分類準確率標準偏差更小,這說明MAGCN的訓練更穩定.
3.3.2 參數分析
在GCN中,疊加多個圖卷積層(K層)可以增加一個節點的接受域,使其能覆蓋到它的K階鄰居.在我們的MAGCN中,節點的接受域由鄰居階數的最大值(即K值)參數控制.為了研究鄰居階數的最大值與節點分類性能之間的關系,我們在節點分類任務中使用了不同的K值.結果匯總在表3中,結果表明,隨著鄰居階數的最大值增加到3,模型節點分類的性能將會逐步得到改善.但是當鄰居階數的最大值超過3時,即在學習節點表示時,考慮了節點的3階以上鄰居,使得MAGCN可能會從不太相關的鄰居那里獲取大量信息,從而無法學習合適的節點表示.此外,對于節點分類,GAT模型包含兩層,這意味著節點的接受域是它的2階鄰居.通過將鄰居階數最大值的參數設置為2,我們的MAGCN具有與GAT相同的模型容量,但實驗結果顯示我們的模型具有更好的表現,如表3中K值取2的行所示.

表3 不同K值在節點分類準確率方面的比較Table 3 Comparison of difference K interm of node classification accuracy
在GAT中使用多頭注意力旨在用來增加模型的容量,但并沒有給出具體的解釋.為了探尋使用多頭注意力機制對提升模型性能是否有效,我們進行了相關實驗.通過設置多注意力圖卷積層中的相關參數,即使用不同數量的注意力頭,每個注意力頭輸出不同維度的特征表示,其他設置保持不變,在Cora數據集上的實驗結果如表4所示.注意,為了使得多注意力圖卷積層之后得到的節點表示維度一致,注意力頭數量乘上每個注意力頭輸出表示的維度需保持一致.

表4 不同數量注意力頭的實驗結果Table 4 Experimental results of different #heads
從表4的結果來看使用8個注意力頭在Cora數據集上的節點分類準確率最高,而使用4個注意力頭時標準差更小,訓練更穩定.對比只使用單個注意力頭,多頭注意力機制確實能提升模型的性能.
3.3.3 隱狀態聚合層的刪減實驗
設計隱狀態聚合層的目的是為了能自適應地聚合從不同階鄰居學習到的節點的隱狀態.為了驗證它是否有效,我們進行了如下實驗:用簡單的add操作替換隱狀態聚合層.具體來說,在我們得到節點的隱狀態(H1,H2,H3)之后,直接通過H=H1+H2+H3來計算節點的最終表示.其它部分則保持不變.有/無隱狀態聚合層的MAGCN之間的比較結果匯總在表5中,其中MAGCNO表示用add操作代替隱狀態聚合層的MAGCN.結果表明,在Cora、Citeseer和Pubmed數據集上,使用隱狀態聚合層可以提高模型的性能,準確率分別提高了1.2%、1.0%和0.6%.這些結果表明,隱狀態聚合層能夠合適地確定不同階鄰居信息對最終節點表示的貢獻,從而使得最終學到的節點表示更完善.

表5 有/無隱狀態聚合層的MAGCN實驗結果Table 5 Experimental results of MAGCN with/without hidden state aggregation layer
對網絡表示學習效果的另一種評估方式是對學習到的網絡表示進行可視化.Cora數據集的節點共有7種不同的類別標簽,很適合進行可視化.我們首先使用MAGCN與node2vec[20]模型以及GCN模型學習節點的低維向量表示,然后將學習到的節點向量表示輸入到t-SNE[21]模型中.t-SNE會將節點表示映射到二維向量空間中的一個點,即每一個節點在二維空間中有一個坐標,以實現可視化.每一種類別標簽對應一種形狀,具有相同類別標簽的節點在二維空間中對應的點具有相同的形狀.
圖3展示了不同模型學習到的節點表示的可視化效果.從可視化結果來看,我們的MAGCN可視化效果最好,能觀察到明顯不同的7個簇,而且簇與簇之間的間隔也相對比較大.由于node2vec只利用了原始網絡的結構信息,忽略了節點的屬性信息,導致學習到的節點表示在可視化時未能形成明顯的簇,具有不同標簽的節點混合在一起的情況比較嚴重,還有數個節點遠離了中心.GCN模型的可視化效果較node2vec有了很大的提升,具有相同標簽的節點大致分到了一起,但是簇與簇之間的邊界還是不夠明顯.由于GCN和MAGCN都考慮了節點的屬性信息和結構信息,因此可視化效果較node2vec更好,此外,由于我們的MAGCN考慮了節點的多階鄰域信息,而且使用了注意力機制,使得我們的模型具有更好的可視化表現.

圖3 Cora數據集t-SNE可視化Fig.3 t-SNE visualization on Cora dataset
在本文中,我們提出了基于注意力機制的融合多階鄰域信息的網絡表示學習模型MAGCN,以利用圖中蘊含的豐富信息學習節點表示.設計了多注意力圖卷積層,用于捕獲圖的局部和全局結構信息,生成不同的節點表示;隱狀態聚合層采用動態路由算法,將不同節點表示聚合在一起,生成最終的節點表示.在3個引文網絡上的節點分類任務的實驗結果表明,該模型與現有方法相比具有更高的分類準確率.此外,我們的模型具有更好的可視化效果.接下來的工作可考慮尋找一種新的結構,能夠根據輸入圖數據的特征自適應確定使用多少階鄰居信息更合適,并在更多的任務中評估MAGCN的性能.