天天看點

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

圖卷積網絡運作細節

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

圖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所示。

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

圖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

=

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

  假設取每個節點的特征為3個(假設分别為長度、寬度、高度)。那麼 X X X的次元就是 5 × 3 5 \times 3 5×3(5個節點、3個特征),假設 X X X為:

X X X=

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

  假設 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)=

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

, W ( 1 ) = W^{(1)} = W(1)=

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

  根據 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相乘之後的結果為

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

(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)的結果為:

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

(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))的運作結果為

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

          (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))的運作結果為

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

(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)的運算結果為:

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

(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。本步驟運作的結果為

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

  針對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}} ∑j​eVj​eV1​​=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​=∑j​eVj​eVi​​

(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)(具體的更新過程資料推導太多,就不詳細說明了,反正就是類似梯度下降法)。

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

  再進行步驟(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​是會更新的,更新過程就是依靠注意力機制。

本人也是初學者,其中難免存在一些問題,大家可以與我評論交流

繼續閱讀