先說問題的本質:圖中的每一個結點無時無刻不由於鄰居和更遠的點的影響而在改變着本身的狀態直到最終的平衡,關係越親近的鄰居影響越大。 算法
要想理解GCN以及其後面一系列工做的實質,最重要的是理解其中的精髓Laplacian矩陣在幹什麼。知道了Laplacian矩陣在幹什麼後,剩下的只是解法的不一樣——所謂的Fourier變換隻是將問題從空域變換到頻域去解,因此也有直接在空域解的(例如GraphSage)。爲了讓問題簡單便於理解,先讓咱們忘記時域、頻域這些複雜的概念,從一個最簡單的物理學現象——熱傳導出發。 網絡
圖(Graph)上的熱傳播模型 dom
衆所周知,沒有外接干預的狀況下,熱量從溫度高傳播到溫度低的地方而且不可逆,根據著名的牛頓冷卻定律(Newton Cool's Law),熱量傳遞的速度正比於溫度梯度,直觀上也就是某個地方A溫度高,另一個B地方溫度低,這兩個地方接觸,那麼溫度高的地方的熱量會以正比於他們倆溫度差的速度從A流向B。 機器學習
從一維空間開始 函數
咱們先創建一個一維的溫度傳播的模型,假設有一個均勻的鐵棒,不一樣位置溫度不同,如今咱們刻畫這個鐵棒上面溫度的熱傳播隨着時間變化的關係。預先說明一下,一個連續的鐵棒的熱傳播模型須要列溫度對時間和座標的偏微分方程來解決,咱們不想把問題搞這麼複雜,咱們把空間離散化,假設鐵棒是一個一維鏈條,鏈條上每個單元擁有一致的溫度,溫度在相鄰的不一樣的單元之間傳播,以下圖: 學習
對於第i 個單元,它只和 i-1 與 i+1 兩個單元相鄰,接受它們傳來的熱量(或者向它們傳遞熱量,只是正負號的差別而已),假設它當前的溫度爲Φi,那麼就有: spa
k和單元的比熱容、質量有關是個常數。右邊第一項是下一個單元向本單元的熱量流入致使溫度升高,第二項是本單元向上一個單元的熱量流出致使溫度下降。作一點微小的數學變換能夠獲得: 設計
注意觀察第二項,它是兩個差分的差分,在離散空間中,相鄰位置的差分推廣到連續空間就是導數,那麼差分的差分,就是二階導數! 3d
因此,咱們能夠反推出鐵棒這樣的連續一維空間的熱傳導方程就是: blog
同理,在高維的歐氏空間中,一階導數就推廣到梯度,二階導數就是咱們今天討論的主角——拉普拉斯算子
其中 Δ 這個符號表明的是對各個座標二階導數的加和,如今的主流寫法也能夠寫做 Δ2 。綜上所述,咱們發現這樣幾個事實:1、在歐氏空間中,某個點溫度升高的速度正比於該點周圍的溫度分佈,用拉普拉斯算子衡量。2、拉普拉斯算子,是二階導數對高維空間的推廣。那麼,你確定會問:你扯這麼多有什麼用呢?我仍是看不到拉普拉斯算子和拉普拉斯矩陣還有GCN有半毛錢關係啊?不要急,目前只是第一步,讓咱們把這個熱傳導模型推廣導拓撲空間,你就會發現它們其實刻畫的是同一回事了!
圖(Graph)上熱傳播模型的推廣
如今,咱們依然考慮熱傳導模型,只是這個事情不發生在歐氏空間了,發生在一個Graph上面。這個圖上的每一個結點(Node)是一個單元,且這個單元只和與這個結點相連的單元,也就是有邊(Edge)鏈接的單元發生熱交換。例以下圖中,結點1只和結點0、2、4發生熱交換,更遠的例如結點5的熱量要經過4間接的傳播過來而沒有直接熱交換。
咱們假設熱量流動的速度依然知足牛頓冷卻定律,研究任一結點,它的溫度隨着時間的變化能夠用下式來刻畫:
其中 A 是這個圖的鄰接矩陣(Adjacency Matrix),定義很是直觀: 對於這個矩陣中的每個元素 Aij ,若是結點 i 和 j 相鄰,那麼Aij =1 ,不然 Aij =0 。在這裏,咱們只討論簡單狀況:
1、這張圖是無向圖,i 和 j 相鄰那麼 j 和 i 也相鄰,因此 Aij = Aji 這是個對稱陣。
2、結點本身到本身沒有迴環邊,也就是 A 對角線上元素都是 0 。
因此不難理解上面這個公式剛好表示了只有相鄰的邊才能和本結點發生熱交換且熱量輸入(輸出)正比於溫度差。咱們不妨用乘法分配律稍微對上式作一個推導:
先看右邊括號裏面第一項, deg( ) 表明對這個頂點求度(degree),一個頂點的度被定義爲這個頂點有多少條邊鏈接出去,很顯然,根據鄰接矩陣的定義,第一項的求和正是在計算頂點 i 的度。
再看右邊括號裏面的第二項,這能夠認爲是鄰接矩陣的第i 行對全部頂點的溫度組成的向量作了個內積。
爲何要做上述變化呢,咱們只看一個點的溫度不太好看出來,咱們把全部點的溫度寫成向量形式再描述上述關係就一目瞭然了。首先能夠寫成這樣:
而後咱們定義向量:
那麼就有:
D被稱爲度矩陣,只有對角線上有值,且這個值表示對應的頂點度的大小。整理整理,咱們獲得:
回顧剛纔在連續歐氏空間的那個微分方程:
兩者具備同樣的形式!咱們來對比一下兩者之間的關係:
不難發現,這就是同一種變換、同一種關係在不一樣空間上面的體現,實質上是一回事!
因而咱們天然而然,能夠把連續空間中的熱傳導,推廣到圖(Graph)上面去,咱們把圖上面和歐氏空間地位相同變換,以矩陣形式體現的 L 叫作拉普拉斯(Laplacian)矩陣。看,這正是 @superbrother 答案中所述的原始形式的拉普拉斯矩陣 L=D-A 。
須要多嘴一句的是,本文開頭所說的離散鏈條上的熱傳導,若是你把鏈條當作一個圖,結點從左到右編號1,2,3...的話,也能夠用圖的熱傳導方程刻畫,此時 除了頭尾兩個結點是1其餘值都是2, 的主對角線上下兩條線上值是1,其餘地方是0。
推廣到GCN
如今問題已經很明朗了,只要你給定了一個空間,給定了空間中存在一種東西能夠在這個空間上流動,兩鄰點之間流動的強度正比於它們之間的狀態差別,那麼何止是熱量能夠在這個空間流動,任何東西均可以!
天然而然,假設在圖中各個結點流動的東西不是熱量,而是特徵(Feature),而是消息(Message),那麼問題天然而然就被推廣到了GCN。因此GCN的實質是什麼,是在一張Graph Network中特徵(Feature)和消息(Message)中的流動和傳播!這個傳播最原始的形態就是狀態的變化正比於相應空間(這裏是Graph空間)拉普拉斯算子做用在當前的狀態。
抓住了這個實質,剩下的問題就是怎麼去更加好的建模和解決這個問題。
建模方面就衍生出了各類不一樣的算法,你能夠在這個問題上面複雜化這個模型,不必定要聽從牛頓冷卻定律,你能夠引入核函數、引入神經網絡等方法把模型建得更非線性更能刻畫複雜關係。
解決方面,由於不少問題在頻域解決更加好算,你能夠經過Fourier變換把空域問題轉化爲頻域問題,解完了再變換回來,因而便有了全部Fourier變換中的那些故事。
扯了這麼多,總結一下,問題的本質就是:
本質上,這是一種Message Passing,是一種Induction,卷積、傅立葉都是表象和解法。
最後再補充說明幾點事實:
熱/消息傳導方程的數值可迭代求解性(機器學習上的可操做性)
咱們能夠把原方程寫成這樣:
機器學習中,時間是離散的,也就是左邊對時間的求導變成了離散的一步步迭代。好在這個方程天生彷佛就是上帝爲了咱們可以迭代求解而設計的。右邊用拉普拉斯算子做用一次到全局的狀態上,就能把狀態更新一步!
實際解決的過程當中,能夠發揮機器學習搬磚工懂得觸類旁通的優良精神,首先,不必定要全局操做,咱們能夠batchify操做一部分結點,你們輪着來,其次,咱們能夠只考察這個點的一階和二階鄰居對當前點做Message Passing,這個思想就是對拉普拉斯算子做特徵分解,而後只取低階的向量,由於矩陣的譜上面能量通常具備長尾效應,頭幾個特徵值dominate幾乎全部能量。
Laplacian算子的另外一個性質
Laplacian矩陣/算子不只表現的是一種二階導數的運算,另外一方面,它表現了一種加和性,這個從圖上熱/消息傳播方程最原始的形態就能一目瞭然:
可見,每一個結點每一個時刻的狀態變化,就是全部鄰居對本結點差別的總和,也就是全部的鄰居把message pass過來,而後再Aggregate一下,這正是GraphSage等空域算法的關鍵步驟Aggregate思想的濫觴。
在實際建模中,咱們的Aggregate不必定是加和,做爲一個熟練的機器學習搬磚工,咱們懂得能夠把Aggregate推廣成各類操做例如Sum Pooling,例如LSTM,例如Attention,以求刷效果,發paper :)
兩種空間下的Fourier分解/ 特徵分解對比(卷積爲何能從歐氏空間推廣到Graph空間)
最後,由於有以上分析做基礎,咱們能夠解釋一下傅立葉變換是怎麼推廣到圖空間的。