Introduction
该论文应该是最早的讲GNN的论文。该论文的主要工作是实现一个转导(transduction)函数,把图G或者结点n映射到一个m维的嵌入向量:τ(G,n)∈Rm。
图领域应用可以分成两类:graph focused 和 node focused。
- graph focused: 函数把图映射成嵌入向量,然后对图进行分类或回归。
- node focused: 函数把图上结点映射成嵌入向量,对图上的结点进行分类或回归。
该论文的GNN可以处理循环、有向和无向图。
图可以是positional或者non-positional。他们的区别是,对于每个结点n,positional graphs 存在一个单射函数,为结点n的每个邻居分配一个不同的位置。
常用符号列表:
-
G=(N,E): 图
-
N: 图的所有结点集合
-
E: 图的边的集合
-
ne[n]: 结点n的所有邻居
-
co[n]: 连接结点n的边
-
ln∈RlN: 结点n上的特征向量/信息,论文里称做结点的标签,是图数据给定的
-
l(n1,n2)∈RlE: 连接结点和的i边的特征向量/信息,论文称做边的标签,是图数据给定的
-
L={(Gi,ni,j,ti,j)∣Gi=(Ni,Ei);ni,j∈Ni;ti,j∈Rm,1≤i≤p,1≤j≤qi}: 图数据集,p表示图的数量,qi表示第i张图的结点数量,t表示结点的预测目标。
GNN
图的每个结点都有一个状态xn∈Rs,GNN计算结点的状态xn作为结点的嵌入向量,然后用xn来预测结点的标签t。对于graph focused应用,在图上添加一个特殊的结点,它的嵌入向量作为图的嵌入向量。
计算结点状态xn的公式:
xnon=fw(ln,lco[n],xne[n],lne[n])=gw(xn,ln)(1)
fw 叫 local transition function, gw 叫 local output function。
简化公式1的方程,把所有变量堆叠起来,得到
xo=Fw(x,l)=Gw(x,lN)(2)
对于 non-positional 图,函数fw可以是
xn=u∈ne[n]∑hw(ln,ln,u,xu,lu),n∈N(3)
公式3就是现在常说的aggregator函数。
对于 positional 图,函数fw需要接受邻居位置作为额外的输入,具体实现可以把信息lco[n],xne[n],lne[n]排序后输入,可以用特殊的null值填充到不存在邻居的位置上。
根据 Banach’s Fixed Point theorem,公式1可以使用迭代法来求关于x的解:
xn(t+1)on(t)=fw(ln,lco[n],xne[n](t),lne[n])=gw(xn(t),ln)(4)
经过多次迭代后,x的值会趋于稳定。这种解法和PageRank的解法一样。
对于hw和gw,它们的具体实现可以是任意的可导函数,论文里是使用多层神经网络来实现这两个函数。
由于结点有gt,GNN的损失函数就是
ew=i=1∑pj=1∑qi(ti,j−φw(Gi,ni,j))2
论文还讨论了GNN如何求梯度,现在应该不需要我们自己求梯度了,深度学习框架自动帮我们处理好。
GNN的算法如下
