GNN的理论与发展梳理
2020-11-20
参考:《深入浅出图神经网络:GNN原理解析》。
1、拉普拉斯矩阵
拉普拉斯矩阵(Laplacian Matrix)是研究图的结构性质的核心对象,定义为:
L = D − A L=D-A L=D−A
D D D是一个对角阵,是节点的度矩阵, A A A是邻接矩阵,
D i i = ∑ j A i j D_{ii}=\sum_{j}A_{ij} Dii=j∑Aij
因此,拉普拉斯矩阵的元素值为,
L i j = { d e g ( v i ) , i = j − 1 , e i j ∈ E 0 , o t h e r w i s e L_{ij} = \begin{cases} deg(v_i), & i = j \\[2ex] -1, & e_{ij}\in E \\[2ex] 0, & otherwise \end{cases} Lij=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧deg(vi),−1,0,i=jeij∈Eotherwise
拉普拉斯矩阵的正则化形式,
L s y m [ i , j ] = { 1 , i = j − 1 d e g ( v i ) d e g ( v j ) , e i j ∈ E 0 , o t h e r w i s e L_{sym}[i,j]= \begin{cases} 1, & i=j \\[2ex] \frac{-1}{\sqrt{deg(v_i)deg(v_j)}}, & e_{ij}\in E \\[2ex] 0, & otherwise \end{cases} Lsym[i,j]=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧1,deg(vi)deg(vj)−1,0,i=jeij∈Eotherwise
拉普拉斯矩阵源于拉普拉斯算子 Δ \Delta Δ,反应图信号的局部平滑度。
2、图傅里叶变换
傅里叶变换将信号从空域(spatial)转化到频域(spetral),给信号处理带来了极大的便利。
由于拉普拉斯矩阵是一个实对称矩阵,因此可以被对角化,
L = V Λ V T = [ ⋮ ⋮ ⋮ v 1 ⋯ v N ⋮ ⋮ ⋮ ] [ λ 1 ⋱ λ N ] [ ⋯ v 1 ⋯ ⋯ ⋮ ⋯ ⋯ v N ⋯ ] L=V\Lambda V^T=\\[2ex] \begin{bmatrix} \vdots & \vdots & \vdots \\ v_1 & \cdots & v_N \\ \vdots & \vdots & \vdots \\ \end{bmatrix} \begin{bmatrix} \lambda_1 & & \\ & \ddots & \\ & & \lambda_N \\ \end{bmatrix} \begin{bmatrix} \cdots & v_1 & \cdots \\ \cdots & \vdots & \cdots \\ \cdots & v_N & \cdots \\ \end{bmatrix} L=VΛVT=⎣⎢⎢⎡⋮v1⋮⋮⋯⋮⋮vN⋮⎦⎥⎥⎤⎣⎡λ1⋱λN⎦⎤⎣⎢⎡⋯⋯⋯v1⋮vN⋯⋯⋯⎦⎥⎤
其中 L ∈ R N × N L\in R^{N\times N} L∈RN×N, V ∈ R N × N V\in R^{N\times N} V∈RN×N, V V T = I VV^T=I VVT=I。 V V V的每一列表示节点的特征向量, λ k \lambda_k λk表示第k和特征值。
因此,图傅里叶变换(GFT)为:
x ~ k = ⟨ v k , x ⟩ x ~ = V T x \tilde x_k=\langle v_k,x \rangle \\[2ex] \tilde x=V^Tx x~k=⟨vk,x⟩x~=VTx
其中 x ~ k \tilde x_k x~k为傅里叶系数,所有的傅里叶系数合在一起 x ~ \tilde x x~称为频谱(spectrum)。
逆图傅里叶变换(IGFT)则定义为:
x = V x ~ = ∑ k = 1 N x ~ k v k x=V\tilde x=\sum_{k=1}^N\tilde x_kv_k x=Vx~=k=1∑Nx~kvk
特征值可以等价为频率,特征值越低,频率越低,节点信号越趋于一致;而傅里叶系数可以等价成对应频率分量上的幅值。频域视角是一个全局视角,反映了图信号大小和拓扑结构,相当于图的一种身份ID。
3、图滤波器
使用图滤波器(filter)可以对各频率的强度进行操作。
我们可以定义滤波操作为:
y = H x = ( V Λ h V T ) x = V [ h ( λ 1 ) ⋱ h ( λ N ) ] V T x y=Hx=(V\Lambda_hV^T)x \\[2ex] =V \begin{bmatrix} h(\lambda_1)& & \\ &\ddots & \\ & &h(\lambda_N) \end{bmatrix} V^Tx y=Hx=(VΛhVT)x=V⎣⎡h(λ1)⋱h(λN)⎦⎤VTx
其中 H ∈ R N × N H\in R^{N\times N} H∈RN×N为滤波器, y y y为输出的信号,通过控制 h ( λ k ) h(\lambda_k) h(λk)来控制信号的增强或减弱的。
但是,上述计算过于复杂了,我们可以使用泰勒展开进行逼近。因此滤波器又可以定义为:
H = ∑ k = 0 K h k L k H=\sum_{k=0}^Kh_kL^k H=k=0∑KhkLk
其中, K K K为滤波器的阶数,可以自定义, L L L为拉普拉斯算子,作为图位移算子。
4、图卷积操作
图信号的卷积运算定义为,
x 1 ∗ x 2 = I G F T ( G F T ( x 1 ) ⨀ G F T ( x 2 ) ) x_1*x_2=IGFT(GFT(x_1)\bigodot GFT(x_2)) x