通俗全面理解圖卷積與GCN網絡(一):圖與圖卷積

下一篇:通俗全面理解圖卷積與GCN網絡(二):從圖卷積到GCN

前言

相信大家都瞭解普通卷積操作,在一般的論文裏,習慣認爲普通的卷積是操作在Euclidean Structure,即歐幾里得空間上的。直觀的來看,一般卷積操作的圖片是非常整齊的矩陣,一個像素周圍必定有上下左右以及斜對角八個像素包圍,這樣的卷積好操作,卷積核大小也固定,再加之權值共享,有效的提取空間特徵同時減少參數,使得CNN成爲深度學習圖像處理界當之無愧的扛把子。
但人們逐漸認識到,並非所有的數據都是這樣規則的。 反而可以說,自然界中大多數的數據都是不規則的。也就是數據之間相互影響,構成了數據結構裏圖的形狀。即使普通我們規則的圖像,我們在逐像素處理中可能計算了很多對我們任務來說無用的像素點。而如果我們提取關鍵點,這些點之間也會構成一幅圖。這裏的圖指圖論裏的圖,而非我們平常見的圖片。
CNN理論已經非常完整,但是遇到這種不規則的圖結構,我們又該如何提取它的空間特徵呢?這就應該從CNN的本質說起,去模仿它,把它擴展到所謂的非歐幾里得空間裏,這就是我們所說的“圖卷積”。

一般表示

對於圖G=(V,E)G=(V,E),V表示節點集合,E表示邊集合。對於每個節點i,都有其特徵xi\vec x_i。這些特徵可以用矩陣XNDX_{N*D}表示,N爲節點數,D爲特徵維度。
這裏其實類似於我們普通的圖片裏每個像素點都有對應的像素值,在卷積層每個像素點上的值變成一個高維向量,稱爲其特徵。

度、鄰接、拉普拉斯

我們先來介紹一下圖論裏面的相關概念(會的同學直接跳過)
相信大家在查資料時下面這幅圖也見過不下十次了,我們這裏也用這幅圖來說明:
在這裏插入圖片描述
可見,最左面畫出了一個擁有6個節點,7條邊的無向圖,右面分別是該圖所對應的度矩陣、鄰接矩陣和一種拉普拉斯矩陣。
節點的度: 節點的度定義爲該節點上擁有的邊數,上面的度矩陣也就是每個節點的度所構成的對角矩陣。
鄰接矩陣: 鄰接矩陣代表了圖的幾何結構,在節點聯通的地方取值爲1,不聯通的地方取值爲0.也即:A(i,j)=1 if 節點i和j聯通 else 0。易知一個無向圖的鄰接矩陣一定是對稱的。
拉普拉斯矩陣: 鄰接矩陣只定義了與該節點聯通的節點有哪些,而沒有該節點自身的信息。反應在矩陣上可以看到鄰接矩陣的對角線均爲0。我們要在一個矩陣中同時表示該節點的信息和該節點的鄰接信息,就出來了拉普拉斯矩陣。直觀的想,拉普拉斯矩陣就是度矩陣減去鄰接矩陣,即L=DAL=D-A
上面爲什麼要說這是一種拉普拉斯矩陣呢,因爲拉普拉斯矩陣的定義有好多種,這只是其中的一種:
1、L=DAL=D-A這種定義的拉普拉斯矩陣全稱爲Combinatorial Laplacian,也是最簡單的一種。
2、Lsym=D12LD12L^{sym}=D^{-\frac{1}{2}}LD^{-\frac{1}{2}}全稱爲Symmetric normalized Laplacian,一般的圖卷積神經網絡中都採用這種方式。其目的就是將第一種拉普拉斯矩陣的特徵值歸一化,防止在訓練時尺度不同導致的性能降低。
3、Lrw=D12LL^{rw}=D^{-\frac{1}{2}}L全稱爲Random walk normalized Laplacian,也是一種拉普拉斯矩陣的定義方式。

爲什麼拉普拉斯

聰明的同學可能就會想,爲什麼叫做拉歐拉斯矩陣。其實並不是拉普拉斯搞出來的,而是它和圖上的拉普拉斯算子有很大的關係。
先放結論:拉普拉斯矩陣就是圖上的拉普拉斯算子,或者說是離散的拉普拉斯算子。
推導警告,可直接跳過
衆所周知,拉普拉斯算子如下:
Δ=2==i2xi2 \Delta=\nabla^2=\nabla\cdot\nabla=\sum_i\frac{\partial^{2}}{\partial x^{2}_i}
這是n維的拉普拉斯算子,而對於圖這種離散的結構,偏導當然不能用了,聰明的同學一定知道了,離散域的求導就是差分嘛:
對於一個圖f,我們可以仿照上面直接定義其拉普拉斯算子:
Δfi=jNi(fifj) \Delta f_i=\sum_{j\in N_i}(f_i-f_j)
其中NiN_i爲與節點i相鄰的節點集合,計算出的Δfi\Delta f_i爲節點i的拉普拉斯。上面的公示很好理解,就是所有與節點i相鄰的節點和節點i做差再求和。(這裏操作的是每個節點的特徵)
設A爲該圖的鄰接矩陣,那麼可以把求和條件擴展爲整張圖,因爲不相鄰的地方鄰接矩陣值爲0:
Δfi=jNAi,j(fifj) \Delta f_i=\sum_{j\in N}A_{i,j}(f_i-f_j)
繼續展開:
Δfi=jNAi,jfijNAi,jfj=difijNAi,jfj \Delta f_i=\sum_{j\in N}A_{i,j}f_i-\sum_{j\in N}A_{i,j}f_j\\=d_if_i-\sum_{j\in N}A_{i,j}f_j
其中did_i即爲節點i的度,由於對A按行求和。
這裏計算出的是節點i的拉普拉斯,對於整張圖,我們寫成矩陣形式:
Δf=[Δf1Δf2Δfn]=[d1f1jNA1,jfjd2f2jNA2,jfjdnfnjNAn,jfj]=[d100dn]fAf=(DA)f=Lf \Delta f =\begin{bmatrix} \Delta f_1\\ \Delta f_2 \\ \vdots \\ \Delta f_n \end{bmatrix}\\ =\begin{bmatrix} d_1f_1-\sum_{j\in N}A_{1,j}f_j \\ d_2f_2-\sum_{j\in N}A_{2,j}f_j \\ \vdots \\ d_nf_n-\sum_{j\in N}A_{n,j}f_j \end{bmatrix}\\ =\begin{bmatrix} d_1 & \cdots & 0\\ \vdots & \ddots & \vdots\\ 0 & \cdots & d_n \end{bmatrix}f-Af\\ =(D-A)f\\ =Lf
所以,可以清楚的看到,對圖求拉歐拉斯就相當於對圖左乘其拉普拉斯矩陣。

拉普拉斯矩陣的特徵值分解

這一部分內容主要會與我們下一篇博客內容有關,在這裏我們簡單瞭解一下拉普拉斯矩陣的性質。
特徵值分解,有的地方也叫譜分解,或者對角化,是一樣的。
這裏我們要記住拉普拉斯矩陣的一個性質:拉普拉斯矩陣一定是半正定對稱矩陣
依據這條性質,我們知道它一定有n個特徵值,而且特徵值非負。
故其特徵分解爲:
在這裏插入圖片描述
其中U=(u1,u2,...,un)U=(\vec u_1,\vec u_2,...,\vec u_n)是列向量爲單位特徵向量的矩陣。
可以證明,U是正交矩陣,所以特徵分解也可以寫成:
在這裏插入圖片描述

圖卷積通式

下面我們直接給出類比得出的圖卷積通式,在下一篇文章中,我們再詳細介紹圖卷積的由來:
與卷積類似任何圖卷積層都可以看做是非線性函數:
Hl+1=f(Hl,A) H^{l+1}=f(H^l,A)
H0=XH^0=X爲第一層的輸入,可以想到,非線性函數f設計不同,就會有不同的圖卷積形式,下面簡單的介紹幾種:
1、Hl+1=σ(AHlWl)H^{l+1}=\sigma(AH^lW^l)
其中σ\sigma爲激活函數,這個公式直觀的意義就是把一個節點相鄰節點的特徵相加作爲這一節點的輸出。這樣的做法顯然沒考慮到自己對自己的影響。
2、Hl+1=σ(LHlWl)H^{l+1}=\sigma(LH^lW^l)
考慮到自己對自己的影響,我們該用拉普拉斯矩陣,但是直接用這樣的拉普拉斯矩陣有着特徵值沒有規範化的問題,所以使用剛纔所說的最通用的一種拉普拉斯矩陣作爲第三種實現方式:
3、Hl+1=σ(D12LD12HlWl)H^{l+1}=\sigma(D^{-\frac{1}{2}}LD^{-\frac{1}{2}}H^lW^l)

總結

這篇文章我們介紹了圖與圖卷積的基本概念,但這裏的圖卷積在實現起來還存在着一些問題,在下一篇文章中,我們將從卷積的本質來導出圖上的卷積,並介紹GCN網絡。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章