本文已参与[新人创作礼]活动,一起开启掘金创作之路。
GCN,图卷积神经网络。 定义GCN:G=(V,A)
其中V表示各个顶点的集合,V={v1,v2,...,vn},A是一个n*n的矩阵表示邻接矩阵,aij表示vi和vj两个点连接边的权重,或者说是距离。定义一个度量degree矩阵D= = diag(d1, . . . , dn) ,D是一个对角矩阵,表示一个行的和也就是一个点与其他连接点之间的距离和, 公式如下所示:
每一个点都有一个d维度的特征向量x,所以整个矩阵的特征向量X是Rn*d维。
X=[x1, . . . , xn]T。一共有C类,每个点属于C类中一个类,使用one-hot编码,yi为1或者为0。
网络
GCN网络与CNN网络类似,同样都是经过多个层学习对输入进行特征学习,最后通过将学习到的特征输入到线性层中进行分类。区别?:每个节点的隐藏含义是和邻居取平均在每一层的开始。
GCN每一层主要步骤:feature propagation, linear transformation, and a pointwise nonlinear activation。
每一个点的vi的特征hi和他周围邻居做平均。我的理解是和进行归一化,特征除以距离再求和,公式见下图:
推演到整个图,也就是所有点可以用一共矩阵S来表示归一化后的邻接矩阵,公式如下:
其中 A^表示A+I,I是单位矩阵;D^表示A^的度量矩阵。H(k)=SH(k-1)。
矩阵Hk与权重矩阵相乘,将得到的结果输入到一个非线性激活函数,详细公式如下: