入門理解圖卷積神經(jīng)網(wǎng)絡(luò)(GCN)

學(xué)號:20021110085 ? ? ? ? ? ? ?姓名:鄭佳?

轉(zhuǎn)載:https://zhuanlan.zhihu.com/p/71200936

【嵌牛導(dǎo)讀】圖卷積神經(jīng)網(wǎng)絡(luò)掺逼,顧名思義就是在圖上使用卷積運(yùn)算,然而圖上的卷積運(yùn)算是什么東西豆励?為了解決這個問題題临梗,我們可以利用圖上的傅里葉變換辆影,再使用卷積定理爽篷,這樣就可以通過兩個傅里葉變換的乘積來表示這個卷積的操作掺逼。

【嵌牛鼻子】圖卷積神經(jīng)網(wǎng)絡(luò)(GCN)

【嵌牛正文】

GCN的概念首次提出于ICLR2017(成文于2016年):

一览祖、GCN是做什么的

在扎進(jìn)GCN的汪洋大海前,我們先搞清楚這個玩意兒是做什么的扭仁,有什么用垮衷。

深度學(xué)習(xí)一直都是被幾大經(jīng)典模型給統(tǒng)治著,如CNN乖坠、RNN等等搀突,它們無論再CV還是NLP領(lǐng)域都取得了優(yōu)異的效果,那這個GCN是怎么跑出來的熊泵?是因?yàn)槲覀儼l(fā)現(xiàn)了很多CNN仰迁、RNN無法解決或者效果不好的問題——圖結(jié)構(gòu)的數(shù)據(jù)。

回憶一下顽分,我們做圖像識別,對象是圖片卒蘸,是一個二維的結(jié)構(gòu)雌隅,于是人們發(fā)明了CNN這種神奇的模型來提取圖片的特征。CNN的核心在于它的kernel缸沃,kernel是一個個小窗口恰起,在圖片上平移,通過卷積的方式來提取特征趾牧。這里的關(guān)鍵在于圖片結(jié)構(gòu)上的平移不變性:一個小窗口無論移動到圖片的哪一個位置检盼,其內(nèi)部的結(jié)構(gòu)都是一模一樣的,因此CNN可以實(shí)現(xiàn)參數(shù)共享翘单。這就是CNN的精髓所在吨枉。

再回憶一下RNN系列,它的對象是自然語言這樣的序列信息哄芜,是一個一維的結(jié)構(gòu)貌亭,RNN就是專門針對這些序列的結(jié)構(gòu)而設(shè)計(jì)的,通過各種門的操作忠烛,使得序列前后的信息互相影響属提,從而很好地捕捉序列的特征。

上面講的圖片或者語言美尸,都屬于歐式空間的數(shù)據(jù)冤议,因此才有維度的概念,歐式空間的數(shù)據(jù)的特點(diǎn)就是結(jié)構(gòu)很規(guī)則师坎。但是現(xiàn)實(shí)生活中恕酸,其實(shí)有很多很多不規(guī)則的數(shù)據(jù)結(jié)構(gòu),典型的就是圖結(jié)構(gòu)胯陋,或稱拓?fù)浣Y(jié)構(gòu)蕊温,如社交網(wǎng)絡(luò)、化學(xué)分子結(jié)構(gòu)遏乔、知識圖譜等等义矛;即使是語言,實(shí)際上其內(nèi)部也是復(fù)雜的樹形結(jié)構(gòu)盟萨,也是一種圖結(jié)構(gòu);而像圖片捻激,在做目標(biāo)識別的時候制轰,我們關(guān)注的實(shí)際上只是二維圖片上的部分關(guān)鍵點(diǎn),這些點(diǎn)組成的也是一個圖的結(jié)構(gòu)胞谭。

圖的結(jié)構(gòu)一般來說是十分不規(guī)則的垃杖,可以認(rèn)為是無限維的一種數(shù)據(jù),所以它沒有平移不變性丈屹。每一個節(jié)點(diǎn)的周圍結(jié)構(gòu)可能都是獨(dú)一無二的调俘,這種結(jié)構(gòu)的數(shù)據(jù),就讓傳統(tǒng)的CNN旺垒、RNN瞬間失效彩库。所以很多學(xué)者從上個世紀(jì)就開始研究怎么處理這類數(shù)據(jù)了。這里涌現(xiàn)出了很多方法袖牙,例如GNN侧巨、DeepWalk、node2vec等等鞭达,GCN只是其中一種司忱,這里只講GCN,其他的后面有空再討論畴蹭。

GCN坦仍,圖卷積神經(jīng)網(wǎng)絡(luò),實(shí)際上跟CNN的作用一樣叨襟,就是一個特征提取器繁扎,只不過它的對象是圖數(shù)據(jù)。GCN精妙地設(shè)計(jì)了一種從圖數(shù)據(jù)中提取特征的方法,從而讓我們可以使用這些特征去對圖數(shù)據(jù)進(jìn)行節(jié)點(diǎn)分類(node classification)梳玫、圖分類(graph classification)爹梁、邊預(yù)測(link prediction),還可以順便得到圖的嵌入表示(graph embedding)提澎,可見用途廣泛姚垃。因此現(xiàn)在人們腦洞大開,讓GCN到各個領(lǐng)域中發(fā)光發(fā)熱盼忌。

二积糯、GCN長啥樣,嚇人嗎

GCN的公式看起來還是有點(diǎn)嚇人的谦纱,論文里的公式更是嚇破了我的膽兒看成。但后來才發(fā)現(xiàn),其實(shí)90%的內(nèi)容根本不必理會跨嘉,只是為了從數(shù)學(xué)上嚴(yán)謹(jǐn)?shù)匕咽虑榻o講清楚川慌,但是完全不影響我們的理解,尤其對于我這種“追求直覺偿荷,不求甚解”之人窘游。

下面進(jìn)入正題,我們直接看看GCN的核心部分是什么亞子:

假設(shè)我們手頭有一批圖數(shù)據(jù)跳纳,其中有N個節(jié)點(diǎn)(node)忍饰,每個節(jié)點(diǎn)都有自己的特征,我們設(shè)這些節(jié)點(diǎn)的特征組成一個N×D維的矩陣X寺庄,然后各個節(jié)點(diǎn)之間的關(guān)系也會形成一個N×N維的矩陣A艾蓝,也稱為鄰接矩陣(adjacency matrix)。X和A便是我們模型的輸入斗塘。

GCN也是一個神經(jīng)網(wǎng)絡(luò)層赢织,它的層與層之間的傳播方式是:

H^{(l+1)}=\sigma\left(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)}\right)

我們先不用考慮為什么要這樣去設(shè)計(jì)一個公式。我們現(xiàn)在只用知道:\tilde{\mathbf{D}}^{-\frac{1}{2}} \tilde{\mathbf{A}} \tilde{\mathbf{D}}^{-\frac{1}{2}}馍盟,這個部分于置,是可以事先算好的,因?yàn)镈波浪由A計(jì)算而來贞岭,而A是我們的輸入之一八毯。

所以對于不需要去了解數(shù)學(xué)原理、只想應(yīng)用GCN來解決實(shí)際問題的人來說瞄桨,你只用知道:哦话速,這個GCN設(shè)計(jì)了一個牛逼的公式,用這個公式就可以很好地提取圖的特征芯侥。這就夠了泊交,畢竟不是什么事情都需要知道內(nèi)部原理乳讥,這是根據(jù)需求決定的。

為了直觀理解廓俭,我們用論文中的一幅圖:

上圖中的GCN輸入一個圖云石,通過若干層GCN每個node的特征從X變成了Z,但是白指,無論中間有多少層留晚,node之間的連接關(guān)系酵紫,即A告嘲,都是共享的

假設(shè)我們構(gòu)造一個兩層的GCN奖地,激活函數(shù)分別采用ReLU和Softmax橄唬,則整體的正向傳播的公式為:

Z=f(X, A)=\operatorname{softmax}\left(\hat{A} \operatorname{ReLU}\left(\hat{A} X W^{(0)}\right) W^{(1)}\right)

最后,我們針對所有帶標(biāo)簽的節(jié)點(diǎn)計(jì)算cross entropy損失函數(shù):

\mathcal{L}=-\sum_{l \in \mathcal{Y}_{L}} \sum_{f=1}^{F} Y_{l f} \ln Z_{l f}

就可以訓(xùn)練一個node classification的模型了参歹。由于即使只有很少的node有標(biāo)簽也能訓(xùn)練仰楚,作者稱他們的方法為半監(jiān)督分類

當(dāng)然犬庇,你也可以用這個方法去做graph classification僧界、link prediction,只是把損失函數(shù)給變化一下即可臭挽。

三捂襟、GCN為什么是這個亞子

我前后翻看了很多人的解讀,但是讀了一圈欢峰,最讓我清楚明白為什么GCN的公式是這樣子的居然是作者Kipf自己的博客:http://tkipf.github.io/graph-convolutional-networks/推薦大家一讀葬荷。

作者給出了一個由簡入繁的過程來解釋:

我們的每一層GCN的輸入都是鄰接矩陣A和node的特征H,那么我們直接做一個內(nèi)積纽帖,再乘一個參數(shù)矩陣W宠漩,然后激活一下,就相當(dāng)于一個簡單的神經(jīng)網(wǎng)絡(luò)層嘛懊直,是不是也可以呢扒吁?

實(shí)驗(yàn)證明,即使就這么簡單的神經(jīng)網(wǎng)絡(luò)層室囊,就已經(jīng)很強(qiáng)大了雕崩。這個簡單模型應(yīng)該大家都能理解吧,這就是正常的神經(jīng)網(wǎng)絡(luò)操作波俄。

四晨逝、GCN有多牛

在看了上面的公式以及訓(xùn)練方法之后,我并沒有覺得GCN有多么特別懦铺,無非就是一個設(shè)計(jì)巧妙的公式嘛捉貌,也許我不用這么復(fù)雜的公式,多加一點(diǎn)訓(xùn)練數(shù)據(jù)或者把模型做深,也可能達(dá)到媲美的效果呢趁窃。

但是一直到我讀到了論文的附錄部分牧挣,我才頓時發(fā)現(xiàn):GCN原來這么牛啊醒陆!

為啥呢瀑构?

因?yàn)榧词共挥?xùn)練,完全使用隨機(jī)初始化的參數(shù)W刨摩,GCN提取出來的特征就以及十分優(yōu)秀了寺晌!這跟CNN不訓(xùn)練是完全不一樣的,后者不訓(xùn)練是根本得不到什么有效特征的澡刹。

然后作者做了一個實(shí)驗(yàn)呻征,使用一個俱樂部會員的關(guān)系網(wǎng)絡(luò),使用隨機(jī)初始化的GCN進(jìn)行特征提取罢浇,得到各個node的embedding陆赋,然后可視化:

可以發(fā)現(xiàn),在原數(shù)據(jù)中同類別的node嚷闭,經(jīng)過GCN的提取出的embedding攒岛,已經(jīng)在空間上自動聚類了。

而這種聚類結(jié)果胞锰,可以和DeepWalk灾锯、node2vec這種經(jīng)過復(fù)雜訓(xùn)練得到的node embedding的效果媲美了

說的夸張一點(diǎn)胜蛉,比賽還沒開始挠进,GCN就已經(jīng)在終點(diǎn)了√懿幔看到這里我不禁猛拍大腿打呼:“NB领突!”

還沒訓(xùn)練就已經(jīng)效果這么好,那給少量的標(biāo)注信息案怯,GCN的效果就會更加出色君旦。

看到這里,我覺得嘲碱,以后有機(jī)會金砍,確實(shí)得詳細(xì)地吧GCN背后的數(shù)學(xué)琢磨琢磨,其中的玄妙之處究竟為何麦锯,其物理本質(zhì)為何恕稠。這個時候,回憶起在知乎上看到的各路大神從各種角度解讀GCN扶欣,例如從熱量傳播的角度鹅巍,從一個群體中每個人的工資的角度千扶,生動形象地解釋。這一刻骆捧,歷來痛恨數(shù)學(xué)的我澎羞,我感受到了一絲數(shù)學(xué)之美,于是凌晨兩點(diǎn)的我敛苇,打開了天貓妆绞,下單了一本正版《數(shù)學(xué)之美》。哦枫攀,數(shù)學(xué)啊括饶,你真如一朵美麗的玫瑰,每次被你的美所吸引脓豪,都要深深受到刺痛巷帝,我何時才能懂得你、擁有你扫夜?

其他關(guān)于GCN的點(diǎn)滴:

對于很多網(wǎng)絡(luò),我們可能沒有節(jié)點(diǎn)的特征驰徊,這個時候可以使用GCN嗎笤闯?答案是可以的,如論文中作者對那個俱樂部網(wǎng)絡(luò)棍厂,采用的方法就是用單位矩陣 I 替換特征矩陣 X颗味。

我沒有任何的節(jié)點(diǎn)類別的標(biāo)注,或者什么其他的標(biāo)注信息牺弹,可以使用GCN嗎浦马?當(dāng)然,就如前面講的张漂,不訓(xùn)練的GCN晶默,也可以用來提取graph embedding,而且效果還不錯航攒。

GCN網(wǎng)絡(luò)的層數(shù)多少比較好磺陡?論文的作者做過GCN網(wǎng)絡(luò)深度的對比研究,在他們的實(shí)驗(yàn)中發(fā)現(xiàn)漠畜,GCN層數(shù)不宜多币他,2-3層的效果就很好了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末憔狞,一起剝皮案震驚了整個濱河市蝴悉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘾敢,老刑警劉巖拍冠,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硝枉,死亡現(xiàn)場離奇詭異,居然都是意外死亡倦微,警方通過查閱死者的電腦和手機(jī)妻味,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來欣福,“玉大人责球,你說我怎么就攤上這事⊥厝埃” “怎么了雏逾?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長郑临。 經(jīng)常有香客問我栖博,道長,這世上最難降的妖魔是什么厢洞? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任仇让,我火速辦了婚禮,結(jié)果婚禮上躺翻,老公的妹妹穿的比我還像新娘丧叽。我一直安慰自己,他們只是感情好公你,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布踊淳。 她就那樣靜靜地躺著,像睡著了一般陕靠。 火紅的嫁衣襯著肌膚如雪迂尝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天剪芥,我揣著相機(jī)與錄音垄开,去河邊找鬼。 笑死粗俱,一個胖子當(dāng)著我的面吹牛说榆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寸认,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼签财,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了偏塞?” 一聲冷哼從身側(cè)響起唱蒸,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎灸叼,沒想到半個月后神汹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體庆捺,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年屁魏,在試婚紗的時候發(fā)現(xiàn)自己被綠了滔以。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡氓拼,死狀恐怖你画,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情桃漾,我是刑警寧澤坏匪,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站撬统,受9級特大地震影響适滓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜恋追,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一凭迹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧几于,春花似錦蕊苗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尖滚。三九已至喉刘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漆弄,已是汗流浹背睦裳。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撼唾,地道東北人廉邑。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像倒谷,于是被迫代替她去往敵國和親蛛蒙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容