圖卷積網絡運作細節
- 一、公式說明
- 二、執行個體假設
- 三、運作細節
- 四、附加說明

圖1 圖卷積網絡
Z = f ( X , A ) = s o f t m a x ( A ^ ReLU ( A ^ X W ( 0 ) ) W ( 1 ) ) . . . . . . . . . . . ( 1 ) Z = f\left( X,A \right) = softmax(\widehat{A}\text{\ ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right)W^{(1)})...........(1) Z=f(X,A)=softmax(A
ReLU(A
XW(0))W(1))...........(1)
一、公式說明
式(1)就代表着一個單隐藏層的圖卷積神經網絡的數學模型。下面對這個公式中每個變量的含義進行說明:
其中 A ^ \widehat{A} A
是鄰接矩陣的一個變體,但是本質上還是鄰接矩陣,把它當鄰接矩陣看就行,在整個圖卷積網絡運作過程中, A ^ \widehat{A} A
是不會變化的; X X X代表的就是輸入的圖結構中全部節點組合而成的特征矩陣; W ( 0 ) W^{(0)} W(0)是輸入層 C C C與第1層隐藏層之間的連接配接權值矩陣, W ( 1 ) \ W^{(1)} W(1)是第1層隐藏層與輸出層 Z Z Z之間的連接配接權值矩陣; R e L U ( ) ReLU() ReLU()和 s o f t m a x ( ) softmax() softmax()是激活函數,目的在于引入非線性; ReLU ( A ^ X W ( 0 ) ) \text{ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right) ReLU(A
XW(0))這個整體就是輸入圖結構處在第1層隐藏層時,全部節點組合而成的特征矩陣,如果參照公式中 W W W的标号方法,那麼 ReLU ( A ^ X W ( 0 ) ) = X ( 1 ) \text{ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right) = X^{(1)} ReLU(A
XW(0))=X(1),這樣如果再疊加一層隐藏層,上面的公式怎麼改也明了了。
二、執行個體假設
随機舉個圖結構的例子,如圖2所示。
圖2 圖結構
那麼鄰接矩陣 A ^ \widehat{A} A
的次元就是 5 × 5 5 \times 5 5×5(5個節點)。對于圖2, A ^ \widehat{A} A
就為(考慮了歸一化等等因素,其實節點之間的權值配置設定就相當于 a ij = 1 d e g ( v i ) d e g ( v j ) a_{\text{ij}} = \frac{1}{\sqrt{deg(v_{i})deg(v_{j})}} aij=deg(vi)deg(vj)
1, a ij a_{\text{ij}} aij是節點i給節點j配置設定的權重,因為是無向圖,是以是對稱矩陣,其中 d e g ( v i ) deg(v_{i}) deg(vi)就是節點i的度)
A ^ = \widehat{A} = A
=
假設取每個節點的特征為3個(假設分别為長度、寬度、高度)。那麼 X X X的次元就是 5 × 3 5 \times 3 5×3(5個節點、3個特征),假設 X X X為:
X X X=
假設 W ( 0 ) W^{(0)} W(0)的次元為 3 × 3 3 \times 3 3×3,因為隻有 W ( 0 ) W^{(0)} W(0)的次元是這樣, ReLU ( A ^ X W ( 0 ) ) = X ( 1 ) \text{ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right) = X^{(1)} ReLU(A
XW(0))=X(1)的次元才會跟 X X X的原本的次元( 5 × 3 5 \times 3 5×3)相同(當然你也可以選擇不相同,比如你這次把 W ( 0 ) W^{(0)} W(0)的次元為 3 × 10 3 \times 10 3×10,那麼下一層 W ( 1 ) W^{(1)} W(1)的第一維必須是 10 10 10,不然矩陣沒法乘),假設 W ( 0 ) W^{(0)} W(0)被随機初始化為:
W ( 0 ) = W^{(0)} = W(0)=
, W ( 1 ) = W^{(1)} = W(1)=
根據 W ( 0 ) W^{(0)} W(0)的假設, W ( 1 ) W^{(1)} W(1)的第一次元必須為3,假設這些節點的類别總共隻有兩類,那麼 W ( 1 ) W^{(1)} W(1)的第二個次元就為2,那麼 W ( 1 ) W^{(1)} W(1)是一個 3 × 2 3 \times 2 3×2的矩陣,這樣的話最終輸出 Z Z Z就是一個 5 × 2 5 \times 2 5×2,每一行代表對應的節點,每一列代表所屬類别的機率,比如第一列代表屬于類别1的機率,第二列代表屬于類别2的機率。
三、運作細節
下面,根據式(1)對圖卷積網絡的運作過程進行步驟分解。
(1) A ^ X \widehat{A}\text{\ X} A
X
經過 A ^ X \widehat{A}\text{\ X} A
X操作之後,相當于已經對整個圖的每個節點做了一次卷積操作,即每個節點都包含了鄰居節點的部分資訊,也就是資訊融合。具體為節點1包含了節點2、3的部分資訊,節點2包含了節點1、3的部分資訊,節點3包含了節點2、3、4、5的部分資訊,節點4包含了節點3、5的部分資訊,節點5包含了節點3、4的部分資訊。 A ^ X \widehat{A}\text{\ X} A
X相乘之後的結果為
(2) A ^ X W ( 0 ) \widehat{A}\text{\ X}W^{(0)} A
XW(0)
W ( 0 ) W^{(0)} W(0)是為了讓圖卷積網絡更加關注重要的某些特征,忽視某些次要特征(與信号進行中的濾波器的意義差不多)。 A ^ X \widehat{A}\text{\ X} A
X乘以 W ( 0 ) W^{(0)} W(0)的結果為:
(3) ReLU ( A ^ X W ( 0 ) ) \text{ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right) ReLU(A
XW(0))
再經過 R e L U ( ) ReLU() ReLU()函數引入非線性,得到(跟上一步的結果一樣,是因為 R e L U ( ) ReLU() ReLU()函數的形式如式(2)所示), ReLU ( A ^ X W ( 0 ) ) \text{\ ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right) ReLU(A
XW(0))的運作結果為
(2)
(4) A ^ ReLU ( A ^ X W ( 0 ) ) \ \widehat{A}\text{\ ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right) A
ReLU(A
XW(0))
這一步與步驟(1)類似,不同的是通過步驟(1),各個節點包含了一階鄰居的部分資訊(資訊融合),而通過步驟(4),每個節點還包含了二階鄰居的資訊。 A ^ ReLU ( A ^ X W ( 0 ) ) \widehat{A}\text{\ ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right) A
ReLU(A
XW(0))的運作結果為
(5) A ^ ReLU ( A ^ X W ( 0 ) ) W ( 1 ) \widehat{A}\text{\ ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right)W^{(1)} A
ReLU(A
XW(0))W(1)
W ( 1 ) W^{(1)} W(1)和 W ( 0 ) W^{(0)} W(0)的目的是類似的,為了讓圖卷積網絡更加關注重要的某些特征,忽視某些次要特征。 A ^ ReLU ( A ^ X W ( 0 ) ) W ( 1 ) \widehat{A}\text{\ ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right)W^{(1)} A
ReLU(A
XW(0))W(1)的運算結果為:
(6) s o f t m a x ( A ^ ReLU ( A ^ X W ( 0 ) ) W ( 1 ) ) softmax(\widehat{A}\text{\ ReLU}\left( \widehat{A}\text{\ X}W^{(0)} \right)W^{(1)}) softmax(A
ReLU(A
XW(0))W(1))
對每一行再進行softmax,将其映射到(0,1)之間,一般是取最大值為類别。那麼在這裡就是每個節點都是類别1。本步驟運作的結果為
針對softmax再打個比分,假設有一個向量 V = [ 0.5 ; 1.7 ; − 0.3 ] V = \lbrack 0.5;1.7; - 0.3\rbrack V=[0.5;1.7;−0.3],那麼經過softmax之後,每個元素的值為[0.2097,0.6961,0.0942]。Softmax()函數的實際運算過程(以0.2097為例):
0.2097= e V 1 ∑ j e V j = e 0.5 e 0.5 + e 1.7 + e − 0.3 \frac{e^{V_{1}}}{\sum_{j}^{}e^{V_{j}}} = \frac{e^{0.5}}{e^{0.5} + e^{1.7} + e^{- 0.3}} ∑jeVjeV1=e0.5+e1.7+e−0.3e0.5。softmax的公式為: S i = e V i ∑ j e V j S_{i} = \frac{e^{V_{i}}}{\sum_{j}^{}e^{V_{j}}} Si=∑jeVjeVi
(7)誤差反向傳播更新權值 W ( 0 ) W^{(0)} W(0)、 W ( 1 ) W^{(1)} W(1)
對softmax後的矩陣取對數的結果如下所示(softmax後的值都是(0,1)之間,那麼取對數後的取值範圍為( − ∞ - \infty −∞,0))。因為是半監督分類,假設節點1(類别1)和節點5(類别2)已知類别,假設損失函數為NLL_Loss,NLL_Loss的結果就是把輸出與Label對應的那個值拿出來,再去掉負号,再求均值。那麼在這裡就是(0.5777+0.9401)/2=0.7589,(隻計算節點1、5,是因為隻知道這兩個類别的Label)然後再對這個誤差進行反向傳遞,更新權值 W ( 0 ) W^{(0)} W(0)、 W ( 1 ) W^{(1)} W(1)(具體的更新過程資料推導太多,就不詳細說明了,反正就是類似梯度下降法)。
再進行步驟(1-7),直到達到終止條件。
四、附加說明
關于步驟(6)、(7),我再進一步說明一下為什麼這樣能有效的利用誤差更新權值。考慮一個完美情況,在某一疊代步時,經過softmax後,節點1、5分别為[0.9999,0.0001]、[0.0001,
0.9999],那麼取對數之後就為[-0.0001, -9.2103]、[-9.2103,-0.0001],那麼根據損失函數NLL_Loss得到的誤差為(0.0001+0.0001)/2=0.0001,這個時候誤差就很小了,疊代可能就終止了。
還有一個問題就是,大家可以發現,每次節點1、2以及節點4、5的值是向同的,這是因為節點1、2的鄰居節點是相同的(如果把自己也算上的話,那他們的鄰居都是節點1、2、3)節點4、5同理。
總而言之,圖卷積網絡做的事情就是:每個節點融合鄰居節點的部分資訊,再引入非線性,然後對帶标簽資料的誤差(預測值和真實值之間的誤差,預測值是由神經網絡輸出的)進行反向傳遞,以更新各隐藏層的權值。
圖注意力神經網絡與圖卷積網絡的最大差別就是:圖卷積網絡的鄰接矩陣值是永遠不變的,即 a ij = 1 d e g ( v i ) d e g ( v j ) a_{\text{ij}} = \frac{1}{\sqrt{deg(v_{i})deg(v_{j})}} aij=deg(vi)deg(vj)
1,而在圖注意力神經網絡裡,這個 a ij a_{\text{ij}} aij是會更新的,更新過程就是依靠注意力機制。
,即 a ij = 1 d e g ( v i ) d e g ( v j ) a_{\text{ij}} = \frac{1}{\sqrt{deg(v_{i})deg(v_{j})}} aij=deg(vi)deg(vj)
1,而在圖注意力神經網絡裡,這個 a ij a_{\text{ij}} aij是會更新的,更新過程就是依靠注意力機制。
本人也是初學者,其中難免存在一些問題,大家可以與我評論交流