Diffusion-Convolutional Neural Networks
模型详述

-
At表示图的邻接矩阵,Pt表示度归一化转移矩阵,(Pt)ij表示由节点i转移到j的概率,可以由At计算得到,可以认为是权重矩阵。
-
At矩阵有一个性质:At矩阵的幂级数Atn中的一个元素(Atn)ij,表示节点i到节点j长度为n的游走(英文为walk)的数量,当不存在这样的游走时,该值为0,之后将该矩阵归一化后,就可以表示长度为n时,节点i转移到j的概率。这种性质对应与公式:
Ptijk∗=Ptikj(1)
其中,Pt∗∈RNt×H×Nt表示由Pt组成的幂级数;i表示节点i ;j表示跳(hop)为j,也就是游走的长度为j;k表示节点的第k个特征。从公式(1)可以看出来,Pt∗的元素(Pt∗)ijk表示:游走长度为j时,节点i转移到节点k的概率。
- 所谓的hop,按照字面意思是“跳”,对于某一节点 n ,其H−hop的节点就是,从 n节点开始,跳跃H次所到达的节点,比如对于 n 节点的1−hop的节点,就是 n 节点的邻居节点。这里对于节点representation并不是采用一个向量来表示,而是采用一个矩阵进行表示,矩阵的第i行就表示i−hop的邻接信息。


Node Classification
假设Pt∗为Pt的power serirs,既{Pt,Pt1,Pt2,…},其中,Pt∗∈RNt×H×Nt,表示由Pt组成的幂级数
扩散卷积表示为:
Ztijm=f(Wjmc⋅l=1∑NtPtijl∗Xtlm)(2)
其中,m表示所有节点的第m个特征,Wjm表示权重,Ztijm表示:以节点i为中心,在第m个特征上,游走长度为j的节点信息的聚合值;∑l=1NtPtijl∗Xtlm部分的意义是以概率方式对节点i的j跳节点的一个信息聚合,f为非线性**函数。式(2)的张量表示形式为:
Zt=f(Wc⨀Pt∗Xt)(3)
其中,⨀表示逐元素相乘,Wc∈RH×F,为训练权重;Pt∗Xt∈RNt×H×F表示每个节点的各个跳[0,H−1]的聚合信息;在计算Wc⨀Pt∗Xt,存在广播机制,会将Wc复制Nt遍,然后逐元素相乘;Zt∈RNt×H×F。
在得到节点的扩散卷积表示Zt之后,可以直接将Zt送入全连接层;
P(Y∣X)=softmax(f(WdZ))(4)
其中,在送入全连接层之前需要将Zt展平,变成二维矩阵Z∈RNt×(HF),Wd∈R(HF)×C,C表示分类种数。
Graph Classification
图的扩散卷积表示:
Zt=f(Wc⨀Nt(1Nt)TPt∗Xt)(5)
其中Pt∗t的意义不变,1Nt∈RNt×1表示将各个节点信息∈RH×F聚合的权重,是全为1的的向量;除以Nt得到平均值。Wc训练得到的加权权值。
图分类与节点分类的原理一致:
在得到图的扩散卷积表示Zt之后,可以直接将Zt送入全连接层;
P(Y∣X)=softmax(f(WdZ))(6)
其中,在送入全连接层之前需要将Zt展平,变成一维向量Z∈R(HF×1),Wd∈R(HF)×C,C表示分类种数。
Edge Classification and Edge Features
通过将每一条边转化为一个节点来进行训练和预测,这个节点与原来的边对应的首尾节点相连,转化后的图的邻接矩阵 At′可以直接从原来的邻接矩阵增加一个incidence matrix得到:

之后,使用 At′来计算 Pt′,并用来替换 Pt 来进行分类。
对于模型训练,使用梯度下降法,并采用early−stop方式得到最终模型。
Diffusion-Convolutional Neural Networks
github源码:https://github.com/jcatw/dcnn