Spatial-based ConvGNNs 總結

基於合成的空間GCNs

1.MPNNs

MPNNs模型中,將圖卷積的前向傳播定義爲兩個階段:
1)信息傳遞階段
2)讀出階段

(1)信息傳遞階段

當信息傳遞到第tt步時,就以節點自身hvth_v^t、該節點定義好的鄰域的隱藏狀態hwt(wN(v))h_w^t(w\in N(v))以及邊的權重evwe_{vw}爲輸入,送入信息聚合函數Mt()M_t(*),:
mvt+1=wN(v)Mt(hvt,hwt,evw)(1)m_v^{t+1}=\sum_{w\in N(v)}{M_t(h_v^t,h_w^t,e_{vw})}\tag1

這個函數得到的是鄰域節點信息的聚合表示。
得到mvt+1m_v^{t+1}後,再次結合節點當前的隱藏狀態hvth_v^t,送入頂點更新函數Ut()U_t(*)
hvt+1=Ut(hvt,mvt+1)(2)h_v^{t+1}=U_t(h_v^t,m_v^{t+1})\tag2

該函數將hvt,mvt+1h_v^t,m_v^{t+1}以函數UtU_t的方式組合得到下一步t+1t+1的節點表示。
所以整個信息傳遞階段的過程就是將節點鄰域信息聚集,結合中心節點狀態來更新中心節點,得到下一階段的隱藏狀態:
hvt+1=Ut(hvt,wN(v)Mt(hvt,hwt,evw))(3)h_v^{t+1}=U_t(h_v^t,\sum_{w\in N(v)}{M_t(h_v^t,h_w^t,e_{vw})})\tag3

(2)讀出階段

該階段主要是將第tt步節點的隱藏狀態輸入讀出函數R()R(*),對整個圖或者每個節點進行分類任務:
y^=R(hvTvG)(4)\hat y=R({h_v^T|v\in G})\tag4

2.DCNNs

DCNNs可以按照MPNNs框架進行劃分:

(1)信息傳遞階段

在信息傳遞階段,DCNNs將節點相同跳的鄰域節點信息聚合,不同跳的聚合後信息拼接,得到每個節點的擴散卷積表示:
wN(v)Mt(hvt,hwt,evw)=l=1Nt(Pt)ijl(Xt)lm(5)\sum_{w\in N(v)}{M_t(h_v^t,h_w^t,e_{vw})}=\sum_{l=1}^{N_t}{{(P^*_t)}_{ijl}{(X_t)}_{lm}}\tag5

式(5)可以理解爲節點ii的鄰域節點定義爲圖上所有的節點,(Xt)lm{(X_t)}_{lm}表示hvt,hwth_v^t,h_w^t的信息;由於PtP^*_t是由圖的鄰接矩陣AA計算得來,表示了圖的結構信息,所以可以認爲(Pt)ijl{(P^*_t)}_{ijl}表示evwe_{vw}l=1Nt(Pt)ijl(Xt)lm\sum_{l=1}^{N_t}{{(P^*_t)}_{ijl}{(X_t)}_{lm}}是以概率方式對節點iijj跳節點的一個信息聚合。
式(5)的張量表示形式爲:
Mt=PtXt(6)M_t=P^*_t{X_t}\tag6

其中,MtRNt×H×FM_t\in R^{N_t\times H\times F}表示每個節點的各個跳[0,H1][0,H-1]的聚合信息。在利用PtP^*_t進行信息聚合時,對每個節點每個跳每個特徵都有不同的權值,所以在此處沒有體現權值共享的優勢。
頂點更新函數U()U(*)在DCNNs模型中未使用。

(2)讀出階段

在DCNNs中,實現了節點分類的讀出以及圖分類的讀出:
節點分類:
在節點分類時,DCNNs對得到的聚合信息PtXtP^*_t{X_t}用可學習的權值以及激活函數進行調整,之後再調整後的聚合信息展平,並將其送入全連接層和softmaxsoftmax層:
P(YX)=softmax(f(Wdflatten(f(WcMt))))(7)P(Y|X)=softmax(f(W^dflatten(f(W^c\bigodot M_t))))\tag7

其中,\bigodot表示逐元素相乘,WcRH×FW^c \in R^{H\times F},爲訓練權重;在計算WcPtXtW^c\bigodot P^*_tX_t,存在廣播機制,會將WcW^c複製NtN_t遍,然後逐元素相乘;f(WcPtXt)RNt×H×Ff(W^c\bigodot P^*_tX_t)\in R^{N_t\times H\times F}flatten()flatten(*)表示展平,將f(WcMt)f(W^c\bigodot M_t)變成二維矩陣RNt×(HF)R^{N_t\times (HF)}WdR(HF)×CW^d\in R^{(HF)\times C}CC表示分類種數。
對比式(4),式(7)可以理解爲讀出函數R()R(*),將每個節點的隱藏狀態MtM_t送入讀出函數R()R(*),得到每個節點的分類結果。
圖分類:
對於圖分類而言,與節點分類不同之處在於讀出函數多了一個加權的步驟,圖分類的讀出函數是將每個節點的聚合信息通過加權求和去取均值,之後用可學習的權值以及激活函數進行調整,再送入全連接層和softmaxsoftmax層:
P(YX)=softmax(f(Wdflatten(f(Wc(1Nt)TMtNt))))(8)P(Y|X)=softmax(f(W^dflatten(f(W^c\bigodot \frac{(1_{N_t})^TM_t}{N_t}))))\tag8

其中MtM_t的意義不變,1NtRNt×11_{N_t}\in R^{N_t\times 1}表示將各個節點信息RH×F\in R^{H\times F}聚合的權重;除以NtN_t得到平均值。WcW^c訓練得到的加權權值。

3.PATCHY-SANs

PATCHY-SANs模型也可以概括爲信息傳遞階段和讀出階段,它和DCNNs模型的不同之處爲在於鄰域節點的選擇和聚合信息的方法。

(1)信息傳遞階段

確定節點鄰域:
1)根據選定的圖標註函數ll對圖中的節點進行排序,得到有序節點集合V_sortV\_sort
2)根據V_sortV\_sort,以ss爲步長等間隔取出ww個節點,當節點數量V_sort|V\_sort|不足以取出ww個節點時,則創建感受野值爲00作爲填充。得到ww個節點的序列。
3)對於選出的節點序列中的每一個節點vv,取它的11鄰域,如果自身和11-鄰域的節點數目Nk|N|\geq k,則得到vv的感受野的候選,否則繼續取它的22-領域等等,直到滿足Nk|N|\geq k。對所有選定節點進行上述操作。
構建子圖
可以認爲節點vv和它的鄰域候選節點構成原圖GG的子圖UU,如果鄰域候選節點的數目U>k|U|>k,則利用再次圖標註函數ll對子圖進行節點排序,在圖歸一化這個步驟中節點排序都必須滿足約束:對於 u,wU\forall u,w \in U, 當d(u,v)<d(w,v)d(u,v) < d(w,v)時,滿足r(u)<r(w)r(u) < r(w),然後取前kk個節點作爲vv真正的的鄰域,並得到新的新的子圖UU^{'},並對新的子圖進行節點排序用來形成鄰接矩陣Al(U)A^{l}(U^{'});如果鄰域候選節點的數目U<k|U|<k,則添加未連接的假節點使得U=k|U|=k,並對新的子圖UU^{'}進行節點排序用來形成鄰接矩陣Al(U)A^{l}(U^{'})
鄰域信息聚合
ana_n爲頂點特徵維度,ama_m爲邊特徵維度。對於每個輸入圖G,在確定節點鄰域和構建子圖後,得到一個(w,k,an)(w,k,a_n)頂點特徵的張量和 (w;k;k;am)(w;k;k;a_m)邊特徵的張量。如下圖所示(k=4k=4):
在這裏插入圖片描述
這些可以被重塑爲一個(wk;an)(w*k;a_n)(wkk;am)(w*k*k;a_m)的張量。注意,an,ama_n,a_m是輸入通道的數量。現在可以用一維的卷積層,對子圖的節點特徵和結構特徵進行卷積。對子圖節點的卷積核爲Rk×an×FnR^{k\times a_n\times F_n},步長爲kk;對子圖邊的卷積核爲Rk2×am×FmR^{k^2\times a_m\times F_m },步長爲k2k^2。如下圖所示節點信息的1維卷積(k=4k=4):
在這裏插入圖片描述
對邊的1維卷積也類似,卷積後得到節點的聚合信息(Rw×Fn\in R^{w\times F_n})和邊的聚合信息(Rw×Fm\in R^{w\times F_m}),之後直接將這兩個矩陣拼接得到最後的聚合信息(Rw×(Fn+Fm)\in R^{w\times (F_n+F_m)})。到此將圖結構數據轉化爲歐式結構的數據。之後的卷積只需要利用傳統的1維卷積即可。
(2)讀出階段
在前面的信息傳遞階段,已經將圖結構數據轉化爲歐式結構的數據,所以讀出階段的做法也和傳統的歐式數據一樣,利用全連接和sofymaxsofymax得到每個節點或者整個圖的分類概率。
相比於DCNNs模型,在聚合信息時,PATCHY-SANs將不同跳的鄰域節點利用卷積的方式直接得到隱藏狀態(Rw×Fn\in R^{w\times F_n}),而不是像DCNNs那樣,將相同跳的節點聚合不同跳的節點拼接得到隱藏狀態。相比於DCNNs模型,在PATCHY-SANs中,對每個子圖而言,卷積核是權值共享的。

4.GraphSage

與PATCHY-SANs模型相比較,GraphSage將獲得子圖的過程簡化了,沒有使用卷積的方式,而是定義了出了具體聚合函數形式,對節點的鄰域信息進行聚合。

(1)信息傳遞階段

確定鄰域節點構建子圖
首先需要先給定一個部分節點集合BB,這個集合是需要之後輸出嵌入向量。Nk(v)N_k(v)表示從節點vBkv\in B^kkk-鄰域進行均勻採樣得到節點數量固定爲ss的節點集合(k[1,K]k\in [1,K]),如果kk-鄰域節點數量大於ss,則無放回抽樣;如果小於ss,則有放回抽樣。這個部分確定了在整個前向傳播過程中需要使用到的節點,可以理解爲以BB中每個節點爲中心構建相應的樹狀子圖的過程,把其他不相關的節點除去。
鄰域信息聚合
1)均值聚合函數
信息聚合函數M()M(*)
Mk=mean(hvk1,{huk1,uN(v)})(9)M_k=mean(h_v^{k-1},\{h_u^{k-1},\forall u\in N(v)\})\tag{9}

頂點更新函數R()R(*)
hvk=σ(WkMk)(10)h_v^k=\sigma(W^k\cdot M_k)\tag{10}

這種k層的均值聚合網絡與kk層的1stChebNet網絡近似。訓練的參數爲WkW^k
2)池化聚合函數
信息聚合函數M()M(*)
hN(v)k=max({σ(Wpoolkhuik+b),uiN(v)})(11)h_{N(v)}^k=max(\{\sigma(W^k_{pool}h^k_{u_i}+b),\forall u_i\in N(v)\})\tag{11}

其中,Wpoolkhuik+bW^k_{pool}h^k_{u_i}+b表示多層感知機,爲了簡單表示,只表現了單層的結構,其目的是爲了計算出每個鄰域節點的特徵。max()max(*)表示逐元素取最大值,即取每個特徵的最大值以捕獲鄰居集合上在每個維度的最突出表現(均值池化和最大池化結果沒有明顯區別)
頂點更新函數R()R(*)
hvk=σ(Wkconcat(hN(v)k,hvk1))(12)h_v^k=\sigma(W^k\cdot concat(h_{N(v)}^k,h_{v}^{k-1}))\tag{12}

訓練的參數爲Wpoolk,WkW^k_{pool},W^k

(2)讀出階段

利用全連接層和sofymaxsofymax得到每個節點分類概率。

(3)整個過程的僞代碼如下圖所示:

在這裏插入圖片描述

5.LGCN

LGCN模型使用了與GraphSage相同的隨機方法獲取子圖(節點的鄰域信息),然後對PATCHY-SANs模型的卷積部分進行了優化。

(1)信息傳遞階段

確定鄰域節點構建子圖
1)首先從所有節點NN中,隨機採樣NinitN_{init}個節點,表示爲initNodesinitNodes,並加入採樣節點集合SS;(代碼第2-3行)
2)初始化newAddNodesnewAddNodes,令newAddNodesnewAddNodes等於initNodesinitNodes(代碼第四行)
3)從newAddNodesnewAddNodes節點的1-鄰域中再隨機採樣NmN_m個節點,更新newAddNodesnewAddNodes,並將新的newAddNodesnewAddNodes加入採樣節點集合SS;(代碼6-10行)
3)循環過程(3)直到採樣節點總數SS大於等於NsN_s停止循環;每次迭代過程中的NmN_m都爲不同值。
4)S>NsS>N_s時,需要把最後一次過程(3)得到的採樣節點再次採樣NrN_r個節點,使得S=NsS=N_s。(代碼11-14行)
僞代碼如下圖所示:
在這裏插入圖片描述
鄰域信息聚合
1)利用子圖的AA矩陣,找到節點ii的所有1-鄰域節點{i1,...,in}\{i_1,...,i_n\}。將這nn個節點拼接成矩陣MliRn×CM_l^i \in R^{n\times C};如果n<kn<k,可以構造節點的所有特徵都爲0的僞節點進行拼接。
2)對MliM_l^i矩陣每一列的值進行由大到小的排序,並選出前kk個值,得到M^liRk×C\hat M_l^i\in R^{k\times C}矩陣,目的是選出鄰域節點的各個特徵中良好表現該特徵的值,之後將節點ii拼接於M^li\hat M_l^i的第一行,得到最後的網格化數據M~liRk+1×C\tilde M_l^i\in R^{k+1\times C},對所有節點上述操作後得到表示節點特徵的張量Xl~RN×(k+1)×C\tilde{X_l}\in R^{N\times (k+1)\times C}
3)利用一維卷積核卷積實現信息聚合操作,得到最後的輸出。Xl~RN×(k+1)×C\tilde{X_l}\in R^{N\times (k+1)\times C}中,NN可以視爲批大小(batch size)(batch\ size)(k+1)(k+1)可以視爲一維圖像(樣本)的大小,CC可以認爲每個像素的通道數。所以與傳統卷積類比,卷積核的大小,與批大小無關,與輸入樣本的特徵維度CC,輸出樣本維度DD,以及自定義的卷積核大小mm有關,卷積核Rm×C×D\in R^{m\times C \times D}。可以使用多層1-D卷積神經網絡,但是對每個節點而言,多層1-D卷積神經網絡之後的輸出,必須還是一維向量R1×D\in R^{1\times D},纔可以再次輸入k-最大節點選擇部分。最簡單的卷積爲卷積核大小選擇爲k+1k+1,可以直接得到Xl+1RN×DX_{l+1}\in R^{N\times D}
鄰域信息聚合過程如下圖所示:
在這裏插入圖片描述

(2)讀出階段

利用全連接層和sofymaxsofymax得到每個節點分類概率。

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