国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
【GCN】萬字長(zhǎng)文帶你入門 GCN

斷斷續(xù)續(xù)寫了一個(gè)多星期,期間找了很多同學(xué)討論學(xué)習(xí),感謝指導(dǎo)過點(diǎn)撥過我的同學(xué)們,為了精益求精本著不糊弄?jiǎng)e人也不糊弄自己的原則在本文中探討了很多細(xì)節(jié)。

當(dāng)然,還有很多細(xì)節(jié)沒提到,包括總變差(Total Variation)、空域和頻域視角下的圖信號(hào)等,有興趣的同學(xué)可以深入了解下圖信號(hào)處理,本人才疏學(xué)淺還希望拋磚引玉引出更多的 GCN 的文章。

非常感謝知乎 @superbrother 同學(xué)和蘑菇先生的精彩筆記才使得我能夠入門 GCN,當(dāng)然我也將公開我的筆記希望能幫助更多的同學(xué)。

1. Convolutional Neural Network  

CNN 在圖像識(shí)別等任務(wù)中具有重要作用,主要是因?yàn)?CNN 利用了圖片在其域中的平移不變性。由于圖結(jié)構(gòu)不存在平移不變性,所以 CNN 無法直接在圖上進(jìn)行卷積。

1.1 Translational Invariance

剛剛提到 CNN 之所以可以應(yīng)用到圖像而無法應(yīng)用到圖網(wǎng)絡(luò)中主要是因?yàn)閳D像具有「平移不變形(translational invariance)」,而圖網(wǎng)絡(luò)不具備這一屬性。那么問題來了,什么是平移不變形呢?

我們知道對(duì)于 CNN 來說,其核心在于使用了基于卷積核的卷積操作來提取圖像的特征,這里的卷積操作類似于對(duì)「計(jì)算區(qū)域內(nèi)的中心節(jié)點(diǎn)和相鄰節(jié)點(diǎn)進(jìn)行加權(quán)求和」

CNN 之所以能成為圖像領(lǐng)域的明珠卻很少應(yīng)用于其他領(lǐng)域原因是:「圖片是一個(gè)規(guī)整的二維矩陣」,無論卷積核平移到圖片中的哪個(gè)位置都可以保證其運(yùn)算結(jié)果的一致性,這就是我們所說的「平移不變性」。CNN 的卷積本質(zhì)就是利用這種平移不變性來對(duì)掃描的區(qū)域進(jìn)行卷積操作,從而實(shí)現(xiàn)了圖像特征的提取。

而網(wǎng)絡(luò)是不規(guī)整的關(guān)系型數(shù)據(jù),所以其不存在平移不變形(每個(gè)節(jié)點(diǎn)的周圍鄰居數(shù)不固定),這就使得傳統(tǒng)的 CNN 方法無法直接應(yīng)用于網(wǎng)絡(luò)中。

1.2 Convolution Kernels

既然是因?yàn)榫矸e核的原因,那么可不可以不使用卷積核?

答案肯定是不可以,因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)的一大核心就是利用卷積核實(shí)現(xiàn)「參數(shù)共享(Parameter Sharing)」。下圖為有卷積核的卷積操作:

此時(shí)的參數(shù)大小只與卷積核大小有關(guān),而如果不進(jìn)行參數(shù)共享的話,參數(shù)的大小則與圖像的像素矩陣保持一致:

除此之外,卷積神經(jīng)網(wǎng)絡(luò)還有另一大核心:「局部連接性(Locally Connection)」。局部連接是指卷積計(jì)算每次只在與卷積核大小對(duì)應(yīng)的區(qū)域進(jìn)行,也就是說輸入和輸出是局部連接的。如果不進(jìn)行局部連接的話,相當(dāng)于將圖片的矩陣展開成向量進(jìn)行輸入,類似于全連接神經(jīng)網(wǎng)絡(luò),此時(shí)的參數(shù)量會(huì)變得非常巨大:

也就是說,通過參數(shù)共享和局部連接性我們可以將參數(shù)從 降低到 。其中,W H 和 K 分別為圖像的寬、高和通道,N 為隱藏層節(jié)點(diǎn)個(gè)數(shù),m 為卷積核寬,k 為卷積核個(gè)數(shù)。

PS:CNN 有三大特點(diǎn),除了上面說的局部連接和參數(shù)共享之外,還有「層次化表達(dá)(Hierarchical Expression)」。CNN 的層次化表達(dá)可以通過卷積層疊加得到,每一個(gè)卷積層都是在前一層的基礎(chǔ)上進(jìn)行的,這樣的意義在于,網(wǎng)絡(luò)越往后,其提取到的特征越高級(jí)。比如說:第一層可能是一些線條,第二層可能會(huì)是一些紋理,第三層可能是一些抽象圖案:

可能會(huì)有同學(xué)問:那我們還有其他辦法在圖上進(jìn)行卷積嗎?答案是一定有的 = =。

目前的一大思路就是借助譜圖理論(Spectral Graph Theory)來實(shí)現(xiàn)在拓?fù)鋱D上的卷積操作,大致步驟為將空域中的拓?fù)鋱D結(jié)構(gòu)通過傅立葉變換映射到頻域中并進(jìn)行卷積,然后利用逆變換返回空域,從而完成了圖卷積操作。

看到這里,估計(jì)大家會(huì)有一堆疑問,包括:什么是譜圖理論?什么是傅立葉變換?什么是頻域空域?逆變換是什么?

想要清楚的回答這個(gè)問題,要從圖信號(hào)處理說起。

2. Graph Signal Processing

圖信號(hào)處理(Graph Signal Processing,以下簡(jiǎn)稱 GSP)用來處理那些定義在圖上的非規(guī)則域的信號(hào),這句話有點(diǎn)拗口,拆開說就是處理圖上定義的信號(hào),但信號(hào)所在域是規(guī)則的。

2.1 Simple Example

這里我們舉一個(gè)圖信號(hào)處理的簡(jiǎn)單例子:

假設(shè)我們?cè)谝粋€(gè)地方測(cè)量溫度,并根據(jù)人口密度安排了溫度感應(yīng)點(diǎn)(如上圖 a 所示),地區(qū) n 的測(cè)量溫度可以表示為 (如上圖 b 所示),并且 , 為真實(shí)溫度, 為隨機(jī)噪聲帶來的誤差。

現(xiàn)在我們想通過對(duì)測(cè)量地及周圍的溫度求平均來減少這些隨機(jī)噪聲,當(dāng)然為了防止失去局部溫度(這個(gè)也叫 Over Smooth),我們會(huì)對(duì)每個(gè)點(diǎn)取其周圍區(qū)域進(jìn)行平均:

上圖 c 展示了 y(1) 的計(jì)算方式。我們也可以用矩陣來表示:

其中,矩陣 A 為鄰接矩陣(測(cè)量點(diǎn)的連接情況如上圖 d 所示),測(cè)量位置及每個(gè)位置的測(cè)量溫度如上圖 e 所示。

我們還可以對(duì)其進(jìn)行優(yōu)化,根據(jù)距離來為不同測(cè)量點(diǎn)添加不同的權(quán)重:

當(dāng)然,我們也需要對(duì)權(quán)重進(jìn)行歸一化,以便產(chǎn)生無偏估計(jì):

其中,對(duì)角矩陣 D 用于歸一化,其值為 ,這個(gè)矩陣還有另外一個(gè)名字,叫「度矩陣(Degree Matrix)」

以上便是一個(gè)簡(jiǎn)單的是圖信號(hào)處理過程,其框架大致為:

  1. 測(cè)量點(diǎn)構(gòu)成節(jié)點(diǎn)(圖 a),節(jié)點(diǎn)間的連通性和相關(guān)性構(gòu)成邊;
  2. 節(jié)點(diǎn)和邊構(gòu)成圖(圖 b),該圖是信號(hào)域,表示測(cè)量信號(hào)的點(diǎn)以及它們之間的關(guān)系,并使用該圖進(jìn)行分析和處理;
  3. 測(cè)量溫度是圖的信號(hào)(圖 e),這里的信號(hào)由真實(shí)溫度和測(cè)量噪聲所組成;
  4. 考慮測(cè)量位置,我們提出了局部平均和加權(quán)平均,這是最簡(jiǎn)單的圖信號(hào)處理方式(Linear fist-order)。

同樣的,我們也可以將其應(yīng)用在多個(gè)領(lǐng)域,如民意調(diào)查、政治分析等。

2.2 Fourier Transformer

我相信如果我一上來就扔出傅立葉變換,很多人都會(huì)崩潰不想看,不信我們?cè)囋嚕?/p>

如果沒有崩潰的話就直接看下一節(jié)吧;如果崩潰了就接著看,但是筆掉了千萬別撿,否則可能就看不懂了。

2.2.1 Transformer

為了讓大家無痛入門,我們先從最簡(jiǎn)單變換的說起。

我們知道笛卡爾坐標(biāo)系中,每個(gè)點(diǎn)都會(huì)有一個(gè)坐標(biāo),如下圖所示 A(-3,1) B(2,3):

那么為什么可以這么表示呢?為什么 A 的坐標(biāo)為 (-3,1) 而 B 的坐標(biāo)為 (2,3) ?

這是因?yàn)樵诘芽栕鴺?biāo)系中,我們定義了一組標(biāo)準(zhǔn)正交基 ,基是向量有方向有大小。(正交是指不同基之間的內(nèi)積為 0,即兩個(gè)基線性無關(guān),而標(biāo)準(zhǔn)基是指基的模為 1)

A 的坐標(biāo)其實(shí)就表示在 x 軸坐標(biāo)上有 3 個(gè) 的長(zhǎng)度且方向與 相反,在 y 軸坐標(biāo)上有 1 個(gè) 的長(zhǎng)度,且方向相同。

這樣做的好處是什么呢?主要是為了方便計(jì)算和表示,試想下,如果只給你一點(diǎn)點(diǎn)而沒有坐標(biāo)系,你怎么表示兩個(gè)點(diǎn)之間的距離呢?而放在坐標(biāo)系中,這些問題就迎刃而解。

有同學(xué)可能疑問,不是說變換嗎?怎么扯到笛卡爾坐標(biāo)系了?其實(shí)我們剛剛說的就是一種變換:「將圖上的節(jié)點(diǎn)變換到坐標(biāo)系中」。

2.2.2 Fourier Series

傅立葉變換分為傅立葉級(jí)數(shù)和連續(xù)傅立葉變換,我們先說傅立葉級(jí)數(shù)。

傅立葉級(jí)數(shù)適用于周期性函數(shù),它能夠?qū)⑷魏沃芷谛院瘮?shù)分解成簡(jiǎn)單震蕩函數(shù)的集合(正弦函數(shù)和余弦函數(shù)),舉個(gè)例子,比如說下圖:

左邊是一個(gè)周期函數(shù),右邊是將周期函數(shù)分解成多個(gè)簡(jiǎn)單震蕩函數(shù),所以這個(gè)周期函數(shù)用數(shù)學(xué)公式可以表達(dá)為:

我們看到上圖中的信號(hào)是隨著時(shí)間變換的,所以我稱之為「時(shí)域(Time domain)」。

我們觀察到,不同的振蕩函數(shù)具有不同的振幅和頻率,以上圖為例 的振幅為 1/3 而頻率為 ,考慮以頻率為橫坐標(biāo),振幅為縱坐標(biāo),我們有:

這個(gè)就是我們所說的頻域(Frequency Domain),其和時(shí)域是等價(jià)的,不過是從另外一個(gè)角度去描述信號(hào)。我們把它放在一起看一下:

我們可以放一張動(dòng)圖感受一下:

給出傅立葉級(jí)數(shù)的公式:

還可以將其稍作變換:

這樣我們便能看出來,此時(shí)的標(biāo)準(zhǔn)正交基為 ,而對(duì)應(yīng)的系數(shù) 其實(shí)就是傅立葉級(jí)數(shù)在這組標(biāo)準(zhǔn)正交基下的向量。這便是傅立葉變換,將信號(hào)從時(shí)域變換到頻域中。

這里介紹下傅立葉變換后的基為正交基,因?yàn)橛袀€(gè)知識(shí)點(diǎn)后面還會(huì)用到。

我們知道判斷兩個(gè)向量是否正交可以用向量點(diǎn)乘求和等于 0 來判斷,這種方法我們稱為點(diǎn)積(內(nèi)積):

與向量點(diǎn)積不同的是,函數(shù)是連續(xù)的,假設(shè)現(xiàn)在有兩個(gè)函數(shù) f 和 g,f 的周期為 2n,我們也想用上述連續(xù)累加的方式來使得函數(shù)內(nèi)積和向量?jī)?nèi)積的概念一致,而積分正是函數(shù)累加的概念,所以我們有:

對(duì)于上面我們說的傅立葉變換后的正交基,我們?nèi)菀椎玫剑?/p>

容易證明上述標(biāo)準(zhǔn)基為正交基。

在數(shù)學(xué)里,希爾伯特空間(Hilbert Space)是有限維歐幾里得空間的一個(gè)推廣,是一個(gè)完備的內(nèi)積空間,其定義了一個(gè)帶有內(nèi)積的完備向量空間。在希爾伯空間中,一個(gè)抽象元素通常被稱為向量,它可以是一個(gè)復(fù)數(shù)或者函數(shù)。傅立葉分析的一個(gè)重要目的是將一個(gè)給定的函數(shù)表示成一族給定的基底函數(shù)的和,而希爾伯特空間為傅立葉分析提供了一種有效的表述方式。

可能大家看到這里要爆炸了,不過不用擔(dān)心,我們只需要記住上面「兩個(gè)函數(shù)的內(nèi)積形式」即可。

2.2.3 Fourier Transformer

我們剛剛說的都是周期性函數(shù),但現(xiàn)實(shí)中大部分函數(shù)都是非周期的,那如果涉及到非周期性函數(shù)該怎么辦呢?

在介紹非周期性函數(shù)之前,我們先簡(jiǎn)單介紹下歐拉公式。

考慮橫軸為 1,縱軸為虛單位 i 的坐標(biāo)系,圖上任意一點(diǎn)都可以表示為 。

根據(jù)歐拉公式,我們可以寫成:

其中,e 為自然對(duì)數(shù)的底數(shù)。

所以坐標(biāo)軸上的點(diǎn)現(xiàn)在有了兩種表示方式:

考慮 , 會(huì)隨著 t 的增大而逆時(shí)針旋轉(zhuǎn)。所以 可以表示為坐標(biāo)點(diǎn) A 隨著時(shí)間 t 逆時(shí)針旋轉(zhuǎn)。我們以時(shí)間 t 為橫坐標(biāo),則可以記錄到坐標(biāo)點(diǎn) A 映射在虛軸的運(yùn)動(dòng)軌跡:

左邊圖是我們看到的旋轉(zhuǎn)頻率,稱為頻域,而右邊圖看到是時(shí)間流逝,稱為時(shí)域,是不是和我們剛剛介紹的(從時(shí)域變換到頻域)正好相反?也就是說,時(shí)域和頻域其實(shí)是可以相互轉(zhuǎn)換的。

回到正題,考慮非周期函數(shù)的傅立葉變換。

事實(shí)上,我們可以將非周期函數(shù)考慮為周期無窮大的函數(shù),考慮頻域中的橫坐標(biāo):,當(dāng)周期 T 無窮大大時(shí),頻域圖就從離散點(diǎn)變?yōu)檫B續(xù)的曲線,如下圖:

那么,我們?cè)撊绾螐倪@個(gè)非周期函數(shù)中分解出各種信號(hào)呢?答案就是利用正交!比如說,假設(shè)這函數(shù)中有一個(gè) 的信號(hào),那么我們用 就可以把它乘出來,而其他分量如 都會(huì)因?yàn)檎欢?。所以我們需要?duì)函數(shù)做一個(gè)內(nèi)積:

其中, 剛剛介紹過,就是一組正交基的組合。我們用正交基去與函數(shù)求內(nèi)積,如果原函數(shù)中包含頻率為 的三角函數(shù),則 便為 0,反之為 0,這樣自然分離能分離出相應(yīng)的信號(hào),其圖示如上圖 c 中右部分所示。

細(xì)心的同學(xué)可能還會(huì)注意到上式的計(jì)算的結(jié)果中還有復(fù)數(shù) i。其實(shí)是樣子的:「實(shí)數(shù)部分表示振幅」,「虛數(shù)部分表示相位」。相關(guān)資料同學(xué)們可以自己查閱,不再進(jìn)行過多介紹。

以上就是我們所說的傅立葉變換(Fourier Transform,F(xiàn)T)。同樣的我們也存在逆變換:

于是,我們便實(shí)現(xiàn)了將信號(hào)拆成多個(gè)正弦信號(hào),再把正弦信號(hào)逆變換為原來信號(hào)的過程。

簡(jiǎn)單介紹下傅立葉變換的應(yīng)用吧, 省得看了那么多不知道他能干什么。

一個(gè)很經(jīng)典的例子就是:分離、降噪。如果男生和女生一起說話,該如何分離出兩者的聲音呢?答案就是對(duì)這一段聲音(時(shí)域)做傅立葉變換轉(zhuǎn)換到頻率,而男女生的聲音頻率不同,在頻域中,低頻為男生,中頻為女生,高頻可能為噪音,我們可以根據(jù)需要去除中頻和高頻的信號(hào),并將其進(jìn)行逆變換,這樣便分離出了男生的聲音。

PS:這里再說一個(gè)好玩的,頻域中是不是不存在時(shí)間的概念?不存在時(shí)間卻可以表示時(shí)間,這有沒有一點(diǎn)像我們的人生,看似無規(guī)律,但是從上帝視角來看,一切皆命中注定。

2.3 Graph Laplacian

圖拉普拉斯矩陣可以定義為:

其中,D 為度矩陣,W 為考慮權(quán)值的鄰接矩陣。

考慮歸一化后的拉普拉斯矩陣:

以上為常規(guī)操作,不過介紹到這里不知道大家會(huì)不會(huì)有一點(diǎn)疑問。

至少我是有疑問的:圖拉普拉斯矩陣為什么要這樣定義的?

要想回答這個(gè)問題,首先我們得了解什么是拉普拉斯算子。

2.3.1 Laplacian

在數(shù)學(xué)中,拉普拉斯算子(Laplacian)是由歐幾里得空間中的一個(gè)函數(shù)的梯度的散度給出的微分算子,通常有以下幾種寫法:。所以對(duì)于任意函數(shù) 來說,其拉普拉斯算子的定義為:

這里引入了一個(gè)新的概念——散度,這里簡(jiǎn)單介紹下:

散度(Divergence)是向量分析的一個(gè)向量算子,將向量空間上的向量場(chǎng)(矢量場(chǎng))對(duì)應(yīng)到一個(gè)標(biāo)量場(chǎng)。散度描述的是向量場(chǎng)里一個(gè)點(diǎn)是匯聚點(diǎn)還是發(fā)源點(diǎn)。值為正時(shí)表示該點(diǎn)為發(fā)源點(diǎn),值為負(fù)時(shí)表示該點(diǎn)為匯聚點(diǎn),值為零時(shí)表示該點(diǎn)無源。散度在物理上的含義可以理解為磁場(chǎng)、熱源等。

回到正文,我們看下拉普拉斯算子在 n 維空間中的笛卡爾坐標(biāo)系的數(shù)學(xué)定義:

數(shù)學(xué)表示為各個(gè)維度的二階偏導(dǎo)數(shù)之和。

以一維空間為例:

也就是說二階導(dǎo)數(shù)近似于其二階差分,可以理解為當(dāng)前點(diǎn)對(duì)其在所有自由度上微擾之后獲得的增益。這里自由度為 2,分別是 +1 和 -1 方向。

再以二維空間為例子:

看到上面可能大家會(huì)很可能很陌生,但是這個(gè)就是圖像中的拉普拉斯卷積核:

此時(shí)共有 4 個(gè)自由度 (1,0),(-1,0),(0,1),(0,-1),當(dāng)然如果對(duì)角線后其自由度可以為 8。

對(duì)此我們可以進(jìn)行歸納:「拉普拉斯算子是所有自由度上進(jìn)行微小變化后所獲得的增益」。

我們將其推廣到網(wǎng)絡(luò)圖中,考慮有 N 個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)圖,其自由度最大為 N,那么函數(shù) 可以是 N 維的向量,即:

其中, 表示函數(shù) 在網(wǎng)絡(luò)圖中節(jié)點(diǎn) i 處的函數(shù)值,類比 為函數(shù) 在 (x,y) 的函數(shù)值。

在網(wǎng)絡(luò)圖中,兩個(gè)節(jié)點(diǎn)的之間的增益為 ,考慮加權(quán)圖則有 ,那么對(duì)于節(jié)點(diǎn) i 來說,總增益即為拉普拉斯算子在節(jié)點(diǎn) i 的值:

其中, 為節(jié)點(diǎn) i 的度;上式第二行去掉了 是因?yàn)?可以控制節(jié)點(diǎn) i 的鄰接矩陣。

對(duì)于任意 都成立,所以我們有:

自此,我們便給出了圖拉普拉斯矩陣的推導(dǎo)過程,這個(gè)公式的全稱為:圖拉普拉斯算子作用在由圖節(jié)點(diǎn)信息構(gòu)成的向量 上得到的結(jié)果等于圖拉普拉斯矩陣和向量 的點(diǎn)積。拉普拉斯矩陣反映了當(dāng)前節(jié)點(diǎn)對(duì)周圍節(jié)點(diǎn)產(chǎn)生擾動(dòng)時(shí)所產(chǎn)生的累積增益,直觀上也可以理解為某一節(jié)點(diǎn)的權(quán)值變?yōu)槠湎噜徆?jié)點(diǎn)權(quán)值的期望影響,形象一點(diǎn)就是拉普拉斯矩陣可以刻畫局部的平滑度。

2.3.2 Laplace Spectral decomposition

拉普拉斯矩陣的譜分解就是矩陣的特征分解:

對(duì)于無向圖來說,拉普拉斯矩陣是實(shí)對(duì)稱矩陣,而實(shí)對(duì)稱矩陣一定可以用正交矩陣進(jìn)行正交相似對(duì)角化:

其中, 為特征值構(gòu)成「對(duì)角矩陣」, 為特征向量構(gòu)成的「正交矩陣」。

又因?yàn)檎痪仃嚨哪娴扔谡痪仃嚨霓D(zhuǎn)置: ,所以我們有:

因?yàn)?L 是半正定矩陣,我們還可以有:

其中, 為節(jié)點(diǎn) i 的信號(hào)。我們稱 為圖信號(hào)的總變差(Total Variation),可以刻畫圖信號(hào)整體的平滑度。

拉普拉斯的譜分解具有以下幾點(diǎn)性質(zhì):

  • 由于拉普拉斯矩陣以每行(列)元素之和為零,因此拉普拉斯矩陣的至少有一個(gè)特征值為 0,對(duì)應(yīng)的特征向量 ,且滿足:。
  • 拉普拉斯矩陣的特征值都大于零,歸一化的拉普拉斯矩陣的特征值區(qū)間為 [0, 2];
  • 如果有 n 個(gè)特征值為 0,則表示圖有 n 個(gè)子圖相互無連接;
  • 特征值的總和為矩陣的跡,對(duì)于歸一化的拉普拉斯矩陣,如果沒有孤立節(jié)點(diǎn)或子圖,其特征值為 N。

2.4 Graph Fourier Transformer

有同學(xué)看到這可能會(huì)感到疑問了:「我們剛介紹傅立葉變換,現(xiàn)在又介紹拉普拉斯譜分解的,到底想干嘛」。

這是因?yàn)椋?strong>「傅立葉分析是拉普拉斯譜分析的一個(gè)特例」!想不到吧,是不是很震驚?

我們來證明下,首先考慮亥姆霍茲方程(Helmholtz Equation):

其中, 為拉普拉斯算子, 為特征函數(shù), 為特征值。

看不懂不要緊,把它當(dāng)成廣義特征方程就行:,狹隘的特征方程只能用于處理向量和矩陣,而這個(gè)可以用于處理函數(shù),最經(jīng)典的應(yīng)用是處理波動(dòng)方程和擴(kuò)散方程,所以我們可以用它處理信號(hào)。

回顧一下傅立葉變換:

其實(shí)就是信號(hào)函數(shù) 與基函數(shù) 的內(nèi)積(剛剛介紹過函數(shù)內(nèi)積)。

對(duì)于基函數(shù) ,我們讓其與拉普拉斯算子求內(nèi)積:

以上便證明 是「拉普拉斯算子的特征函數(shù)」,同時(shí)也證明了「離散傅立葉變換是拉普拉斯譜分析的一個(gè)特例」。

寫到這我們有以下線索:首先拉普拉斯矩陣(離散拉普拉斯算子)可以應(yīng)用在圖像上,理論上也可以應(yīng)用到網(wǎng)絡(luò)上,而傅立葉變換是拉普拉斯的一個(gè)小弟,所以小弟也可以應(yīng)用到圖上。

回顧下拉普拉斯譜分析:

我們類比一下:

信號(hào)中的傅立葉變換網(wǎng)絡(luò)圖中的傅立葉變換
頻率 特征值
正交基中某個(gè)向量 正交矩陣中的某個(gè)向量

是不是長(zhǎng)得非常像,所以我們也有了網(wǎng)絡(luò)圖上的傅立葉變換:

其中, 為網(wǎng)絡(luò)圖上的 n 維向量, 表示網(wǎng)絡(luò)中的節(jié)點(diǎn) i 的第 k 個(gè)分量, 表示特征向量 k 的第 i 個(gè)分量。做個(gè)類比解釋:特征值(頻率) 下, 的圖傅立葉變換(振幅)等于 與 對(duì)應(yīng)的特征向量 的內(nèi)積。

考慮矩陣乘法:

所以我們得到了「圖傅立葉變換的矩陣形式」,這里的 為拉普拉斯譜分解的正交矩陣。

我們也可以得到傅立葉逆變換:

3. Graph Convolutional Network

前面的鋪墊很多,終于要迎來 GCN 了。

3.1 Convolution

我們先來看一下卷積的定義,卷積是指通過兩個(gè)函數(shù)  和  生成第三個(gè)函數(shù)的一種數(shù)學(xué)算子,表征函數(shù) 與經(jīng)過翻轉(zhuǎn)和平移的  的乘積函數(shù)所圍成的曲邊梯形的面積:

對(duì)于離散卷積來說,我們可以定義為:

計(jì)算卷積有很多種方法,除了直接計(jì)算外,我們還可以考慮「卷積定理」:在適當(dāng)條件下,兩個(gè)信號(hào)的卷積的傅立葉變換是他們的傅立葉變換的點(diǎn)積。換句話說,一個(gè)域(如時(shí)域)的卷積等于另一個(gè)域(如頻域)的點(diǎn)乘:

其中  表示  的傅立葉變換。

借助傅立葉逆變換  可以寫成:

這樣做有什么好處呢?或者說,我們?yōu)槭裁匆儞Q一個(gè)域后再去做卷積操作?

因?yàn)槔镁矸e定理可以簡(jiǎn)化卷積的運(yùn)算量。對(duì)于一個(gè)長(zhǎng)度為 n 的序列,按照卷積的定義來計(jì)算則需要做 2n-1 組對(duì)位乘法,即時(shí)間復(fù)雜度為  ;而利用傅立葉變換后,只需要計(jì)算一組對(duì)位乘法,而且離散傅立葉變換有快速的算法(快速傅立葉變換),所以總的計(jì)算復(fù)雜度為  。

3.2 Graph Convolution

現(xiàn)在有了圖傅立葉變換,又有了離散卷積操作,那么我們想:既然無法直接在空域進(jìn)行卷積,可否將圖信號(hào)映射到頻域后再做卷積操作。

所以我們有:

其中,向量  與向量  的元素點(diǎn)積,等價(jià)于將  組織成對(duì)角矩陣的形式進(jìn)行矩陣乘法,所以我們有:

最后我們?cè)僮蟪?nbsp; 進(jìn)行逆變換:

這里,我們不寫成  的主要原因在于,我們可以將其與深度學(xué)習(xí)相結(jié)合,在 GCN 中我們的卷積核是可訓(xùn)練并且參數(shù)共享的,所以在此我們可以直接將  寫成 ,這個(gè)便是深度學(xué)習(xí)中的可學(xué)習(xí)參數(shù)。

3.3 GCN-1

第一代的卷積神經(jīng)網(wǎng)絡(luò)也就是剛剛我們給出的公式:

這和論文中給出的公式是一樣的:

這邊補(bǔ)充一點(diǎn),在這篇論文中,作者還給出了一個(gè)基于空域的「深度局部連接網(wǎng)絡(luò)」(Deep Locally Connected Networks),我們可以簡(jiǎn)單看一下:

每一層變換定義為:

其中, 表示第 k 第 i 個(gè)節(jié)點(diǎn); 表示第 k 層節(jié)點(diǎn) i 和節(jié)點(diǎn) j 的權(quán)值,考慮局部鄰居; 表示卷積運(yùn)算; 表示第 k 層的池化操作。也就是說每個(gè)節(jié)點(diǎn)都是由其鄰居和自身卷積池化得到。

雖然看起來很簡(jiǎn)單,但是優(yōu)點(diǎn)在于它不需要很強(qiáng)的前提假設(shè),其只需要網(wǎng)絡(luò)具有局部鄰域結(jié)構(gòu),甚至不需要很好的 Embedding 向量。

但這種結(jié)構(gòu)下有一個(gè)很大的缺點(diǎn):「沒有辦法實(shí)現(xiàn)共享參數(shù)」。

作者針對(duì)這種問題提出了我們所看到第一代圖卷積神經(jīng)網(wǎng)絡(luò)。

3.4 GCN-2

第一代的圖卷積神經(jīng)網(wǎng)絡(luò)很巧妙的利用圖譜理論來實(shí)現(xiàn)拓?fù)鋱D的卷積操作,但其有很多缺點(diǎn),比如說:計(jì)算復(fù)雜度太高,我們需要對(duì)拉普拉斯矩陣進(jìn)行譜分解得到特征向量矩陣 ,時(shí)間復(fù)雜度為  ;

針對(duì)這個(gè)問題,學(xué)者提出了第二代 GCN。

首先我們回顧下圖傅立葉變換:

可以看到這是一個(gè)和特征值密切相關(guān)的函數(shù),我們不妨將  寫成拉普拉斯矩陣 L 的特征值函數(shù) :

然后這個(gè)卷積核有兩個(gè)局限性:

  1. 不具備局部連接性;
  2. 時(shí)間復(fù)雜度為 。

為了克服這個(gè)缺點(diǎn),我們引入 K 階多項(xiàng)式:

其中,參數(shù)  是多項(xiàng)式系數(shù),這樣濾波器就具有了 K 階局部性了,復(fù)雜度也降低到 。

我們將這個(gè)公式帶入卷積運(yùn)算中:

此時(shí),我們計(jì)算圖卷積運(yùn)算就不需要再乘上特征向量矩陣 ,而是直接使用拉普拉斯矩陣 L 的 k 次方,這樣就避免了進(jìn)行特征分解。而我們可以事先計(jì)算好  ,這樣就只需要計(jì)算矩陣相乘。同時(shí)由于 L 為稀疏矩陣,所以時(shí)間復(fù)雜度為 , 為節(jié)點(diǎn)邊數(shù)。

此外,作者還引入了切比雪夫展開式來近似 。

設(shè)  為切比雪夫多項(xiàng)式的第 k 階式子,切比雪夫多項(xiàng)式的遞歸式為:。所以我們有:

其中, ; 是指拉普拉斯矩陣 L 的最大值。

?

這是因?yàn)榍斜妊┓蚨囗?xiàng)式的輸入要在  之間,由于拉普拉斯矩陣的半正定性,所以所有的特征值都是大于等于 0 的,將其除以最大特征值可以將特征壓縮到  區(qū)間內(nèi),現(xiàn)在需要將其壓縮到 ,所以我們有:

?

我們將切比雪夫多項(xiàng)式引入到我們的卷積變換中:

其中, 。這個(gè)表達(dá)式為拉普拉斯多項(xiàng)式中的一個(gè) k 階近似函數(shù),依賴于節(jié)點(diǎn)的 「k 階鄰域」(走 k 步能到的鄰居),時(shí)間復(fù)雜度與邊呈線形相關(guān)。

3.5 GCN-3

第二代 GCN 解決了圖卷機(jī)要求特征分解的問題,但是在計(jì)算圖卷積操作時(shí),依然每次都要進(jìn)行矩陣乘法,時(shí)間復(fù)雜度為  ,于是學(xué)者繼續(xù)優(yōu)化。

我們把上式拿下來:

GCN 通過上式的多層卷積層進(jìn)行疊加,而每層都會(huì)逐點(diǎn)進(jìn)行非線性疊加,考慮到時(shí)間復(fù)雜度問題,學(xué)者直接取 K=2,也就是說得到了一個(gè)拉普拉斯算子的二階近似函數(shù)。這樣我們既可以對(duì)網(wǎng)絡(luò)進(jìn)行卷積操作,又不會(huì)引入太多的切比雪夫系數(shù)。而且這樣的線形運(yùn)算允許我們構(gòu)建更深的網(wǎng)路,提高模型的建模能力。

我們知道歸一化的拉普拉斯矩陣的特征值區(qū)間為 [0, 2],進(jìn)一步近似 ,所以我們有新的表達(dá)式:

其中, 為切比雪夫系數(shù)的向量,是僅有的兩個(gè)參數(shù)。

在實(shí)際訓(xùn)練過程中,我們需要規(guī)范化參數(shù)來避免過擬合,所以我們令 ,從而有:

需要注意的是, 的特征值范圍在 [0, 2] 之間,所以如果在很深的網(wǎng)絡(luò)中會(huì)引起梯度爆炸的問題,所以我們需要再次對(duì)他進(jìn)行一次歸一化(原文也稱 「renormalization trick」):

我們把這個(gè)公式從標(biāo)量推廣到矩陣,對(duì)于輸入節(jié)點(diǎn)的向量  ,其中 N 為節(jié)點(diǎn)數(shù),C 為節(jié)點(diǎn)的特征向量維度,我們有:

其中, 是濾波器的參數(shù)矩陣, 是卷積后的信號(hào)矩陣,時(shí)間復(fù)雜度為  。節(jié)點(diǎn)的向量可以通過卷積操作從 C 維度 轉(zhuǎn)變?yōu)?F 維度。

依據(jù)上面的單層運(yùn)算,我們給出了多層圖卷積網(wǎng)絡(luò)的傳播規(guī)則:

其中, ,A 為鄰接矩陣, 為單位矩陣,所以  為添加自連接的鄰接矩陣; , 可以理解為對(duì)角線為節(jié)點(diǎn) i 的度數(shù)矩陣; 為神經(jīng)網(wǎng)絡(luò)第  層的權(quán)重矩陣; 是激活函數(shù); 是第  層的激活矩陣,并且  , 是由節(jié)點(diǎn)  的特征向量組成矩陣。

到此,便完成了 GCN 卷積操作的公式推導(dǎo)。

3.6 Model

再來關(guān)注一下模型。

圖卷積神經(jīng)網(wǎng)絡(luò)是指在圖結(jié)構(gòu)中做卷積操作的神經(jīng)網(wǎng)絡(luò),所以其輸入輸出的都是圖結(jié)構(gòu),區(qū)別于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其隱藏層是直接在圖結(jié)構(gòu)中進(jìn)行激活:

為了方便理解,我們舉個(gè)分類任務(wù)例子,以包含一個(gè)隱藏層的 GCN 為例:

由于知道了 GCN 的傳播規(guī)則,所以我們有最終的結(jié)果:

其中, 是輸入層到隱藏層的權(quán)重, 是隱藏層到輸出層的權(quán)重;用 Softmax 是因?yàn)檫@是一個(gè)節(jié)點(diǎn)分類任務(wù),需要預(yù)測(cè)標(biāo)簽。

然后,我們用交叉熵作為代價(jià)函數(shù):

其中, 為有標(biāo)簽的節(jié)點(diǎn)集合。

有了代價(jià)函數(shù)后,我們可以通過梯度下降來更新網(wǎng)絡(luò)的參數(shù)。

3.7 Experiment

簡(jiǎn)單看下第三代 GCN 的試驗(yàn)。

由于 GCN 比較復(fù)雜,所以這里我將給出兩種實(shí)驗(yàn),一種是 GCN 的效果實(shí)驗(yàn),另一種是模擬 GCN 運(yùn)行的實(shí)驗(yàn)。

3.7.1 Effect

我們來看一下實(shí)驗(yàn)部分,GCN 與其他模型的對(duì)比:

可以看到 GCN 的結(jié)果在不同數(shù)據(jù)集上都取得了非常好的效果,遠(yuǎn)超其他模型。

我們?cè)倏匆幌?,?duì)于 GCN 而言不同程度的近似會(huì)有什么樣的效果:

可以看到并不是模型越復(fù)雜效果越好。

GCN 還有除了訓(xùn)練后模型精度高外,還有兩個(gè)非常硬核的地方,即使不訓(xùn)練,直接隨機(jī)參數(shù)也可以獲得不錯(cuò)的效果,下圖展示了在某一數(shù)據(jù)集下隨機(jī)賦權(quán)值的結(jié)果:

另外,作為半監(jiān)督學(xué)習(xí),GCN 可以在只標(biāo)注少量樣本的情況下學(xué)得出色的效果,下圖為每個(gè)類別只標(biāo)注一個(gè)樣本的分類結(jié)果:

3.7.2 Simulation

為了更加形象的理解 GCN,我們來對(duì) GCN 進(jìn)行模擬。

首先,以一個(gè)簡(jiǎn)單有向圖模型為例:

鄰接矩陣 A 和 節(jié)點(diǎn)的特征向量 X 為:

我們有一個(gè)簡(jiǎn)單的傳播規(guī)則(不考慮參數(shù)矩陣和激活函數(shù)):

「可以看到節(jié)點(diǎn)的特征變成了其鄰居的特征之和!」

但這邊也就一些小問題:

  1. 這種傳播過程沒有考慮節(jié)點(diǎn)自身的特征;
  2. 度的大節(jié)點(diǎn)特征值會(huì)越來越大,度小的節(jié)點(diǎn)特征值會(huì)越來越小,傳播過程對(duì)特征的尺度敏感。

為了解決這個(gè)問題,我們需要:

  1. 加一個(gè)單位矩陣,考慮自環(huán)路;
  2. 將鄰接矩陣 A 與度矩陣 D 的逆相乘對(duì)特征進(jìn)行歸一化。

我們先看下加上單位矩陣的效果:

可以看到,加上單位矩陣的計(jì)算考慮了節(jié)點(diǎn)的特征。

再看下鄰接矩陣歸一化的效果:

鄰接矩陣被歸一化到 0 到 1 之間。

我們將兩個(gè)放在一起,并考慮參數(shù)矩陣 W:

所以我們有:

以上便完成了 GCN 的簡(jiǎn)單仿真。

我們回過頭來再來看一下網(wǎng)絡(luò)的傳播規(guī)則:

現(xiàn)在是不是更能明白為什么這么傳播了?

這里解釋一下歸一化為什么是兩邊乘上矩陣的 -1/2 次方。

這是因?yàn)閷?duì)稱歸一化的拉普拉斯矩陣其元素定義為:

我們仿真模擬的是用加權(quán)求和取平均的方式來聚合,而作者采用的是拉普拉斯變換。我這邊做一個(gè)化簡(jiǎn)大家可能個(gè)就會(huì)明白了:

區(qū)別于加權(quán)求和取平均的方式,拉普拉斯變換不但考慮當(dāng)前節(jié)點(diǎn)的 i 的度,還考慮其他節(jié)點(diǎn) j 的度。

4. Conclusion

GCN 的入門文章就介紹完了,大致思路為:CNN 中的卷積無法直接應(yīng)用于網(wǎng)絡(luò)圖中,所以引出了圖信號(hào)處理(Graph Signal Processing)中的 Graph Fourier Transformation,進(jìn)而定義 Graph Convolution,最后結(jié)合深度學(xué)習(xí)發(fā)展出來 GCN。

5. Reference

  1. 《Graph Convolutional Networks in 3 Minutes》
  2. 《如何理解卷積神經(jīng)網(wǎng)絡(luò)中的權(quán)值共享?》
  3. 《HIERARCHICAL DEEP LEARNING ARCHITECTURE FOR 10K OBJECTS CLASSIFICATION》
  4. 《Introduction to Graph Signal Processing》
  5. 《Fourier series》
  6. 《Fourier Series Graph Interactive》
  7. 《Hilbert space》
  8. 《Laplace operator》
  9. 《如何理解 GCN?- Johnny Richards的回答》
  10. 《圖拉普拉斯算子為何定義為D-W》
  11. 《圖卷積神經(jīng)網(wǎng)絡(luò)理論基礎(chǔ)》
  12. 《如何理解 GCN?- superbrother的回答》
  13. 《Fourier transform》
  14. 《Convolution》
  15. 《Convolution theorem》
  16. 《Spectral Networks and Deep Locally Connected Networks on Graphs》
  17. 《Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering》
  18. 《Semi-supervised Classification with Graph Convolutional Networks》
  19. 《How to do Deep Learning on Graphs with Graph Convolutional Networks》

投稿或交流學(xué)習(xí),備注:昵稱-學(xué)校(公司)-方向,進(jìn)入DL&NLP交流群。
方向有很多:機(jī)器學(xué)習(xí)、深度學(xué)習(xí),python,情感分析、意見挖掘、句法分析、機(jī)器翻譯、人機(jī)對(duì)話、知識(shí)圖譜、語音識(shí)別等。
記得備注呦
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
初探GNN-文本表示學(xué)習(xí)
圖卷積網(wǎng)絡(luò) GCN Graph Convolutional Network(譜域GCN)的理解和詳細(xì)推導(dǎo)
Graph Neural Networks 綜述
人大魏哲?。簣D神經(jīng)網(wǎng)絡(luò)的理論基礎(chǔ)
手把手解釋實(shí)現(xiàn)頻譜圖卷積
Twitter團(tuán)隊(duì)最新研究:快速高效的可擴(kuò)展圖神經(jīng)網(wǎng)絡(luò)SIGN
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服