前言:
2,3年前,我對于深度學(xué)習(xí)認(rèn)知范圍僅限于CNN,RNN等傳統(tǒng)神經(jīng)網(wǎng)絡(luò)模型,學(xué)弟跟我說他在研究圖神經(jīng)網(wǎng)絡(luò),我頓時一驚感覺神經(jīng)網(wǎng)絡(luò)的發(fā)展竟然如此之快。后來,他去阿里上班,阿里也是當(dāng)下使用圖神經(jīng)網(wǎng)絡(luò)最成熟的互聯(lián)網(wǎng)公司?,F(xiàn)在,各大會議收錄了不少圖神經(jīng)網(wǎng)絡(luò)的論文,我為了追趕潮流,也得看看圖神經(jīng)網(wǎng)絡(luò)的相關(guān)論文。理解這類論文要求數(shù)學(xué)基礎(chǔ)比較高,在知乎上有位清華的博士superbrother寫了很多對圖神經(jīng)網(wǎng)絡(luò)的理解,看了以后非常受益(當(dāng)然也不容易理解),其中涉及各種傅立葉變換等數(shù)學(xué)理解。當(dāng)然,有本書《深入淺出圖神經(jīng)網(wǎng)絡(luò)》也講了不少對于圖神經(jīng)網(wǎng)絡(luò)的理解,在Github上也有對應(yīng)的代碼實現(xiàn)。
1 圖神經(jīng)網(wǎng)絡(luò)的介紹
很多書把圖神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)(CNN),循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)并列。相對于CNN和RNN而言,GNN的發(fā)展比較短但是在很多領(lǐng)域都有很好的應(yīng)用。因為圖數(shù)據(jù)有復(fù)雜的結(jié)構(gòu),多樣化的屬性類型,可以模擬多種任務(wù)場景,比如社交網(wǎng)絡(luò),調(diào)控網(wǎng)絡(luò),生物分子結(jié)構(gòu)等。



1.1 Graph上的任務(wù):
節(jié)點分類:預(yù)測特定節(jié)點的類別
鏈接預(yù)測:預(yù)測兩個節(jié)點是否有聯(lián)系
社區(qū)檢測:識別密集聯(lián)系的節(jié)點群落
網(wǎng)絡(luò)相似性:兩個網(wǎng)絡(luò)的相似性
1.2 圖神經(jīng)網(wǎng)絡(luò)與其他神經(jīng)網(wǎng)絡(luò)的區(qū)別:
現(xiàn)在圖神經(jīng)網(wǎng)絡(luò)的大多數(shù)方法都是制推行學(xué)習(xí),不能直接泛化到未知節(jié)點。對于大多數(shù)情況圖會演化,當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)改變以及新的節(jié)點出現(xiàn),直推性學(xué)習(xí)需要重新訓(xùn)練,很難落地在需要快速生成未知節(jié)點embedding的機器學(xué)習(xí)系統(tǒng)上。
直推式(transductive)學(xué)習(xí):從特殊到特殊,只考慮當(dāng)前數(shù)據(jù)數(shù)據(jù)。學(xué)習(xí)目標(biāo)是直接生成當(dāng)前節(jié)點的embedding,然后把每個節(jié)點embedding作為參數(shù)通過SGD優(yōu)化,例如Deepwalk,LINE;在訓(xùn)練過程中使用圖的拉普拉斯矩陣進行計算,如GCN。
歸納性(inductive)學(xué)習(xí):平常所說的機器學(xué)習(xí)任務(wù),從特殊到一般:目標(biāo)是為未知數(shù)據(jù)上有區(qū)分性。
2 圖神經(jīng)網(wǎng)絡(luò)的基本概念
2.1 圖的定義

對于圖,我們有以下特征定義:對于圖G=(V,E),V為節(jié)點的集合,E為邊的集合,對于每個節(jié)點i,均有其特征,可以用矩陣
表示。其中N表示節(jié)點數(shù),D表示每個節(jié)點的特征數(shù),也可以說是特征向量的維度。
圖嵌入(Graph Embedding/Network Embedding),屬于表示學(xué)習(xí)的范疇,也可以叫為網(wǎng)絡(luò)嵌入,圖表示學(xué)習(xí),網(wǎng)絡(luò)表示學(xué)習(xí)等等。
將圖中的節(jié)點表示為低維,實值,稠密的向量形式,使得得到的向量形式可以在向量空間中具有表示以及推理的能力。例如用戶社交網(wǎng)絡(luò)得到節(jié)點表示就是每個用戶的表示向量,再用于節(jié)點分類等。
將整個圖表示為低維,實值,稠密的向量形式,用來對整個圖結(jié)構(gòu)進行分類。
2.2 圖嵌入的三種方式:
矩陣分解:基于矩陣分解的方法是將節(jié)點間的關(guān)系用矩陣的形式加以表達,然后分解該矩陣以得到嵌入向量。通常用于表示節(jié)點關(guān)系的矩陣包括鄰接矩陣,拉普拉斯矩陣,節(jié)點轉(zhuǎn)移概率矩陣。
DeepWalk:DeepWalk是基于word2vec詞向量提出來的。word2vec在訓(xùn)練詞向量時,將詞料作為輸入數(shù)據(jù),而圖嵌入輸入的是整張圖。DeepWalk把節(jié)點當(dāng)做單詞,把隨機游走得到的節(jié)點序列當(dāng)做句子,然后將其直接作為word2vec的輸入可以節(jié)點嵌入表示,同時利用節(jié)點的嵌入表示作為下游任務(wù)的初始化參數(shù)可以很高的優(yōu)化下游任務(wù)的效果。
基于隨機游走的方法最大的優(yōu)點是通過將圖轉(zhuǎn)化為序列的方法實現(xiàn)了大規(guī)模圖的表示學(xué)習(xí)。但是這類方法有兩個缺點:一是將圖轉(zhuǎn)化成序列集合,圖本身的結(jié)構(gòu)信息沒有被充分利用;二是該學(xué)習(xí)框架很難自然地融合圖中的屬性信息。
Graph Neural Network:圖結(jié)合deep learning方法搭建的網(wǎng)絡(luò)統(tǒng)稱為圖神經(jīng)網(wǎng)絡(luò)GNN,其中包含著名的GCN(圖卷積神經(jīng)網(wǎng)絡(luò))和GAT(圖注意力網(wǎng)絡(luò))。
優(yōu)點:相較于分解類的方法只能在小圖上學(xué)習(xí),GNN可以在大規(guī)模的圖上學(xué)習(xí);非常自然地融合了圖的屬性信息進行學(xué)習(xí)
2.3 圖相關(guān)矩陣的定義:

度矩陣D只有對角線上有值,為該節(jié)點的度,其余為0;鄰接矩陣A只有在有邊鏈接的兩個節(jié)點之間為1,其余地方為0;拉普拉斯矩陣L為D-A。
第一種L=D-A定義為Laplacian矩陣更專業(yè)的名稱為Combinatorial Laplacian
第二種
定義為Symmetric normalized Laplacian,這為歸一化形式的拉普拉斯矩陣,取值范圍
第三種
定義為Random walk normalized Laplacian
3. 圖卷積神經(jīng)網(wǎng)絡(luò)
圖卷積神經(jīng)網(wǎng)絡(luò)可以類比于卷積神經(jīng)網(wǎng)絡(luò)在圖像處理的位置。用隨機的共享的卷積核得到像素點的加權(quán)和從而提取到某種特定的特征,然后用反向傳播來優(yōu)化卷積核參數(shù)就可以自動的提取特征,這是CNN提取特征的機制。
現(xiàn)實中很多重要的數(shù)據(jù)都是用圖的結(jié)構(gòu)存儲,例如社交網(wǎng)絡(luò)信息,知識圖譜,蛋白質(zhì)網(wǎng)絡(luò),萬維網(wǎng)等。這些圖網(wǎng)絡(luò),不是整齊的矩陣形式,而是非結(jié)構(gòu)化信息。
省略從傅立葉變換到拉普拉斯算子到拉普拉斯矩陣的數(shù)學(xué)推導(dǎo)
對于任何一個圖卷積層都可以寫成一個非線性函數(shù)
?
代表第一層的輸入,
,N為圖的節(jié)點個數(shù),D為每個節(jié)點特征,A為鄰接矩陣。
一種通常的實現(xiàn)方法
D為的度矩陣;H是每一層的特征,對于輸入層,H就是X;
是激活函數(shù)。

構(gòu)建一個兩層的GCN,激活函數(shù)分別采用ReLU和Softmax,整正向傳播公式為
針對于所有帶標(biāo)簽的節(jié)點計算cross entropy損失函數(shù)
這可以訓(xùn)練一個node classification的模型。由于即使只有很少的標(biāo)簽也可以訓(xùn)練,所以把這種方法稱為半監(jiān)督分類。同理,可以改變損失函數(shù)適用于graph classification,link prediction等問題。
Reference:
郁蓁的機器學(xué)習(xí)筆記?https://www.zhihu.com/column/c_1173319214768201728
superbrother?https://www.zhihu.com/people/superbrother-58/posts