图中每个节点的信息和相邻节点的信息进行聚合
Basic of GCN
GNN: H ( l + 1 ) = f ( A , H ( l ) ) H^{(l+1)}=f(A,H^{(l)}) H(l+1)=f(A,H(l)) A A A is adjacency matrix, H ( l ) H^{(l)} H(l) is feature of l layer, f 是特征映射函数,不同的图神经网络有不同的映射函数
GCN: 图卷积神经网络的特征映射关系如下
H
(
l
+
1
)
=
σ
(
D
^
−
1
2
A
^
D
^
−
1
2
H
(
l
)
Θ
)
H^{(l+1)}= \sigma(\hat{D}^{-\frac{1}{2}}\hat{A}\hat{D}^{-\frac{1}{2}}H^{(l)}\Theta)
H(l+1)=σ(D^−21A^D^−21H(l)Θ)
D is degree matrix,度矩阵,矩阵中的元素表示图中每个节点的度,只在主对角线上有元素
D ^ , A ^ \hat{D},\hat{A} D^,A^是图中每个节点加上自环之后的D,A矩阵。 D ^ \hat{D} D^就是D矩阵中每个元素+1。 D ^ − 1 2 \hat{D}^{-\frac{1}{2}} D^−21就是对主对角线上的元素进行求幂。
Θ \Theta Θ是网络的可学习参数,用于特征变换
Spectral Graph Theory 研究图的邻接矩阵有关的一些性质的理论,线性代数的一些子领域
positive semi-definite matrix: 半正定矩阵:所有的特征值都大于等于0
real symmetric matrix:实对称矩阵
quadratic form: 二次型 x T A x x^TAx xTAx
Rayleigh quotient:瑞利熵 x T A x x T x \frac{x^TAx}{x^Tx} xTxxTAx当x是A的特征向量时,可化简为 x T ( λ x ) x T x = λ \frac{x^T(\lambda x)}{x^Tx}=\lambda xTxxT(λx)=λ
properties of matrix related to A.
L = D − A L s y m = D − 1 2 L D − 1 2 L = D - A \\ L_{sym}=D^{-\frac{1}{2}}LD^{-\frac{1}{2}} L=D−ALsym=D−21LD−21
L是图的拉普拉斯矩阵, L s y m L_{sym} Lsym是拉普拉斯矩阵的对称规范化,这两个矩阵有优良的性质:都是实对称矩阵,都是半正定矩阵。且 L s y m L_{sym} Lsym的特征值都位于[0, 2]的区间内。可以通过Rayleigh quotient都是大于等于0证明。
Fourier Transform:
计算两个多项式的乘法:
f
(
x
)
=
a
0
+
a
1
x
+
a
2
x
2
+
.
.
.
+
a
n
x
n
g
(
x
)
=
b
0
+
b
1
x
+
b
2
x
2
+
.
.
.
+
b
n
x
n
f
(
x
)
⋅
g
(
x
)
=
c
0
+
c
1
x
+
c
2
x
2
+
.
.
.
+
c
2
n
x
2
n
f(x)=a_0+a_1x+a_2x^2+...+a_nx^n \\ g(x)=b_0 + b_1x+b_2x^2+...+b_nx^n \\ f(x)\cdot g(x)=c_0 + c_1x+c_2x^2+...+c_{2n}x^{2n}
f(x)=a0+a1x+a2x2+...+anxng(x)=b0+b1x+b2x2+...+bnxnf(x)⋅g(x)=c0+c1x+c2x2+...+c2nx2n
如果直接计算需要两层循环,计算复杂度为
O
(
n
2
)
O(n^2)
O(n2)。2个点确定一条直线,3个点确定一个抛物线,n+1个点可以确定一个n次多项式
f
(
x
)
⇔
{
(
x
1
,
f
(
x
1
)
)
,
(
x
2
,
f
(
x
2
)
)
,
.
.
.
,
(
x
n
+
1
,
f
(
x
n
+
1
)
)
}
f
(
x
)
⇔
{
(
x
1
,
g
(
x
1
)
)
,
(
x
2
,
g
(
x
2
)
)
,
.
.
.
,
(
x
n
+
1
,
g
(
x
n
+
1
)
)
}
f
(
x
)
⋅
g
(
x
)
⇔
{
(
x
1
,
f
(
x
1
)
g
(
x
1
)
)
,
(
x
2
,
f
(
x
2
)
g
(
x
2
)
)
,
.
.
.
,
(
x
n
+
1
,
f
(
x
n
+
1
)
g
(
x
n
+
1
)
)
}
f(x) \Leftrightarrow \{(x_1,f(x_1)),(x_2,f(x_2)),...,(x_{n+1},f(x_{n+1}))\} \\ f(x) \Leftrightarrow \{(x_1,g(x_1)),(x_2,g(x_2)),...,(x_{n+1},g(x_{n+1}))\} \\ f(x)\cdot g(x) \Leftrightarrow \{(x_1,f(x_1)g(x_1)),(x_2,f(x_2)g(x_2)),...,(x_{n+1},f(x_{n+1})g(x_{n+1}))\}
f(x)⇔{(x1,f(x1)),(x2,f(x2)),...,(xn+1,f(xn+1))}f(x)⇔{(x1,g(x1)),(x2,g(x2)),...,(xn+1,g(xn+1))}f(x)⋅g(x)⇔{(x1,f(x1)g(x1)),(x2,f(x2)g(x2)),...,(xn+1,f(xn+1)g(xn+1))}
让对应位置的点相乘,时间复杂度为
O
(
n
)
O(n)
O(n)。
由于图的形状不规则,在空间域做卷积是非常复杂,所以转换到频域空间进行卷积,卷积之后再进行逆变换
拉普拉斯矩阵,乘以一个feature向量,
x
⃗
\vec{x}
xn行的列向量,每个节点都有一个初值feature,例如图片的每个像素节点的RGB就可以看作他的feature
L
⋅
x
=
[
∑
(
x
1
−
x
i
)
∑
(
x
2
−
x
i
)
⋮
∑
(
x
n
−
x
i
)
]
=
U
Λ
U
T
x
L \cdot x = \begin {bmatrix} \sum(x_1 - x_i)\\ \sum(x_2 - x_i)\\ \vdots \\ \sum(x_n- x_i) \end {bmatrix} = U\Lambda U^Tx
L⋅x=
∑(x1−xi)∑(x2−xi)⋮∑(xn−xi)
=UΛUTx
其中,
x
i
x_i
xi是和x1, x2,…, xn相临近的节点的feature,
L
⋅
x
L \cdot x
L⋅x是将图中每个节点的feature和临近节点的feature做了聚合。类似于图像的卷积,将图像中的一个点,与周围的点做聚合。
那这和傅里叶变换有什么关系呢?L是一个半正定的实对称矩阵,所以可以分解两个正交阵U,而一个向量乘以一个正交阵,就可以看作是对这个向量进行基地的变换,然后再对每个维度进行放缩,再用逆变换变回原来的空间
而定义图上的傅里叶变换,就是 U T x U^Tx UTx,而对于逆变换就是再乘以U,在新的域中,对每个维度进行放缩操作 Λ \Lambda Λ,就可以实现聚合邻居的效果。
但是对一个拉普拉斯矩阵进行分解,复杂度为 O ( n 2 ) O(n^2) O(n2),GCN做的就是对带特征值分解的傅里叶变换做一些限制,从而推导出一种不需要做特征值分解的,复杂度与边的数量成线性关系的一种方法。
Graph Convolution
对于图的邻接矩阵A ,输入一个函数,得到一个有关图的一个性质较好的矩阵(实对称阵性质一般较好)
F
(
A
)
→
L
/
L
s
y
m
F
(
A
)
=
U
Λ
U
T
F(A) \rightarrow L/L_{sym}\\ F(A) = U \Lambda U^T\\
F(A)→L/LsymF(A)=UΛUT
图上的卷积操作定义为:
g
θ
∗
∗
=
U
g
θ
(
Λ
)
U
T
x
g_{\theta}^{**}= Ug_{\theta}(\Lambda)U^Tx
gθ∗∗=Ugθ(Λ)UTx
先变换到频域
U
T
x
U^Tx
UTx,然后在频域上做一些操作
g
θ
(
Λ
)
g_{\theta}(\Lambda)
gθ(Λ),关于
Λ
\Lambda
Λ的函数,网络学习到的,然后再变换到空间域,然后对
g
θ
(
Λ
)
g_{\theta}(\Lambda)
gθ(Λ)做一些限制,
g
θ
(
Λ
)
=
θ
0
Λ
0
+
θ
1
Λ
1
+
.
.
.
+
θ
n
Λ
n
+
.
.
.
U
g
θ
(
Λ
)
U
T
=
g
θ
(
U
Λ
U
T
)
=
g
θ
(
F
(
A
)
)
g_{\theta}(\Lambda)=\theta_0\Lambda^0+\theta_1\Lambda^1+...+\theta_n\Lambda^n+... \\ Ug_{\theta}(\Lambda)U^T = g_{\theta}(U\Lambda U^T)=g_{\theta}(F(A))
gθ(Λ)=θ0Λ0+θ1Λ1+...+θnΛn+...Ugθ(Λ)UT=gθ(UΛUT)=gθ(F(A))
这样,就不用对F(A)做特征分解了 ,但上面的多项式存在梯度消失或梯度爆炸的问题,所以使用下面的多项式
切比雪夫多项式 T n ( x ) = 2 x T n − 1 ( x ) − T n − 2 ( x ) , T 0 ( x ) = 1 , T 1 ( x ) = x T_n(x) = 2xT_{n-1}(x)-T_{n-2}(x), T_0(x)=1, T_1(x)=x Tn(x)=2xTn−1(x)−Tn−2(x),T0(x)=1,T1(x)=x
性质: T n ( cos θ ) = cos n θ T_n(\cos \theta)=\cos n\theta Tn(cosθ)=cosnθ, 不管n多大,都有一个摆动的稳定趋势,缺点,需要到自变量有一个限制,自变量在【-1,1】之间,即特征值都在【-1,1】之间,之前证明 L s y m L_{sym} Lsym的特征值都在【0,2】之间,只需要将 L s y m − I L_{sym} -I Lsym−I,I是单位阵
故卷积操作可以写为
g
θ
∗
∗
=
U
g
θ
(
Λ
)
U
T
x
=
U
(
∑
k
=
0
k
θ
k
T
k
(
Λ
)
)
U
T
x
=
∑
k
=
0
k
θ
k
U
T
k
(
Λ
)
U
T
x
=
∑
k
=
0
k
θ
k
T
k
(
U
Λ
U
T
)
x
=
∑
k
=
0
k
θ
k
T
k
(
L
s
y
m
−
I
)
x
g_{\theta}^{**}= Ug_{\theta}(\Lambda)U^Tx = U(\sum_{k=0}^{k} \theta_k T_k(\Lambda))U^Tx \\ =\sum_{k=0}^k \theta_k UT_k(\Lambda)U^Tx = \sum_{k=0}^k \theta_k T_k(U\Lambda U^T)x=\sum_{k=0}^k \theta_k T_k(L_{sym}- I)x
gθ∗∗=Ugθ(Λ)UTx=U(k=0∑kθkTk(Λ))UTx=k=0∑kθkUTk(Λ)UTx=k=0∑kθkTk(UΛUT)x=k=0∑kθkTk(Lsym−I)x
这样复杂度仍然很高,GCN做了一阶线性近似,故上式
≈
θ
0
T
0
(
L
s
y
m
−
I
)
x
+
θ
1
T
1
(
L
s
y
m
−
I
)
x
=
θ
0
x
+
θ
1
(
L
s
y
m
−
I
)
x
=
θ
0
x
−
θ
1
D
−
1
2
A
D
−
1
2
x
\approx \theta_0T_0(L_{sym}-I)x+\theta_1T_1(L_{sym}-I)x = \theta_0x+\theta_1(L_{sym}-I)x = \theta_0x - \theta_1 D^{-\frac{1}{2}}AD^{-\frac{1}{2}}x
≈θ0T0(Lsym−I)x+θ1T1(Lsym−I)x=θ0x+θ1(Lsym−I)x=θ0x−θ1D−21AD−21x
这就非常的像公式1,接下来进行一些正则化,使得θ1和θ2共享参数
θ
1
=
−
θ
0
\theta_1 = -\theta_0
θ1=−θ0,上式变为
θ
0
(
I
+
D
−
1
2
A
D
−
1
2
)
x
\theta_0(I+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})x
θ0(I+D−21AD−21)x
接着I直接加到A中,得到公式1 D ^ − 1 2 A ^ D ^ − 1 2 x \hat{D}^{-\frac{1}{2}}\hat{A}\hat{D}^{-\frac{1}{2}}x D^−21A^D^−21x,这样做效果更好。(自环之后,域空间变大了 )
Spatial Methods for Graph CNN
What can we learn from the architecture of standard convolutional neural network?
- Determine Neighborhood
- Impose an order in neighborhood
- Parameter sharing
By analogy
- For each node, select the fixed number of nnodes as its neighborhood nodes,according to certain proximity metric 选k个,k是超参数,一阶邻居不够,二阶邻居来凑
- Impose an order according to the proximity metric (按距离排序,离中心点越近,位置越靠前)
- Parameter sharing
GraphSAGE
-
Sampling neighbors 随机游走
-
Aggregating neighbors 不用排序,直接将节点进行聚合
General framework of graph nerual networks: Aggregate the information of neighboring nodes to update the representation of center node
a
v
(
k
)
=
A
G
G
R
E
G
A
T
E
(
k
)
(
{
h
u
(
k
−
1
)
:
u
∈
ℵ
(
v
)
}
)
h
v
(
k
)
=
C
O
M
B
I
N
E
(
k
)
(
h
v
(
k
−
1
)
,
a
v
(
k
)
)
a_v^{(k)}=AGGREGATE^{(k)}(\{ h_u^{(k-1)} :u \in \aleph(v) \}) \\ h_v^{(k)} = COMBINE^{(k)}(h_v^{(k-1)},a_v^{(k)} )
av(k)=AGGREGATE(k)({hu(k−1):u∈ℵ(v)})hv(k)=COMBINE(k)(hv(k−1),av(k))
GCN: Graph Convolution Network
- Aggregating information from neighborhood via a normalized Laplacian matrix
- Shared parameters are from feature transformation
- A reduced version of ChebyNet
Z = f ( X , A ) = s o f t m a x ( A ^ R e L U ( A ^ X W ( 0 ) ) W ( 1 ) ) Z = f(X,A)=softmax(\hat{A}ReLU(\hat{A}XW^{(0)})W^{(1)}) Z=f(X,A)=softmax(A^ReLU(A^XW(0))W(1))
W ( 0 ) , W ( 1 ) W^{(0)}, W^{(1)} W(0),W(1) is parameter for feature transformation,维度为d*d’. X 是所有节点的feature vector,n*d维,一个节点为n维
GAT:Graph Attention Network
- learning the aggregation matrix, i.e., Laplacian matrix in GCN, ia attention mechanism
- Shared parameters contain two parts
- Parameters for feature transformation
- Parameters for attention
α i , j = exp ( L e a k y R e L U ( a ⃗ T [ W h i ⃗ ∣ ∣ W h j ⃗ ] ) ∑ k ∈ ℵ i exp ( L e a k y R e L U ( a ⃗ T [ W h i ⃗ ∣ ∣ W h k ⃗ ] ) ) \alpha_{i,j}=\frac{\exp(LeakyReLU(\vec{a}^T[W\vec{h_i}||W\vec{h_j}])}{\sum_{k \in \aleph_i} \exp(LeakyReLU(\vec{a}^T[W\vec{h_i}||W\vec{h_k}]))} αi,j=∑k∈ℵiexp(LeakyReLU(aT[Whi∣∣Whk]))exp(LeakyReLU(aT[Whi∣∣Whj])
α is a element of a ⃗ \vec{a} a ,W is parameter for feature Transformation, a ⃗ T \vec{a}^T aT is parameter of Attention mechanism.
MoNet: A general framework for spatial methods
- Define multiple kernel funtions, parameterized or not, to measure the similarity between target node and other nodes
- Convolution kernels are the weights of these kernel funtions
( f ∗ g ) ( x ) = ∑ j = 1 J g j D j ( x ) f (f*g)(x)=\sum_{j=1}^J g_jD_j(x)f (f∗g)(x)=j=1∑JgjDj(x)f
g j g_j gj is convolution kernel