PGL圖學(xué)習(xí)之圖神經(jīng)網(wǎng)絡(luò)GNN模型GCN、GAT[系列六]
PGL圖學(xué)習(xí)之圖神經(jīng)網(wǎng)絡(luò)GNN模型GCN、GAT[系列六]
項(xiàng)目鏈接:一鍵fork直接跑程序 https://aistudio.baidu.com/aistudio/projectdetail/5054122?contributionType=1
0.前言-學(xué)術(shù)界業(yè)界論文發(fā)表情況
ICLR2023評審情況:
ICLR2023的評審結(jié)果已經(jīng)正式發(fā)布!今年的ICLR2023共計(jì)提交6300份初始摘要和4922份經(jīng)過審查的提交,其中經(jīng)過審查提交相比上一年增加了32.2%。在4922份提交內(nèi)容中,99%的內(nèi)容至少有3個(gè)評論,總共有超過18500個(gè)評論。按照Open Review評審制度,目前ICLR已經(jīng)進(jìn)入討論階段。
官網(wǎng)鏈接:https://openreview.net/group?id=ICLR.cc/2022/Conference
在4922份提交內(nèi)容中,主要涉及13個(gè)研究方向,具體有:
1、AI應(yīng)用應(yīng)用,例如:語音處理、計(jì)算機(jī)視覺、自然語言處理等
2、深度學(xué)習(xí)和表示學(xué)習(xí)
3、通用機(jī)器學(xué)習(xí)
4、生成模型
5、基礎(chǔ)設(shè)施,例如:數(shù)據(jù)集、競賽、實(shí)現(xiàn)、庫等
6、科學(xué)領(lǐng)域的機(jī)器學(xué)習(xí),例如:生物學(xué)、物理學(xué)、健康科學(xué)、社會科學(xué)、氣候/可持續(xù)性等
7、神經(jīng)科學(xué)與認(rèn)知科學(xué),例如:神經(jīng)編碼、腦機(jī)接口等
8、優(yōu)化,例如:凸優(yōu)化、非凸優(yōu)化等
9、概率方法,例如:變分推理、因果推理、高斯過程等
10、強(qiáng)化學(xué)習(xí),例如:決策和控制,計(jì)劃,分層RL,機(jī)器人等
11、機(jī)器學(xué)習(xí)的社會方面,例如:人工智能安全、公平、隱私、可解釋性、人與人工智能交互、倫理等
12、理論,例如:如控制理論、學(xué)習(xí)理論、算法博弈論。
13、無監(jiān)督學(xué)習(xí)和自監(jiān)督學(xué)習(xí)
ICLR詳細(xì)介紹:
ICLR,全稱為「International Conference on Learning Representations」(國際學(xué)習(xí)表征會議),2013 年5月2日至5月4日在美國亞利桑那州斯科茨代爾順利舉辦了第一屆ICLR會議。該會議是一年一度的會議,截止到2022年它已經(jīng)舉辦了10屆,而今年的(2023年)5月1日至5日,將在基加利會議中心完成ICLR的第十一屆會議。
該會議被學(xué)術(shù)研究者們廣泛認(rèn)可,被認(rèn)為是「深度學(xué)習(xí)的頂級會議」。為什么ICLR為什么會成為深度學(xué)習(xí)領(lǐng)域的頂會呢? 首先該會議由深度學(xué)習(xí)三大巨頭之二的Yoshua Bengio和Yann LeCun 牽頭創(chuàng)辦。其中Yoshua Bengio 是蒙特利爾大學(xué)教授,深度學(xué)習(xí)三巨頭之一,他領(lǐng)導(dǎo)蒙特利爾大學(xué)的人工智能實(shí)驗(yàn)室MILA進(jìn)行 AI 技術(shù)的學(xué)術(shù)研究。MILA 是世界上最大的人工智能研究中心之一,與谷歌也有著密切的合作。 Yann LeCun同為深度學(xué)習(xí)三巨頭之一的他現(xiàn)任 Facebook 人工智能研究院FAIR院長、紐約大學(xué)教授。作為卷積神經(jīng)網(wǎng)絡(luò)之父,他為深度學(xué)習(xí)的發(fā)展和創(chuàng)新作出了重要貢獻(xiàn)。
Keywords Frequency 排名前 50 的常用關(guān)鍵字(不區(qū)分大小寫)及其出現(xiàn)頻率:


可有看到圖、圖神經(jīng)網(wǎng)絡(luò)分別排在2、4。
1.Graph Convolutional Networks(GCN,圖卷積神經(jīng)網(wǎng)絡(luò))
GCN的概念首次提出于ICLR2017(成文于2016年):
Semi-Supervised Classification with Graph Convolutional Networks:https://arxiv.org/abs/1609.02907
圖數(shù)據(jù)中的空間特征具有以下特點(diǎn): 1) 節(jié)點(diǎn)特征:每個(gè)節(jié)點(diǎn)有自己的特征;(體現(xiàn)在點(diǎn)上) 2) 結(jié)構(gòu)特征:圖數(shù)據(jù)中的每個(gè)節(jié)點(diǎn)具有結(jié)構(gòu)特征,即節(jié)點(diǎn)與節(jié)點(diǎn)存在一定的聯(lián)系。(體現(xiàn)在邊上) 總地來說,圖數(shù)據(jù)既要考慮節(jié)點(diǎn)信息,也要考慮結(jié)構(gòu)信息,圖卷積神經(jīng)網(wǎng)絡(luò)就可以自動化地既學(xué)習(xí)節(jié)點(diǎn)特征,又能學(xué)習(xí)節(jié)點(diǎn)與節(jié)點(diǎn)之間的關(guān)聯(lián)信息。
綜上所述,GCN是要為除CV、NLP之外的任務(wù)提供一種處理、研究的模型。 圖卷積的核心思想是利用『邊的信息』對『節(jié)點(diǎn)信息』進(jìn)行『聚合』從而生成新的『節(jié)點(diǎn)表示』。
1.1原理簡介
假如我們希望做節(jié)點(diǎn)相關(guān)的任務(wù),就可以通過 Graph Encoder,在圖上學(xué)習(xí)到節(jié)點(diǎn)特征,再利用學(xué)習(xí)到的節(jié)點(diǎn)特征做一些相關(guān)的任務(wù),比如節(jié)點(diǎn)分類、關(guān)系預(yù)測等等;
而同時(shí),我們也可以在得到的節(jié)點(diǎn)特征的基礎(chǔ)上,做 Graph Pooling 的操作,比如加權(quán)求和、取平均等等操作,從而得到整張圖的特征,再利用得到的圖特征做圖相關(guān)的任務(wù),比如圖匹配、圖分類等。
圖游走類算法主要的目的是在訓(xùn)練得到節(jié)點(diǎn) embedding 之后,再利用其做下游任務(wù),也就是說區(qū)分為了兩個(gè)階段。
對于圖卷積網(wǎng)絡(luò)而言,則可以進(jìn)行一個(gè)端到端的訓(xùn)練,不需要對這個(gè)過程進(jìn)行區(qū)分,那么這樣其實(shí)可以更加針對性地根據(jù)具體任務(wù)來進(jìn)行圖上的學(xué)習(xí)和訓(xùn)練。

回顧卷積神經(jīng)網(wǎng)絡(luò)在圖像及文本上的發(fā)展
在圖像上的二維卷積,其實(shí)質(zhì)就是卷積核在二維圖像上平移,將卷積核的每個(gè)元素與被卷積圖像對應(yīng)位置相乘,再求和,得到一個(gè)新的結(jié)果。其實(shí)它有點(diǎn)類似于將當(dāng)前像素點(diǎn)和周圍的像素點(diǎn)進(jìn)行某種程度的轉(zhuǎn)換,再得到當(dāng)前像素點(diǎn)更新后的一個(gè)值。
它的本質(zhì)是利用了一維卷積,因?yàn)槲谋臼且痪S數(shù)據(jù),在我們已知文本的詞表示之后,就在詞級別上做一維的卷積。其本質(zhì)其實(shí)和圖像上的卷積沒有什么差別。 (注:卷積核維度和紅框維度相同,2 * 6就是2 * 6)
圖像卷積的本質(zhì)其實(shí)非常簡單,就是將一個(gè)像素點(diǎn)周圍的像素,按照不同的權(quán)重疊加起來,當(dāng)然這個(gè)權(quán)重就是我們通常說的卷積核。
其實(shí)可以把當(dāng)前像素點(diǎn)類比做圖的節(jié)點(diǎn),而這個(gè)節(jié)點(diǎn)周圍的像素則類比為節(jié)點(diǎn)的鄰居,從而可以得到圖結(jié)構(gòu)卷積的簡單的概念:
將一個(gè)節(jié)點(diǎn)周圍的鄰居按照不同的權(quán)重疊加起來

而圖像上的卷積操作,與圖結(jié)構(gòu)上的卷積操作,最大的一個(gè)區(qū)別就在于:
對于圖像的像素點(diǎn)來說,它的周圍像素點(diǎn)數(shù)量其實(shí)是固定的;
但是對于圖而言,節(jié)點(diǎn)的鄰居數(shù)量是不固定的。
1.2圖卷積網(wǎng)絡(luò)的兩種理解方式
GCN的本質(zhì)目的就是用來提取拓?fù)鋱D的空間特征。 而圖卷積神經(jīng)網(wǎng)絡(luò)主要有兩類,一類是基于空間域或頂點(diǎn)域vertex domain(spatial domain)的,另一類則是基于頻域或譜域spectral domain的。通俗點(diǎn)解釋,空域可以類比到直接在圖片的像素點(diǎn)上進(jìn)行卷積,而頻域可以類比到對圖片進(jìn)行傅里葉變換后,再進(jìn)行卷積。
所謂的兩類其實(shí)就是從兩個(gè)不同的角度理解,關(guān)于從空間角度的理解可以看本文的從空間角度理解GCN
vertex domain(spatial domain):頂點(diǎn)域(空間域)
基于空域卷積的方法直接將卷積操作定義在每個(gè)結(jié)點(diǎn)的連接關(guān)系上,它跟傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)中的卷積更相似一些。在這個(gè)類別中比較有代表性的方法有 Message Passing Neural Networks(MPNN)[1], GraphSage[2], Diffusion Convolution Neural Networks(DCNN)[3], PATCHY-SAN[4]等。
spectral domain:頻域方法(譜方法
這就是譜域圖卷積網(wǎng)絡(luò)的理論基礎(chǔ)了。這種思路就是希望借助圖譜的理論來實(shí)現(xiàn)拓?fù)鋱D上的卷積操作。從整個(gè)研究的時(shí)間進(jìn)程來看:首先研究GSP(graph signal processing)的學(xué)者定義了graph上的Fourier Transformation,進(jìn)而定義了graph上的convolution,最后與深度學(xué)習(xí)結(jié)合提出了Graph Convolutional Network。
基于頻域卷積的方法則從圖信號處理起家,包括 Spectral CNN[5], Cheybyshev Spectral CNN(ChebNet)[6], 和 First order of ChebNet(1stChebNet)[7] 等
論文Semi-Supervised Classification with Graph Convolutional Networks就是一階鄰居的ChebNet
認(rèn)真讀到這里,腦海中應(yīng)該會浮現(xiàn)出一系列問題:
Q1 什么是Spectral graph theory?
Spectral graph theory請參考維基百科的介紹,簡單的概括就是借助于圖的拉普拉斯矩陣的特征值和特征向量來研究圖的性質(zhì)
Q2 GCN為什么要利用Spectral graph theory?
這是論文(Semi-Supervised Classification with Graph Convolutional Networks)中的重點(diǎn)和難點(diǎn),要理解這個(gè)問題需要大量的數(shù)學(xué)定義及推導(dǎo)
過程:
(1)定義graph上的Fourier Transformation傅里葉變換(利用Spectral graph theory,借助圖的拉普拉斯矩陣的特征值和特征向量研究圖的性質(zhì))
(2)定義graph上的convolution卷積
1.3 圖卷積網(wǎng)絡(luò)的計(jì)算公式

H代表每一層的節(jié)點(diǎn)表示,第0層即為最開始的節(jié)點(diǎn)表示
A表示鄰接矩陣,如下圖所示,兩個(gè)節(jié)點(diǎn)存在鄰居關(guān)系就將值設(shè)為1,對角線默認(rèn)為1
D表示度矩陣,該矩陣除對角線外均為0,對角線的值表示每個(gè)節(jié)點(diǎn)的度,等價(jià)于鄰接矩陣對行求和
W表示可學(xué)習(xí)的權(quán)重
鄰接矩陣的對角線上都為1,這是因?yàn)樘砑恿俗原h(huán)邊,這也是這個(gè)公式中使用的定義,其他情況下鄰接矩陣是可以不包含自環(huán)的。(包含了自環(huán)邊的鄰接矩陣)
度矩陣就是將鄰接矩陣上的每一行進(jìn)行求和,作為對角線上的值。而由于我們是要取其-1/2的度矩陣,因此還需要對對角線上求和后的值做一個(gè)求倒數(shù)和開根號的操作,因此最后可以得到右邊的一個(gè)矩陣運(yùn)算結(jié)果。
為了方便理解,我們可以暫時(shí)性地把度矩陣在公式中去掉:

為了得到 H^{(l+1)}的第0行,我們需要拿出A的第0行與 H^{(l)}相乘,這是矩陣乘法的概念。
接下來就是把計(jì)算結(jié)果相乘再相加的過程。
這個(gè)過程其實(shí)就是消息傳遞的過程:對于0號節(jié)點(diǎn)來說,將鄰居節(jié)點(diǎn)的信息傳給自身
將上式進(jìn)行拆分,A*H可以理解成將上一層每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)表示進(jìn)行聚合,如圖,0號節(jié)點(diǎn)就是對上一層與其相鄰的1號、2號節(jié)點(diǎn)和它本身進(jìn)行聚合。而度矩陣D存在的意義是每個(gè)節(jié)點(diǎn)的鄰居的重要性不同,根據(jù)該節(jié)點(diǎn)的度來對這些相鄰節(jié)點(diǎn)的節(jié)點(diǎn)表示進(jìn)行加權(quán),d越大,說明信息量越小。

實(shí)際情況中,每個(gè)節(jié)點(diǎn)發(fā)送的信息所帶的信息量應(yīng)該是不同的。
圖卷積網(wǎng)絡(luò)將鄰接矩陣的兩邊分別乘上了度矩陣,相當(dāng)于給這個(gè)邊加了權(quán)重。其實(shí)就是利用節(jié)點(diǎn)度的不同來調(diào)整信息量的大小。
這個(gè)公式其實(shí)體現(xiàn)了: 一個(gè)節(jié)點(diǎn)的度越大,那么它所包含的信息量就越小,從而對應(yīng)的權(quán)值也就越小。
怎么理解這樣的一句話呢,我們可以設(shè)想這樣的一個(gè)場景。假如說在一個(gè)社交網(wǎng)絡(luò)里,一個(gè)人認(rèn)識了幾乎所有的人,那么這個(gè)人能夠給我們的信息量是比較小的。
也就是說,每個(gè)節(jié)點(diǎn)通過邊對外發(fā)送相同量的信息, 邊越多的節(jié)點(diǎn),每條邊發(fā)送出去的信息量就越小。
1.4用多層圖網(wǎng)絡(luò)完成節(jié)點(diǎn)分類任務(wù)
GCN算法主要包括以下幾步:
第一步是利用上面的核心公式進(jìn)行節(jié)點(diǎn)間特征傳遞
第二步對每個(gè)節(jié)點(diǎn)過一層DNN
重復(fù)以上兩步得到L層的GCN
獲得的最終節(jié)點(diǎn)表示H送入分類器進(jìn)行分類

更詳細(xì)的資料參考:圖卷積網(wǎng)絡(luò) GCN Graph Convolutional Network(譜域GCN)的理解和詳細(xì)推導(dǎo)
1.5 GCN參數(shù)解釋
主要是幫助大家理解消息傳遞機(jī)制的一些參數(shù)類型。
這里給出一個(gè)簡化版本的 GCN 模型,幫助理解PGL框架實(shí)現(xiàn)消息傳遞的流程。
2.Graph Attention Networks(GAT,圖注意力機(jī)制網(wǎng)絡(luò))
Graph Attention Networks:https://arxiv.org/abs/1710.10903
GCN網(wǎng)絡(luò)中的一個(gè)缺點(diǎn)是邊的權(quán)重與節(jié)點(diǎn)的度度相關(guān)而且不可學(xué)習(xí),因此有了圖注意力算法。在GAT中,邊的權(quán)重變成節(jié)點(diǎn)間的可學(xué)習(xí)的函數(shù)并且與兩個(gè)節(jié)點(diǎn)之間的相關(guān)性有關(guān)。
2.1.計(jì)算方法
注意力機(jī)制的計(jì)算方法如下:

首先將目標(biāo)節(jié)點(diǎn)和源節(jié)點(diǎn)的表示拼接到一起,通過網(wǎng)絡(luò)計(jì)算相關(guān)性,之后通過LeakyReLu激活函數(shù)和softmax歸一化得到注意力分?jǐn)?shù),最后用得到的α進(jìn)行聚合,后續(xù)步驟和GCN一致。
以及多頭Attention公式
2.2 空間GNN
空間GNN(Spatial GNN):基于鄰居聚合的圖模型稱為空間GNN,例如GCN、GAT等等。大部分的空間GNN都可以用消息傳遞實(shí)現(xiàn),消息傳遞包括消息的發(fā)送和消息的接受。
基于消息傳遞的圖神經(jīng)網(wǎng)絡(luò)的通用公式:

2.3 消息傳遞demo例子


2.4 GAT參數(shù)解釋
其中:
在 send 函數(shù)中完成 LeakyReLU部分的計(jì)算;
在 recv 函數(shù)中,對接受到的 logits 信息進(jìn)行 softmax 操作,形成歸一化的分?jǐn)?shù)(公式當(dāng)中的 alpha),再與結(jié)果進(jìn)行加權(quán)求和。
3.數(shù)據(jù)集介紹
3個(gè)常用的圖學(xué)習(xí)數(shù)據(jù)集,CORA, PUBMED, CITESEER??梢栽谡撐闹姓业綌?shù)據(jù)集的相關(guān)介紹。
今天我們來了解一下這幾個(gè)數(shù)據(jù)集
3.1Cora數(shù)據(jù)集
Cora數(shù)據(jù)集由機(jī)器學(xué)習(xí)論文組成,是近年來圖深度學(xué)習(xí)很喜歡使用的數(shù)據(jù)集。 在整個(gè)語料庫中包含2708篇論文,并分為以下七類:
基于案例
遺傳算法
神經(jīng)網(wǎng)絡(luò)
概率方法
強(qiáng)化學(xué)習(xí)
規(guī)則學(xué)習(xí)
理論
論文之間互相引用,在該數(shù)據(jù)集中,每篇論文都至少引用了一篇其他論文,或者被其他論文引用,也就是樣本點(diǎn)之間存在聯(lián)系,沒有任何一個(gè)樣本點(diǎn)與其他樣本點(diǎn)完全沒聯(lián)系。如果將樣本點(diǎn)看做圖中的點(diǎn),則這是一個(gè)連通的圖,不存在孤立點(diǎn)。這樣形成的網(wǎng)絡(luò)有5429條邊。 在消除停詞以及除去文檔頻率小于10的詞匯,最終詞匯表中有1433個(gè)詞匯。每篇論文都由一個(gè)1433維的詞向量表示,所以,每個(gè)樣本點(diǎn)具有1433個(gè)特征。詞向量的每個(gè)元素都對應(yīng)一個(gè)詞,且該元素只有0或1兩個(gè)取值。取0表示該元素對應(yīng)的詞不在論文中,取1表示在論文中。
數(shù)據(jù)集有包含兩個(gè)文件:
.content文件包含以下格式的論文描述:
+
每行的第一個(gè)條目包含紙張的唯一字符串標(biāo)識,后跟二進(jìn)制值,指示詞匯中的每個(gè)單詞在文章中是存在(由1表示)還是不存在(由0表示)。
最后,該行的最后一個(gè)條目包含紙張的類別標(biāo)簽。因此數(shù)據(jù)集的$feature$應(yīng)該為$2709×14332709 \times 14332709×1433$維度。 第一行為$idx$,最后一行為$label$。

那個(gè).cites文件包含語料庫的引用’圖’。每行以以下格式描述一個(gè)鏈接:
<被引論文編號> <引論文編號>
每行包含兩個(gè)紙質(zhì)id。第一個(gè)條目是被引用論文的標(biāo)識,第二個(gè)標(biāo)識代表包含引用的論文。鏈接的方向是從右向左。
如果一行由“論文1 論文2”表示,則鏈接是“論文2 - >論文1”。可以通過論文之間的索引關(guān)系建立鄰接矩陣adj
下載鏈接:
https://aistudio.baidu.com/aistudio/datasetdetail/177587
相關(guān)論文:
Qing Lu, and Lise Getoor. "Link-based classification." ICML, 2003.
Prithviraj Sen, et al. "Collective classification in network data." AI Magazine, 2008.
3.2PubMed數(shù)據(jù)集
PubMed 是一個(gè)提供生物醫(yī)學(xué)方面的論文搜尋以及摘要,并且免費(fèi)搜尋的數(shù)據(jù)庫。它的數(shù)據(jù)庫來源為MEDLINE。其核心主題為醫(yī)學(xué),但亦包括其他與醫(yī)學(xué)相關(guān)的領(lǐng)域,像是護(hù)理學(xué)或者其他健康學(xué)科。
PUBMED數(shù)據(jù)集是基于PubMed 文獻(xiàn)數(shù)據(jù)庫生成的。它包含了19717篇糖尿病相關(guān)的科學(xué)出版物,這些出版物被分成三個(gè)類別。 這些出版物的互相引用網(wǎng)絡(luò)包含了44338條邊。在消除停詞以及除去低頻詞匯,最終詞匯表中有500個(gè)詞匯。這些出版物用一個(gè)TF/IDF加權(quán)的詞向量來描述是否包含詞匯表中的詞匯。
下載鏈接: https://aistudio.baidu.com/aistudio/datasetdetail/177591
相關(guān)論文:
Galileo Namata, et. al. "Query-driven Active Surveying for Collective Classification." MLG. 2012.
3.3CiteSeer數(shù)據(jù)集
CiteSeer(又名ResearchIndex),是NEC研究院在自動引文索引(Autonomous Citation Indexing, ACI)機(jī)制的基礎(chǔ)上建設(shè)的一個(gè)學(xué)術(shù)論文數(shù)字圖書館。這個(gè)引文索引系統(tǒng)提供了一種通過引文鏈接的檢索文獻(xiàn)的方式,目標(biāo)是從多個(gè)方面促進(jìn)學(xué)術(shù)文獻(xiàn)的傳播和反饋。
在整個(gè)語料庫中包含3312篇論文,并分為以下六類:
Agents
AI
DB
IR
ML
HCI
論文之間互相引用,在該數(shù)據(jù)集中,每篇論文都至少引用了一篇其他論文,或者被其他論文引用,也就是樣本點(diǎn)之間存在聯(lián)系,沒有任何一個(gè)樣本點(diǎn)與其他樣本點(diǎn)完全沒聯(lián)系。如果將樣本點(diǎn)看做圖中的點(diǎn),則這是一個(gè)連通的圖,不存在孤立點(diǎn)。這樣形成的網(wǎng)絡(luò)有4732條邊。 在消除停詞以及除去文檔頻率小于10的詞匯,最終詞匯表中有3703個(gè)詞匯。每篇論文都由一個(gè)3703維的詞向量表示,所以,每個(gè)樣本點(diǎn)具有3703個(gè)特征。詞向量的每個(gè)元素都對應(yīng)一個(gè)詞,且該元素只有0或1兩個(gè)取值。取0表示該元素對應(yīng)的詞不在論文中,取1表示在論文中。
下載鏈接:
https://aistudio.baidu.com/aistudio/datasetdetail/177589
相關(guān)論文
Qing Lu, and Lise Getoor. "Link-based classification." ICML, 2003.
Prithviraj Sen, et al. "Collective classification in network data." AI Magazine, 2008.
3.4 小結(jié)
| 數(shù)據(jù)集 | 圖數(shù) | 節(jié)點(diǎn)數(shù) | 邊數(shù) | 特征維度| 標(biāo)簽數(shù)| | -------- | -------- | -------- | -------- | -------- | -------- | | Cora | 1 | 2708 | 5429 | 1433 | 7 | |Citeseer | 1 | 3327 | 4732 | 3703 | 6| | Pubmed| 1 | 19717 | 44338 | 500 | 3|
更多圖數(shù)據(jù)集: https://linqs.org/datasets/
GCN常用數(shù)據(jù)集
KarateClub:數(shù)據(jù)為無向圖,來源于論文An Information Flow Model for Conflict and Fission in Small Groups
TUDataset:包括58個(gè)基礎(chǔ)的分類數(shù)據(jù)集集合,數(shù)據(jù)都為無向圖,如”IMDB-BINARY”,”PROTEINS”等,來源于TU Dortmund University
Planetoid:引用網(wǎng)絡(luò)數(shù)據(jù)集,包括“Cora”, “CiteSeer” and “PubMed”,數(shù)據(jù)都為無向圖,來源于論文Revisiting Semi-Supervised Learning with Graph Embeddings。節(jié)點(diǎn)代表文檔,邊代表引用關(guān)系。
CoraFull:完整的”Cora”引用網(wǎng)絡(luò)數(shù)據(jù)集,數(shù)據(jù)為無向圖,來源于論文Deep Gaussian Embedding of Graphs: Unsupervised Inductive Learning via Ranking。節(jié)點(diǎn)代表文檔,邊代表引用關(guān)系。
Coauthor:共同作者網(wǎng)絡(luò)數(shù)據(jù)集,包括”CS”和”Physics”,數(shù)據(jù)都為無向圖,來源于論文Pitfalls of Graph Neural Network Evaluation。節(jié)點(diǎn)代表作者,若是共同作者則被邊相連。學(xué)習(xí)任務(wù)是將作者映射到各自的研究領(lǐng)域中。
Amazon:亞馬遜網(wǎng)絡(luò)數(shù)據(jù)集,包括”Computers”和”Photo”,數(shù)據(jù)都為無向圖,來源于論文Pitfalls of Graph Neural Network Evaluation。節(jié)點(diǎn)代表貨物i,邊代表兩種貨物經(jīng)常被同時(shí)購買。學(xué)習(xí)任務(wù)是將貨物映射到各自的種類里。
PPI:蛋白質(zhì)-蛋白質(zhì)反應(yīng)網(wǎng)絡(luò),數(shù)據(jù)為無向圖,來源于論文Predicting multicellular function through multi-layer tissue networks
Entities:關(guān)系實(shí)體網(wǎng)絡(luò),包括“AIFB”, “MUTAG”, “BGS” 和“AM”,數(shù)據(jù)都為無向圖,來源于論文Modeling Relational Data with Graph Convolutional Networks
BitcoinOTC:數(shù)據(jù)為有向圖,包括138個(gè)”who-trusts-whom”網(wǎng)絡(luò),來源于論文EvolveGCN: Evolving Graph Convolutional Networks for Dynamic Graphs,數(shù)據(jù)鏈接為Bitcoin OTC trust weighted signed network
4.基于PGL的GNN算法實(shí)踐
4.1 GCN
圖卷積網(wǎng)絡(luò) (GCN)是一種功能強(qiáng)大的神經(jīng)網(wǎng)絡(luò),專為圖上的機(jī)器學(xué)習(xí)而設(shè)計(jì)?;赑GL復(fù)現(xiàn)了GCN算法,在引文網(wǎng)絡(luò)基準(zhǔn)測試中達(dá)到了與論文同等水平的指標(biāo)。
搭建GCN的簡單例子:要構(gòu)建一個(gè) gcn 層,可以使用我們預(yù)定義的pgl.nn.GCNConv或者只編寫一個(gè)帶有消息傳遞接口的 gcn 層。
%cd /home/aistudio/GCN
!CUDA_VISIBLE_DEVICES=0 python train.py --dataset cora
仿真結(jié)果:
| Dataset | Accuracy | | -------- | -------- | | Cora | 81.16% | | Pubmed | 79.34% | |Citeseer | 70.91% |
4.2 GAT
圖注意力網(wǎng)絡(luò) (GAT)是一種對圖結(jié)構(gòu)數(shù)據(jù)進(jìn)行操作的新型架構(gòu),它利用掩蔽的自注意層來解決基于圖卷積或其近似的先前方法的缺點(diǎn)?;赑GL,我們復(fù)現(xiàn)了GAT算法,在引文網(wǎng)絡(luò)基準(zhǔn)測試中達(dá)到了與論文同等水平的指標(biāo)。
搭建單頭GAT的簡單例子: 要構(gòu)建一個(gè) gat 層,可以使用我們的預(yù)定義pgl.nn.GATConv或只編寫一個(gè)帶有消息傳遞接口的 gat 層。
GAT仿真結(jié)果:
| Dataset | Accuracy | | -------- | -------- | | Cora | 82.97% | | Pubmed | 77.99% | |Citeseer | 70.91% |
項(xiàng)目鏈接:一鍵fork直接跑程序 https://aistudio.baidu.com/aistudio/projectdetail/5054122?contributionType=1
5.總結(jié)
本次項(xiàng)目講解了圖神經(jīng)網(wǎng)絡(luò)的原理并對GCN、GAT實(shí)現(xiàn)方式進(jìn)行講解,最后基于PGL實(shí)現(xiàn)了兩個(gè)算法在數(shù)據(jù)集Cora、Pubmed、Citeseer的表現(xiàn),在引文網(wǎng)絡(luò)基準(zhǔn)測試中達(dá)到了與論文同等水平的指標(biāo)。
目前的數(shù)據(jù)集樣本節(jié)點(diǎn)和邊都不是很大,下個(gè)項(xiàng)目將會講解面對億級別圖應(yīng)該如何去做。
參考鏈接:感興趣可以看看詳細(xì)的推到以及涉及有趣的問題