Graph Neural Networks (Part 2)
1. 卷积与信号处理
我们要做的事情是仿照图像卷积,定义在图结构上的卷积;但这并不是一件简单的事情,由于无法定义图结构上的九宫格是什么,以及filter size应该取多少;那这个时候,我们采用迂回战术,定义在图上的Fourier Transform,而后与filter对应的变换相乘,最后得到的结果进行IFT,可以得到在图上做卷积的结果;
问题是,这几步应该如何进行?我们先复习一下在信号处理过程中的操作:
信号处理基础
( 合 成 ) A → = ∑ k = 1 N a k v ^ k ⇒ 基 向 量 的 线 性 组 合 (合成) \mathop{A} \limits ^{\rightarrow} = \sum_{k=1}^N a_k \hat{v}_k \Rightarrow基向量的线性组合 (合成)A→=k=1∑Nakv^k⇒基向量的线性组合
( 分 析 ) a j = A → v ^ j ⇒ 每 个 基 向 量 的 幅 值 情 况 (分析) a_j = \mathop{A} \limits ^{\rightarrow} \hat{v}_j \Rightarrow 每个基向量的幅值情况 (分析)aj=A→v^j⇒每个基向量的幅值情况
其中, v ^ j ⋅ v ^ i = δ i j \hat{v}_j · \hat{v}_i = \delta_{ij} v^j⋅v^i=δij,是一组orthonormal基。
2. Spectral Graph Theory
先定义一些符号,方便后面表达:
- Graph: G = ( V , E ) , N = ∣ V ∣ G=(V, E), N=|V| G=(V,E),N=∣V∣;
- A ∈ R N × N A \in \mathcal{R}^{N\times N} A∈RN×N,用邻接矩阵来存储图结构信息;
- 目前只考虑无向图!即 A A A为对称矩阵;
- D ∈ R N × N D \in \mathcal{R}^{N\times N} D∈RN×N,图的degree matrix:
D i , j = { d ( i ) , i = j 0 , i ≠ j D_{i,j} = \left\{ \begin{aligned} d(i), i=j \\ 0, i \neq j \end{aligned} \right. Di,j={ d(i),i=j0,i=j - f : V → R N f: V\rightarrow \mathcal{R}^N f:V→RN,定义在图(节点)上的信号; f ( i ) f(i) f(i)表示节点 i i i上的信号强度,是一个实数;
eg. 1
Graph Laplacian: (半正定且对称)
L = D − A L=D-A L=D−A
那么我们可以对 L L L进行spectral decomposition:
L = U Λ U T L = U\Lambda U^T L=UΛUT
其中, Λ = d i a g ( λ 0 , . . . , λ N − 1 ) ∈ R N × N \Lambda = diag(\lambda_0, ..., \lambda_{N-1})\in \mathcal{R}^{N\times N} Λ=diag(λ0,...,λN−1)∈RN×N是特征值对角矩阵; U = [ u 0 , . . . , u N − 1 ] ∈ R N × N U=[u_0, ..., u_{N-1}] \in \mathcal{R}^{N\times N} U=[u0,...,uN−1]∈RN×N是对应的特征向量矩阵;
eg.2 还是使用上面这个图,定义 f = [ 4 , 2 , 4 , − 3 ] T f = [4, 2, 4, -3]^T f=[4,2,4,−3]T,表示在图节点上的信号大小;
⇒ \Rightarrow ⇒ A = ( 0 1 1 0 1 0 1 1 1 1 0 0 0 1 0 0 ) ⇒ D = ( 2 0 0 0 0 3 0 0 0 0 2 0 0 0 0 1 ) A = \left( \begin{array}{cccc} 0 & 1 & 1 & 0\\ 1 & 0 & 1 & 1 \\ 1 & 1 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{array} \right) \Rightarrow D=\left(\begin{array}{cccc} 2 & 0 & 0 & 0 \\ 0 & 3 & 0 & 0 \\ 0 & 0 & 2 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right) A=⎝⎜⎜⎛01101011