Introduction

该论文应该是最早的讲GNN的论文。该论文的主要工作是实现一个转导(transduction)函数,把图GG或者结点nn映射到一个m维的嵌入向量:τ(G,n)Rm\tau(G,n) \in \mathbb{R}^m

图领域应用可以分成两类:graph focused 和 node focused。

  • graph focused: 函数把图映射成嵌入向量,然后对图进行分类或回归。
  • node focused: 函数把图上结点映射成嵌入向量,对图上的结点进行分类或回归。

该论文的GNN可以处理循环、有向和无向图。

图可以是positional或者non-positional。他们的区别是,对于每个结点n,positional graphs 存在一个单射函数,为结点n的每个邻居分配一个不同的位置。

常用符号列表:

  • G=(N,E)G=(N, E): 图
  • NN: 图的所有结点集合
  • EE: 图的边的集合
  • ne[n]ne[n]: 结点n的所有邻居
  • co[n]co[n]: 连接结点n的边
  • lnRlN\mathbf{l}_n \in \mathbb{R}^{l_N}: 结点n上的特征向量/信息,论文里称做结点的标签,是图数据给定的
  • l(n1,n2)RlE\mathbf{l}_{(n_1, n_2)} \in \mathbb{R}^{l_E}: 连接结点和的i边的特征向量/信息,论文称做边的标签,是图数据给定的
  • L={(Gi,ni,j,ti,j)Gi=(Ni,Ei);ni,jNi;ti,jRm,1ip,1jqi}\mathcal{L} = \{(G_i, n_{i,j}, \mathbf{t}_{i,j})| G_i = (N_i, E_i); n_{i,j} \in N_i; \mathbf{t}_{i,j}\in\mathbb{R}^m, 1 \le i \le p, 1 \le j \le q_i\}: 图数据集,p表示图的数量,qiq_i表示第i张图的结点数量,t\mathbf{t}表示结点的预测目标。

GNN

图的每个结点都有一个状态xnRs\mathbf{x}_n \in \mathbb{R}^s,GNN计算结点的状态xn\mathbf{x}_n作为结点的嵌入向量,然后用xn\mathbf{x}_n来预测结点的标签t\mathbf{t}。对于graph focused应用,在图上添加一个特殊的结点,它的嵌入向量作为图的嵌入向量。

计算结点状态xn\mathbf{x}_n的公式:
xn=fw(ln,lco[n],xne[n],lne[n])on=gw(xn,ln)(1) \begin{aligned} \mathbf{x}_n &= f_w (\mathbf{l}_n,\mathbf{l}_{co[n]},\mathbf{x}_{ne[n]},\mathbf{l}_{ne[n]}) \\ \mathbf{o}_n &= g_w (\mathbf{x}_n, \mathbf{l}_n) \end{aligned} \tag{1}
fwf_w 叫 local transition function, gwg_w 叫 local output function。

简化公式1的方程,把所有变量堆叠起来,得到
x=Fw(x,l)o=Gw(x,lN)(2) \begin{aligned} \mathbf{x} &= F_w (\mathbf{x}, \mathbf{l}) \\ \mathbf{o} &= G_w (\mathbf{x}, \mathbf{l}_N) \end{aligned} \tag{2}

对于 non-positional 图,函数fwf_w可以是
xn=une[n]hw(ln,ln,u,xu,lu),nN(3) \mathbf{x}_n = \sum_{u\in ne[n]} h_w(l_n, l_{n, u}, \mathbf{x}_u, \mathbf{l}_u), n \in N \tag{3}
公式3就是现在常说的aggregator函数。

对于 positional 图,函数fwf_w需要接受邻居位置作为额外的输入,具体实现可以把信息lco[n],xne[n],lne[n]\mathbf{l}_{co[n]},\mathbf{x}_{ne[n]},\mathbf{l}_{ne[n]}排序后输入,可以用特殊的null值填充到不存在邻居的位置上。

根据 Banach’s Fixed Point theorem,公式1可以使用迭代法来求关于x的解:
xn(t+1)=fw(ln,lco[n],xne[n](t),lne[n])on(t)=gw(xn(t),ln)(4) \begin{aligned} \mathbf{x}_n(t+1) &= f_w (\mathbf{l}_n,\mathbf{l}_{co[n]},\mathbf{x}_{ne[n]}(t),\mathbf{l}_{ne[n]}) \\ \mathbf{o}_n(t) &= g_w (\mathbf{x}_n(t), \mathbf{l}_n) \end{aligned} \tag{4}
经过多次迭代后,x\mathbf{x}的值会趋于稳定。这种解法和PageRank的解法一样。

对于hwh_wgwg_w,它们的具体实现可以是任意的可导函数,论文里是使用多层神经网络来实现这两个函数。

由于结点有gt,GNN的损失函数就是
ew=i=1pj=1qi(ti,jφw(Gi,ni,j))2 \mathcal{e}_w = \sum_{i=1}^p \sum_{j=1}^{q_i} (\mathbf{t}_{i,j} - \varphi_w(G_i, n_{i,j}))^2

论文还讨论了GNN如何求梯度,现在应该不需要我们自己求梯度了,深度学习框架自动帮我们处理好。

GNN的算法如下
《The graph neural network model》笔记

相关文章: