图卷积神经网络(GCN)的核心思想: 学习一个映射 f ( . ) f(.) f(.),通过该映射图中的节点 v i v_i vi可以聚合它自己的特征 x i x_i xi与它的邻居特征 x j ( j ∈ N ( v i ) ) x_j \;(j \in N(v_i)) xj(j∈N(vi))来生成节点的新 v i v_i vi表示。
图卷积本质上是一种aggregation(聚合)操作,是一种局部加权平均运算。在图中"局部"是指他的邻居,简单起见,把有边的权重定义为1,无边的权重定义为0。
基本符号定义
N = 1 , 2 , 3 ⋯ n N=1,2,3\cdots n N=1,2,3⋯n 代表所有节点的编号
X i X_i Xi 代表节点 i i i 的特征向量
A A A 代表邻接矩阵, A i j A_{ij} Aij代表节点 i , j i,j i,j之间的边的权。
D D D 代表图的度的矩阵,是一个对角矩阵(是邻接矩阵的列和或行和),即: D i i = ∑ k = 1 N A i k D_{ii} = \sum_{k=1}^N A_{ik} Dii=∑k=1NAik。
L = D − A L=D-A L=D−A 是图的拉普拉斯矩阵(Laplacian Matrix)。
下面是一个例子(无权图):
图神经网络的公式定义
这是GCN图卷积层的示意图:
1、基本版本
先仔细思考:通过该映射图中的节点 v i v_i vi可以聚合它自己的特征 x i x_i xi与它的邻居特征 x j ( j ∈ N ( v i ) ) x_j \;(j \in N(v_i)) xj(j∈N(vi))来生成节点的新 v i v_i vi表示 如何将这个过程用数学公式实现?主要包括两个部分:
(1)先聚合邻居特征,最简单的是加权平均法:
a g g r e g a t e ( X i ) = ∑ j ∈ n e i g h b o r ( i ) A i j X j aggregate(\mathbf X_i) = \sum_{j \in neighbor(i)}A_{ij}X_j aggregate(Xi)=j∈neighbor(i)∑AijXj
注:A是带权邻接矩阵。
将其写成矩阵运算(矩阵式聚合):
a g g r e g a t e ( X i ) = A X aggregate(\mathbf X_i) = \mathbf A \mathbf X aggregate(Xi)=AX
(2)添加自环,加入自己的特征
a g g r e g a t e ( X ) = ( A + I ) X = A X + X a g g r r e g a t e ( X i ) = ∑ j ∈ N A i j X j + X i aggregate(X) = (A+I) X = AX +X \\ aggrregate(X_i) = \sum_{j \in N} A_{ij}X_{j} + X_{i} aggregate(X)=(A+I)X=AX+Xaggrregate(Xi)=