GNN

一、GNN[2009]

  1. 数据可以在许多应用领域中自然地用图结构graph structure 来表达,包括蛋白质组织学proteomics 、图像分析、场景描述、软件工程、自然语言处理。最简单的图结构包括单节点single node、序列sequence。但是在一些应用中,信息被组织成更复杂的图结构,如树、无环图、带环图。传统上,数据关系探索一直是归纳式逻辑编程inductive logic programming 的社区中许多研究的主题。最近,数据关系探索data relationships exploitation这个研究主题已经朝着不同的方向发展,这也是因为统计statistics和神经网络中的相关概念在这些领域中的应用。

    在机器学习中,结构化数据通常与(有监督的或者无监督的)learning 的目标相关联,例如一个函数 τ 将一个图 G 和该图的一个节点 n 映射为一个实数向量 τ(G,v)Rm ,其中 m 为向量的维度。在本文中,图领域的应用application 通常可以分为两大类,分别称作 graph-focused 应用、node-focused 应用 。

    • graph-focused 应用中,函数 τ 独立于节点 n ,并且在图结构的数据集上实现分类器或回归器。

      此时每个图具有一个 representation,并且每个图具有一个 target

      例如,可以用一个图 G 来建模一种化合物,图的节点代表原子(或者化学基团)、边代表将原子连接起来的化学键。如下图所示。这个函数 τ(G) 可用于估计化合物引起某种疾病的概率。

      在下图中,图片由区域邻接图region adjacency graph 来表达,其中节点表示均匀图片强度的区域,边代表这些区域的邻接关系。在这种情况下,可以根据图片的内容通过 τ(G) 将图片分为不同的类别,如城堡、汽车、人等等。

    • node-focused 应用中,函数 τ 取决于节点 n ,因此分类(或回归)取决于每个节点的属性。

      此时每个节点具有一个 representation,并且每个节点具有一个 target

      例如目标检测 application 包括检查图片中是否包含给定的对象,如果是,则定位给定对象的位置。这个问题可以通过一个函数 τ 来解决,该函数根据区域邻接图是否属于目标对象,从而对区域邻接图进行节点分类。例如,下图中的黑色节点,如果对应于城堡则 τ 输出为 1、否则 τ 输出为 0

      另一个例子来自于网页分类。web 可以通过一个图来表达,其中节点代表网页,边代表网页之间的超链接,如下图所示。可以利用 web connectivity 以及网页内容来实现多种目的purposes,,如页面的主题分类。

    传统的机器学习 application 通过使用预处理 preprocessing 阶段来处理图结构化数据graph structured data ,该阶段将图结构化信息映射到更简单的 representation,如实值向量。换句话讲,预处理步骤首先将图结构化数据 "挤压squash" 为实数向量,然后使用 list-based 数据处理技术来处理 preprocessed的数据。然而,在预处理阶段,一些重要的信息(如每个节点的拓扑依赖性 topological dependency)可能会丢失,并且最终结果可能以不可预知的方式unpredictable manner 取决于预处理算法的细节。

    最近,有各种方法试图在预处理阶段尽可能地保留数据的图结构特性,其思想是:使用图节点之间的拓扑关系对底层的图结构化数据进行编码,以便在数据正式处理步骤(即预处理步骤之后的模型处理阶段)中融合图结构化信息。这组技术包括 recursive neural network: RNN、马尔科夫链Markov chain: MC,并且通常可以同时应用于 graph-focused 问题和 node-focused 问题。论文 《The Graph Neural Network Model》提出的方法扩展了这两种方法(即 RNN 和马尔科夫链),因为该方法可以直接处理图结构化信息。

    • 现有的 RNN 是以有向无环图directed acyclic graph 作为输入的神经网络模型。该方法估计函数 φw 的参数 w,其中函数 φw 将图映射到实值向量。该方法也可以用于 node-focused application 中,此时,图必须经过预处理阶段。类似地,采用预处理阶段之后,我们可以处理某些类型的带环图。RNN 已被应用于多个问题,包括逻辑术语分类 logical term classification、化合物分类、logo 识别、网页评分、人脸定位 face localization

      RNN 也与支持向量机有关,其中支持向量机采用特殊的 kernel 对图结构化数据进行操作,其中:

      • diffusion kernel 是基于热扩散方程heat diffusion equation
      • 《Marginalized kernels between labeled graphs》《Extensions of marginalized graph kernels》 中提出的 kernel 利用了图随机游走生成的向量。
      • 《Convolution kernels for natural language》《Kernels for structured natural language data》《Convolution kernels with feature selection for natural language processing tasks》 中设计的 kernel 使用了一种计算两棵树的公共子结构数量的方法。

      事实上,类似于支持向量机方法,RNN 自动将输入的图编码为内部 representation。然而,在 RNN 中内部编码是模型自动学到的,而在支持向量机中内部编码是由用户手动设计的。

    • 另一方面,马尔科夫链模型可以建模事件之间的因果关系,其中因果关系由图来表达。最近,针对特定种类马尔科夫链模型的随机游走理论已成功应用于网页排名ranking 算法的实现。互联网搜索引擎使用排名算法来衡量网页的相对重要性。这类度量值通常与其它页面特征一起被搜索引擎所利用,从而对用户 query 返回的 URL 进行排序。人们已经进行了一些尝试来扩展这些具有学习能力的模型,以便可以从训练样本中学习模型参数。这些模型能够泛化结果从而对集合中的所有网页进行评分。更一般地,人们已经提出了几种其它统计方法,这些方法假设数据集由模式 pattern、以及模式之间的关系 relationship 组成。这些技术包括:随机场random field、贝叶斯网络、统计关系学习、transductive learning、用于图处理的半监督方法。

    在论文 《The Graph Neural Network Model》 中,作者提出了一种有监督的神经网络模型,该模型同时适用于 graph-focused applicationnode-focused application。该模型将这两个现有模型(即 RNN 和马尔科夫链)统一到一个通用框架中。论文将这种新颖的神经网络模型称作图神经网络 graph neural network: GNN 。论文将证明 GNNRNN 和随机游走模型的扩展,并且保留了它们的特性 characteristics

    • GNN 模型扩展了 RNN,因为 GNN 可以处理更通用的图,包括带环图、有向图、无向图,并且无需任何预处理步骤即可处理 node-focused application
    • GNN 方法通过引入 learning 算法、以及扩大可建模过程的种类从而扩展了随机游走理论。

    GNN 基于信息扩散机制 information diffusion mechanism。图由一组单元unit 来处理,每个单元对应于图上的一个节点,这些节点根据图的连通性进行链接。这些单元更新它们的状态并交换信息,直到它们到达稳定的平衡stable equilibrium 。然后,基于单元的状态unit state 计算每个节点的输出。扩散机制是受约束constrained 的,从而确保始终存在唯一的稳定平衡。

    这种实现机制已经在细胞神经网络、Hopfield 神经网络中使用。在那些神经网络模型中,连通性是根据预定义的图来指定的,网络连接本质上是循环 recurrent 的,神经元状态是通过松弛relaxation 到平衡点equilibrium point 来计算的。GNN 与那些神经网络不同之处在于:GNN 可以处理更加通用的图,并且采用更通用的扩散机制。

    在论文 《The Graph Neural Network Model》 中,作者将介绍一种学习算法,该算法在一组给定的训练样本上估计 GNN 模型的参数。此外,参数估计算法的计算代价需要被考虑。还值得一提的是,《Computation capabilities of graph neural networks》 已经证明了 GNN 展示出一种普遍的逼近特性,并且在不严厉的条件下,GNN 可以逼近图上大多数实际有用的函数 φ

1.1 模型

  1. 定义图 G=(N,E),其中 N 为节点集合、E 为边集合。边可以为有向边,也可以为无向边。对于节点 nN ,定义 ne[n] 为其邻接节点集合(即,邻域),定义 co[n] 为包含节点 n 的边的集合。

    节点和边可能含有额外的信息,这些信息统称为标签信息(它和监督学习中的标记label 不是一个概念),并以实值向量的形式来表示。

    • 定义节点 n 的标签为 lnRdN ,定义边 (n1,n2) 的标签为 ln1,n2RdE,其中 dN 为节点标签的维度、dE 为边标签的维度。
    • 定义 l 为图中所有标签向量(包括所有节点标签向量、所有边标签向量)拼接得到的all 标签向量。
    • 标签向量的符号遵循更一般的scheme:如果 y 是图 G 中的某种类型的标签向量(如节点标签向量或边标签向量),S 为图 G 中的某个集合(如节点集合或边集合),则 yS 为根据集合 S 获得的标签向量。例如 lne[n] 包含节点 n 的邻域节点的所有节点标签。

    注意,这里的符号定义与大多数论文的符号定义不同。

  2. 节点标签通常包含节点的特征,边标签通常包含节点之间关系的特征。如下图中:节点标签可能代表区块的属性,如:面积、周长、颜色的平均强度。边标签可能代表区块region 之间的相对位置,如:重心之间的距离、轴线之间的角度。我们未对边作出任何假设,有向边和无向边都是允许的。但是,当不同类型的边共同存在于同一个图 G 中时,就需要区分它们。这可以通过在每条边上添加适当的标签来轻松地实现,此时,不同类型的边具有不同的标签。

  3. G 可以是 positional 的、或者是 nonpositional 的。nonpositional graph 是前面所讲的那些图。positional graph 与之不同,节点 n 的每个邻居都被分配一个 unique 的整数标识符,从而指示每个邻居的逻辑位置logical position 。 形式上,对于positional graph 中的每个节点,存在一个映射函数 νn:ne[n]{1,2,,|N|},它为节点 n 的每个邻居节点 u 分配了一个位置 position νn(u) 。注意,邻居的位置可以用于隐式地存储有用的信息。例如,考虑区块邻接图region adjacency graph(如上图所示) :可以用 νn 来表示区块的相对空间位置,例如,νn 可能会按照顺时针的排序约定来枚举节点 n 的邻居。

    注意,位置信息可以通过对邻居节点分配位置编号来显式地给出,也可以通过对邻居节点进行排序从而隐式地给出。

  4. 本文考虑的领域是 (graph, node) pair 的集合 D=G×N ,其中 G={G1,}graph 的集合,N={N1,} 为这些 graph 的节点集合的集合,即:

    L={(Gi,ni,j,ti,j)Gi=(Ni,Ei)G,ni,jNi,ti,jRm,1ip,1jqi}

    其中:Gi 表示第 i 个图,ni,j 表示图 Gi 的第 j 个节点,ti,j 表示节点 ni,jdesired target (可能为向量也可能为标量),p|G|qi|Ni|

    有趣的是,D 中所有的图都可以组合成一个 unique 的、断开的大图,因此可以将 D 视为一个 pair L=(G,T) ,其中:G=(N,E) 为包含所有节点和所有边的大图,T={(ni,ti)niN,tiRm,1iq} 。值得一提的是,这个紧凑的定义不仅因为它简单易用,而且它还直接捕捉到了一些问题的本质,其中领域domain 仅由一个图组成,如大部分的 web 网络(如下图所示)。

1.1.1 思想

  1. 我们所提出方法的直观想法是:图中的节点代表对象或概念,而边代表它们之间的关系。每个概念自然地由它的特征和相关的概念来定义。因此,我们可以可以将一个状态向量state vector xnRs 关联到每个节点 n 上,其中 xn 基于节点 n 的邻域信息来构建(如下图所示),s 为状态向量的维度。状态向量 xn 包含由 n 表示的概念的 representation,并可用于产生输出 on (即,这个概念能决定什么)。

    fw() 为一个参数化parametric的函数,称之为局部转移函数 local transition function ,用于表示节点对其邻域的依赖性。令 gw() 为另一个参数化的函数,称之为局部输出函数 local output function,用于描述如何产生输出。那么 xnon 的定义如下:

    xn=fw(ln,lco[n],xne[n],lne[n])on=gw(xn,ln)

    其中:

    • ln 为节点 n 的标签信息向量。
    • lco[n] 为包含节点 n 的所有边的标签信息向量拼接的向量。
    • xne[n] 为节点 n 的所有邻居的状态向量拼接的向量。
    • lne[n] 为节点 n 的所有邻居的标签信息向量拼接的向量。

    注意:这里有递归定义,其中节点 n 的状态向量 xn 依赖于其邻居的状态向量集合 xne[n] 。而邻居的状态向量又依赖于邻居的邻居的状态向量集合。

    注意:这里的邻域依赖性使得计算状态向量所依赖的节点规模迅速膨胀。假设平均邻域大小为 10 个节点,如果最多依赖于 5 阶邻域,那么计算每个状态向量需要依赖于 5 阶邻域内的 10 万个邻域节点。

    备注:

    • 备注一:可以采用不同的邻域概念。例如,人们可能希望删除标签 lne[n],因为 lne[n] 的信息可能隐含在 xne[n] 中。此外,邻域可能包含距 n 2-hop 或者多个 hop 的节点。

    • 备注二:上式用于无向图。在处理有向图时,函数 fw() 也可以接受链接的方向作为输入。我们引入一个变量 de,eco[n]:如果边 e 的终点为 nde=1,如果边 e 的起点为 nde=0。则有:

      xn=fw(ln,lco[n],dco[n],xne[n],lne[n])

      本文中为了保持符号紧凑,我们使用无向图的形式。然而,除非特殊说明,否则本文中提出的所有结果也适用于有向图、以及混合有向与无向的图。

    • 备注三:通常而言,转移函数 fw() 和输出函数 gw() 以及它们的参数parameters 可能都依赖于节点 n 。但是在一些场景中,节点分为不同类型,并且不同类型的节点有不同的转移函数、输出函数、以及它们的参数。假设节点 n 的类别为 kn ,转移函数为 fwkn(),输出函数为 gwkn(),对应参数为 wkn,则有:

      xn=fwknkn(ln,lco[n],xne[n],lne[n])on=gwknkn(xn,ln)

      然而为了简单起见,我们对所有节点共享相同的转移函数和输出函数(包括它们的参数)。

      如果没有参数共享则模型的容量太大导致难以训练且很容易过拟合。

  2. x,o,l,lN 分别代表所有节点状态向量的拼接、所有节点输出向量的拼接、所有标签(包含节点标签以及边的标签)向量的拼接、所有节点标签向量的拼接(例如,x=[x1,,x|N|]),则有:

    x=Fw(x,l)o=Gw(x,lN)

    其中:

    • Fw() 称作全局转移函数 global transition fucntion,它由 |N|fw() 组成。
    • Gw() 称作全局输出函数 global output function ,它由 |N|gw() 组成。

    令图和节点的 pair 对的集合为 D=G×N,其中 G={G1,} 为所有图的集合,N={N1,} 为这些图中所有节点的集合。全局转移函数和全局输出函数定义了一个映射 φw:DRm ,它以一个图作为输入,然后对每个节点 n 返回一个输出 on

    Banach 不动点理论 fixed point theorem 为上述方程解的存在性和唯一性提供了理论依据。根据 Banach 不动点理论,当 Fw() 满足以下条件时,方程 x=Fw(x,l) 存在唯一解:Fw() 是一个收缩映射 contraction map 。即存在 μ,0μ<1,使得对任意 x,y 都有:

    Fw(x,l)Fw(y,l)μxy

    其中 |||| 表示向量范数。

    本文中我们假设 Fw() 是一个收缩映射。实际上在 GNN 模型中,这个条件是通过适当的选择转移函数来实现的。

  3. 上述公式能够同时处理位置图positional graph和非位置图nonpositional graph

    • 对于位置图,fw() 必须接收每个邻域节点的位置作为额外的输入。实际中我们可以根据邻居的位置进行排序,然后对 lco[n],xne[n],lne[n] 按照排序之后的顺序进行拼接。如果在某些位置处的邻居不存在,则需要填充 null 值。例如:

      xne[n]=[y1,,yM]

      其中:

      • M=maxn,uνn(u) 为所有节点的最大邻居数。

      • yi 为第 i 个位置邻居的状态向量:

        yi={xuif(i=νn(u))x0else

        即:如果 u 为节点 n 的第 i 个邻居节点,则 yi=xu;如果节点 n 没有第 i 个邻居节点,则 yinullx0

    • 对于位置无关的图,我们可以将 fw() 替换为:

      xn=une[n]hw(ln,l(n,u),xu,lu)

      其中 hw() 为待学习的函数,它和邻居节点的数量和位置无关。这种形式被称作 nonpositional form,而原始形式被称作 positional form

      注意,这里对邻居节点采用 sum 聚合。也可以采用 max 聚合或者 attention 聚合。

  4. 为实现 GNN 模型,我们必须解决以下问题:

    • 求解以下方程的算法:

      xn=fw(ln,lco[n],xne[n],lne[n])on=gw(xn,ln)
    • 从训练集中学习 fw()gw() 参数的学习算法。

    • fw()gw() 的实现方式,即:解空间。

1.1.2 方程求解算法

  1. Banach 不动点理论不仅保证了解的存在性和唯一性,还给出了求解的方式:采用经典的迭代式求解:

    x(t+1)=Fw(x(t),l)

    其中 x(t) 表示状态 x 的第 t 次迭代值。

    对于任意初始值 x(0) ,上式指数级收敛到方程 x=Fw(x,l)​ 的解。我们将 x(t) 视为状态向量,它由转移函数 Fw() 来更新。因此输出向量 on(t) 和状态向量 xn(t) 的更新方程为:

    xn(t+1)=fw(ln,lco[n],xne[n](t),lne[n])on(t)=gw(xn(t),ln),nN

    这可以解释为由很多处理单元unit 组成的神经网络,每个处理单元通过 fw() 计算其状态,并通过 gw() 计算其输出。这个神经网络被称作编码网络 encoding network,它类似于 RNN 的编码网络。在编码网络中,每个单元根据邻居单元的状态、当前节点的信息、邻居节点的信息、边的信息,通过 fw() 计算下一个时刻的状态 xn(t+1)

  2. fw()gw() 通过前馈神经网络实现时,编码网络就成为 RNN ,其中神经元之间的连接可以分为内部连接internal connection 和外部连接external connection :内部连接由实现处理单元的神经网络架构(如前馈神经网络)决定,外部连接由图的边来决定。

    如下图所示:上半图对应一个图Graph,中间图对应于编码网络,下半图对应于编码网络的展开图unfolding graph 。在展开图中,每一层layer 代表一个时间步,layer 之间的链接(外部连接)由图的连接性来决定,layer 内神经元的链接(内部连接)由神经网络架构决定。

    内部连接决定 fw() 如何更新状态 xn(t) ,外部连接决定节点之间的依赖关系。

1.1.3 参数学习算法

  1. 假设训练集为:

    L={(Gi,ni,j,ti,j)Gi=(Ni,Ei)G,ni,jNi,ti,jRm,1ip,1jqi}p|G|,qi|Ni|

    其中: Gi 表示第 i 个图,Ni 表示第 i 个图的节点集合,Ei 表示第 i 个图的边集合,ni,j 表示第 i 个图的第 j 个节点,ti,j 表示节点 ni,j 的监督信息target (可能为标量可能为向量),qi 为图 Gi 中的标记样本数量,p 为数据集中图的数量。

    • 对于 graph-focused 任务,可以引入一个和任务目标相关的、特殊的节点,只有该节点包含监督信息,即 qi=1
    • 对于node-focused 任务,每个节点都可以包含监督信息。

    假设采用平方误差,则训练集的损失函数为:

    ew=i=1pj=1qiti,jφw(Gi,ni,j)22

    其中 φw() 为近似函数 approximate function` 。

    也可以在损失函数中增加罚项从而对模型施加约束。

  2. 我们可以基于梯度下降算法来求解该最优化问题,求解方法由以下几步组成:

    • 通过下面的迭代公式求解求解 xn(t),直到时间 T

      xn(t+1)=fw(ln,lco[n],xne[n](t),lne[n])on(t)=gw(xn(t),ln),nN

      其解接近 x=Fw(x,l) 的不动点 x,即:x(T)x

      注意:这一步要求 Fw() 是一个压缩映射,从而保证方程能够收敛到一个不动点。

    • 求解梯度 wew

    • 通过梯度来更新参数w

  3. 梯度 wew 的计算可以利用 GNN 中发生的扩散过程diffusion process以非常高效的方式进行。这种扩散过程与 RNN 中发生的扩散过程非常相似,而后者是基于backpropagation-through-time: BPTT 算法计算梯度的。在这种情况下,编码网络从时刻 T 展开unfold 到初始时刻 t0 。展开图如上图所示,每一层对应于一个时刻,并且包含编码网络中所有单元unit fw() 的副本。连续两层之间按照图的连通性进行链接。对应于时刻 T 的最后一层也包括单元 gw() 并计算网络的输出。

    BPTT 是在展开图上执行传统的反向传播算法。 首先计算时间步 T 的损失函数,以及损失函数在每个时间步 t 相对于 fw()gw() 的梯度。最终 wew(T) 由所有时间步的梯度之和得到。然而,BPTT 要求存储每个单元在每个时间步 t 的状态 x(t),当 Tt0 非常大时内存需求太大。为解决该问题,我们基于 Almeida-Pineda 算法提出了一个非常高效的处理方式:由于我们假设状态向量 x(t) 最终收敛到不动点 x,因此我们假设对于任意 tt0 都有 x(t)=x 。因此 BPTT 算法仅需要存储 x 即可。

    下面两个定理表明这种简单直观方法的合理性:

    • 定理(可微性Differentiability):如果全局转移函数 Fw(x,l) 和全局输出函数 Gw(x,lN) 对于状态 x 和参数 w 都是连续可微的,则 φw 对于参数 w 也是连续可微的。

      其证明见原始论文。值得注意的是,对于一般动力学系统而言该结论不成立。对于这些动力学系统而言,参数的微小变化会迫使其从一个固定点转移到另一个固定点。而 GNN 中的 φw 可微的原因是由于 Fw() 是收缩映射。

    • 定理:如果全局转移函数 Fw(x,l) 和全局输出函数 Gw(x,lN) 对于状态 x 和参数 w 都是连续可微的,定义 z(t)Rs 为:

      z(t)=(Fw(x,l)x)z(t+1)+(Gw(x,lN)x)oew(t)

      则序列 z(T),z(T1), 以指数级收敛到一个向量 z=limtz(t),且收敛结果和初始状态 z(T) 无关。

      更进一步有:

      wew=(Gw(x,lN)w)oew+(Fw(x,l)w)z

      其中 xGNN 的不动点,z 为上述收敛的向量。

      证明见论文原文。

      第一项表示输出函数 Gw() 对于梯度的贡献,反向传播的梯度在通过 gw()layer 时计算这一项。第二项表示转移函数 Fw() 对于梯度的贡献,反向传播的梯度在通过 fw()layer 时计算这一项。

  4. GNN 参数学习算法包含三个部分:

    • FORWARD前向计算部分:前向计算部分用于计算状态向量 x,即寻找不动点。该部分迭代直到 x(t)x(t1) 小于给定的阈值。
    • BACKWARD 反向计算部分:反向计算部分用于计算梯度 wew 。该部分迭代直到 z(t1)z(t) 小于给定的阈值。
    • MAIN 部分:该部分用于求解参数。该部分更新权重 w 直到满足迭代的停止标准。
  5. FORWARD 部分:

    • 输入:图 G=(N,E),当前参数 w,迭代停止条件 ϵf

    • 输出:不动点 x

    • 算法步骤:

      • 随机初始化 x(0),令 t=0

      • 循环迭代,直到满足 x(t)x(t1)ϵf。迭代步骤为:

        • 计算 x(t+1)x(t+1)=Fw(x(t),l)
        • t=t+1
      • 返回 x(t)

  6. BACKWARD 部分:

    • 输入:图 G=(N,E),不动点 x,当前参数 w,迭代停止条件 ϵb

    • 输出:梯度 wew

    • 算法步骤:

      • 定义:

        o=Gw(x,lN)A=(Fw(x,l)x),b=(Gw(x,lN)x)oew
      • 随机初始化 z(T),令 t=T

      • 循环迭代,直到满足 z(t1)z(t)ϵb 从而得到收敛的 z。迭代步骤为:

        • 更新 z(t)z(t)=Az(t+1)+b
        • t=t1
      • 计算梯度:

        wew=(Gw(x,lN)w)oew+(Fw(x,l)w)z
      • 返回梯度 wew

  7. Main 部分:

    • 输入:图 G=(N,E) ,学习率 λ

    • 输出:模型参数 w

    • 算法步骤:

      • 随机初始化参数 w

      • 通过前向计算过程计算状态:x=Forward(w)

      • 循环迭代,直到满足停止条件。循环步骤为:

        • 通过反向计算过程计算梯度:wew=Backward(x,w)
        • 更新参数:w=wλwew
        • 通过新的参数计算状态:x=Forward(w)
      • 返回参数 w

  8. Main 部分采用预定义的学习率 λ,但是也可以使用基于梯度下降的一些通用策略,例如使用带动量的梯度更新 、或者自适应学习率的方案。另一方面,目前 GNN 只能通过梯度下降算法求解,非梯度下降算法目前还未解决,这是未来研究的方向。

  9. 实际上编码网络仅仅类似于静态的前馈神经网络,但是编码网络的layer 层数是动态确定的(类似于 RNN ),并且网络权重根据输入图的拓扑结构来共享。因此为静态网络设计的二阶学习算法、剪枝算法、以及逐层学习算法无法直接应用于 GNN

1.1.4 转移函数和输出函数

  1. 局部输出函数 gw() 的实现没有任何约束。通常在 GNN 中,gw() 采用一个多层前馈神经网络来实现。

    另一方面,局部转移函数 fw()GNN 中起着关键作用,它决定了不动点的存在性和唯一性。GNN 的基本假设是:全局转移函数 Fw() 是收缩映射。接下来,我们给出了两种满足该约束的 fw() 的实现,它们都是基于nonpositional formpositional form 也可以类似地实现。

  2. nonpositional linear GNN 线性 GNN

    hw(ln,l(n,u),xu,lu)=An,uxu+bn

    其中 bnRs 和矩阵 An,uRs×s 分别由两个前馈神经网络的输出来定义,这两个前馈神经网络的参数对应于 GNN 的参数。更准确的说:

    • 转移网络 transition network 是一个前馈神经网络,它用于生成 An,u

      设该神经网络为一个映射 ϕw:R2dN+dERs2,则定义:

      An,u=μs×|ne[u]|B

      其中:

      • BRs×s 是由 ϕw(ln,ln,u,lu)s2 个元素进行重新排列得到的矩阵。
      • μ(0,1) 为缩放系数,μs×|ne[u]| 用于对矩阵 B 进行缩放。

      因此 An,u 是对转移网络输出的重排方阵 B 进行缩放得到。

      这里的转移矩阵 An,u 是神经网络的输出,而不是待学习的权重参数。这是因为可以选择输出函数(如 tanh),使得神经网络的输出满足某些性质,从而使得 Fw() 为收缩映射。

    • 约束网络forcing network 是另一个前馈神经网络,它用于生成 bn

      设该神经网络为一个映射 ρw:RdNRs,则定义:

      bn=ρw(ln)

      因此,bn 为约束网络的输出构成的向量。

      这里 bn 仅依赖于节点 n 本身的标签信息。

    假设有:ϕw(ln,ln,u,lu)1s ,即 |B|1s。事实上如果转移网络的输出神经元采用有界的激活函数(如tanh 激活函数),则很容易满足该假设。根据 hw(ln,l(n,u),xu,lu)=An,uxu+bn 有:

    Fw(x,l)=Ax+b

    其中:

    • b 是由所有的 bn 拼接而来,x 是由所有的 xn 拼接而来:

      b=[b1,,b|N|]x=[x1,,x|N|]
    • A 是一个分块矩阵,每一块为 A¯n,u

      A=[A¯1,1A¯1,2A¯1,|N|A¯2,1A¯2,2A¯2,|N|A¯|N|,1A¯|N|,2A¯|N|,|N|]

      其中:

      • 如果 un 的邻居节点,则有 A¯n,u=An,u
      • 如果 u 不是 n 的邻居节点,则由 A¯n,u=0

    由于 bnAn,u 不依赖于状态 x(它们仅仅依赖于图的结构和节点标签信息、边标签信息),因此有:

    Fw(x,l)x=A

    则有:

    Fw(x,l)x1=||A||1maxuN(nne[u]||An,u||1)maxuN(μs×|ne[u]|×nne[u]||B||1)μ

    因此对于任意的参数 wFw() 都是收缩映射。

  3. nonpositional nonlinear GNN 非线性 GNNhw(ln,l(n,u),xu,lu) 通过一个多层前馈神经网络来实现。由于三层神经网络是通用的函数逼近器,可以逼近任何所需的函数。但是,并非所有的参数 w 都可以使用,因为必须保证对应的转移函数 Fw() 是收缩映射。这可以通过在损失函数中增加罚项来实现:

    ew=i=1pj=1qiti,jφw(Gi,ni,j)22+βL(A1)A=Fw(x,l)x

    注意,这里针对关于 x 的雅克比矩阵进行约束,而不是针对 w 的大小进行约束。

    其中:AFw() 关于 x 的雅克比矩阵;罚项 L() 定义为:

    L(y)={(yμ)2,ify>μ0,else

    超参数 μ(0,1) 定义了针对 Fw() 的约束。

    更一般地,罚项可以是关于 w 可微的任何表达式,只需要关于雅克比范数 A1 单调递增。例如,在我们的实验中,我们使用罚项 pw=L(A1)=i=1sL(Ai1),其中 AiA 的第 i 列。实际上这个罚项是 L(maxiAi1) 的一个近似。

1.2 模型分析

  1. GNNRNN:事实上,GNN 是其它已知模型的扩展,特别地,RNNGNN 的特例。当满足以下条件时,GNN 退化为 RNN

    • 输入图为有向无环图(例如最简单的有向的、线性的链式图)。
    • fw() 的输入为 ln,xch[n] ,其中 ch[n] 为节点 n 的子结点的集合。
    • 一个超级源点 sn,从该源点可以到达其它所有节点。该源点通常对应于 graph-focused 任务的输出 osn

    实现 fw(),gw() 的神经网络形式包括:多层前馈神经网络、cascade correlation、自组织映射 self-orgnizing map。在 RNN 中,编码网络采用多层前馈神经网络。这个简化了状态向量的计算。

  2. GNN 和随机游走:当选择 fw() 为线性函数时,GNN 模型还捕获了图上的随机游走过程。

    定义节点的状态 xn 为一个实数,其定义为:

    xn=ipa[n]an,i×xi

    其中: pa[n] 表示节点 n 的父节点集合;an,i 为归一化系数,满足:

    an,i0,ipa[n]an,i=1

    事实上 xn=ipa[n]an,i×xi 定义了一个随机游走生成器:

    • an,i 表示当前位于节点 n 时,随机转移到下一个节点 i 的概率。
    • xn 表示当系统稳定时,随机游走生成器位于节点 n 的概率。

    当所有的 xn 拼接成向量 x,则有:

    x=Axx=[x1x2x|N|]A=[a¯1,1a¯1,2a¯1,|N|a¯2,1a¯2,2a¯2,|N|a¯|N|,1a¯|N|,2a¯|N|,|N|]

    其中:

    a¯n,i={an,i,if(ipa[n])0,else

    可以很容易的验证 ||A||1=1

    马尔可夫理论认为:如果存在 t 使得矩阵 At 的所有元素都是非零的,则 xn=ipa[n]an,i×xi 就是一个收缩映射。

    因此假设存在 t 使得矩阵 At 的所有元素都是非零的,则图上的随机游走是 GNN 的一个特例,其中 Fw() 的参数 A 是一个常量随机矩阵constant stochastic matrix ,而不是由神经网络产生的矩阵。

    当输入图为无向图时,将 pa[n] 替换为邻域 ne[n],则结论仍然成立。

  3. 读者注:GNN 的核心是不动点理论,通过节点的消息传播使得整张图的每个节点的状态收敛,然后在收敛的状态基础上预测。

    这里存在一个局限:基于不动点的收敛会导致节点之间的状态存在较多的消息共享,从而导致节点状态之间过于光滑 over smooth ,这将使得节点之间缺少区分度。

    如下图所示,每个像素点和它的上下左右、以及斜上下左右八个像素点相邻。初始时刻蓝色没有信息量,绿色、黄色、红色各有一部分信息。

    • 开始时刻,不同像素点的区分非常明显。
    • 在不动点的收敛过程中,所有像素点都趋向于一致,最终整个系统的信息分布比较均匀。
    • 最终,虽然每个像素点都感知到了全局信息,但是我们已经无法根据每个像素点的最终状态来区分它们。

1.3 计算复杂度

  1. 我们关心三种类型的 GNN 模型:positional GNN (其中 fw()gw() 通过前馈神经网络来实现)、nonpositional linear GNNnonpositional nonlinear GNN

    训练过程中一些复杂运算的计算复杂度见下表。为方便表述,我们假设训练集仅包含一张图。这种简化不影响结论,因为训练集所有的图总是可以合并为一张大图。另外,复杂度通过浮点运算量来衡量。

    具体推导见论文。其中:

    • instruction 表示具体的运算指令,positional/non-linear/linear 分别给出了三类 GNN 模型在对应运算指令的计算复杂度,execs 给出了迭代的次数。

    • hi 表示隐层神经元的数量,即隐层维度。如 hif 表示函数 fw() 的实现网络的隐层神经元数量。

    • itl 表示迭代的 epoch 数量,itb 表示平均每个epoch 的反向迭代次数(BACKWARD 过程中的循环迭代次数),itf 表示平均每个epoch 的前向迭代次数(FORWARD 过程中的循环迭代次数)。

    • CfCf 分别表示前向计算 fw() 和反向计算 fw() 梯度的计算复杂度。

    • 令雅克比矩阵 A=Fw(x,l)x ,则罚项 pw 为:

      pw=j=1sL(Aj1)=uNj=1sL((n,u)Ei=1s|Ai,jn,u|μ)=uNj=1sαu,j

      其中:Ai,jn,u 表示矩阵 A 的分块 An,u 的第 i 行第 j 列,Aj 表示矩阵 A 的第 j 列,αu,j=L((n,u)Ei=1s|Ai,jn,u|μ)

    • 定义 Rn,u 为一个矩阵,其元素为 Ri,jn,u=αu,j×sgn(Ai,jn,u) ,则 tR 为:对所有的节点 n ,满足 Rn,u0 的节点 u 的数量的均值。通常它是一个很小的数值。

  2. GNN 模型训练完成之后,其推断速度也很快。

    • 对于positional GNN,其推断的计算复杂度为:O(|N|Cg+itf|N|Cf)
    • 对于 nonpositional nonliear GNN,其推断的计算复杂度为:O(|N|Cg+itf|E|Ch)
    • 对于 nonpositional linear GNN,其推断的计算复杂度为:O(|N|Cg+itf|E|s2+|N|Cρ+|E|Cϕ)

    推断阶段的主要时间消耗在计算状态 x 的重复计算中,每次迭代的计算代价和输入图的维度(如边的数量)成线性关系,和前馈神经网络的隐层维度成线性关系,和状态向量的维度成线性关系。线性 GNN 是一个例外。线性 GNN 的单次迭代成本是状态维度的二次关系。

    状态向量的收敛速度取决于具体的问题。但是 Banach 定理可以确保它是以指数级速度收敛。实验表明:通常515 次迭代足以逼近不动点。

  3. positional GNN 中转移函数需要执行 itf|N| 次,在 nonpositional nonliear GNN 中转移函数需要执行 itf|E| 次。虽然边的数量 |E| 通常远大于节点数量 |N| ,但是positional GNNnonpositional nonlinear GNN 的推断计算复杂度是相近的,这是因为 positional GNN 中的 fw() 网络通常要比 nonpositional nonliear GNN 中的 hw() 网络更复杂。

    • positional GNN 中,实现 fw() 的神经网络有 M×(s+dE) 个神经元,其中 M 为所有节点的最大邻居数量。
    • nonpositonal nonliear GNN 中,实现 hw() 的神经网络有 (s+dE) 个神经元。

    只有在节点的邻居数量高度可变的图中才能注意到明显的差异,因为 fw() 的输入必须确保能够容纳最多的邻居,并且在应用 fw() 时许多输入可能仍然未使用(很多输入填充为 null )。

  4. 另一方面,观察到在 linear GNN 中,每次迭代仅使用一次 FNN,因此每次迭代的复杂度为 O(s2|E|) 而不是 O(|E|Ch)

    注意到,当 hw() 由具有 hih 隐层神经元的三层 FNN 实现时,Ch=O((s+dE+2dN)×hih)=O(s×hih) 成立。在实际情况下,hih 通常大于 s ,因此线性模型比非线性模型更快。正如实验所证实的那样,这种优势通常被更差的效果所抵消。

  5. GNN 的训练阶段要比推断阶段消耗更多时间,主要在于需要在多个epoch 中重复执行 forwardbackward 过程。实验表明:forward 阶段和 backward 阶段的时间代价都差不多。

    • forward阶段的时间主要消耗在重复计算 x(t)
    • 类似于 forward 阶段,backward 阶段的时间主要消耗在重复计算 z(t) 。前述定理可以确保 z(t) 是指数级收敛的,并且实验表明 itb 通常很小。
  6. 训练过程中,每个 epoch 的计算代价可以由上表中所有指令的计算复杂度的加权和得到,权重为指令对应的迭代次数。

    • 所有指令的计算复杂度基本上都是输入图的维度(如:边的数量)的线性函数,也是前馈神经网络隐单元维度的线性函数,也是状态维度 s 的线性函数。

      有几个例外,如计算 z(t)=Az(t+1)+b,A=Fw(x,l)x,wpw 的计算复杂度都是 s 的平方关系。

    • 最耗时的指令是 nonpositional nonlinear GNN 中计算 wpw ,其计算复杂度为 tR×max(s2×hih,Ch)

      实验表明,通常 tR 是一个很小的数字。在大多数 epochtR=0 ,因为雅可比矩阵 A 并未违反施加的约束。另一些情况中,tR 通常在 1~5 之间。因此对于较小的状态维度 s ,计算 wpw 的复杂度较低。

      理论上,如果 s 非常大则可能导致 s2×hihCh 。如果同时还有 tR0,则这将导致计算 wpw 非常慢。但是值得一提的是,我们的实验中从未观察到这种情况。

1.4 实验

  1. 这里我们展示了在一组简单问题上获得的实验结果,这些问题是为了研究 GNN 模型的特性,并证明该方法可以应用于相关领域的相关应用。这些问题包括:子图匹配、诱变mutagenesis、网页排名,因为这些问题特别适合挖掘模型的属性并且与重要的现实应用相关。值得一提的是,GNN 模型已经成功应用于更大的应用,包括图像分类、图像中的物体定位、网页排名web page ranking 、关系学习relational learningXML 分类。

  2. 除非另有说明,以下事实适用于每个实验。

    • 根据 RNN 的已有经验,nonpositional 转移函数效果要优于 positional 转移函数,因此这里测试了 nonpositional linear GNNnonpositional nonlinear GNN
    • 所有GNN 中涉及到的函数,如 nonpositional linear GNN 中的 gw(),ϕw(),ρw() ,以及 nonpositional nonlinear GNN 中的 gw(),hw() 都采用三层的前馈神经网络来实现,并使用 sigmoid 激活函数。
    • 报告的结果是五次不同运行的均值。在每次运行中,数据集是由以下过程构建的随机图的集合:每对节点之间以一定的概率 δ 随机连接,直到构建的随机图满足指定条件。
  3. 数据集划分为训练集、验证集和测试集。

    • 如果原始数据仅包含一张大图 G ,则训练集、验证集、测试集分别包含 G 的不同节点。
    • 如果原始数据包含多个图 Gi ,则每张图整个被划分到训练集、验证集、测试集之一。

    在每次试验中,训练最多执行 5000epoch,每 20epoch 在验证集上评估 GNN 。在验证集上实现最低损失函数的 GNN 被认为是最佳模型,并应用于测试集。

    测试集性能评估指标为分类准确率或回归相对误差。

    • 对于分类问题, ti,j 为一个标量,取值范围为 {+1,1} 。模型的评估指标为预测准确率:如果 ti,j×φw(Gi,ni,j)>0 则分类正确;否则分类不正确。

    • 对于回归问题, ti,j 为一个标量,取值范围为 R 。模型的评估指标为相对误差:

      |ti,jφw(Gi,ni,j)ti,j|
  4. 算法在 Matlab 7 上实现,在配备了 2-GHz PowerPC 处理器的 Power Mac G5 上进行。

1.4.1 子图匹配问题

  1. 子图匹配subgraph matching 问题:在更大的图 G 中寻找给定的子图 S 。即,需要学习一个函数 τ:如果节点 ni,j 属于图 Gi 中的一个和 S 同构的子图,则 τ(Gi,ni,j)=1;否则 τ(Gi,ni,j)=1

    如下图所示,图 G1,G2 都包含子图 S 。节点内的数字表示节点的标签信息向量 ln(这里是一个标量)。最终学到的函数 τ 为:如果为黑色节点则 τ(Gi,ni,j)=1,否则 τ(Gi,ni,j)=1

    子图匹配问题有很多实际应用,如:物体定位、化合物检测。子图匹配问题是评估图算法的基准测试。实验表明 GNN 模型可以处理该任务。

    • 一方面 GNN 模型解决子图匹配问题的结果可能无法与该领域的专用方法相比,后者的速度更快、准确率更高。
    • 另一方面 GNN 模型是一种通用算法,可以在不经修改的情况下处理子图匹配问题的各种扩展。如:同时检测多个子图、子图的结构和标签信息向量带有噪音、待检测的目标图 Gi 是未知的且仅已知它的几个节点。
  2. 数据集:由 600 个随机图组成(边的连接概率为 δ=0.2 ),平均划分为训练集、验证集、测试集。在每轮实验中,随机生成一个子图 S ,将子图 S 插入到数据集的每个图中,因此每个图 Gi 至少包含了 S 的一份拷贝。

    每个节点包含整数标签,取值范围从 [0,10]。我们使用一个均值为0、标准差为 0.25 的高斯噪声添加到标签上,结果导致数据集中每个图对应的 S 的拷贝都不同。

    注意添加噪声之后,节点的标签仍然为整数,因此需要四舍五入。

    为了生成正确的监督目标 ti,j,我们使用一个暴力搜索算法从每个图 Gi 中搜索 S

  3. GNN 配置:

    • 所有实验中,状态向量的维度 s=5
    • 所有实验中,GNN 的所有神经网络的隐层为三层,隐层维度为 5 。我们已经测试过更多的网络架构,结果是类似的。

    为评估子图匹配任务中,标签信息和子图连通性的相对重要性,我们还应用了前馈神经网络FNN 作为 baselineFNN 有一个输出单元、20 个隐单元、一个输入单元。 FNN 仅使用标签信息 lni,j 来预测监督目标 ti,j ,它并没有利用图的结构。

  4. 实验结果如下图所示,其中 NL 表示 nonpositional nonlinear GNNL 表示 nonpositional linear GNNFNN 表示前馈神经网络。评估指标为测试集准确率。

    结论:

    • 正负节点的比例影响了所有方法的效果。

      • |S| 接近 |G| 时,几乎所有节点都是正样本,所有方法预测的准确率都较高。
      • |S| 只有 |G| 的一半时,正负节点比较均匀,此时所有方法预测的准确率都较低。

      事实上,在后一种情况下,数据集是完全平衡的,并且更难以猜测正确的目标。

    • 子图规模 |S| 影响了所有方法的结果。

      因为标签只能有 11 种不同取值,当 |S| 很小时,子图的大多数节点都可以仅仅凭借其标签来识别。因此 |S| 越小预测准确率越高,即使是在 |G|=2|S| 时。

    • GNN 总是优于 FNN,这表明 GNN 可以同时利用标签内容和图的拓扑结构。

    • 非线性 GNN 略优于线性 GNN,这可能是因为非线性 GNN 实现了更为通用的模型,它的模型容量更大。

    • 最后,可以观察到 FNN 的总体平均误差比 GNN 增加大约 50%GNNFNN 之间的相对错误率(衡量了拓扑结构的优势)随着 |S| 的增加而变小。

      实际上,GNN 使用信息扩散机制 information diffusion mechanism 来决定节点是否属于子图。当 S 较大时,必须扩散更多的信息,因此要学习的函数更复杂。

  5. 为评估GNN 的计算复杂度和准确性,我们评估了不同节点数、不同边数、不同隐层维度、不同状态向量维度的效果。在基准情况下:训练集包含10 个随机图,每个图包含20 个节点和 40 条边;GNN 隐层维度为5,状态向量维度为 2

    GNN 训练 1000epoch 并报告十次实验的平均结果。如预期的一样,梯度计算中需要的 CPU 时间随着节点数量、边的数量、隐层维度呈线性增长,随着状态向量维度呈二次增长。

    下图为节点数量增加时,梯度计算花费的CPU 时间。实线表示非线性GNN,虚线表示线性 GNN

    下图为状态向量维度增加时,梯度计算花费的 CPU 时间。实线表示非线性GNN,虚线表示线性 GNN

  6. 非线性 GNN 中,梯度和状态向量维度的二次关系取决于计算雅可比矩阵 A=Fw(x,l)x 以及梯度 wpw 的时间代价。下图给出了计算梯度过程中的总时间代价。

    线条 -o- 给出了计算 ewwew 的时间代价;线条 -*- 给出了计算雅可比矩阵 A 的时间代价;线条 -x- 给出了计算 wpw 的时间代价;点线 ...和给出了剩下的前向计算的时间代价;虚线 ---给出了剩下的反向计算的时间代价;实线表示剩下的计算梯度的时间代价。

    可以看到:wpw 的计算复杂度虽然是状态向量维度的二次关系,但是实际上影响较小。实际上该项的计算复杂度依赖于参数 tR(对所有的节点 n ,满足 Rn,u0 的节点 u 的数量的均值),通常它是一个很小的数值。

    下图给出每个epochRn,u0 的节点 u 的数量的直方图(黑色柱体)。可以看到 Rn,u 的节点 u 的数量通常为零,且从未超过4 。另外下图也给出计算稳定状态 x 和计算梯度(如计算 z)所需要的平均迭代次数的直方图,可以看到这些值通常也很小。

    下图给出的是迭代次数或 tR 取值(x 轴)的分布(y 轴表示出现次数)。

1.4.2 Mutagenesis问题

  1. Mutagenesis 数据集:一个小型数据集,经常作为关系学习relational learninginductive logic programming 中的基准。它包含 230 种硝基芳香族化合物的数据,这些化合物是很多工业化学反应中的常见中间副产品。

    任务目标是学习识别 mutagenic 诱变化合物。我们将对数诱变系数 log mutagenicity 的阈值设为0,因此这个任务是一个二类分类问题。

    数据集中的每个分子都被转换为一张图:

    • 节点表示原子、边表示原子键 atom-bond:AB 。平均的节点数量大约为 26

    • 边和节点的标签信息包括原子键 AB、原子类型、原子能量状态,以及其它全局特征。全局特征包括:chemical measurement化学度量 C (包括 lowest unoccupied molecule orbital, the water/octanol partition coefficient )、precoded structural 预编码结构属性 P\mathbf S

      另外原子键可以用于定义官能团 functional groups: FG

    • 在每个图中存在一个监督节点:分子描述中的第一个原子。如果分子为诱变的则该节点的期望输出为1,否则该节点的期望输出为 -1

    在这 230 个分子中,有 188 个适合线性回归分析,这些分子被称作回归友好 regression friendly。剩下的 42 个分子称作回归不友好 regression unfriendly

  2. GNN 在诱变化合物问题上的结果如下表所示。我们采用十折交叉验证进行评估:将数据集随机拆分为十份,重复实验十次,每次使用不同的部分作为测试集,剩余部分作为训练集。我们运行5 次十折交叉,并取其均值。

    在回归友好分子上的效果:

    在回归不友好分子上的效果:

    在所有分子上的效果:

    结论:

    • GNN 在回归不友好分子和所有分子上的效果都达到最佳,在回归友好分子上的效果接近 state of the art 水平。
    • 大多数方法在应用于整个数据集时,在回归友好分子上(相比较于回归不友好分子)显示出更高的准确率。但是GNN 与此相反。这表明 GNN 可以捕获有利于解决问题但是在回归友好分子、回归不友好分子这两部分中分布不均的模式特征。

1.4.3 Web PageRank

  1. 受到谷歌的 PageRank 启发,这里我们的目标是学习一个网页排名。网页 n 的排名得分 pn 定义为:

    pn=d×upa[n]puon+(1d)

    其中:on 为节点 n 的出度 out-degreed[0,1] 为阻尼因子 damping factorpa[n] 为节点 n 的父节点集合。

    Gδ=0.2 随机生成,包含 5000 个节点。训练集、验证集、测试集由图的不同节点组成,其中 50 个节点作为训练集、50 个节点作为验证集、剩下节点作为测试集。

    每个节点 n 对应于一个二维标签 ln=[an,bn],其中 an{0,1},bn{0,1} 表示节点 n 是否属于两个给定的主题:

    • [an,bn]=[1,1] 表示节点 n 同时属于这两个主题。
    • [an,bn]=[1,0] 表示节点 n 仅仅属于第一个主题。
    • [an,bn]=[0,1] 表示节点 n 仅仅属于第二个主题。
    • [an,bn]=[0,0] 表示节点 n 不属于任何主题。

    需要拟合的目标target 为:

    tn={2pnjN|pj|,if(anXORbn)=1pnjN|pj|,otherwise
  2. 这里我们使用线性 GNN 模型,因为线性 GNN 模型很自然的类似于 PageRank 线性模型。转移网络和约束网络 forcing network 都使用三层前馈神经网络,隐层维度为5。状态向量维度为 s=1 (即,一个标量 xn )。

    输出函数为:gw(xn,ln)=xn×πw(xn,ln) 。其中:xnxn 的偏导数; πw 为三层前馈神经网络,隐层维度为 5

    下图给出了 GNN 模型的结果。其中图 (a) 给出了仅属于一个主题的网页的结果,图 (b) 给出了其它网页的结果。

    红色实线表示目标 tn ,蓝色点线表示 GNN 模型的输出。横轴表示测试集的节点数量,纵轴表示目标得分 tn 。节点按照 tn 得分进行升序排列。该结果清晰地表明 GNN 在这个问题上表现得非常好。

    下图给出学习过程中的误差。红色实线为训练集的误差,蓝色虚线是验证集的误差。注意:两条曲线总是非常接近,并且验证集的误差在 2400epoch 之后仍在减少。这表明尽管训练集由 5000 个节点中的 50 个组成,GNN 仍然未经历过拟合。

二、Spectral Networks & Deep Locally Connected Networks [2013]

  1. 卷积神经网络 Convolutional Neural Networks: CNNs 在机器学习问题中非常成功,其中底层数据representation 的坐标具有网格结构grid structure (一维、二维、或三维的网格),并且在这些坐标中,这些待研究的数据相对于该网格具有平移相等translational equivariance 性或平移不变性 translational invariance。语音、图像、视频就是属于这一类问题的著名的例子。

    在常规网格上,CNN 能够利用多种结构来很好地协同工作,从而大大减少系统中的参数数量:

    • 平移结构 translation structure:它允许使用 filter 而不是通用的线性映射,从而实现权重共享weight sharing
    • 空间局部性:filter 的尺寸通常都远远小于输入信号的尺寸。
    • 多尺度:通过步长大于一的卷积或者池化操作来减少参数,并获得更大的感受野 receptive field

    然而在许多情况下,数据并不是网格结构,如社交网络数据,因此无法在其上应用标准的卷积网络。图 graph 提供了一个自然框架来泛化网格结构,并扩展了卷积的概念。在论文《Spectral Networks and Deep Locally Connected Networks on Graphs》中,作者将讨论在除了常规网格之外的图上构建深度神经网络。论文提出了两种不同的结构:

    • 基于空域的卷积构建Spatial Construction :通过将空间局部性和多尺度扩展到通用的图结构,并使用它们来定义局部连接和池化层,从而直接在原始图结构上执行卷积。
    • 基于谱域的卷积构建Spectral Construction :对图结构进行傅里叶变换之后,在谱域进行卷积。

    论文主要贡献如下:

    • 论文表明,从给定的图结构输入,可以获得参数为 O(n) 的有效架构(n 为输入节点总数),并且论文在低维的图数据集上进行了验证。
    • 论文介绍了一种使用 O(1) 参数的结构,通过实验验证了该结构并讨论了它与图上的谐波分析问题harmonic analysis problem 的联系。

2.1 基础概念(读者补充)

2.1.1 拉普拉斯算子

  1. 散度定义:给定向量场 F(x),设 Σ 为围绕某一点 x 的一个封闭曲面,dS 为曲面上的微元,n 为该微元的法向量,则该曲面的通量为:

    ΦF(Σ)=ΣFndS

    Σ 趋近于零时,即可得到 x 点的散度:

    divF(x)=F=F=i=1nFixi

    其中 x=(x1,,xn),F=(F1,,Fn)

    散度的物理意义为:在向量场中从周围汇聚到该点或者从该点流出的流量。

  2. 旋度定义:给定向量场 F(x),设 Γ 为围绕某一点 x 的一个封闭曲线,dl 为曲线上的微元,τ 为该微元的切向量,则该曲线的环量为:

    ΘF(Γ)=ΓFτdl

    Γ 趋近于零时,即可得到 x 点的旋度:

    curlF(x)=×F

    在三维空间中,上式等于:

    ×F=|ijkxyzFxFyFz|=(FzyFyz)i+(FxzFzx)j+(FyxFxy)k

    旋度的物理意义为:向量场对于某点附近的微元造成的旋转程度,其中:

    • 旋转的方向表示旋转轴,它与旋转方向满足右手定则。
    • 旋转的大小是环量与环面积之比。
  3. 拉普拉斯算子定义:给定函数 f(x) ,其中 x=(x1,,xn) ,则梯度定义为:

    f=(fx1,fxn)

    梯度的物理意义为:函数值增长最快的方向。

    梯度的散度为拉普拉斯算子,记作:

    2f=f=i=1n2fxi2
    • 由于所有的梯度都朝着 f 极大值点汇聚、从 f 极小值点流出,因此拉普拉斯算子衡量了空间中每一点,该函数的梯度是倾向于流出还是流入。
    • 拉普拉斯算子也能够衡量函数的平滑度smoothness:函数值没有变化或者线性变化时,二阶导数为零;当函数值突变时,二阶导数非零。
  4. 图拉普拉斯矩阵:假设 f(x) 为离散的一维函数,则一阶导数为一阶差分:

    f(x)=f(x)xf(x+1)f(x)

    二阶导数为二阶差分:

    2f=f(x)=2f(x)x2=f(x)f(x1)=[f(x+1)f(x)][f(x)f(x1)]=f(x+1)+f(x1)2f(x)

    一维函数其自由度可以理解为2,分别是 +1-1 两个方向。因此二阶导数等于函数在所有自由度上微扰之后获得的增益。

    推广到图结构 G=(V,E),其中节点数量为 |V| 。假设邻接矩阵为 W ,并且任意两个节点之间存在边(即使不存在边则我们也可以假设存在一个 wi,j=0 的”虚拟“边 )。对于其中任意节点 i ,对其施加微扰之后该节点可以到达其它任意节点,因此图的自由度为 |V|

    fi 为函数 f() 在节点 i 的值,定义 f=(f1,f2,,f|V|)R|V| ,它表示函数 f 在图 G=(V,E) 上的取值。对于节点 i ,其扰动到节点 j 的增益时 (fjfi) ,不过这里通常写成负的形式,即 (fifj) 。考虑到边的权重,则增益为:wi,j(fifj)

    函数 f() 也可以视为定义在图上的信号 signal

    对于节点 i ,总的增益为拉普拉斯算子在节点 i 的值。即:

    (2f)i=j2fij2jwi,j(fifj)=(jwi,j)fijwi,jfj=(Df)i(Wf)i=((DW)f)i

    其中: D 为图的度矩阵degree matrix()i 表示该向量的第 i 个元素。

    考虑所有的节点,则有:

    2f=(DW)f

    定义拉普拉斯矩阵 L=DW ,因此在图的拉普拉斯算子就是拉普拉斯矩阵。

    上述结果都是基于 fi 为标量推导,实际上当 fi 为向量时也成立。

  5. 假设图的节点数量为 m,图的拉普拉斯矩阵 LRm×m 是一个半正定对称矩阵,它具有以下性质:

    • 对称矩阵一定有 m 个线性无关的特征向量。
    • 半正定矩阵的特征值一定是非负的。
    • 对称矩阵的特征向量相互正交,即:所有特征向量构成的矩阵为正交矩阵。

    因此有拉普拉斯矩阵的谱分解:

    Luk=λkuk

    其中 uk 为第 k 个特征向量,λk 为第 k 个特征值。

    解得:L=UΛU ,其中 :

    U=[u1,u2,,um]Rm×mΛ=[λ1000λ2000λm]

    U 每一列为特征向量构成的正交矩阵,Λ 为对应特征值构成的对角矩阵。

  6. 根据 L=(DW) 的定义有:

    L[111]=0

    根据特征方程:Lu=λu ,因此 λ=0L 的一个特征值。由于半正定矩阵的特征值一定是非负的,因此 λ=0L 的最小特征值。

    L 对应的 m 维谱空间中,特征值 λk 越小则表明拉普拉斯矩阵 Lλk 对应的基 uk 上的分量的信息越少,这意味着该分量是可以忽略的低频部分。其实图像压缩就是这个原理,把像素矩阵分解后,把小的特征值(低频部分)全部变成零。PCA 降维也是同样原理,把协方差矩阵特征分解后,取 top K 个特征值对应的特征向量作为新的特征空间。 如下图所示为包含 25 个节点的图,其 L 对应的 25 维空间中,最大特征值、第12 大特征值、次小特征值(因为最小特征值为零,因此第24 大特征值就是次小的)对应特征向量 uk 的可视化。可以看到:特征值越大则对应特征向量的变化越剧烈,特征值越小则对应特征向量的变化越平缓。注意:最小特征值为零,并且对应的特征向量为全1 的向量(或者乘以常数倍),这意味着该特征向量在所有节点上取值相等(所以变化为零),即频率为零的分量。

2.1.2 卷积

  1. 给定函数 f(x), 其傅里叶变换为:

    f(x)=F(k)eikxdk

    其中 F(k)=12πf(x)eikxdx 为傅里叶系数,即频率为 k 的振幅, eiwx 为傅里叶基 fouries basis

    可以证明:eikx 为拉普拉斯算子的特征函数。证明:

    2eikx=2eikxx2=k2eikx
  2. 如果将傅里叶变换推广到图上,则有类比:

    • 拉普拉斯算子对应于拉普拉斯矩阵 L

    • 频率 k 对应于拉普拉斯矩阵的特征值 λk

    • 傅里叶基 eikx 对应于特征向量 uk

    • 傅里叶系数 F(k) 对应于 F(λk) ,其中:

      F(λk)=f^k=fuk

      写成矩阵形式为:

      f^=Uf

      其中:

      • fRm 为图上定义的一个 m 维的信号(空域信号),它由每个节点的特征 fi 组成。

      • f^ 为图的傅里叶变换(谱域信号),它是在谱域上对应于不同特征值的振幅构成的向量。

        f^ 其实就是 f 在由 m 个基向量 {u1,,um} 所张成的谱空间中的坐标,f^i 就是 f 在基向量 ui 上的投影。

    • 传统的傅里叶逆变换 F1(F(k))=f(x)=F(k)eikxdk 对应于图结构:

      fi=k=1mf^kuk,i

      其中 uk,i 对应于特征向量 uk 的第 i 个分量。写成矩阵的形式为:

      f=Uf^
  3. 卷积定理:两个函数在时域的卷积等价于在频域的相乘。

    f(x)h(x)=F1(F(k)×H(k))=F(k)×H(k)eikxdkF(k)=12πf(x)eikxdxH(k)=12πh(x)eikxdx

    对应于图上有:

    fh=F1(f^h^)=U(K(Uf))=UKUf

    其中: 为逐元素乘积,U 为拉普拉斯矩阵 L 特征向量组成的矩阵(每一列为一个特征向量),K 为对角矩阵:

    K=[hu1000hu2000hum]

    这里将逐元素乘积转换为矩阵乘法。

  4. 图卷积神经网络的核心就是设计卷积核,从上式可知卷积核就是 K 。我们可以直接令 huk=θk ,然后学习卷积核:

    K=[θ1000θ2000θm]

    我们并不关心 h,仅仅关心傅里叶变换之后的 h^

2.2 空域构建 Spatial Construction

2.2.1 基本概念

  1. 在通用的图结构上针对 CNN 最直接的推广是考虑多尺度的、局部的感受野。为此,我们使用一个加权图 G=(Ω,W) 来代替网格结构,其中 Ω 为大小为 m 的节点集合,WRm×m 为对称、非负的权重矩阵(这里采用无向图)。

    这里的权重指的是图中边的权重,而不是神经网络的权重。

  2. 基于 W 的局部性 locality:可以很容易地在图结构中推广局部性的概念。实际上,图中的权重决定了局部性的概念。例如,在 W 上定义邻域的一种直接方法是设置阈值 δ>0,并设置邻域为:

    Nδ(j)={iiΩ,Wi,j>δ}

    其中 Nδ(j) 为节点 j 的邻域节点集合。

    在执行卷积时,我们可以仅仅考虑将感受野限制在这些邻域上的 sparse filter ,从而获得局部连接的网络 locally connected network ,从而将卷积层的参数数量减少到 O(S×m) (而不是 O(m2)),其中 S 为平均邻域大小。

    每个节点需要 S 个参数,一共 m 个节点,所以参数数量是 O(S×m)

  3. 图的多分辨率multiresolution分析:CNN 通过池化pooling 层和降采样subsampling层来减少feature map 的尺寸,在图结构上我们同样可以使用多尺度聚类multiscale clustering的方式来获得多尺度结构。在图结构上如何进行多尺度聚类仍然是个开发的研究领域,我们这里根据节点的邻域进行简单的聚类。

    图的邻域结构天然地代表了某种意义上的聚类。比如,社交网络的一阶邻域代表用户的直接好友圈子,以一阶邻域来聚类则代表了一个个的”小团体“。基于这些 ”小团体“ 进行聚类得到的高阶聚类可能包含了国家的信息,比如”中国人“被聚合在一个高阶聚类中,”美国人“被聚合在另一个高阶聚类中。

    下图给出了多尺度层次聚类的示意图(两层聚类)。原始的12个节点为灰色。第一层有6 个聚类,聚类中心为彩色节点,聚类以彩色块给出。第二层有3 个聚类,聚类以彩色椭圆给出。

2.2.2 深度局部连接网络 Deep Locally Connected Networks

  1. 空域构建spatial construction从图的多尺度聚类开始,并且我们考虑 K 个尺度scale 。定义第 0 个尺度表示原始图,即 Ω0=Ω 。对于之后每个尺度的feature mapΩk 是通过聚类算法将feature map Ωk1 划分到 dk 个聚类而得到,其中 d0 为原始图的节点数量 mk=1,2,,K

    Ωk 包含 dk 个节点,这些节点是 dk 个聚类的聚类中心。

    Ωk1 包含 dk1 个节点,第 i 个节点的邻域记做 Nk,i。定义 Ωk1 中全部邻域集合的集合为:

    Nk={Nk,1,,Nk,dk1}

    有了这些之后我们现在可以定义神经网络的第 k 层。不失一般性,我们假设输入信号是定义在 Ω0 上的实值信号 real signal(即标量值) ,我们设第 k 层创建的 filter 数量为 fk(即输出通道数)。则第 k 层神经网络将 fk1dk1 维的信号转换为 fkdk 维的信号。

  2. 正式地,假设第 k 层神经网络的输入为:

    X(k)=[x1,1(k)x1,2(k)x1,fk1(k)x2,1(k)x2,2(k)x2,fk1(k)xdk1,1(k)xdk1,2(k)xdk1,fk1(k)]Rdk1×fk1

    其中:

    • X(k) 为第 k 层神经网络的输入 feature map
    • X(k) 的第 i 行定义为 xi,:(k)=(xi,1(k),,xi,fk1(k))Rfk1Ωk1 的第 j 个节点的 feature
    • X(k) 的第 j 列定义为 x:,j(k)=(x1,j(k),,xdk1,j(k))Rdk1 为第 j 个信号(一共 fk1 个)。

    则第 k 层神经网络的第 j 个输出信号定义为:

    x:,j(k+1)=L(k)h(j=1fk1Fj,j(k)x:,j(k)),j=1,2,,fk

    其中:

    • 信号的每一维度表示一个通道,因此fk1 为输入通道数,fk 为输出通道数。

    • Fj,j(k)x:,j(k) 对第 j 个输入通道进行线性变换,变换矩阵为 Fj,j(k)

      j=1fk1Fj,j(k)x:,j(k) 的物理意义为:第 j 个输出通道由所有输入通道的线性变换进行 sum 聚合而来。

    • Fj,j(k)Rdk1×dk1 为一个稀疏矩阵(作为 filter),它表示应用于第 j 个输入通道、第 j 个输出通道的参数矩阵。

      Fj,j(k) 的非零项由 Nk 来定义,即:

      Fj,j(k)(u,v)={θj,j(k)(u,v),vNk,u0,else

      即:当节点 v 不在节点 u 的邻域中时 Fj,j(k)(u,v) 为零,由于对称性此时 Fj,j(k)(v,u) 也为零。{θj,j(k)(u,v)}filter 的待学习的参数。

      这意味着在线性投影时,节点 u 的输出仅依赖于其邻域节点 Nk,u ,即局部性。

    • h() 为非线性激活函数。

    • L(k) 为第 k 层的池化矩阵,矩阵的行表示聚类 cluster id,列表示节点id ,矩阵中的元素表示每个节点对应于聚类中心的权重:如果是均值池化则就是 1 除以聚类中的节点数,如果是最大池化则是每个聚类的最大值所在的节点。

      L(k) 用于将 fkdk1 维的输出通道的信号池化为 fkdk 维的信号。

      L(k)=node1node2node3nodedk11nodedk1cluster110000cluster201/2001clusterdk01/2010Rdk×dk1
  3. ΩkNk 的构建过程:

    • 初始化:W0=W

    • 根据对 Wkϵ-covering 得到 Ωk 。理论上也可以采取其它聚类算法。

    • 对于 Ωk ,其簇中心 i,j 之间的连接权重为两个簇之间的所有连接的权重之和:

      Ak(i,j)=sΩk(i)tΩk(j)Wk1(s,t)

      然后按行进行归一化:

      Wk=row-normalize(Ak)
    • 根据 Wk 以及邻域阈值 δ 得到 Nk

    如下图所示 K=2

    • Ω0 表示第零层,它有 12 个节点(灰色),信号为一个通道(标量)。
    • Ω1 表示第一层,其输入为 Ω0,输出 6 个节点,输出信号四个通道(四个filter )。
    • Ω2 表示第二层,其输入为 Ω1 ,输出 3 个节点,输出信号六个通道(六个filter)。

    每一层卷积都降低了空间分辨率spatial resolution,但是增加了空间通道数。

  4. 假设 SkNk 中平均邻居数量,则第 k 层卷积的平均参数数量为:

    O(Sk×dk×fk×fk1)

    实际应用中我们可以使得 Sk×dkαdk1α 为一个升采样系数,通常为 α(1,4)

    为什么这么做?论文并未说明原因。

  5. 空域构建的实现非常朴素,其优点是不需要对图结构有很高的规整性假设 regularity assumption。缺点是无法在节点之间实现权重共享。

2.3 谱域构建 Spectral Construction

  1. 可以通过图拉普拉斯算子来探索图的全局结构,从而推广卷积算子。

  2. 假设构建一个 K 层的卷积神经网络,在第 k 层将输入的 feature map X(k)Rdk1×fk1 映射到 X(k+1)Rdk1×fk ,则第 k 层网络的第 j 个输出通道为:

    x:,j(k+1)=h(j=1fk1UKj,j(k)Ux:,j(k))

    其中:

    • x:,j(k) 表示第 j 个输入信号,即 X(k) 的第 j 列。

    • U 为拉普拉斯矩阵特征向量组成的矩阵(每一列表示一个特征向量)。

      实际应用中,通常仅仅使用拉普拉斯矩阵的最大 D 个特征向量,截断阈值 D 取决于图的固有规整性 regularity 以及图的节点数量。此时上式中的 U 替换为 UDRdk1×D 。这可以减少参数和计算量,同时去除高频噪声。

    • Kj,j(k)Rdk1×dk1 为第 k 层的、针对第 j 个输入通道、第 j 个输出通道的谱域 filter 。一般而言我们选择 filter Kj,j(k) 为对角矩阵,因此第 k 层卷积层的参数数量为 fk1×fk×dk1

      我们将在后文看到如何将图的全局规整性和局部规整性结合起来,从而产生具有 O(1) 参数的层,即模型参数的数量不依赖于输入节点数 dk1

    • h() 为非线性激活函数。

  3. 谱域构建可能受到以下事实的影响:大多数图仅在频谱的 top (即高频部分)才具有有意义的特征向量。即使单个高频特征向量没有意义,一组高频特征向量也可能包含有意义的信息。

    然而,我们的构建方法可能无法访问这些有意义的信息,因为我们使用对角线形式的卷积核,在最高频率处它是对角线形式因此仅包含单个高频特征向量(而不是一组高频特征向量)。

  4. 傅里叶变换是线性变换,如何引入非线性目前还没有很好的办法。

    具体而言,当在空域执行非线性变换时,如何对应地在谱域执行前向传播和反向传播,目前还没有很好的办法,因此我们必须进行昂贵的 UU 矩阵乘法。

  5. 为了降低参数规模,一个简单朴素的方法是选择一个一维的排列 arrangement(这个排列的顺序是根据拉普拉斯特征值的排序得到)。此时第 k 层网络的每个 filter Kj,j(k) 的对角线可以参数化为:

    diag(Kj,j(k))=K(k)αj,j(k)

    其中: K(k)Rdk1×qk 为三次样条核函数,αj,j(k)Rqkqk 个样条参数。

    假设采样步长正比于节点数量,即步长 αdk1 ,则 qkdk1×1α=O(1) , 则谱域卷积的参数数量降低为:fk1×fk

2.4 实验

  1. 我们对 MNIST 数据集进行实验,其中MNIST 有两个变种。所有实验均使用 ReLU 激活函数以及最大池化。模型的损失函数为交叉熵,固定学习率为0.1 ,动量为 0.9

2.4.1 降采样 MNIST

  1. 我们将MNIST 原始的 28x28 的网格数据降采样到 400 个像素,这些像素仍然保留二维结构。由于采样的位置是随机的,因此采样后的图片无法使用标准的卷积操作。

    采样后的图片的示例,空洞表示随机移除的像素点。

    空域层次聚类的可视化,不同的颜色表示不同的簇,颜色种类表示簇的数量。图 a 表示 k=1 ,图 b 表示 k=3 。可以看到:层次越高,簇的数量越少。

    谱域拉普拉斯特征向量的可视化(谱域特征向量每个元素就是对应于每个节点的取值)。图a 表示 v2(对应于较小的特征值),图b 表示 v20 (对应于较大的特征值)。可以看到:特征值越小的特征向量对应于低频部分(变化越缓慢,左图),特征值越大的部分对应于高频部分(变化越剧烈,右图)。

  2. 不同模型在 MNIST 上分类的结果如下。基准模型为最近邻模型 kNNFCN 表示带有 N 个输出的全连接层,LRFN 表示带有 N 个输出的空域卷积层,MPN 表示带有 N 个输出的最大池化层,SPN 是带有 N 个输出的谱域卷积层。

    • 基准模型 kNN (第一行)的分类性能比完整的(没有采样的)MNIST 数据集的 2.8% 分类误差率稍差。
    • 两层全连接神经网络(第二行)可以将测试误差降低到 1.8%
    • 两层空域图卷积神经网络(第三行的下面部分)效果最好,这表明空域卷积层核池化层可以有效的将信息汇聚到最终分类器中。
    • 谱域卷积神经网络表现稍差(第四行),但是它的参数数量最少。
    • 采用谱域平滑约束(选择top200 个频率)的谱域卷积神经网络的效果优于常规的谱域卷积神经网络。

  3. 由于 MNIST 中的数字由笔画组成,因此具有局部性。空域卷积通过filter Fj,j(k)的定义从而很明确的满足这一约束,而谱域卷积则没有强制空间局部性。在谱域 filter 上添加平滑约束可以改善分类结果,因为 filter 被强制具有更好的空间局部性。

    • (a),(b) 表示同一块感受野在空域卷积的不同层次聚类中的结果。
    • (c),(d) 表示谱域卷积的两个拉普拉斯特征向量,可以看到结果并没有空间局部性。
    • (e),(f) 表示采用平滑约束的谱域卷积的两个拉普拉斯特征向量,可以看到结果有一定的空间局部性。

2.4.2 球面 MNIST

  1. 我们将MNIST 图片映射到一个球面上,构建方式为:

    • 首先从单位球面上随机采样 4096 个点 S={s1,,s4096}
    • 然后考虑三维空间的一组正交基 E=(e1,e2,e3) ,其中 ||e1||=1,||e2||=2,||e3||=3 ,以及一个随机方差算子 Σ=(E+W)(E+W) ,其中W 是一个方差为 σ2<1 的独立同部分的高斯分布的分布矩阵。
    • 对原始 MNIST 数据集的每张图片,我们采样一个随机方差 Σi 并考虑其主成分分析PCA 的一组基 {u1,u2,u3} 。这组基定义了一个平面内的旋转。我们将图片按照这组基进行旋转并使用双三次插值将图片投影到 S 上。

    由于数字 69 对于旋转是等价的,所以我们从数据集中移除了所有的 9

    下面给出了两个球面 MNIST 示例:

    下面给出了谱域构建的图拉普拉斯矩阵的两个特征向量的可视化。图a 表示 v20,图b 表示 v100 。可以看到:特征值越小的特征向量对应于低频部分(左侧),特征值越大的部分对应于高频部分(右侧)。

  2. 首先考虑“温和”的旋转:σ2=0.2 ,结果如下表所示。

    • 基准的 kNN 模型的准确率比上一个实验(随机采样 MNIST )差得多。
    • 所有神经网络模型都比基准 KNN 有着显著改进。
    • 空域构建的卷积神经网络、谱域构建的卷积神经网络在比全连接神经网络的参数少得多的情况下,取得了相差无几的性能。

  3. 不同卷积神经网络学到的卷积核(即 filter )如下图所示。

    • (a),(b) 表示同一块感受野在空域卷积的不同层次聚类中的结果。
    • (c),(d) 表示谱域卷积的两个拉普拉斯特征向量,可以看到结果并没有空间局部性。
    • (e),(f) 表示采用平滑约束的谱域卷积的两个拉普拉斯特征向量,可以看到结果有一定的空间局部性。

  4. 最后我们考虑均匀旋转,此时 {u1,u2,u3} 代表 R3 中的随机的一组基,此时所有的模型的效果都较差。这时需要模型有一个完全的旋转不变性,而不仅仅是平移不变性。

三、Fast Localized Spectral Filtering On Graph[2016]

  1. 卷积神经网络提供了一种有效的架构,可以在大规模的、高维的数据集中抽取非常有意义的统计模式statistical patternCNN 学习局部静态结构 local stationary structure 并将它们组合成多尺度的 multi-scale、分层hierarchical的模式,并导致了图像识别、视频识别、声音识别等任务的突破。准确地说,CNN 通过揭示跨数据域data domain 共享的局部特征来抽取输入数据(或输入信号)的局部平稳性local stationarity 。这些相似的特征通过从数据中学到的局部卷积滤波器localized convolutional filter (或局部卷积核 localized convolutional kernel)来识别。卷积滤波器是平移不变translation-invariant的,这意味着它们能够独立于空间位置来识别相同的特征identical feature。局部核localized kernel (或紧凑支持的滤波器compactly supported filter)指的是独立于输入数据大小并抽取局部特征的滤波器,它的支持度 support 大小可以远小于输入大小。

    社交网络上的用户数据、电信网络上的日志数据、或 word embedding 上的文本文档,它们都是不规则数据的重要例子,这些数据可以用图 graph 来构造。图是异质 pairwise 关系的通用表达universal representation。图可以编码复杂的几何结构,并且可以使用强大的数学工具进行研究,如谱图理论spectral graph theory

    CNN 推广到图并不简单,因为卷积算子和池化算子仅针对规则网格regular grid才有定义。这使得 CNN 的扩展在理论上和实现上都具有挑战性。将 CNN 推广到图的主要瓶颈(也是论文 《Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering》的主要目标之一),是定义可以有效评估和学习的局部图滤波器localized graph filter 。准确地说,论文 《Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering》的主要贡献如下:

    • 谱公式 spectral formulation:基于图信号处理 graph signal processing: GSP 中已有的工具,论文建立了图上 CNN 的谱图spectral graph 理论公式。

    • 严格局部的滤波器:可以证明,论文提出的谱滤波器 spectral filter 严格限定在半径为 K 的球中,即从中心顶点的 K hops 。这是对 《Spectral Networks and Deep Locally Connected Networks on Graphs》 的增强。

    • 低的计算复杂度:论文提出的滤波器的 evaluation 复杂度与滤波器尺寸 K 、图的边数 |E| 成正比。重要的是,由于大多数现实世界的图都是高度稀疏的,因此有 |E|n2 以及 |E|=kn ,其中 n 为图的顶点数,k 为图中顶点的平均 degree。这使得计算复杂度与输入数据大小 n 成线性关系。

      此外,论文的方法完全避免了傅里叶基 Fourier basis,因此避免了计算傅里叶基所需要的特征分解 eigenvalue decomposition 所需的计算量,也避免了存储傅里叶基的内存需求(一个 n×n 的矩阵)。这在 GPU 内存有限时尤其重要。除了输入数据之外,论文的方法只需要存储拉普拉斯算子,它是一个包含 |E| 个非零值的稀疏矩阵。

    • 高效的池化:论文提出了一种有效的、图上的池化策略,该策略在将顶点重排为二叉树结构之后,采用类似于一维信号的池化。

    • 实验结果:论文进行了多个实验,最终表明所提出的公式是:一个有效的模型、计算效率高、在准确性和复杂性上都优于 《Spectral Networks and Deep Locally Connected Networks on Graphs》 中介绍的 spectral graph CNN

      论文还表明,所提出的图公式在 MNIST 上的表现与经典 CNN 相似,并研究了各种图构造graph construction 对于性能的影响。

  2. 相关工作:

    • 图信号处理 graph signal processing: GSPGSP 的新兴领域旨在弥合信号处理和谱图理论之间的 gap ,是图论graph theory 和谐波分析harmonic analysis之间的融合。一个目标是将信号的基本分析操作从规则网格推广到不规则的图结构。诸如卷积、平移、滤波 filtering、膨胀 dilatation、调制 modulation、降采样downsampling 等等网格上的标准操作不会直接扩展到图,因此需要新的数学定义,同时保持原有的直观概念。在这种情况下,已有工作重新审视了图上小波算子wavelet operator的构建,并提出了在图上执行 mutli-scale pyramid transform 。也有一些工作重新定义了图上的不确定性原理,并表明虽然可能会丢失直观的概念,但是可以导出增强的局部性准则 localization principle

    • 非欧几里得Non-Euclidean 域的 CNN:图神经网络框架《The Graph Neural Network Model》(在 《Gated Graph Sequence Neural Networks》 中被简化)旨在通过 RNN 将每个节点嵌入到一个欧氏空间,并将这些 embedding 用作节点/图的分类/回归的特征。

      一些工作引入了构建局部感受野local receptive field 的概念从而减少学习参数的数量。这个想法是基于相似性度量将特征组合在一起,例如在两个连续层之间选择有限数量的连接。虽然该模型利用局部性假设locality assumption减少了参数的数量,但是它并没有尝试利用任何平稳性,即没有权重共享策略。《Spectral Networks and Deep Locally Connected Networks on Graphs》 的作者在他们的 graph CNNspatial formulation 中使用了这个想法。他们使用加权图来定义局部邻域,并为池化操作计算图的多尺度聚类multiscale clustering。然而,在空域构造spatial construction 中引入权重共享具有挑战性,因为当缺少 problem-specific ordering (如空间顺序、时间顺序等等)时,它需要选择select 并对邻域内的节点进行排序。

      《Geodesic convolutional neural networks on riemannian manifolds》 中提出了 CNN3D-mesh 的空间推广,其中 3D-mesh 是一类平滑的、低维的非欧氏空间。作者使用测地线极坐标geodesic polar coordinate 来定义 mesh patch 上的卷积,并定制了一个深度学习架构从而允许在不同的流形manifold 之间进行比较。他们对 3D 形状识别获得了 state-of-the-art 结果。

      第一个谱公式由 《Spectral Networks and Deep Locally Connected Networks on Graphs》 提出,它将滤波器定义为:gθ(Λ)=Bθ,其中 BRn×K 为三次 B 样条基,参数 θRK 为控制点control point向量。他们后来提出了一种从数据中学习图结构的策略,并将该模型应用于图像识别、文本分类、生物信息学(《Deep Convolutional Networks on Graph-Structured Data》)。然而,由于需要乘以图傅里叶基 URn×n ,因此这种方法没办法 scale 。此外,由于它们依赖于傅里叶域中的平滑性smoothness(即,通过样条参数化得到)来实现空间域的局部性,因此他们的模型无法提供精确的控制从而使得 kernel 支持局部性,而这对于学习局部的滤波器至关重要。我们的技术利用了这项工作,并展示了如何克服这些限制以及其它限制。

3.1 模型

  1. 将卷积推广到图上需要考虑三个问题:如何在图上设计满足空域局部性的卷积核、如何执行图的粗化graph coarsening(即,将相似顶点聚合在一起)、如何执行图池化操作。

3.1.1 快速的局部性的谱滤波器

  1. 定义卷积滤波器有两种策略,可以从空间方法spatial approach 来定义,也可以从谱方法spectral approach来定义。

    • 通过构造 construction,空间方法可以通过有限大小的 kernel 提供 filter localization 。然而,从空间角度来看,图上的平移没有唯一的数学定义。

    • 另一方面,谱方法通过在谱域spectral domain实现的 Kronecker delta 卷积在图上提供了一个定义明确的局部性算子 localization operator 。然而,在谱域定义的滤波器不是天然局部化的,并且由于和图傅里叶基乘法的计算复杂度为 O(n2),因此傅里叶变换的成本很高。

      然而,通过对滤波器参数化filter parametrization 的特殊选择,我们可以克服这两个限制(即,滤波器的天然局部化,以及计算复杂度)。

  2. 图傅里叶变换Graph Fourier Transform:给定无向图 G=(V,E,W),其中 V 为顶点集合,n=|V| 为顶点数量,E 为边集合, WRn×n 为一个加权的邻接矩阵,Wi,j 编码了两个顶点 ij 之间的连接权重。

    xRn 是定义在图中节点上的信号,其中 xiR 为第 i 个节点上的取值。谱图分析spectral graph analysis 中最基础的算子是图拉普拉斯算子,combinatorial Laplacian 定义为 L=DWRn×nnormalized Laplacian 定义为 L=InD1/2WD1/2,其中 Ddegree 矩阵(一个对角矩阵)并且 Di,i=jWi,jInRn×n 为一个单位矩阵。

    论文并没有提到是用哪个拉普拉斯矩阵,读者猜测用的是任意一个都可以,因为后续公式推导对两种类型的拉普拉斯矩阵都成立。

    由于 L 是一个实对称半正定矩阵,因此它有一组完全的正交特征向量 {ul}l=0n1Rn (称作图傅里叶模式graph Fourier mode ),以及与这些特征向量相关的有序实数非负特征值 {λl}l=0n1R (称作图的频率graph frequency)。图拉普拉斯矩阵 L 被傅里叶基Fourier basis U=[u0,,un1]Rn×n 所对角化,使得 L=UΛU,其中 Λ=diag([λ0,,λn1])Rn×nU 的第 l 列为特征向量 ul

    傅里叶变换将信号 xRn 转换为 x^=UxRn ,傅里叶逆变换为 x=Ux^ 。与欧氏空间一样,傅里叶变换能够定制化基本操作,如滤波 filtering

  3. 图信号的谱域滤波spectral filtering:由于我们无法在顶点域vertex domain 中表达有意义的平移算子translation operator,因此图上的卷积算子 G 定义在傅里叶域Fourier domain,即:

    x1Gx2=U((Ux1)(Ux2))

    其中: 是逐元素的 Hadamard 乘法,x1,x2Rn 都是图上定义的两个信号。

    因此,图上的信号 xgθ 滤波为:

    y=gθ(L)x=gθ(UΛU)x=Ugθ(Λ)Ux

    non-parametric filter (即参数都是自由的滤波器)定义为:

    gθ(Λ)=diag(θ)=[θ1000θ2000θn]

    其中参数 θ=(θ1,,θn)Rn 为待学习的傅里叶系数Fourier coefficient 组成的向量。

  4. 用于局部滤波器localized filter的多项式参数化:然而,non-parametric filter 有两个限制:它们在空间域不是局部化localized的、它们学习的复杂度是 O(n)(即数据的维度)。这些问题可以通过使用多项式滤波器polynomial filter来解决:

    gθ(Λ)=k=0K1θkΛk

    其中:参数 θ=(θ1,,θK)RK 为多项式系数组成的向量。

    以顶点 i 为中心的滤波器 gθ 在顶点 j 上的取值为:

    (gθ(L)δi)j=(gθ(L))i,j=k=0K1θk(Lk)i,j

    它的物理意义是:一个 delta 脉冲信号 δiRn (它在节点 i 上取值为一、在其它节点取值为零)经过滤波器之后,在节点 j 上的取值。

    根据 《Wavelets on Graphs via Spectral Graph Theory》 的引理5.2dG(i,j)>K 意味着 (LK)i,j=0 ,其中 dG(,) 表示两个顶点之间的最短路径(即,连接图上两个顶点的最少的边数)。因此,由拉普拉斯算子的 K 阶多项式表示的谱滤波器 spectral filter 恰好是 K-localized 的。此外,它的学习复杂度为 O(K),即滤波器的尺寸,因此与经典 CNN 的复杂度相同。

  5. 快速滤波fast filtering的递归公式:虽然我们已经展示了如何学习具有 K 个参数的localized filter ,但是由于还需要与傅里叶基 U 相乘,因此对信号 x 的滤波 y=Ugθ(Λ)Ux 仍然是 O(n2) 的、高昂的操作。解决这个问题的方法是将 gθ(L) 参数化为可以从 L 递归计算的多项式函数,因为 K 次地乘以一个稀疏的 L 矩阵的复杂度为 O(K×|E|)O(n2)

    一种这样的多项式是 Chebyshev 展开(传统上,它在 GSP 中被用于近似 kernel,如小波 wagelet )。另一种选择是 Lanczos 算法,它构造了 Krylov 子空间的正交基 KK(L,x)=span{x,Lx,,LK1x}Lanczos 算法看起来似乎有吸引力,但是它更加复杂,因此我们留待未来的工作。

    回想一下,k 阶切比雪夫多项式 Tk(x) 可以通过递归关系来计算:

    T0(x)=1,T1(x)=xTk(x)=2xTk1(x)Tk2(x)

    这些多项式构成 L2([1,1],dy/1y2) 空间的一组正交基,这是关于测度 dy/1y2 的平方可积函数的希尔伯特空间。因此,滤波器可以被参数化为:

    gθ(Λ)=k=0K1θkTk(Λ~)

    其中:

    • 参数 θRK 为切比雪夫多项式系数组成的向量。
    • Λ~=2Λ/λmaxIn 为经过缩放的特征值对角矩阵,这使得它的对角线元素取值位于 [-1,+1] 之间。
    • Tk(Λ~)Rn×n 为在 Λ~ 处计算的 k 阶切比雪夫多项式。

    滤波操作可以协作:

    y=gθ(L)x=k=0K1θkTk(L~)x

    其中:

    • L~=2L/λmaxIn 为经过缩放的拉普拉斯矩阵。
    • Tk(L~)Rn×n 为在 L~ 处计算的 k 阶切比雪夫多项式。

    定义 x¯k=Tk(L~)xRn ,则我们可以使用递归关系来计算:

    x¯0=x,x¯1=L~xx¯k=2L~x¯k1x¯k2

    整个滤波操作 y=gθ(L)x 需要 O(K×|E|) 次操作。

  6. 学习 filter:假设第 s 个样本的输入包含 Fin 个通道,第 i 个输入通道为信号 xs,iRn (也称作第 i 个输入 feature map ) 。 第 s 个样本的第 j 个输出 feature map 为:

    ys,j=i=1Fingθi,j(L)xs,iRn,1jFout

    其中:θi,jRKlayer 的待训练参数。总的参数规模为 Fin×Fout×K

    假设 mini-batch 样本的损失函数为 L ,则为了进行反向传播我们需要计算如下的梯度:

    Lθi,j=s=1S[x¯s,i,0,,x¯s,i,K1]Lys,j,Lxs,i=j=1Foutgθi,j(L)Lys,j

    其中:Smini-batch size

    上述三种计算中的每一种都归结为 K 次稀疏矩阵与向量的乘法、以及一次稠密矩阵和向量的乘法,因此计算成本为 O(K×|E|×Fin×Fout×S) 。这些运算可以通过张量操作在并行架构上有效地计算。

    最后,[x¯s,i,0,,x¯s,i,K1] 仅需要计算一次。

3.1.2 图粗化 Graph Coarsening

  1. 池化操作需要在图上有意义的邻域上进行,从而将相似的顶点聚类在一起。对多个 layer 执行池化等价于保留局部几何结构的图多尺度聚类multi-scale clustering。然而,众所周知,图聚类 graph clusteringNP-hard 的并且必须使用近似算法。虽然存在许多聚类算法(例如流行的谱聚类 spectral clustering),但是我们最感兴趣的还是 multi-level 聚类算法。在 multi-level 聚类算法中,每个 level 都会生成一个更粗coarser的图,其中这个图对应于不同分辨率看到的数据域 data domain 。此外,在每个 level 将图的大小减少两倍的聚类技术提供了对粗化coarsening 和池化大小的精确控制。

  2. 在这项工作中,我们利用了 Graclus multi-level 聚类算法的粗化阶段。Graclus multi-level 聚类算法已被证明在对各种图进行聚类时非常有效。图上的代数多重网格algebraic multigrid 技术、以及 Kron reduction 是未来工作中值得探索的两种方法。

    建立在 Metis 上的 Graclus 使用贪心算法来计算给定图的连续更粗successive coarser的版本,并且能够最小化几个流行的谱聚类目标spectral clustering objective。在这些谱聚类目标中,我们选择归一化割 the normalized cutGraclus 的贪心规则为:

    • 在每个coarsening level ,选择一个未标记unmarked的顶点 i ,并选择它的一个未标记的邻居顶点 j ,使得最大化local normalized cut Wi,j(1/di+1/dj)

    • 然后标记mark并粗化coarsen这对匹配的顶点 i,j ,并且所有其它顶点与这个粗化顶点的权重等于所有其它顶点和 i,j 权重之和。

    • 持续配对,直到所有顶点都被探索(这样就完成了一轮粗化)。

      这其中可能存在部分独立顶点,它不和任何其它顶点配对。

    这种粗化算法非常块,并且每轮粗化都将顶点数除以2 从而从一个 level 到下一个更粗的 level

3.1.3 图信号的快速池化

  1. 池化操作将被执行很多次,因此该操作必须高效。粗化之后,输入图的顶点及其粗化版本没有以任何有意义的方式排列arrange 。因此,直接应用池化操作将需要一个 table 来存储上一个 level 的顶点与到下一个 level 的顶点(更粗化的版本)之间的对应关系。这将导致内存效率低下、读取速度慢、并且难以并行化。

    然而,我们可以排列顶点,使得图池化graph pooling 操作变得与一维池化一样高效。我们分为两步进行:创建一棵平衡的二叉树、重排顶点。

  2. 粗化之后,每个节点要么有两个子节点(如果它是在更精细的 level 被匹配到的);要么没有(如果它在更精细的 level 未被匹配到),此时该节点是一个 singleton,它只有一个子节点。从最粗的 level 到最细的 level,我们为每个singleton 节点添加一个 fake 节点作为子节点,这样每个节点就都有两个子节点。fake 节点都是断开 disconnected 的。

    这种结构是一棵平衡二叉树:一个节点要么包含两个常规子节点(如下图中的 level 1 节点 0 ),要么包含一个 singletons 子节点和一个 fake 子节点(如下图中的 level 2 节点 0) 。fake 节点总是包含两个 fake 子节点,如下图中的 level 1 节点 1。注意,下图中从上到下依次是 level 0, level 1, level 2

    输入信号在 fake 节点处使用 neutral value 初始化,如当使用 ReLU 激活函数时为 0 。因为这些 fake 节点是断开的,因此滤波不会影响到初始的 neutral value 。虽然这些 fake 节点确实人为地增加了维度从而增加了计算成本,但是我们发现在实践中,Graclus 留下的 singleton 节点数量非常少。

    我们在最粗coarsestlevel 上任意排列节点,然后将这个次序传播到最精细finestlevel ,即节点 k 具有节点 2k2k+1 作为子节点,从而在最精细的 level 产生规则的次序regular ordering 。规则的意思是相邻节点在较粗的 level 上层次地合并。池化如此一个重排的图信号,类似于池化一个常规的一维信号(以步长为 2 )。

    下图显示了整个池化过程的示例。这种规则排列 regular arrangement 使得池化操作非常高效,并且满足并行架构(如 GPU),因为内存访问是局部的,即不需要 fetch 被匹配的节点。

    池化的本质是:对每个节点多大范围内的邻域进行池化。

  3. 一个池化的例子如下图。带颜色的链接表示配对,红色圆圈表示未能配对顶点,蓝色圆圈表示 fake 顶点。

    考虑图 G0 上定义的信号 xR8 的最大池化,池化大小为 4G0 为原始输入,即最精细的 level ,它拥有 n0=|V0|=8 个顶点,以任意顺序。对于大小为 4 的池化,我们需要执行 2 次粗化操作(因为每次粗化都将顶点数除以2 ):

    • Graclus第一次粗化产生图 G1 ,顶点数量 n1=|V1|=5
    • Graclus第二次粗化产生图 G2 ,顶点数量 n2=|V2|=3 ,即最粗的level

    因此我们设置 n2=3,n1=6,n0=12 ,并将 fake 节点(蓝色)添加到 V1(添加 1fake 节点)、V0(添加 4fake 节点),从而与 singelton 节点(橙色)配对,这样每个节点正好有两个子节点。然后 V2 中的节点被任意排序,V1V0 中的节点因此而被排序。此时,V0 中节点的排列允许在 xR12 上执行一个常规的一维池化,使得:

    z=[max(x0,x1),max(x4,x5,x6),max(x8,x9,x10)]R3

    其中信号分量 x2,x3,x7,x11 被设置为 neutral value

3.2 实验

  1. 我们将 non-parametricnon-localizedfilter 称作 Non-Param(即 gθ(Λ)=diag(θ)) ,将《Spectral Networks and Deep Locally Connected Networks on Graphs》中提出的 filter 称作 Spline(即 gθ(Λ)=Bθ),将我们提出的 filter 称作Chebyshev(即 gθ(Λ)=k=0K1θkTk(Λ~)) 。

    我们总是采用 Graclus 粗化算法,而不是 《Spectral Networks and Deep Locally Connected Networks on Graphs》 中提出的简单聚集算法agglomerative method。我们的动机是比较学到的 filter,而不是比较粗化算法。

    我们在描述网络架构时使用以下符号:FCk 表示一个带 k 个神经元的全连接层,Pk 表示一个尺寸和步长为 k 的池化层(经典池化层或者图池化层),GCK 表示一个输出 kfeature map 的图卷积层graph convolutional layerCk 表示一个输出 kfeature map 的经典卷积层。

    所有的FCk,GCk,Ck 都使用ReLU 激活函数。最后一层始终是 softmax 回归。损失函数 L 是交叉熵损失,以及对所有 FCk 层权重的 l2 正则化。mini-batch size S=100

  2. MNIST 实验:我们考虑将我们的方法应用于基准的 MNIST 分类数据集,它是欧氏空间的 caseMNIST 分类数据集包含 70000 张数字图片,每张图片是 28 x 282D 网格。对于我们的图模型,我们构建了一个 2D 网格对应的8 层图神经网络,它产生了 n=|V|=976 个节点(其中 282=784 个像素,以及额外的 192fake 节点),以及 |E|=3198 条边。遵从标准的做法,k-NN similarity graph 的权重(即人工构建的input graph 中,每条边的权重)计算为:

    Wi,j=exp(||zizj||22σ2)

    其中 zi 表示像素点 i2D 坐标。

    模型配置为(来自于 TensorFlow MNIST tutorial ):LeNet-5-like 的网络架构,并且超参数为:dropout rate = 0.5,正则化系数为 5×104 ,初始学习率为0.03,学习率衰减系数 0.95,动量 0.9 。标准卷积核的尺度为 5x5,图卷积核的 K=25 ,二者尺寸相同。所有模型训练 20epoch

    本实验是我们模型的一项重要的健全性检查 sanity check,它必须能够在任何图上抽取特征,包括常规的 2D grid 。下表显示了我们的模型与具有相同架构的经典 CNN 模型的性能非常接近。

    性能的差距可以用谱域滤波器的各向同性的特性isotropic nature来解释,即常规 graph 中的边不具有方向性,但是 MNIST 图片作为2D grid 具有方向性(如像素点的上下左右)。这是优势还是劣势取决于具体的问题。

    性能差距的其它解释是:我们的模型缺乏架构设计经验,以及需要研究更合适的优化策略或初始化策略。

  3. 20NEWS 数据集的文本分类:为了验证我们的模型可应用于非结构化数据,我们将我们的技术应用于 20NEWS 数据集上的文本分类问题。20NEWS 数据集包含 18846 篇文档,分为20 个类别。我们将其中的 11314 篇文档用于训练、7532 篇文档用于测试。我们从所有文档的 93953 个单词中保留最高频的一万个单词。每篇文档使用词袋模型bag-of-word model 提取特征,并根据文档内单词的词频进行归一化。

    为了测试我们的模型,我们构建了16 层图神经网络,图的构建方式为:

    Wi,j=exp(||zizj||22σ2)

    其中 zi 为单词 iword2vec embedding 。每篇文档对应一张图,它包含 n=|V|=10000 个顶点、|E|=132834 条边。

    word2vec embedding 是在当前数据集上训练的?还是在更大的、额外的数据集上训练的?论文未说明。

    所有模型都由 Adam 优化器训练 20epoch,初始学习率为 0.001 。该架构是 K=5GC32 。结果如下图所示,在这个小数据集上,虽然我们的模型未能超越Multinomial Naive Bayes 模型,但是它超越了所有全连接神经网络模型,而这些全连接神经网络模型具有更多的参数。

  4. 效果比较:我们在MNIST 数据集上比较了不同的图卷积神经网络架构的效果,其中 K=25 。可以看到我们的方法优于 Spline 以及需要 O(n) 个参数的Non-Param

    为了给出不同 filter 的收敛性,下图给出训练过程中这几种架构的验证集准确率、训练集损失,横轴表示迭代次数。

  5. 效率比较:我们在 20NEWS 数据集上比较了不同网络架构的计算效率,其中 K=25 。我们模型的计算复杂度为 O(n),而 《Spectral Networks and Deep Locally Connected Networks on Graphs》 的计算复杂度为 O(n2) 。测量的运行时间是总训练时间除以梯度更新的 step 数(即每个mini-batch 的处理时间,其中batch-size = 100 )。

    我们在 MNIST 数据集上验证了不同网络架构的并行性。下表显式了从 CPU 迁移到 GPU 时,我们的方法与经典 CNN 类似的加速比。这体现了我们的模型提供的并行化机会。我们的模型仅依赖于矩阵乘法,而矩阵乘法可以通过NVIDAcuBLAS 库高效的支持。

  6. 图质量的影响:要使任何 graph CNN 成功,数据集必须满足一定条件:图数据必须满足局部性locality、平稳性stationarity、组合性compositionality 的统计假设。因此,学到的滤波器的质量及其分类性能关键取决于图的质量。从MNIST 实验我们可以看到:从欧式空间的网格数据中基于 kNN 构建的图,这些图数据质量很高。我们基于这些图数据采用graph CNN 几乎获得标准CNN 的性能。并且我们发现,kNNk 的值对于图数据的质量影响不大。

    作为对比,我们从MNIST 中构建随机图,其中顶点之间的边是随机的。可以看到在随机图上,图卷积神经网络的准确率下降。在随机图中,数据结构发生丢失,因此卷积层提取的特征不再有意义。

    但是为什么丢失了结构信息之后,准确率还是那么高?读者猜测是有一些非结构性的因素在生效,例如某些像素点级别的特性。

    图像可以通过网格图来构成,但是必须人工地为 bag-of-word 表示的文档来构建 feature graph 。我们在这里研究三种表示单词 z 的方法:将每个单词表示为一个 one-hot 向量、通过 word2vec 从数据集中学习每个单词的 embedding 向量、使用预训练的单词word2vec embedding 向量。对于较大的数据集,可能需要 approximate nearest neighbor: ANN 算法(因为当图的顶点数量较大时找出每个顶点的kNN 顶点的计算复杂度太大),这就是我们在学到的 word2vec embedding 上尝试 LSHForest 的原因。下表报告了分类结果,这突出了结构良好的图的重要性。其中:bag-of-words 表示 one-hot 方法,pre-learned 表示预训练的 embedding 向量,learned 表示从数据集训练 embedding 向量,approximate 表示对 learned 得到的 embedding 向量进行最近邻搜索时使用LSHForest 近似算法,random 表示对 learned 得到的 embedding 向量采用随机生成边而不是基于 kNN 生成边。

四、GCN[2016]

  1. 考虑在 graph(如,引文网络 citation network )中对节点(如,文档)进行分类的问题,其中仅一小部分节点有 label 信息。这个问题可以被定义为基于图的半监督学习graph-based semi-supervised learning,其中 label 信息通过某种形式的 explicit graph-based regularization 在图上被平滑 smoothed ,例如在损失函数中使用图拉普拉斯正则化graph Laplacian regularization 项:

    L=L0+λ×LregLreg=i,jAi,jf(xi)f(xj)2=f(X)Δf(X)

    其中:

    • 无向图 G=(V,E)V 为节点集合,E 为边集合。节点数量为 N

    • ARN×N 为图的邻接矩阵,D 为度矩阵其中 Di,i=jAi,jΔ=DA 为未归一化的拉普拉斯算子 。

    • L0 表示图中有标签部分的监督损失:

      L0=iYLf(xi)yi2

      其中:

      • xiRC 为节点 i 的输入特征(维度为 C ),XRN×C 为节点的特征向量拼接的矩阵。
      • yi 为节点 i 的标签。YL 为带标签节点的集合。
      • f()R 是一个类似神经网络的可微函数,它将输入 xi 映射到类别空间,即 y^f(X)RN
    • Lreg 为正则化项,λ 为正则化项系数。

      正则化项的物理意义为:

      • 如果两个节点距离较近(即 Ai,j 较大),则它们的预估 label 应该比较相似(即 f(xi)f(xj) 距离相近)。
      • 如果两个节点距离较远(即 Ai,j 较小),则它们的预估 label 可以相似也可以不相似。

    因此上述损失函数 L 假设:graph 中相连的节点很可能共享相同的label 。然而,这种假设会限制模型的表达能力,因为图中的边不一定编码节点相似性,边也可能包含其它信息。

    在论文 《SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS》中,作者直接使用神经网络模型 f(X,A) 对图结构进行编码,并对所有带标签的节点在监督目标 L0 上进行训练,从而避免在损失函数中进行显式的、基于图的正则化。 f() 依赖于图的邻接矩阵 A ,这允许模型从监督损失 L0 中分配distribute梯度信息,并使得模型能够学习带标签节点的representation 和不带标签节点的 representation

    论文有两个贡献:

    • 首先,论文为直接在图上运行的神经网络模型引入了一个简单且表现良好的 layer-wise 传播规则propagation rule,并展示了它是如何从谱图卷积spectral graph convolution的一阶近似中启发而来。
    • 其次,论文展示了这种形式的基于图的神经网络模型如何用于对图中节点进行快速且可扩展的半监督分类。对多个数据集的实验表明,论文的模型在分类准确性和效率(以 wall-clock time 衡量)方面与 state-of-the-art 的半监督学习方法相比具有优势。
  2. 相关工作:相关工作:我们的模型主要受到 graph-based 半监督学习领域、最近在图上的神经网络等工作的启发。接下来我们简要概述了这两个领域的相关工作。

    • graph-based 半监督学习:近年来人们已经提出了大量使用 graph representation 的半监督学习方法,其中大多数分为两类:使用某种形式的显式的图拉普拉斯正则化方法,以及基于 graph embedding 的方法。

      • 图拉普拉斯正则化的突出例子包括标签传播 label propagation、流形正则化 manifold regularization、以及深度半监督 embedding

      • 最近,人们的注意力已经转移到graph embedding 模型,其中 graph embedding 模型受 skip-gram 模型所启发。

        DeepWalk 通过预测节点的局部邻域local neighborhood来学习 embedding,其中局部邻域是通过图上的随机游走采样而来。LINEnode2vec 使用更复杂的随机游走方案来扩展了 DeepWalk

        然而,对于所有这些方法,都需要一个包含随机游走生成和半监督训练的 multistep pipeline ,其中每个 step 都必须单独优化。Planetoid 通过在学习 embedding 的过程中注入label 信息来缓解这个问题。

    • 图上的神经网络:

      • 《A new model for learning in graph domains》 曾经介绍在图上运行的神经网络。《The graph neural network model》 将图神经网络作为循环神经网络的一种形式。他们的框架需要重复应用收缩映射 contraction map 作为传播函数 propagation function,直到 node representation 达到稳定的不动点 fixed point 。后来,《Gated graph sequence neural networks》 通过将循环神经网络的现代实践引入到原始图神经网络框架中,从而缓解了这种限制。
      • 《Convolutional networks on graphs for learning molecular fingerprints》 在图上引入了一种类似卷积的传播规则和方法,从而用于 graph-level 分类。他们的方法需要学习 node degree-specific 的权重矩阵,这些权重矩阵无法扩展到具有宽泛widenode degree 分布的大型图。相反,我们的模型每层使用单个权重矩阵,并通过对邻接矩阵进行适当的归一化从而处理变化的 node degree
      • 《Diffusion-convolutional neural networks》 最近引入了 graph-based 神经网络来进行节点分类。他们报告了 O(N2) 的复杂度,这限制了模型的应用范围。《Learning convolutional neural networks for graphs》 引入了一个不同但是相关related的模型,他们将图局部locally地转换为序列,然后馈入传统的一维卷积神经网络,而这需要在预处理步骤中定义节点排序node ordering
      • 我们的方法基于谱图卷积神经网络 spectral graph convolutional neural network,该模型在 《Spectral networks and locally connected networks on graphs》 被引入,并由 《Convolutional neural networks on graphs with fast localized spectral filtering》 通过快速局部卷积fast localized convolution进行了扩展。

      与这些工作相比,我们在此考虑在大型网络中进行 transductive 的节点分类任务。我们表明,在这种情况下,可以将《Spectral networks and locally connected networks on graphs》《Convolutional neural networks on graphs with fast localized spectral filtering》 的原始框架进行一些简化,从而提高大型网络的可扩展性和分类性能。

4.1 模型

4.1.1 图上卷积的快速近似

  1. 这里我们提供本文模型的理论动机。我们考虑具有以下 layer-wise 传播规则的一个多层 Graph Convolutional Network: GCN

    H(l+1)=σ(D~1/2A~D~1/2H(l)Θ(l))

    其中:

    • A~=A+IN 是带自环的无向图的邻接矩阵,IN 为单位矩阵,N 为节点数量。D~ 为带自环的度矩阵,其中 D~i,i=jA~i,j
    • H(l)RN×d 为第 l 层的激活矩阵,H0=Xd 为特征向量维度。Θ(l)Rd×d 为第 l 层的权重矩阵。 σ() 为激活函数。

    接下来我们将展示这种传播规则可以通过图上局部谱滤波器localized spectral filters的一阶近似所启发而来。

    上式物理意义:第 l+1 层中每个节点的representation 可以这样得到:

    • 首先,将邻域内节点(包含它自身)在第 l 层的representation 进行加权和,加权的权重为边的归一化权重(即 A~i,j/D~i,i )。
    • 然后,将这个加权和通过一个单层前馈神经网络,网络权重为 Θ(l) 、激活函数为 σ()
a. 谱图卷积
  1. 我们考虑图上的普卷积spectral convolution,它定义为信号 xRN (该信号由每个节点上的一个标量组成)在傅里叶域与 θRN 参数化的滤波器 gθ=diag(θ) 的乘积,即:

    gθx=UgθUx

    其中:

    • U=[u0,,uN1]RN×N 为归一化的图拉普拉斯矩阵 L=IND1/2AD1/2 的特征向量 ui 组成(按列组成)。L=UΛUΛ=diag([λ0,,λN1]) 为特征值 λi组成的对角矩阵。

    • 对于信号 xx^=Ux 表示信号的图傅里叶变换 graph Fourier transformx=Ux^ 表示图傅里叶逆变换。

      注意,这里的信号 xRN 是定义在整个图的所有节点上,而前面定义的节点特征 xiRC 是定义在单个节点 i 上。我们有:

      X=[x1,,xN]=[x1,1x1,2x1,Cx2,1x2,2x2,CxN,1xN,2xN,dN]

      X 有两种解读方式:

      • 按行解读:第 i 行代表节点 iC 为特征,1iN
      • 按列解读:第 j 列代表定义在图上的第 j 个信号,1jC
    • 我们可以将 gθ 理解为 L 特征值的函数,即 gθ(Λ)

  2. 计算 gθx 的计算量很大,因为与矩阵 U 的乘法是 O(N2) 。此外,对于大型图,首先计算 L 的特征分解可能会非常昂贵。为了解决这个问题,《Aavelets on graphs via spectral graph theory》 等人提出,gθ(Λ) 可以通过切比雪夫多项式 Tk(x) 的截断展开 truncated expansionK 阶)来很好地近似:

    gθ(Λ)k=0KθkTk(Λ~)

    其中:

    • Λ~=2λmaxΛIN 为缩放的特征值矩阵(使得缩放之后的取值在 [-1,+1] 之间),λmaxL 最大的特征值。

    • θ=(θ0,θ1,θ2,,θK)RK+1 为切比雪夫多项式系数。

    • Tk(x)k 阶切比雪夫多项式,它递归地定义为:

      T0(x)=1,T1(x)=xTk(x)=2xTk1(x)Tk2(x)

    回到我们对信号 x 关于滤波器 gθ 的卷积的定义,则我们有:

    gθxk=0KθkTk(L~)x

    其中:L~=2λmaxLIN 为缩放后的拉普拉斯矩阵。

    上式成立是因为我们很容易证明:(UΛU)k=UΛkU

    注意,这个表达式现在是 K 阶局部化 K-localized 的,因为它是拉普拉斯矩阵的 K 阶多项式,即它的结果仅依赖于距离中心节点最大 K step 的节点(即,K 阶邻域)。

    gθx的复杂度是 O(|E|) 的,即与边的数量呈线性关系。《Convolutional neural networks on graphs with fast localized spectral filtering》 使用这种 K-localized 卷积来定义图上的卷积神经网络。

4.1.2 Layer-wise 线性模型

  1. 可以通过堆叠多个 gθx 形式的卷积层从而构建基于图卷积的神经网络模型,每个 layer 后跟随一个 point-wise non-linearity 。现在,假设我们将 layer-wise 卷积操作限制为 K=1 ,即一个关于 L 的线性函数。

    通过这种方式,我们仍然可以通过堆叠多个这种 layer 来恢复 recover 丰富类型的卷积滤波器函数,但是我们不限于由诸如切比雪夫多项式给出的显式参数化。对于具有非常宽泛 widenode degree 分布的图(如社交网络、引文网络、知识图谱、以及许多现实世界其它的图数据集),我们直观地期望这样的模型可以缓解图的局部邻域结构local neighborhood structure的过拟合问题。此外,对于固定的计算预算computational budget,这种 layer-wise 线性公式允许我们构建更深的模型。众所周知,更深的模型在很多领域可以提高模型容量。

  2. GCN 的这个线性公式中,我们进一步近似 λmax=2 ,因为我们可以预期神经网络参数将在训练期间适应这种 scale 的变化。

    为什么选择 λmax 近似为 2 ?因为原始公式中有系数 2λmax

    在这些近似下,gθx 简化为:

    gθxθ0x+θ1(LIN)x=θ0xθ1D1/2AD1/2x

    它包含两个自由参数 free parameter θ0,θ1 。滤波器参数 θ0,θ1 可以在整个图上共享。这种形式的滤波器的连续应用 successive application 可以有效地对节点的 k 阶邻域进行卷积,其中 k 为神经网络模型中卷积层的数量。

    在实践中,进一步限制参数的数量从而解决过拟合问题、并最小化每层的操作数量(如矩阵乘法)可能是有益的。因此我们进一步简化,令 θ=θ0=θ1 ,现在只有一个参数:

    gθxθ(IN+D1/2AD1/2)x

    为什么要凑成这个形式?假设 θ=1βθ0=θ1 ,其中 β0 为超参数。则有:

    gθxθ(βIN+D1/2AD1/2)x

    则根据renormalization 技巧,我们有:A~=A+βIN 。则参数 β 平衡了邻域链接(由 A 刻画)和自链接(由 IN 刻画)之间的重要性。β 既可以作为模型参数来从数据中学习,也可以作为超参数由验证集调优得到。

    注意,IN+D1/2AD1/2 的特征值的取值范围是 [0, 2] 。因此,当在深度神经网络模型中重复应用该算子时,会导致数值不稳定和梯度爆炸/消失。为了缓解这个问题,我们引入以下 renormalization 技巧:

    IN+D1/2AD1/2D~1/2A~D~1/2A~=A+IN,D~i,i=jA~i,j

    我们可以将这个定义推广到具有 C 个输入通道的信号 XRN×C(即每个节点的 C 维特征向量)和 F 个滤波器(或 feature map):

    Z=D~1/2A~D~1/2XΘ

    其中:

    • ΘRC×F 为滤波器参数组成的矩阵。
    • ZRN×F 为卷积后的 signal matrix

    该卷积操作的计算复杂度为 O(|E|FC),因为 A~X 可以有效地实现为稀疏矩阵与稠密矩阵的乘积。

4.2 半监督节点分类

  1. 引入了一个简单而灵活的模型 f(X,A) 从而在图上进行有效的信息传播之后,我们可以回到半监督节点分类问题。如引言部分所介绍,我们可以通过在数据 X 和底层图结构的邻接矩阵 A 上调整我们的模型 f(X,A) 来放松某些假设,这些假设常用于 graph-based 半监督学习。我们希望该 setting 在邻接矩阵 A 包含数据 X 中不存在的信息的情况下特别强大,例如引文网络中文档之间的引用链接citation link、或者知识图谱中的关系relation 。整个模型是一个用于半监督学习的多层 GCN,如下图所示。

  2. 接下来我们考虑在具有对称的邻接矩阵 A 的图上用于半监督节点分类的两层 GCN 。我们首先在预处理步骤中计算 :

    A^=D~1/2A~D~1/2

    然后我们的前向计算采用简单的形式:

    Z=f(X,A)=softmax(A^relu(A^XΘ(0))Θ(1))

    其中:

    • Θ(0)RC×H 为具有 Hfeature map 隐层的 input-to-hidden 的权重矩阵,Θ(1)RH×Fhidden-to-output 的权重矩阵。
    • softmax 激活函数定义为:softmax(xi)=exp(xi)jexp(xj)

    对于半监督多类分类,我们评估所有标记节点的交叉熵:

    L=lYLf=1FYl,fln(Zl,f)

    其中:Yl 为具有 label 的节点索引集合。

    神经网络权重 Θ(0)Θ(1) 是通过梯度下降来训练的。在这项工作中,我们每次训练迭代使用完整数据集执行 batch gradient descent 。只要数据集能够适合 fit 内存,这就是一个可行的选择。当邻接矩阵 A 是稀疏的时候,内存需求是 O(|E|) ,即与边的数量呈线性关系。我们在训练过程中通过 dropout 引入随机性。我们将 mini-batch 随机梯度下降这个 memory-efficient 扩展留待未来工作。

  3. 在实践中,我们采用 TensorFlow 使用 sparse-dense 矩阵乘法来高效地基于 GPU 实现 Z=f(X,A) ,其计算复杂度为 O(|E|CHF) ,即与边的数量呈线性关系。

4.3 和 WL 算法的关系

4.3.1 WL 算法

  1. 理想情况下图神经网络模型应该能够学到图中节点的representation,该representation 必须能够同时考虑图的结构和节点的特征。

    一维 Weisfeiler-Lehman:WL-1 算法提供了一个研究框架。给定图以及初始节点标签,该框架可以对节点标签进行唯一分配unique assignment

    注意,这里的“标签”不仅包括节点上的监督 label 信号,也包括节点上的属性信息。

  2. WL-1 算法:令 hi(t) 为节点 vi 在第 t 轮分配的标签,Ni 为节点 vi 的邻域节点集合,hash() 为一个哈希函数。

    • 输入:初始节点标签 {h1(0),h2(0),,hN(0)}

    • 输出:最终节点标签 {h1(T),h2(T),,hN(T)}

    • 算法步骤:

      • 初始化 t=0

      • 迭代直到 t=T 或者节点的标签到达稳定状态。迭代步骤为:

        • 循环遍历 viV,执行:

          hi(t+1)=hash(jNihj(t))
        • t=t+1

      • 返回每个节点的标签。

  3. 如果我们采用一个神经网络来代替 hash 函数,同时假设 hi 为向量,则有:

    hi(l+1)=σ(jNi1ci,jΘ(l)hj(l))

    其中:hi(l) 为第 l 层神经网络中节点 i 的激活向量 vector of activationsΘ(l) 为第 l 层的权重矩阵;σ() 为非线性激活函数。ci,j 为针对边 (vi,vj) 的正则化常数。

    我们定义 ci,j=DiDj ,其中 Di=|Ni| 为节点vi 的度degree,则上式等价于我们 GCN 模型的传播规则。因此我们可以将 GCN 模型解释为图上 WL-1 算法的微分化differentiable的和参数化parameterized 的推广。

4.3.2 随机权重的 node embedding

  1. 通过与 WL-1 算法的类比,我们可以认为:即使是未经训练的、具有随机权重的 GCN 模型也可以充当图中节点的一个强大的特征提取器。如:考虑下面的一个三层GCN 模型:

    Z=tanh(A^tanh(A^tanh(A^XΘ(0))Θ(1))Θ(2))

    其中权重矩阵是通过 Xavier 初始化的:Θ(k)Uniform[6hk+hk+1,6hk+hk+1]

    我们将这个三层 GCN 模型应用于 Zacharykarate club network ,该网络包含34个节点、154 条边。每个节点都属于一个类别,一共四种类别。节点的类别是通过 modularity-based 聚类算法进行标注的。如下图所示,颜色表示节点类别。

    我们令 X=IN,即每个节点除了节点ID 之外不包含任何其它特征。另外节点的ID 是随机分配的,也不包含任何信息。我们选择隐层的维度为4、输出层的维度为2 ,因此输出层的输出 Y 能够直接视为二维数据点来可视化。

    下图给出了未经训练的 GCN 模型(即前向传播)获得的node embedding,这些结果与从DeepWalk 获得的node embedding 效果相当,而DeepWalk 使用了代价更高的无监督训练过程。

    因此可以将随机初始化的 GCN 作为 graph embedding 特征抽取器来使用,而且还不用训练。

4.3.3 半监督 node embedding

  1. karate club network数据集上,我们观察半监督分类任务期间 node embedding 如何变化。这种可视化效果提供了关于 GCN 模型如何利用图结构从而学到对于分类任务有益的node embedding

    训练配置:

    • 在上述三层GCN 之后添加一个 softmax 输出层,输出节点属于各类别的概率。
    • 每个类别仅使用一个带标签的节点进行训练,一共有四个带标签的节点。
    • 使用Adam 优化器,初始化学习率为 0.01。采用交叉熵损失函数。迭代 300step

    下图给出多轮迭代中,node embedding 的演变。图中的灰色直线表示图的边,高亮节点(灰色轮廓)表示标记节点。可以看到:模型最终基于图结构以及最少的监督信息,成功线性地分离出了簇团。

4.4 实验

  1. 我们在多个任务中验证模型性能:在引文网络中进行半监督文档分类、在从知识图谱抽取的二部图中进行半监督实体分类。然后我们评估图的各种传播模型,并对随机图的rum-time进行分析。

  2. 数据集:

    • 引文网络数据集:我们考虑 Citeseer,Cora,Pubmed 三个引文网络数据集,每个数据集包含以文档的稀疏 bag-of-word: BOW 特征向量作为节点,文档之间的引文链接作为边。我们将引文链接视为无向边,并构造一个二元的对称邻接矩阵 A

      每个文档都有一个类别标签,每个类别仅包含 20个标记节点作为训练样本。

    • NELL 数据集:该数据集是从《Toward an architecture for never-ending language learning》 引入的知识图谱中抽取的数据集。知识图谱是一组采用有向的、带标记的边链接的实体。我们为每个实体对 (e1,r,e2) 分配节点 {e1,e2,r1,r2} ,以及边 (e1,r1)(e2,r2) 。其中, r1,r2 是知识图谱链接 r 得到的两个“拷贝”的关系节点relation node,它们之间不存在边。最终我们得到 55864 个关系节点和 9891 个实体节点。

      实体节点entity node 通过稀疏的特征向量来描述。我们为每个关系节点分配唯一的 one-hot 向量从而扩展 NELL 的实体特征向量,从而使得每个节点的特征向量为 61278 维稀疏向量。

      对于节点 ij ,如果它们之间存在一条边或者多条边,则设置 Ai,j=1 从而构建一个二元对称邻接矩阵。

      在节点的半监督分类任务中,我们为每个类别标记一个节点作为训练集,因此属于非常极端的情况。

    • 随机图:我们生成各种规模的随机Graph 数据集,从而评估每个epoch 的训练时间。

      对于具有 N 个节点的图,我们创建一个随机图:

      • 随机均匀分配 2N 条边。
      • X=IN ,即每个节点除了其id 之外没有任何特征,且节点id 是随机分配的。
      • 每个节点标签为 yi=1

    各数据集的整体统计如下表所示。标记率label rate:表示监督的标记节点数量占总的节点数量的比例。

  3. 模型设置:除非另有说明,否则我们的GCN 模型就是前面描述的两层GCN 模型。

    • 我们将数据集拆分为labled 数据、unlabled 数据、测试数据。其中我们在labled 数据和 unlabled 数据上学习,在测试数据上测试。我们选择测试数据包含 1000 个节点。

      注意,训练期间模型能够“看到”所有节点,但是无法知道测试节点的 label 信息。

      另外我们还使用额外的 500 个带标签的节点作为验证集,用于超参数优化。这些超参数包括:所有层的 dropout rate 、第一个 GCN 层的 L2 正则化系数、隐层的维度。

      注意:验证集的标签不用于训练。

    • 对于引文网络数据集,我们仅在Cora 数据集上优化超参数,并对CiteseerPubmed 数据集采用相同的超参数。

    • 所有模型都使用 Adam 优化器,初始化学习率为 0.01

    • 所有模型都使用早停策略,早停的 epoch 窗口为 10。即:如果连续 10epoch 的验证损失没有下降,则停止继续训练。所有模型最多训练 200epoch

    • 我们使用 Xavier 初始化策略:Θ(k)Uniform[6hk+hk+1,6hk+hk+1]

    • 我们对输入的特征向量进行按行的归一化 row-normalize (即每个样本输入特征向量归一化为范数为 1 )。

    • 在随机图数据集上,我们选择隐层维度为 32,并省略正则化:既不进行dropout,也不进行 L2 正则化。

  4. Baseline 模型:我们比较了《Revisiting semi-supervised learning with graph embeddings》 相同的 baseline 方法,即:标签传播算法label propagation: LP、半监督embedding 算法 semi-supervised embedding: SemiEmb 、流形正则化算法manifold regularization: MainReg 、基于skip-gram 的图嵌入算法DeepWalk 。我们忽略了 TSVM 算法,因为它无法扩展到类别数很大的数据集。

    我们进一步与 《Link-based classification》 中提出的iterative classification algorithm: ICA 进行比较。我们还还比较了Planetoid 算法, 我们总是选择他们表现最好的模型变体(transductive vs inductive )作为 baseline

  5. 模型比较结果如下表所示。对于ICA ,我们随机运行 100 次、每次以随机的节点顺序训练得到的平均准确率。 所有其它基准模型的结果均来自于 Planetoid 论文,Planetoid* 表示论文中提出的针对每个数据集的最佳变体。

    我们在与《Revisiting semi-supervised learning with graph embeddings》 相同的数据集拆分上训练和测试了我们的模型,并报告随机权重初始化的 100 次的平均准确率(括号中为平均训练时间)。我们为 Citeseer,Cora,Pubmed 使用的超参数为:dropout rate = 0.5L2 正则化系数为 5×104、隐层的维度为16 ;为 NELL 使用的超参数为:dropout rate = 0.1L2 正则化系数为 1×105,隐层维度为 64

    最后我们报告了10 次随机拆分数据集,每次拆分的labled 数据、unlabled 数据、测试数据比例与之前相同,然后给出GCN 的平均准确率和标准差(以百分比表示),记作 GCN(rand. splits)

    前面七行是针对同一种数据集拆分,最后一行是不同的数据集拆分。

  6. 我们在引文网络数据集上比较了我们提出的逐层传播模型的不同变体,实验配置和之前相同,结果如下表所示。

    我们原始的 GCN 模型应用了 renormalization 技巧(粗体),即:

    I+D1/2AD1/2D~1/2A~D~1/2

    其它的GCN 变体采用Propagation model 字段对应的传播模型。

    • 对于每一种变体模型,我们给出执行100次、每次都是随机权重初始化的平均分类准确率。
    • 对于每层有多个权重 Θk 的情况下(如 Chebyshev filter, 1st-order model),我们对第一层的所有权重执行 L2 正则化。

  7. 我们在随机图上报告了 100epoch 的每个 epoch 平均训练时间。我们在 Tensorflow 上比较了 CPUGPU 实现的结果,其中 * 表示内存溢出错误Out Of Memory Error

  8. 最后我们考虑模型的深度对于性能的影响。这里我们报告对 Cora,Citeseer,Pubmed 数据集进行5 折交叉验证的结果。

    除了标准的 GCN 模型之外,我们还报告了模型的一种变体:隐层之间使用了残差连接:

    H(l+1)=σ(D~1/2A~D~1/2H(l)Θ(l))+H(l)

    5 折交叉验证的每个拆分中,我们训练400epoch 并且不使用早停策略。我们使用Adam 优化器,初始学习率为 0.01。我们对第一层和最后一层使用dropout rate = 0.5 ,第一层权重执行正则化系数为 5×104L2 正则化。GCN 的隐层维度选择为 16

    结果如下图所示,其中标记点表示5 折交叉验证的平均准确率,阴影部分表示方差。

    可以看到:

    • 当使用两层或三层模型时,GCN 可以获得最佳效果。
    • 当模型的深度超过七层时,如果不使用残差连接则训练会变得非常困难,表现为训练准确率骤降。因为每个节点的有效上下文会随着层深的增加而扩大。
    • 当模型深度增加时,模型的参数数量也会增加,此时模型的过拟合可能会成为问题。

4.5 讨论

  1. 半监督模型:在这里展示的实验中,我们的半监督节点分类方法明显优于最近的相关方法。

    • 基于图拉普拉斯正则化的方法很可能受到限制,因为它们假设边仅仅编码了节点的相似性。
    • 另一方面,基于 skip-gram 的方法受限于它们难以优化的 multi-step pipeline 这一事实。
    • 我们提出的模型可以客服这两个限制,同时在效率(以 wall-clock time 衡量)方面仍然优于相关方法。与仅聚合label信息的 ICA 等方法相比,在每一层中从相邻节点传播feature信息提高了分类性能。
    • 我们进一步证明,与使用切比雪夫多项式的朴素的一阶模型 θ0xθ1D1/2AD1/2x 或更高阶的图卷积模型 k=0KθkTk(L~)x 相比,所提出的重整化的传播模型等式 D~1/2A~D~1/2XΘ 在许多数据集上提供了更高的效率(更少的参数和操作,如乘法操作或加法操作)以及更好的预测性能。
  2. 局限性和未来方向:我们的 Semi-GCN 模型存在一些局限,我们计划在将来克服这些局限性。

    • 内存需求局限性:在full-batch 梯度下降算法中,内存需求随着数据集的大小线性增长。

      • 一种解决方式是:采用 CPU 训练来代替 GPU 训练。这种方式我们在实验中得到验证。

      • 另一种解决方式是:采用 mini-batch 随机梯度下降算法。

        但是mini-batch 随机梯度下降算法必须考虑 GCN 模型的层数。因为对于一个 K 层的 GCN 模型,其 K 阶邻域必须全部存储在内存中。对于节点数量庞大、节点链接很密集的图,这可能需要进一步的优化。

    • 边类型的局限性:目前我们的模型不支持边的特征,也不支持有向图。

      通过NELL 数据集的实验结果表明:可以通过将原始的有向图转化为无向二部图来处理有向图以及边的特征。这通过额外的、代表原始图中的边的节点来实现。

    • 假设的局限性:我们的模型有两个基本假设:

      • 假设 KGCN 依赖于 K 阶邻居,即模型的局部性locality。

      • 假设自链接和邻居链接同样重要。

        在某些数据集中,我们可以引入一个折衷trade-offA~=A+βIN 。其中参数 β

        平衡了自链接和邻居链接的重要性,它可以通过梯度下降来学习(也可以作为超参数来调优)。

五、神经图指纹[2015]

  1. 在材料设计领域的最新工作已经将神经网络用于材料筛选,其任务是通过学习样本来预测新型分子的特性。预测分子特性通常需要将分子图作为输入,然后构建模型来预测。在分子图中节点表示原子,边表示化学键。这个任务的一个难点在于:输入的分子图可以具有任意大小和任意形状,而大多数机器学习模型只能够处理固定尺寸、固定形状的输入。目前state of the art的方法是通过hash 函数对分子图进行预处理从而生成固定尺寸的指纹向量fingerprint vector,该指纹向量作为分子的特征灌入后续的模型中。在训练期间,分子指纹molecular fingerprint 被视为固定fixed的(即,固定指纹)。

    论文《Convolutional Networks on Graphs for Learning Molecular Fingerprints》 提出了神经图指纹 neural graph fingerprint模型,该模型用一个可微的神经网络代替了分子指纹部分。神经网络以原始的分子图作为输入,采用卷积层来抽取特征,然后通过全局池化来结合所有原子的特征。这种方式使得我们可以端到端的进行分子预测。

    相比较传统的固定指纹的方式,神经图指纹具有以下优势:

    • 预测能力强:通过实验比较可以发现,神经图指纹比传统的固定指纹能够提供更好的预测能力。

    • 模型简洁:为了对所有可能的子结构进行编码,固定指纹的必须维度非常高。而神经图指纹只需要对相关特征进行编码,模型的维度相对而言低得多,这降低了下游的计算量和正则化需求。

    • 可解释性:传统的固定指纹对每个片段fragment 进行不同的编码,片段之间没有相似的概念。在神经图指纹中,每个特征都可以由相似但是不同的分子片段激活,这使得特征的representation 更具有意义。

      即,相似的片段具有相似的特征,相似的特征也代表了相似的片段。

  2. 相关工作:这项工作在精神上类似于神经图灵机 neural Turing machine: NTM,从某种意义上讲,我们采用现有的离散计算架构,并使每个部分可微从而进行 gradient-based 的优化。

    • 卷积神经网络:卷积神经网络已被用于对图像、语音、时间序列进行建模。然而,标准卷积架构使用固定的、网格的 graph数据结构,这使得它很难应用于具有不同尺寸或结构的对象(如分子)。最近 《A convolutional neural network for modelling sentences》 开发了一种卷积神经网络架构,可用于对不同长度的句子进行建模。

    • 神经指纹neural fingerprint:最密切相关的工作是 《Deep architectures and deep learning in chemoinformatics: the prediction of aqueous solubility for drug-like molecules》 ,它构建了一个具有 graph-valued 输入的神经网络。它的方法是删除所有的环 cycle 并将graph 构建为 tree 结构,选择一个原子作为 root,然后从叶节点到 root 节点运行 RNN 从而产生固定尺寸的 representation 。因为具有 N 个节点的 graphN 个可能的 root,所有需要构建 N 个可能的 graph 。最终的 descriptor 是所有不同的图计算的 representationsum 。这种方法的计算成本为 O(N2F2),其中 N 为原子数量,F 为特征向量维度,因此不太适合大分子。

    • 定量构效关系quantitative structure-activity relationship: QSAR的神经网络:预测分子性质的现代标准是结合圆形指纹circular fingerprint以及全连接神经网络(或者其它回归方法)。

      • 《Multi-task neural networks for QSAR predictions》 使用圆形指纹作为神经网络、高斯过程、随机森林的输入。
      • 《Massively multitask networks for drug discovery》 使用圆形指纹(深度为 2)作为多任务神经网络的输入,并表明多任务有助于提高性能。
    • fixed graph 上的神经网络:《Spectral networks and locally connected networks on graphs》 在图结构固定的情况下在图上引入卷积网络,每个训练样本的不同之处仅在于:在同一个图的不同节点具有不同的特征。相比之下,我们的网络解决了每个训练样本都是不同图的情况。

    • input-dependent graph 上的神经网络:

      • 《The graph neural network model》 提出了一种用于图的、具有一个有趣训练过程的神经网络模型。前向传播包括运行消息传递方案message-passing scheme从而达到平衡,这一事实(即,不动点)允许在不存储整个前向计算的情况下计算反向梯度。他们将他们的模型应用于预测分子化合物的诱变性、以及网页排名。
      • 《Neural network for graphs: A contextual constructive approach》 还提出了一种用于图的神经网络模型。该模型具有一个 learning scheme ,其内循环优化的不是训练损失,而是每个新提出newly-proposed 的向量与训练误差残差之间的相关性。他们将他们的模型应用于 150 种分子化合物的沸点数据集上。

      我们的论文建立在这些思想的基础上,具有以下区别:我们的方法用简单的、gradient-based 的优化代替了复杂的训练算法,推广了现有的圆形指纹计算,并将这些神经网络应用于现代的 QSAR pipeline 上下文中(这些 pipeline 在指纹特征之上使用神经网络来增加模型容量)。

    • 被展开unrolled的推断算法:《Deep unfolding: Model-based inspiration of novel deep architectures》 和其他人已经注意到迭代式的推断过程有时类似于 RNN 的前馈计算。这些想法的一个自然扩展是参数化每个 inference step ,并训练神经网络从而仅使用少量迭代来近似地 match 精确推断的输出。从这个角度来看,神经指纹类似于原始图上被展开的消息传递算法。

5.1 模型

5.1.1 圆形指纹算法

  1. 分子指纹molecular fingerprint的最新技术是扩展连接性圆形指纹 extended-connectivity circular fingerprints: ECFPECFP 是对Morgan 算法的改进,旨在以无关于原子标记顺序atom-relabling的方式来识别分子中存在哪些子结构substructure

    ECFP 通过对前一层邻域的特征进行拼接,然后采用一个固定的哈希函数来抽取当前层的特征。哈希函数的结果视为整数索引,然后对节点 feature vector 在索引对应位置处填写 1 (即,登记某个特定的子结构是否出现) 。

    不考虑hash 冲突,则指纹向量的每个索引都代表一个特定的子结构。索引表示的子结构的范围取决于网络深度,因此网络的层数也被称为指纹的“半径”。

    ECFP 类似于卷积网络,因为它们都在局部采用了相同的操作,并且在全局池化中聚合信息。

  2. ECFP 的计算框架如下图所示:首先通过分子结构构建分子图,其中节点表示原子、边表示化学键。在每一层,信息在邻域之间流动。图的每个节点在一个固定的指纹向量中占据一个bit

    其中这只是一个简单的示意图,实际上每一层都可以写入指纹向量。

    指纹向量 f 仅记录了每个子结构是否出现,但是无法记录这些子结构出现的频次。

  3. 圆形指纹算法:

    • 输入:

      • 分子结构
      • 半径参数 R
      • 指纹向量长度 S
    • 输出:指纹向量 f

    • 算法步骤:

      • 初始化指纹向量:

        f=(0,0,,0S)
      • 遍历每个原子 a ,获取每个原子的特征 ra(0)=g(a)

      • 遍历每一层。对于第 l,1lR 层,迭代步骤为:

        • 遍历分子中的每个原子 a ,对原子 a 计算:

          • 获取节点 a 邻域原子的特征:r1(l1),,rN(l1) ,其中 N 为邻域原子数量。
          • 拼接节点 a 及其邻域原子特征:v(l)=[ra(l1),r1(l1),,rN(l1)]
          • 执行哈希函数得到节点 a 的当前特征:ra(l)=hash(v(l))
          • 执行索引函数:i=mod(ra(l),S)
          • 登记索引:fi=1
      • 最终返回 f

5.1.2 分子指纹GCN算法

  1. 我们选择类似于现有ECFP 的神经网络架构,用可微函数来代替 ECFP 中的每个离散操作:

    • 哈希操作Hashing:在ECFP 算法中,应用于每一层的哈希函数的目的是为了组合关于每个原子及其邻域子结构的信息。这确保了 fragment 中的任何修改,无论多么小,都将导致激活不同的指纹索引 fingerprint index

      我们利用单层神经网络代替哈希运算。当分子的局部结构发生微小的变化时(神经网络是可微的,因此也是平滑的),这种平滑函数可以得到相似的激活值。

    • 索引操作Indexing:在 ECFP 算法中,每一层采用索引操作的目的是将每个原子的特征向量组合成整个分子指纹。每个原子在其特征向量的哈希值确定的索引处,将指纹向量的单个比特位设置为1,每个原子对应一个1 。这种操作类似于池化,它可以将任意大小的graph 转换为固定大小的向量。当分子图比较小而指纹长度很大时,最终得到的指纹向量非常稀疏。

      我们使用softmax 操作视作索引操作的一个可微的近似。本质上这是要求将每个原子划分到一组类别的某个类别中。所有原子的这些类别向量的sum 得到最终的指纹向量。其操作也类似于卷积神经网络中的池化操作。

    • 规范化Canonicalization:无论原子的邻域原子的顺序如何变化,圆形指纹是不变的。实现这种不变性的一种方式是:在算法过程中,根据相邻原子的特征和键特征对相邻原子进行排序。我们尝试了这种排序方案,并且还对局部邻域的所有可能排列应用了局部特征变换。

      另外,一种替代方案是应用排序不变函数permutation-invariant, 如求和。为了简单和可扩展性,我们选择直接求和。

  2. 神经图指纹算法:

    • 输入:

      • 分子结构

      • 半径参数 R

      • 指纹长度 S

      • 隐层参数 H11,,HR5, 输出层参数 W1,,WR

        对不同的键数量,采用不同的隐层参数 1,2,3,4,5 (最多五个键)。

        即,不同邻域大小使用不同的隐层参数 H

    • 输出:指纹向量 f

    • 算法步骤:

      • 初始化指纹向量:

        f=(0,0,,0S)
      • 遍历每个原子 a ,获取每个原子的特征 ra=g(a)

      • 遍历每一层。对于第 l,1lR 层,迭代步骤为:

        • 遍历分子中的每个原子 a ,对原子 a 计算:

          • 获取节点 a 邻域原子的特征:r1(l1),,rN(l1),其中 N 为邻域原子数量。
          • 池化节点 a 及其邻域 Na 的原子的特征:v(l)=ra(l1)+i=1Nri(l1)
          • 执行哈希函数:ra(l)=σ(HlNv(l))N 为邻域节点数量。
          • 执行索引函数:i=softmax(Wlra(l))
          • 登记索引:f=f+i
      • 最终返回 f

  3. 设指纹向量的长度为 S ,节点特征向量的维度为 F ,则 Wl 的参数数量为 O(F×S)HlN 的参数数量为 O(F×F)

  4. 上述 ECFP 算法和神经图指纹算法将每一层计算得到的指纹叠加到全局指纹向量中。我们也可以针对每一层计算得到一个层级指纹向量,然后将它们进行拼接,而不是相加。以神经图指纹算法为例:

    • 在第 l 层计算索引为:i(l)=softmax(Wlra(l)) 。然后登记索引:f(l)=f(l)+i(l)
    • 最终将所有层的索引拼接:f=[f(1),f(2),,f(R)]
  5. ECFP 圆形指纹可以解释为具有较大随机权重的神经图指纹算法的特殊情况。

    • 在较大的输入权重情况下,当 σ()tanh() 时,该激活函数接近阶跃函数。而级联的阶跃函数类似于哈希函数。
    • 在较大的输入权重情况下,softmax 函数接近一个one-hotargmax 操作,这类似于索引操作。

5.1.3 限制

  1. 计算代价:神经图指纹在原子数、网络深度方面与圆形指纹具有相同的渐进复杂度,但是由于在每一步都需要通过矩阵乘法来执行特征变换,因此还有附加的计算复杂度。

    假设分子的特征向量维度为 F ,指纹向量长度为 S ,网络深度为 R ,原子数量为 N ,则神经图指纹的计算复杂度为 O(RNFS+RNF2)

    在实践中,在圆形指纹上训练一个单隐层的神经网络只需要几分钟,而对神经图指纹以及指纹顶部的单隐层神经网络需要一个小时左右。

  2. 每层的计算限制:从网络的一层到下一层之间应该采取什么结构?本文采用最简单的单层神经网络,实际上也可以采用多层网络或者 LSTM 结构,这些复杂的结构可能效果更好。

  3. 图上信息传播的限制:图上信息传播的能力受到神经网络深度的限制。对于一些规模较小的图如小分子的图,这可能没有问题;对于一些大分子图, 这可能受到限制。最坏情况下,可能需要深度为 N2 的网络来处理规模(以原子数来衡量)为 N 的图。

    为了缓解该问题,《Spectral networks and locally connected networks on graphs》 提出了层次聚类,它只需要 logN 层就可以在图上传播信息。这种方式需要解析分子为树结构,可以参考NLP 领域的相关技术。

  4. 无法区分立体异构体stereoisomers :神经图指纹需要特殊处理来区分立体异构体,包括enantomers 对映异构体(分子的镜像)、cis/trans isomers 顺/反异构体(绕双键旋转)。大多数圆形指纹的实现方案都可以区分这些异构体。

5.2 实验

5.2.1 随机权重

  1. 分子指纹的一个用途是计算分子之间的距离。这里我们检查基于 ECFP 的分子距离是否类似于基于随机的神经图指纹的分子距离。

    我们选择指纹向量的长度为 2048,并使用Jaccard 相似度来计算两个分子的指纹向量之间的距离:

    distance(x,y)=1imin(xi,yi)imax(xi,yi)

    我们的数据集为溶解度数据集,下图为使用圆形指纹和神经图指纹的成对距离散点图,其相关系数为 r=0.823

    图中每个点代表:相同的一对分子,采用圆形指纹计算到的分子距离、采用神经图指纹计算得到的分子距离,其中神经图指纹模型采用大的随机权重。距离为1.0 代表两个分子的指纹(圆形指纹或神经图指纹)没有任何重叠,距离为0.0 代表两个分子的指纹圆形指纹或神经图指纹)完全重叠。

  2. 我们将圆形指纹、随机神经图指纹接入一个线性回归层,从而比较二者的预测性能。

    • 圆形指纹、大的随机权重的随机神经图指纹,二者的曲线都有类似的轨迹。这表明:通过大的随机权重初始化的随机神经图指纹和圆形指纹类似。

    • 较小随机权重初始化的随机神经图指纹,其曲线与前两者不同,并且性能更好。

      这表明:即使是未经训练的神经网络,它相对平滑的激活值也能够有助于模型的泛化。

5.2.2 可解释性

  1. 圆形指纹向量的特征(即某一组bit 的组合)只能够通过单层的单个fragment 激活(偶然发生的哈希碰撞除外),神经图指纹向量的特征可以通过相同结构的不同变种来激活,从而更加简洁和可解释。

    为证明神经图指纹是可解释的,我们展示了激活指纹向量中每个特征对应的子结构类别。

    • 溶解性特征:我们将神经图指纹模型作为预测溶解度的线性模型的输入来一起训练。下图展示了对应的fragment(蓝色),这些fragment可以最大程度的激活神经图指纹向量中最有预测能力的特征。

      • 上半图:激活的指纹向量的特征与溶解性具有正向的预测关系,这些特征大多数被包含亲水性R-OH 基团(溶解度的标准指标)的fragment所激活。
      • 下半图:激活的指纹向量的特征与溶解性具有负向的预测关系(即:不溶解性),这些特征大多数被非极性的重复环结构所激活。

    • 毒性特征:我们用相同的架构来预测分子毒性。下图展示了对应的fragment(红色),这些fragment可以最大程度的激活神经图指纹向量中最有预测能力的特征。

      • 上半图:激活的指纹向量的特征与毒性具有正向的预测关系,这些特征大多数被包含芳环相连的硫原子基团的fragment所激活。
      • 下半图:激活的指纹向量的特征与毒性具有正向的预测关系,这些特征大多数被稠合的芳环(也被称作多环芳烃,一种著名的致癌物)所激活。

5.2.3 模型比较

  1. 数据集:我们在多个数据集上比较圆形指纹和神经图指纹的性能:

    • 溶解度数据集:包含 1144 个分子,及其溶解度标记。
    • 药物功效数据集:包含 10000 个分子,及其对恶行疟原虫(一种引发疟疾的寄生虫)的功效。
    • 有机光伏效率数据集:哈佛清洁能源项目使用昂贵的 DFT 模拟来估算有机分子的光伏效率,我们从该数据集中使用 20000 个分子作为数据集。
  2. 配置:我们的 pipeline 将每个分子编码的 SMILES 字符串作为输入,然后使用 RDKit 将其转换为graph 。我们也使用 RDKit 生成的扩展圆形指纹作为 baseline 。这个过程中,氢原子被隐式处理。

    我们的 ECFP 和神经网络中用到的特征包括:

    • 原子特征:原子元素类型的 one-hot、原子的度degree、连接氢原子的数量、隐含价implicit valence、极性指示aromaticity indicator
    • 键特征:是否单键、是否双键、是否三键、是否芳族键、键是否共轭、键是否为环的一部分。
  3. 我们采用 Adam 优化算法,训练步数为 10000batch size = 100 。我们还使用了 batch normalization 技术。

    我们还对神经网络进行了 tanhrelu 激活函数的对比实验,我们发现relu 在验证集上一直保持优势并且优势不大。

    我们还对神经网络进行了 drop-connect 实验,它是 dropout 的一个变种,其中权重被随机设置为零(而不是隐单元被随机设置为零)。我们发现这会导致更差的验证误差。

  4. 我们使用 Random-Search 来优化以下超参数:学习率的对数 、初始权重的对数、L2 正则化系数的对数、指纹向量长度 S 、指纹深度 R (最深六层)、全连接网络层的维度、神经图指纹的隐层维度。

    所有超参数使用 k 折交叉验证来优化,其中每一折随机执行50 次。

  5. 我们比较了两种情况下圆形指纹和神经图指纹的性能:

    • 第一种情况:一个线性层使用指纹向量作为输入来执行预测,即 linear layer
    • 第二种情况:一个单隐层的神经网络使用指纹向量作为输入来执行预测,即 neural net

    结果如下图所示。可以看到在所有实验中,神经图指纹均达到或者超过圆形指纹的性能,并且使用神经网络层的方式(neural net )超过了线性层的方式(linear layer)。

六、GGS-NN[2016]

  1. 许多实际应用都建立在图结构数据graph-structured data 之上,因此我们经常希望执行以 graph 为输入的机器学习任务。解决该问题的标准方法包括:设计关于输入图的自定义的特征工程feature engineeringgraph kernel、以及根据图上的随机游走来定义 graph feature 的方法。与论文《Gated Graph Sequence Neural Networks》的目标更密切相关的是在图上学习特征的方法,包括图神经网络 Graph Neural Networks、谱网络 spectral networks、以及最近的用于学习化学分子 graph representation 来执行分类的 graph fingerprint 的工作。

    论文 《Gated Graph Sequence Neural Networks》的主要贡献是输出序列的图神经网络的扩展。之前的用于图结构输入的 feature learning 的工作主要聚焦于在产生单一输出的模型上,例如 graph-level 分类,但是 graph input 的许多问题都需要输出序列。例如,图上的 path、具有所需属性的 graph nodes 的枚举。作者觉得现有的 graph feature learning 工作不适合这个问题。论文的 motivating application 来自于程序验证 program verification ,该应用需要输出逻辑公式,作者将其表述为序列输出sequential output问题。

    论文的第二个贡献是:强调图神经网络(以及作者在这里开发的进一步扩展)是一类广泛有用的神经网络模型,适用于当前该领域面临的很多问题。

    图上的 feature learning 有两种 setting

    • 学习输入图input graphrepresentation
    • 在产生一系列输出的过程中学习内部状态internal staterepresentation

    在这里,第一种 setting 是通过之前关于图神经网络的工作来实现的。作者对该框架进行了一些小的修改,包括将其更改为使用围绕 RNN 的现代实践。

    第二种 setting 很重要,因为我们需要图结构问题的、不仅仅是单个分类的输出。在这些情况下,挑战在于如何学习图上的特征,从而编码已经产生的部分输出序列(例如,如果是输出 path,那么就是到目前为止的 path)、以及仍然需要产生的部分输出序列(例如,剩余的 path)。论文将展示 GNN 框架如何适配这些 setting,从而产生一种新的、graph-based 的神经网络模型,作者称之为 Gated Graph Sequence Neural Networks: GGS-NN

    论文在 bAbI 任务、和阐明模型能力的 graph algorithm learning 任务的实验中说明这个通用模型的各个方面。然后作者提出一个 application 来验证计算机程序。当试图证明诸如内存安全(即,程序中不存在空指针解引用)等属性时,一个核心问题是找到程序中使用的数据结构的数学描述。遵循 《Learning to decipher the heap for program verification》 ,作者将其表述为一个机器学习问题,其中论文将学习从一组输入图(代表内存状态)映射到已实例化的数据结构的逻辑描述 logical description《Learning to decipher the heap for program verification》 依赖于大量的手工设计的特征,而论文表明该系统可以用 GGs-NN 来替代,而不会降低准确性。

  2. 相关工作:

    • 最密切相关的工作是 GNN,我们在文中详细讨论。另一个密切相关的模型是 《Neural network for graphs: A contextual constructive approach》,它与 GNN 的主要区别在于输出模型。GNN 已在多个领域得到应用,但它似乎并未在 ICLR 社区中广泛使用。我们在这里的部分目标是将 GNN 宣传为一种有用的、且有趣的神经网络变体。

    • 我们从 GNNGG-NN 的适配,与 《Parameter learning with truncated message-passing》《Empirical risk minimization of graphical model parameters given approximate inference, decoding, and model structure》 在结构化预测 setting 中的工作之间可以进行类比。信念传播 belief propagation (必须运行到接近收敛才能获得良好的梯度)被替代为截断的信念传播更新truncated belief propagation updates ,然后对模型进行训练使得 truncated iteration 在固定数量的迭代之后产生良好的结果。类似地,RNN 扩展到 Tree LSTM ,类似于我们在 GG-NN 中使用 GRU 更新而不是标准的 GNN 递归,目的是改善信息在图结构中的长期传播 long-term propagation

    • 本文所表达的将特定问题的神经网络组装assembling成学习组件 learned components 的思想具有悠久的历史,至少可以追溯到 1988 年的《Representing part-whole hierarchies in connectionist networks》 关于根据一个 family tree 结构来组装神经网络的工作,以便预测人与人之间的关系。类似的思想出现在 《Neural methods for non-standard data》《From machine learning to machine reasoning》 中。

    • graph kernel 可用于具有图结构输入的各种 kernel-based learning 任务,但是我们没有发现关于学习 kernel 并且输出序列的工作。《Deepwalk: Online learning of social representations 》 通过在图上进行随机游走将图转换为序列,然后使用 sequence-based 方法来学习 node embedding《Supervised neural networks for the classification of structures》 将图映射到 graph vector,然后使用一个 output neural network 进行分类。

      有几种模型利用图结构上 node representation 的类似的propagation

      • 《Spectral networks and locally connected networks on graphs》 将卷积推广到图结构。他们的工作与 GNN 之间的差异类似于卷积网络和循环网络之间的差异。
      • 《Convolutional networks on graphs for learning molecular fingerprints》 也考虑了对图的类卷积convolutional like 操作,构建了一个成功的 graph feature 的可学习learnable、可微differentiable的变体。
      • 《Deep architectures and deep learning in chemoinformatics: the prediction of aqueous solubility for drug-like molecules》 将任意无向图转换为许多具有不同方向的不同 DAG ,然后将 node representation 向内传播到每个 root ,并训练许多模型的一个 ensemble

      在上述所有内容中,重点是 one-step 问题。

    • GNN 和我们的扩展具有许多与指针网络 pointer network《Pointer networks》)相同的理想特性。当使用节点选择的输出层node selection output layer时,可以选择输入中的节点作为输出。有两个主要区别:

      • 首先,在 GNN 中,图结构是显式的,这使得模型不太通用,但可能提供更强的泛化能力。
      • 其次,指针网络要求每个节点都具有属性(如,空间中的位置),而 GNN 可以表达仅由它们在图中的位置所定义的节点,这使得 GNN 更加通用。
    • GGS-NN 在两个方面与 soft alignment and attentional models 相关:

      • 首先,hG=tanh(vVσ(g1(hv(T),xv))tanh(g2(hv(T),xv))) 中的 graph representation 使用上下文将注意力集中在哪些节点对当前决策很重要。
      • 其次,在程序验证示例program verification example 中的节点注解 node annotation 会跟踪到目前为止已经解释了哪些节点,这提供了一种明确的机制来确保输入中的每个节点都已在producing an output 的序列中使用。

6.1 模型

6.1.1 GNN 回顾

  1. GNN 是根据图结构 G=(V,E) 定义的通用神经网络架构,V 为节点集合,E 为边集合,其中边 e=(v,v)V×V 为节点 pair 对。我们聚焦于有向图,因此 (v,v) 代表一条有向边 vv ,但是我们注意到 GNN 框架可以很容易地适配无向图。

    节点 vnode embedding 记做 hvRD 。图可能包含 node label ,其中节点 vnode labellvRnvnv 为节点标签的维度。图也可能包含 edge label,其中边 eedge labelleRnEnE 为边标签的维度。

    在原始 GNN 论文中状态向量记作 xv ,为了和 RNN 保持一致,这里记作 hv

    定义节点集合 Snode embedding 集合为 hS={hvvS} 。定义边集合 Sedge label 集合为 lS={leeS}

    定义 IN(v)={v(v,v)E} 为节点 v 的前驱节点predecessor node 集合。定义 OUT(v)={v(v,v)E} 为节点 v 的后继节点successor node 集合。节点 v 的邻居集合定义为 NBR(v)=IN(v)OUT(v) 。节点 v 的所有边(包括 incoming edgeoutgoing edge)定义为 Co(v)={(v,v)Ev=v or v=v}

    在原始 GNN 论文中,邻居节点仅仅考虑前驱节点集合,即指向节点 v 的节点集合。因此,原始 GNN 论文仅考虑入边。

  2. GNN 通过两个步骤来得到输出:

    • 首先通过转移函数transition function 得到每个节点的representation hv ,即 propagation step,其中转移函数也被称作传播模型propagation model
    • 然后通过输出函数 output function 得到每个节点的输出 ov ,其中输出函数也被称作输出模型 output model

    该系统是端到端可微的,因此可以利用基于梯度的优化算法来学习参数。

  3. 传播模型:我们通过一个迭代过程来传播节点的状态。

    节点的初始状态 hv(1) 可以为任意值,然后每个节点的状态可以根据以下方程来更新直到收敛,其中 t 表示时间步:

    hv(t)=fw(lv,lCO(v),lNBR(v),hNBR(v)(t1))

    其中 fw() 为转移函数,它有若干个变种,包括:non-positional formposistional form、线性和非线性。 原始 GNN 论文建议按照 non-positional form 进行分解:

    fw(lv,lCO(v),lNER(v),hNBR(v)(t1))=vIN(v)hw(lv,lv,v,lv,hv(t1))+vOUT(v)hw(lv,lv,v,lv,hv(t1))

    其中 hw() 可以为线性函数,或者为一个神经网络。当 hw() 为线性函数时, hw() 为:

    hw(lv,lv,v,lv,hv(t))=A(v,v)hv(t1)+b(v,v)

    其中 b(v,v)RD 和矩阵 A(v,v)RD×D 分别由两个前馈神经网络的输出来定义,这两个前馈神经网络的参数对应于 GNN 的参数。

  4. 输出模型:模型输出为 ov=gw(hv,lv) 。其中 gw 可以为线性的,也可以使用神经网络; hv 为传播模型最后一次迭代的结果 hv(T) ,其中 T 为最大迭代次数。

  5. 为处理 graph-level 任务,GNN 建议创建一个虚拟的超级节点super node,该超级节点通过特殊类型的边连接到所有其它节点,因此可以使用 node-level 相同的方式来处理 graph-level 任务。

  6. GNN 模型是通过 Almeida-Pineda 算法来训练的,该算法首先执行传播过程并收敛,然后基于收敛的状态来计算梯度。其优点是我们不需要存储传播过程的中间状态(只需要存储传播过程的最终状态)来计算梯度,缺点是必须限制参数从而使得传播过程是收缩映射contraction map

    转移函数是收缩映射是模型收敛的必要条件,这可能会限制模型的表达能力。当 fw() 为神经网络模型时,可以通过对网络参数的雅可比行列式的 L1 范数施加约束来实现收缩映射的条件:

    Lw=i=1pj=1qiti,jφw(Gi,vi,j)22+βL(Fwx1)

    其中 p 表示图的个数, qi 表示第 i 个图的节点数量,ti,j 为第 i 个图、第 j 个节点的监督信息, ϕw(Gi,vi,j) 为第 i 个图、第 j 个节点的预测, L() 为罚项:

    L(y)={|yμ|,ify>μ0,else

    超参数 μ(0,1) 定义了针对转移函数的约束。

  7. 事实上一个收缩映射很难在图上进行长距离的信息传播。

    考虑一个包含 N 节点的环形图,图中的节点首位相连。假设每个节点的隐状态的维度为1 ,即隐状态为标量。假设 hw() 为线性函数。为简化讨论,我们忽略了所有的节点标签信息向量、边标签信息向量,并且只考虑入边而未考虑出边。

    在每个时间步 t ,节点 v 的隐单元为:hv(t)=mv×hv1(t1)+bv ,其中 mv,bv 为传播模型的参数。考虑到环形结构,我们认为:v0 时有 hv=hN+v

    h(t)=[h1(t),,hN(t)],b=[b1,,bN] ,令:

    M=[0000m1m200000m3000000mN0]

    则有:h(t)=Mh(t1)+b

    T(h(t1))=Mh(t1)+b ,则 T() 必须为收缩映射,则存在 ρ1 使得对于任意的 h,h ,满足:

    T(h)T(h)<ρhh

    即:

    M(hh)<ρhh

    如果选择 h=0 ,选择 h=(0,0,,0v2,1,0,,0) (即除了位置 v11、其它位置为零) ,则有 |mv|<ρ

    扩展 hv(t)=mv×hv1(t1)+bv ,则有:

    hv(t)=mv×hv1(t1)+bv=mv(mv1hv2(t2)+bv1)+bv=mvmv1(mv2hv2(t3)+bv2)+mvbv1+bv=mvmv1mv2hv3(t3)+mvmv1bv2+mvbv1+bv

    考虑到 |mv|<ρ,这意味着从节点 jj+1j+2v 传播的信息以指数型速度 ρδ 衰减,其中 δ 为节点 j 到节点 v 的距离(这里 jv 的上游节点)。因此 GNN 无法在图上进行长距离的信息传播。

  8. 事实上,当 hw() 为非线性函数时,收缩映射也很难在图上进行长距离的信息传播。令

    hv(t)=σ(mv×hv1(t1)+bv)

    其中 σ() 为非线性激活函数。则有 T(h(t1))=σ(Mh(t1)+b)T() 为一个收缩映射。则存在 ρ1 使得对于任意的 h,h ,满足:

    T(h)T(h)<ρhh

    这意味着函数 T(h) 的雅可比矩阵的每一项都必须满足:

    |Tihj|<ρ,i,j
    • 证明:考虑两个向量 h,h ,其中 :

      h=(h1,,hj1,hj,hj+1,,hN)h=(h1,,hj1,hj+Δ,hj+1,,hN)

      则有 Ti(h)Ti(h)T(h)T(h)<ρ|Δ| ,则有:

      Ti(h1,,hj1,hj,hj+1,,hN)Ti(h1,,hj1,hj+Δ,hj+1,,hN)Δ<ρ

      其中 Ti(h)T(h) 的第 i 个分量。

      Δ0 时, 左侧等于 |Tihj| ,因此得到结论 |Tihj|<ρ,i,j

    • j=i1 时,有 |Tihi1|<ρ 。考虑到图为环状结构,因此对于 ji1 的节点有 Tihj=0

      考虑到时刻 t 的更新,则有:

      |hi(t)hi1(t1)|<ρ

      现在考虑 h1(1) 如何影响 ht(t) 。考虑链式法则以及图的环状结构,则有:

      |ht(t)h1(1)|=|ht(t)ht1(t1)×ht1(t1)ht2(t2)××h2(2)h1(1)|=|ht(t)ht1(t1)|×|ht1(t1)ht2(t2)|××|h2(2)h1(1)|<ρ×ρ××ρ=ρt1

      ρ<1 时,偏导数 ht(t)h1(1) 随着 t 的增加指数级降低到0 。这意味着一个节点对另一个节点的影响将呈指数级衰减,因此 GNN 无法在图上进行长距离的信息传播。

      hw() 为线性函数时,前向传播的信息以指数型速度衰减;当 hw() 为非线性函数时,反向传播的信息以指数型速度衰减。

6.1.2 GG-NN 模型

  1. 门控图神经网络 Gated Graph Neural Networks:GG-NNGNN 进行修改,采用了门控循环单元GRU ,并对固定的 T 个时间步进行循环展开,并使用 back propagation through time: BPTT 算法来计算梯度。这比Almeida-Pineda 算法需要更多的内存,但是它消除了约束参数以确保收敛的必要性。我们还扩展了底层的 representationoutput model
a. node annotation
  1. GNN 中节点状态的初始化值没有意义,因为不动点理论可以确保不动点独立于初始化值。但是在 GG-NN 模型中不再如此,节点的初始化状态可以作为额外的输入。为了区分节点的初始化状态和其它类型的节点标签信息,我们称初始化状态为节点的注解node annotation,以向量 x 来表示。

    节点的初始化状态可以视为节点的标签信息的一种。

    节点的注解向量就是后来广泛使用的 node feature vector

  2. 注解向量的示例:对于给定的图,我们希望预测是否存在从节点 s 到节点 t 的路径。该任务存在任务相关的两个节点 s,t ,因此我们定义注解向量为:

    xv={(1,0),v=s(0,1),v=t(0,0),other

    注解向量使得节点 s 被标记为任务的第一个输入参数,节点 t 被标记为任务的第二个输入参数。我们通过 xv 来初始化状态向量 hv(1)

    hv(1)=[xv,0,xv,1,0,,0]

    即:hv(1) 的前面两维为 xv、后面的维度填充为零。

    传播模型很容易学得将节点 s 的注解传播到任何 s 可达的节点。如,通过设置传播矩阵为:所有存在后向边的位置都为1 。这将使得 hs(1) 的第一维沿着后向边进行复制,使得从节点 s 可达的所有节点的 hv(T) 的第一维均为1

    最终查看是否存在某个节点的状态向量前两维为[1,1] ,即可判断从 s 是否可达节点 t

b.传播模型
  1. 初始化状态向量:hv(1)=[xv,0]RD ,其中 D 为状态向量的维度。这一步将节点的注解信息拷贝到状态向量的前几个维度。

  2. 信息传递:av(t)=Av:[h1(t1),,h|V|(t1)]+bv ,它包含所有方向的边的激活值。

    如下图所示 (a) 表示一个图,颜色表示不同的边类型(类型 B 和类型 C );(b) 表示展开的一个计算步;(c) 表示矩阵 AB 表示 B 的反向边,采用不同的参数。

    ARD|V|×2D|V| 对应于图中的边,它确定图中的节点如何相互通信。A 的稀疏结构sparsity structure和参数绑定parameter tying 如下图所示。AA(out)RD|V|×D|V|A(in)RD|V|×D|V| 组成,这两个子矩阵(通常都是稀疏矩阵)的参数由边的方向和类型决定。

    Av:RD|V|×2DA(out),A(in) 对应于节点 v 的两列组成;bvR2D

  3. GRU 更新状态:

    zv(t)=σ(Wzav(t)+Uzhv(t1))rv(t)=σ(Wrav(t)+Urhv(t1))hv(t)~=tanh(Wav(t)+U(rv(t)hv(t1)))hv(t)=(1zv(t))hv(t1)+zv(t)hv(t)~

    这里采用类似 GRU 的更新机制,基于节点的历史状态向量和所有边的激活值来更新当前状态。z 为更新门, r 为复位门, σ(x)=1/(1+ex)sigmoid 函数, 为逐元素乘积。

    我们最初使用普通的 RNN 来进行状态更新,但是初步实验结论表明:GRU 形式的状态更新效果更好。

    更新时使用了当前节点的历史信息 hv(t1)、以及邻域节点的信息 av(t)

    GG-NN 可以视为:以邻域聚合信息 av(1) 作为输入的 GRU

c. 输出模型
  1. 我们希望在不同的情况下产生几种类型的 one-step 输出。

    • node-level 输出:对每个节点 vV,计算 ov=g(hv(T),xv) 。然后可以对 ov 应用一个 softmax 函数来得到每个节点在各类别的得分。

    • graph-level 输出:定义graph-levelrepresentation 向量为:

      hG=tanh(vVσ(g1(hv(T),xv))tanh(g2(hv(T),xv)))

      其中:

      • σ(g1(hv(T),xv)) 起到 soft attention 机制的作用,它决定哪些节点和当前的graph-level任务有关。σ()sigmoid 函数( attention 系数取值是 0 ~ 1 之间)。
      • g1(),g2() 都是神经网络,它们拼接 hv(T)xv 作为输入, 输出一个实值向量。
      • tanh() 函数也可以替换为恒等映射。

    注意:这里的 GG-NN 给出的是非序列输出,实际上 GG-NN 支持序列输出,这就是下面介绍的 GGS-NN 模型。

6.1.3 GGS-NN 模型

  1. 门控图序列神经网络 Gated Graph Sequence Neural Networks :GGS-NN 使用若干个 GG-NN 网络依次作用从而生成序列输出 o(1),,o(K) 。在第 k 个输出:

    • 定义所有节点的注解向量组成矩阵 X(k)=[x1(k),,x|V|(k)]R|V|×Da ,其中 Da 为注解向量的维度。

      定义所有节点的输出向量组成矩阵 O(k)=[o1(k),,o|V|(k)]R|V|×Do,其中 Do 为输出向量的维度。

    • 我们使用两个 GG-NN 网络 FO(k)FX(k) ,其中 FO(k) 用于从 X(k) 中预测 O(k)FX(k) 用于从 X(k) 中预测 X(k+1)X(k+1) 可以视作一个“状态”,它从输出步output step k 转移到输出步 k+1

      每个 FO(k)FX(k) 均包含各自的传播模型和输出模型。我们定义第 k 个输出步的第 t 个时间步的状态矩阵分别为:

      HO(k,t)=[hO,1(k,t),,hO,|V|(k,t)]R|V|×DOHX(k,t)=[hX,1(k,t),,hX,|V|(k,t)]R|V|×DX

      其中 DO,DX 为各自传播模型的状态向量的维度。如前所述,H(k,1) 可以通过 X(k) 通过填充零得到,因此有:HO(k,1)=HX(k,1),记作 H(k,1)

    • 我们也可以选择 FO(k)FX(k) 共享同一个传播模型,然后使用不同的输出模型。这种方式的训练速度更快,推断速度更快,并且大多数适合能够获得原始模型相差无几的性能。但是如果 FO(k)FX(k) 的传播行为不同,则这种变体难以适应。

    • FX(k) 的输出模型称为节点annotation output 模型,它用于从 HX(k,T) 中预测 X(k+1)。该模型在每个节点v上利用神经网络独立的预测:

      xv(k+1)=σ(ga(hX,v(k,T),xv(k)))

      其中ga() 为神经网络, hX,v(k,T)xv(k) 的拼接作为网络输入,σ()sigmoid 函数。

    整个网络的结构如下图所示,如前所述有 HO(k,1)=HX(k,1),记作 H(k,1)

    节点注解充当 LSTMinput feature 的作用,只不过节点注解可能是预测得到的(也可能是直接收集到的)。

    GGS-NN 可以理解为:把图 G 拷贝多次,每个拷贝运行一个 GG-NN,后一个GG-NNinput 由前一个 GG-NN 来生成。

  2. GGS-NNs 的训练有两种方式:

    • 仅仅给定 X(1),然后执行端到端的模型训练。这种方式更为通用。

      我们将 X(k),k>1 视为网络的隐变量,然后通过反向传播算法来联合训练。

    • 指定所有的中间注解向量:X(1),X(2),,X(K) 。当我们已知关于中间注解向量的信息时,这种方式可以提高性能。

      考虑一个图的序列输出任务,其中每个输出都仅仅是关于图的一个部分的预测。为了确保图的每个部分有且仅被预测一次,我们需要记录哪些节点已经被预测过。我们为每个节点指定一个bit 作为注解,该比特表明节点到目前为止是否已经被“解释”过。因此我们可以通过一组注解来捕获输出过程的进度。

      此时,我们可以将注解的 label 信息(即 Xk)作为模型的额外输入。因此我们的 GGS-NN 模型中,GG-NN 和给定的注解是条件独立的。

      • 训练期间序列输出任务将被分解为单个输出任务,并作为独立的 GG-NN 来训练。
      • 测试期间,第 k 个输出预测到的注解(即 X^(k))当作为第 k+1 个输出的网络输入。

6.2 实验

  1. bAbI 任务旨在测试 AI 系统应该具备的推理能力。在 bAbI suite 中有20 个任务来测试基本的推理形式,包括演绎、归纳、计数和路径查找。

    • 我们定义了一个基本的转换过程 transformation procedure 从而将 bAbI 任务映射成 GG-NN 或者 GGS-NN 任务。

      我们使用已发布的 bAbI 代码中的 --symbolic 选项从而获取仅涉及entity 实体之间一系列关系的story 故事,然后我们将每个实体映射为图上的一个节点、每个关系映射为图上的一条边、每个story 被映射为一张图。

    • Question 问题在数据中以 eval 来标记,每个问题由问题类型(如has_fear)、问题参数(如一个或者多个节点)组成。我们将问题参数转换为初始的节点注解,第 i 个参数节点注解向量的第 i 位设置为 1

      如问题eval E > A true ,则:问题类型为 > ,问题参数为E, A ,节点的注解向量为:

      xv={(1,0),v=E(0,1),v=A(0,0),other

      问题的监督标签为true

    • bAbI 任务15Basic Deduction 任务)转换的符号数据集symbolic dataset 的一个示例:

      • 8 行描述了事实 factGG-NN 将基于这些事实来构建Graph 。每个大写字母代表节点,ishas_fear 代表了边的label (也可以理解为边的类型)。
      • 最后4 行给出了四个问题,has_fear 代表了问题类型。
      • 每个问题都有一个输入参数,如 eval B has_fear H 中,节点 B 为输入参数。节点 B 的初始注解为标量1 (只有一个元素的向量就是标量)、其它节点的初始注解标量为 0
    • 某些任务具有多个问题类型,如bAbI 任务 4 具有四种问题类型:e,s,w,n 。对于这类任务,我们为每个类型的任务独立训练一个 GG-NN 模型。

      论文训练四个二元分类模型,而不是单个多分类模型。实际上也可以训练单个多分类模型。

    • 在任何实验中,我们都不会使用很强的监督标签,也不会给GGS-NN 任何中间注解信息。

  2. 我们的转换方式虽然简单,但是这种转换并不能保留有关story 的所有信息,如转换过程丢失了输入的时间顺序。这种转换也难以处理三阶或者更高阶的关系,如 “昨天 John 去了花园” 则难以映射为一条简单的边。

    注意:将一般化的自然语言映射到符号是一项艰巨的任务,因此我们无法采取这种简单的映射方式来处理任意的自然语言。

    即使是采取这种简单的转化,我们仍然可以格式化描述各种bAbI 任务,包括任务19(路径查找任务)。我们提供的 baseline 表明:这种符号化方式无助于 RNN/LSTM 解决问题,但是GGS-NN 可以基于这种方式以少量的训练样本来解决问题。

    bAbI 任务19 为路径查找 path-finding 任务,该任务几乎是最难的任务。其符号化的数据集中的一个示例:

    • 开始的4 行描述了四种类型的边,s,n,w,e 分别表示东,南,西,北 。在这个例子中,e 没有出现。
    • 最后一行表示一个路径查找问题:path 表示问题类型为路径查找;B, A 为问题参数;w,s 为答案序列,该序列是一个方向序列。该答案表示:从B 先向西(到达节点E)、再向南可以达到节点 A
  3. 我们还设计了两个新的、类似于 bAbI 的任务,这些任务涉及到图上输出一个序列。这两个任务包括:最短路径问题和欧拉回路问题。

    • 最短路径问题需要找出图中两个点之间的最短路径,路径以节点的序列来表示。

      我们首先生成一个随机图并产生一个 story,然后我们随机选择两个节点 AB ,任务是找出节点 AB 之间的最短路径。

      为了简化任务,我们限制了数据集生成过程:节点AB 之间存在唯一的最短路径,并且该路径长度至少为 2 (即 AB 的最短路径至少存在一个中间结点)。

    • 如果图中的一个路径恰好包括每条边一次,则该路径称作欧拉路径。如果一个回路是欧拉路径,则该回路称作欧拉回路。

      对于欧拉回路问题,我们首先生成一个随机的、2-regular 连接图,以及一个独立的随机干扰图。然后我们随机选择两个节点AB 启动回路,任务是找出从 AB 的回路。

      为了增加任务难度,这里添加了干扰图,这也使得输出的回路不是严格的“欧拉回路”。

      正则图是每个节点的degree 都相同的无向简单图,2-regular 正则图表示每个节点都有两条边。

  4. 对于RNNLSTM 这两个 baseline,我们将符号数据集转换为 token 序列:

    其中 n<id> 表示节点、e<id> 表示边、q<id> 表示问题类型。额外的 token 中,eol 表示一行的结束end-of-lineans 代表答案answer 、最后一个数字1 代表监督的类别标签。

    我们添加ans 从而使得 RNN/LSTM 能够访问数据集的完整信息。

  5. 训练配置:

    • 本节中的所有任务,我们生成 1000 个训练样本(其中有 50 个用于验证,只有 950 个用于训练)、1000 个测试样本。

    • 在评估模型时,对于单个样本包含多个问题的情况,我们单独评估每个问题。

    • 由于数据集生成过程的随机性,我们为每个任务随机生成10 份数据集,然后报告了这10 份数据集上评估结果的均值和标准差。

    • 我们首先以 50 个训练样本来训练各个模型,然后逐渐增加训练样本数量为100、250、500、950 (最多950 个训练样本)。

      由于 bAbI 任务成功的标准是测试准确率在 95% 及其以上,我们对于每一个模型报告了测试准确率达到 95% 所需要的最少训练样本,以及该数量的训练样本能够达到的测试准确率。

    • 在所有任务中,我们展开传播过程为 5 个时间步。

    • 对于 bAbI 任务4、15、16、18、19 ,我们的 GG-NN 模型的节点状态向量 hv(t) 的维度分别为 4、5、6、3、6

      对于最短路径和欧拉回路任务,我们的GG-NN 模型的节点状态向量 hv(t) 维度为 20

    • 对于所有的 GGS-NN ,我们简单的令 FO(k),FX(k) 共享同一个传播模型。

    • 所有模型都基于 Adam 优化器训练足够长的时间,并使用验证集来选择最佳模型。

6.2.1 bAbI 任务

  1. 单输出任务:bAbI的任务4Tow Argument Relations)、任务15Basic Deduction)、任务16Basic Induction)、任务18Size Reasoning) 这四个任务都是单输出任务。

    • 对于任务4、15、16,我们使用 node-level GG-NN;对于任务 18 我们使用 graph-level GG-NN

    • 所有 GG-NN 模型包含少于 600 个参数。

    • 我们在符号化数据集上训练 RNNLSTM 模型作为 baselineRNNLSTM 使用 50 维的embedding 层和 50 维的隐层,它们在序列末尾给出单个预测输出,并将输出视为分类问题。

      这两个模型的损失函数为交叉熵,它们分别包含大约5k 个参数(RNN)和30k 个参数 (LSTM )。

    预测结果如下表所示。对于所有任务,GG-NN 仅需要50 个训练样本即可完美的预测(测试准确率 100%);而 RNN/LSTM 要么需要更多训练样本(任务4)、要么无法解决问题(任务15、16、18)。

    对于任务4,我们进一步考察训练数据量变化时,RNN/LSTM 模型的性能。可以看到,尽管 RNN/LSTM 也能够几乎完美的解决任务,但是 GG-NN 可以使用更少的数据达到 100% 的测试准确率。

  2. 序列输出任务:所有 bAbI 任务中,任务19(路径查找任务)可以任务是最难的任务。我们以符号数据集的形式应用 GGS-NN 模型,每个输出序列的末尾添加一个额外的 end 标签。在测试时,网络会一直预测直到预测到 end 标签为止。

    另外,我们还对比了最短路径任务和欧拉回路任务。

    下表给出了任务的预测结果。可以看到 RNN/LSTM 都无法完成任务, GGS-NN 可以顺利完成任务。另外 GGS-NN 仅仅利用 50 个训练样本就可以达到比 RNN/LSTM 更好的测试准确率。

  3. 为什么RNN/LSTM 相对于单输出任务,在序列输出任务上表现很差?

    欧拉回路任务是 RNN/LSTM 最失败的任务,该任务的典型训练样本如下:

    这个图中有两个回路 3-7-5-8-61-2-4-0,其中 3-7-5-8-6 是目标回路,而 1-2-4-0 是一个更小的干扰图。为了对称性,所有边都出现两次,两个方向各一次。

    对于 RNN/LSTM,上述符号转换为 token 序列:

    注意:这里的节点ID 和原始符号数据集中的节点 ID 不同。

    • RNN/LSTM 读取整个序列,并在读取到 ans 这个token 的时候开始预测第一个输出。然后在每一个预测步,使用ans 作为输入,目标节点ID (视为类别标签) 作为输出。这里每个预测步的输出并不会作为下一个预测步的输入。

      我们的 GGS-NN 模型使用相同的配置,其中每个预测步的输出也不会作为下一个预测步的输入,仅有当前预测步的注解 X(k) 延续到下一个预测步,因此和 RNN/LSTM 的比较仍然是公平的。这使得我们的 GGS-NN 有能力得到前一个预测步的信息。

      一种改进方式是:在RNN/LSTM/GGS-NN 中,每个预测步可以利用前一个预测步的结果。

      实际上对于 BERT 等著名的模型,解码期间可以利用前一个预测步的结果。

    • 这个典型的样本有 80token,因此我们看到 RNN/LSTM 必须处理很长的输入序列。如第三个预测步需要用到序列头部的第一条边3-7,这需要 RNN/LSTM 能够保持长程记忆。RNN 中保持长程记忆具有挑战性,LSTM 在这方面比 RNN 更好但是仍然无法完全解决问题。

    • 该任务的另一个挑战是:输出序列出现的顺序和输入序列不同。实际上输入数据并没有顺序结构,即使边是随机排列的,目标节点的输出顺序也不应该改变。bAbI 任务19 路径查找、最短路径任务也是如此。

      GGS-NN 擅长处理此类“静态”数据,而RNN/LSTM 则不然。实际上 RNN/LSTM 更擅长处理动态的时间序列。如何将 GGS-NN 应用于动态时间序列,则是将来的工作。

6.2.2 Program Verification

  1. 我们在 GGS-NN 上的工作受到程序验证program verification中的实际应用的启发。自动程序验证的一个关键步骤是推断程序不变量program invariant,它逼近 approximate 程序执行中可达到的程序状态program state 的集合。寻找关于数据结构的不变量是一个悬而未决的问题。

    具体实验细节参考原始论文。

6.2.3 讨论

  1. 思考GG-NN 正在学习什么是有启发性的。为此我们观察如何通过逻辑公式解决bAbI 任务15 。为此考虑回答下面的问题:

    要进行逻辑推理,我们不仅需要对 story里存在的事实进行逻辑编码,还需要将背景知识编码作为推理规则。如:is(x,y)has-fear(y,z)has-fear(x,z)

    我们对任务的编码简化了将 story 解析为Graph 的过程,但是它并不提供任何背景知识。因此可以将 GG-NN 模型视为学习背景知识的方法,并将结果存储在神经网络权重中。

  2. 论文中的结果表明:GGS-NN 在一系列具有固有图结构的问题上有理想的归纳偏置 inductive bias,我们相信在更多情况下 GGS-NN 将是有用的。然而,需要克服一些限制才能使得它们更广泛地使用。 我们之前提到的两个限制是 bAbI 任务翻译不包含输入的时序 temporal order、也不包含三阶或更高阶的关系。我们可以想象解除这些限制的几种可能性,如拼接一系列的 GG-NN,其中每条边都有一个 GG-NN 并将高阶关系表示为因子图 factor graph

    一个更重大的挑战是如何处理less structuredinput representation 。例如,在 bAbI 任务中,最好不要使用 symbolic 形式的输入。一种可能的方法是在我们的 GGS-NN 中融合 less structured 的输入和 latent vector 。但是,需要进行实验从而找到解决这些问题的最佳方法。

  3. 当前的 GG-NN 必须在读取所有 fact 事实之后才能回答问题,这意味着网络必须尝试得出所见事实的所有后果,并将所有相关信息存储到其节点的状态中。这可能并不是一个理想的形式,最好将问题作为初始输入,然后动态地得到回答问题所需要的事实。

  4. 我们对 GGS-NN 的进一步应用保持乐观态度。我们对继续开发端到端的可学习系统特别感兴趣,这些系统可以学习程序的语义属性,可以学习更复杂的图算法,并将这些思想应用于需要对知识库和数据库进行推理的问题。更一般而言,我们认为这些图神经网络代表了迈向如下模型的一步:这些模型可以将结构化的 representation 与强大的深度学习算法相结合,目的是在学习和推断inferring如何推理reason 和扩展这些 representation 的同时利用已知结构。

七、PATCHY-SAN[2016]

  1. 论文 《Learning Convolutional Neural Networks for Graphs》 的目标是:让卷积神经网络能够解决一大类 graph-based 的学习问题。我们考虑以下两个问题:

    • 给定 graph 的一个集合,学习一个函数,该函数可用于针对 unseen graph 的分类问题或回归问题。任意两个graph之间的结构不一定是相同的。例如,graph集合中每个graph都可以建模一种化合物,输出可以是一个函数从而将 unseen 的化合物映射到它们对癌细胞活性抑制的 level
    • 给定一个大型的graph,学习graphrepresentation,该 representation 可用于推断 unseen 的图属性(如节点类型、或missing edge)。

    该论文提出了一个用于有向图或无向图的 learning representation 框架。graph 可能具有离散属性或连续属性的节点和边(甚至有多个属性),并且可能具有多种类型的边。类似于图像的卷积神经网络,论文从输入图 input graph 构建局部连接locally connected的邻域。这些邻域是有效生成的,并且作为卷积架构的感受野receptive field,从而允许框架学习有效的 graph representation

    所提出的方法建立在用于图像的卷积神经网络的概念之上,并将卷积神经网络扩展到任意的graph 。下图说明了用于图像的 CNN 的局部连接感受野。如下图所示,黑色/白色节点表示不同的像素值(黑色像素值为1、白色像素值为0 ),红色节点表示当前卷积核的中心位置。(a) 图给出了一个 3x3 卷积核在一个 4x4 图像上的卷积过程,其中步幅为1、采用非零填充。图像可以表示为正方形的网格图 square grid graph ,其节点代表像素。现在,可以将 CNN 视为遍历节点序列(如下图(a)中的节点 1,2,3,4),并为每个节点生成固定大小的邻域子图 neighborhood subgraph (如下图 (b) 中的 3x3 网格)。邻域子图用作感受野从而读取像素值。由于像素的隐式空间顺序 implicit spatial order,节点序列(如下图 (a) 中的节点 1,2,3,4)从左到右、从上到下是唯一确定的。对于 NLP 问题也是如此,其中每个句子(及其解析树 parse-tree)确定了单词序列。然而,对于许多graph 集合,缺少特定于问题的顺序 problem-specific ordering(空间的、时间的、或其它的顺序),并且graph 的节点不存在对应关系(即,两个graph 之间的结构不相等)。在这种情况下,必须解决两个问题:

    • 确定节点序列,其中我们要对序列中的节点创建邻域子图。

    • 计算邻域子图的归一化,即从graph 到排序空间的唯一映射 unique mapping

      子图的归一化指的是对子图节点进行某种特定顺序的排序。

    所提出的方法,称作 PATCHY-SAN,解决了任意graph 的这两个问题:

    • 对于每个输入graphPATCHY-SAN 首先确定需要创建邻域子图的节点(及其访问顺序)。
    • 对于这些节点中的每一个,PATCHY-SAN 抽取和归一化一个刚好由 k 个节点组成的邻域子图,即该邻域子图被唯一地映射到具有固定线性顺序fixed linear order的空间。归一化的邻域子图用作所考虑节点的感受野。
    • 最后,feature learning 组件(如卷积层、稠密层)与归一化的邻域子图(作为 CNN 的感受野)相结合。

    下图说明了 PATCHY-SAN 的架构,其中红色节点表示节点序列中的节点,邻域子图大小 k=5

    PATCHY-SAN 与现有方法相比具有几个优点:

    • 首先,它高效、可并行化,并且适用于大型graph
    • 其次,对于很多application(从计算生物学到社交网络分析),可视化学到的网络主题 network motif 很重要。PATCHY-SAN 支持特征可视化feature visualization,从而提供对图结构属性 structural property 的洞察。
    • 第三,PATCHY-SAN 无需制作另一个 graph kernel,而是学习 application dependent 的特征而无需进行特征工程。

    论文的理论贡献是:

    • 定义graph 上的归一化问题 normalization problem ,以及该问题的复杂度。
    • 一种用于graph 集合的方法,该方法对比了 graph labeling 方法。
    • 实验结果表明,PATCHY-SAN 推广了用于图像的 CNN。在标准的 benchmark 数据集上,论文证明与 state-of-the-artgraph kernel 相比,学到的用于graphCNN 既高效efficient又有效 effective
  2. 相关工作:

    • graph kernelgraph kernel 允许kernel-based 的学习方法,如直接在graph 上工作的 SVMgraph 上的 kernel 最初被定义为single graph 上的节点的相似函数 similarity function。两类具有代表性的 kernelskew spectrum kernelkernel based on graphlet 。后者与我们的工作有关,因为它基于固定大小的子图来构建 kernel 。这些子图,通常被称作 motifgraphlet,反映了功能性的网络的属性 functional network property 。然而,由于子图枚举subgraph enumeration的组合复杂性 combinatorial complexitygraphlet kernel 仅限于具有少量节点的子图。

      Weisfeiler-Lehman (WL) kernel 是一类有效的 graph kenerl 。然而,WL kernel 仅支持离散特征,并且在测试阶段使用与训练样本数量成线性关系的内存(而不是与测试样本数量成线性关系)。PATCHY-SAN 使用 WL 作为一种可能的 labeling 过程来计算感受野。

      deep graph kernelgraph invariant kernel 根据诸如最短路径shortest pathgraphlet、子树subtree、以及其它的图不变量 graph invariant 等小型子结构的存在或数量来比较图 compare graph 。相反,PATCHY-SANgraph 数据中学习子结构,并且不限于预定义 predefined的一组主题motif

      此外,所有 graph kernel 的训练复杂度至少是graph 数量的二次方关系,这对于大型graph 而言是不可行的,但是 PATCHY-SAN 的训练复杂度是graph 数量的线性关系。

    • graph neural network: GNNGNN 是图上定义的循环神经网络recurrent neural network: RNN架构。GNN 将循环神经网络应用于图结构上的游走 walk,传播 node representation,直到达到一个不动点 fixed point 。然后将生成的 node representation 用作分类和回归问题中的特征。GNN 仅支持离散特征,并在每次学习迭代过程中执行与图的边和节点数量一样多的反向传播操作。

      注:GNN 理论上也支持连续特征。

      Gated Graph Sequence Neural Network: GGSNN 修改 GNN 以使用门控循环单元gated recurrent unit: GRU并输出序列。

    • 最近的工作将 CNN 扩展到不同于低维网格结构的拓扑。然而,所有这些方法都假设一个全局的图结构,即,跨graph 的节点的对应关系correspondence

      《Convolutional networks on graphs for learning molecular fingerprints》graph 执行卷积类型的操作,开发了一个 specific graph feature 的可微变体differentiable variant

7.1 基础概念

7.1.1 CNN

  1. CNN 受到早期工作的启发,该工作表明:动物的视觉皮层包含复杂的细胞排列,它们负责检测视野 visual field 的小局部区域small local region 中的光。CNN 是在 1980 年代开发的,并已应用于图像、语音、文本、以及药物发现问题。CNN 的前身是 Neocognitron。典型的 CNN 由卷积层、稠密层dense layer 组成。第一个卷积层的目的是提取在输入图像的局部区域内发现的常见模式。CNN 对输入图像利用学到的 filter 执行卷积运算,并将卷积结果输出为张量,输出的 depthfilter 的数量。

7.1.2 Graph Kernel(读者补充)

  1. 目前现有的大多数 Graph Kernel 算法都是基于 R-Convolution 理论构建而来,其理论思想是:设计一种图的分解算法,两个图的核函数和图分解后的子结构的相似程度有关。

    给定两个图 G1(V1,E1),G2(V2,E2) 以及一种图的分解方式 F(),则分解后的子结构为:

    F(G1)={S1,1,S1,2,,S1,n1}F(G2)={S2,1,S2,2,,S2,n2}

    基于该子结构,则 G1G2 的核函数可以表示为:

    kR(G1,G2)=i=1n1j=1n2δ(S1,i,S2,j)

    其中:

    δ(Sa,Sb)={1,Sa同构Sb0,else

    因此,任意一种图的分解方式 F() 以及任意一种子结构同构判断方式 δ() 的组合都可以定义一种新的 Graph Kernel ,常见的主要分为三类:

    • 基于游走的Graph Kernel,如 Random Walk Kernel
    • 基于路径的 Graph Kernel,如 Shortest-Path Kernel
    • 基于子树subtree 或者子图 subgraphGraph Kernel ,如 Weisfeiler-Lehman Subtree Kernel

    另外,除了 R-Convolution 系列之外,还有其它的 Graph Kernel

  2. Random Walk Kernel:随机游走Kernel 的基本思想是:统计两个输入图中相同的随机游走序列的数量。

    给定输入图 G1(V1,E1),G2(V2,E2),设节点 vlabellv 。定义direct product graph G× 为: G×=(V×,E×) ,其中:

    V×(G1×G2)={(v1,w1)V1×V2}lv1=lw1}E×(G1×G2)={((v1,w1),(v2,w2))V××V×(v1,v2)E1,(w1,w2)E2,l(v1,v2)=l(w1,w2)}

    其中:

    • lv 表示节点 vlabell(v1,v2) 表示边 (v1,v2)label 。注意,这里的 label 其实是属性,而不是监督学习中的监督信号。
    • V× 表示图 G1,G2 中相同 label 的节点组成的 pair 对。
    • E× 表示图 G1,G2 中相同 label 的边组成的 pair 对,且边的对应节点的 label 分别相同。

    G× 中,每个节点其实代表两个子节点,这两个子节点在各自图中具有相同的 labelG× 中的边代表:

    • 起点背后的两个子节点,在各自图中具有相同的 label
    • 终点背后的两个子节点,在各自图中具有相同的 label
    • 起点和终点背后的两对子边,在各自图中具有相同的 label

    定义图 G× 的邻接矩阵为 A× ,则随机游走 kernel 定义为:

    k×(G1,G2)=i,j=1|V×|[n=0λnA×n]i,j

    其中 λn 必须仔细挑选从而保证 k× 的收敛性。

    i,j=1|V×|[A×n]i,j :给出了图 G1G2 中,长度为 n 的、特定条件的路径的数量,该路径满足以下条件:路径的节点label 序列完全相同、路径的边label 序列完全相同。

  3. Shortest-Path Kernel:随机游走Kernel 的基本思想是:统计两个输入图中相同标签之间的最短路径。

    给定输入图 G1(V1,E1),G2(V2,E2)

    • 首先通过Floyd 成对最短路径生成算法,构建每个图的节点之间的最短路径,得到新的图 G1F(V1,E1F),G2F(V2,E2F) ,其中 E1F 给出了 V1 的两两节点之间最短路径、E2F 给出了 V2 的两两节点之间最短路径。

    • 计算:

      kshortestpath(G1,G2)=e1E1Fe2E2Fkwalk(1)(e1,e2)

      其中 kwalk(1) 为一个定义在长度为1edge walk 上的正定核。

  4. Weisfeiler-Lehman Subtree Kernel :它基于 Weisfeiler-Lehman 算法。

    • 节点 label 更新:对于图 G 的节点 v ,获取节点 v 的邻域节点集合 Nv,通过一个 hash 函数得到节点 v 的新label

      lvhash(lv,lNv)

      其中 lv 为节点 vlabellNv 为邻域节点集合Nvlabel 集合。

      更新后的新label 包含了其直接邻域的节点信息。因此如果两个节点更新后的 label 相同,我们可以认为其邻域结构是同构的。

    • 更新图的所有节点 、重复更新最多 K 轮直到收敛,最终得到图 G

      每一轮更新后,节点 vlabel 就包含了更大规模的邻域的节点信息,最终每个节点的 label 编码了图的全局结构信息。

    • 对于输入图 G1,G2 我们分别对其执行 Weisfeiler-Lehman 算法,最终根据 G1,G2 的 节点label 集合的相似性(如 Jaccard 相似性)来得到核函数:

      kWL(G1,G2)=|lV1lV2||lV1lV2|

      其中 lV 为所有节点的label 集合。

  5. 一旦定义了 Graph Kernel,则我们可以使用基于核技巧的方法,如 SVM 来直接应用在图上。

7.2 模型

  1. 给定图 G=(V,E)V={v1,,vn} 为节点集合,EV×V 为边集合。假设节点数量为 |V|=n ,边的数量 |E|=m

    • 定义图的邻接矩阵 ARn×n 为:

      Ai,j={1,(vi,vj)E0,else
    • 每个节点以及每条边可以包含一组属性,这些属性可以为离散的,也可以为连续的。这里我们用 “属性” 而不是 “标签” 来避免概念的混淆。

    • 定义一个游走序列 walk 是由连续的边组成的一个节点序列。定义一条路径 path 是由不重复节点构成的walk

    • 定义 d(u,v) 为节点 uv 之间的距离,它是 uv 之间的最短路径距离。

    • 定义 N1(v) 为节点 v 的一阶邻域节点集合,它由与 v 直连的所有节点构成。

  2. Labeling and Node PartitionsPATCHY-SAN 利用了graph labeling 对节点进行排序。

    • graph labeling:如果图的节点自带label, 则我们可以直接用该label 。如果节点没有label ,则我们可以通过一个graph labeling 函数 Fl:VS 为图注入label ,其中 S 为一个有序集(如,实数集 R 或整数集 Z)。 graph labeling 过程计算输入图的 graph labeling

      graph labeling 的例子包括:通过节点的度degree 计算label、通过节点的中介中心性between centrality 计算 label 。一个节点 v 的中介中心性为:网络中经过节点 v 的最短路径占所有最短路径的比例。

    • ranking:一个排序 ranking (或者染色 coloring )是一个函数 Fr:V{1,2,,|V|} 。每个graph labeling 引入一个排序函数,使得当且仅当 Fl(u)>Fl(v) 时有 Fr(u)<Fr(v) ,即:label 越大则排名越靠前。如果图 Glabeling Fl 是单射函数,则它确定 G 的节点的全体顺序。根据该顺序我们定义一个邻接矩阵 Al(G),它定义为:

      Al(G)=r1r2r3r4rnv1:Fr(v1)=110000v2:Fr(v2)=400010v3:Fr(v3)=300100v4:Fr(v4)=201000vn:Fr(vn)=n00001

      其中节点 vAl(G) 中的位置由它的排名 Fr(v) 决定。

      行代表节点,列代表排名。

    • 划分 partitiongraph labeling 引入节点集合 V 的一个划分:{V1,,VK} ,其中 Klabel 的取值类别数。节点 u,vVi 当且仅当 Fl(u)=Fl(v)

      Weisfeiler-Lehman 算法是一种划分图节点的过程,它也被称作 color refinementnaive vertex classification 。该算法在机器学习社区中引起了相当广泛的兴趣,因为它可以应用于图模型的加速推断、以及作为一种计算 graph kernel 的方法。

  3. PATCHY-SAN 使用这些 graph labeling 过程来对图的节点施加顺序,从而替代缺失的、application-dependent 的顺序(如时间顺序,空间顺序)。

  4. 同构和规范化Isomorphism and Canonicalization:在很多应用领域存在的一个计算问题是:确定两个图是否是同构曲面。图同构问题 graph isomorphism (GI) problemNP 的,但是不知道是属于 P 还是 NP-hard 。在一些温和的限制下,图同构问题是 P 的,例如对于有界 degree 的图。

    G 的规范化是具有固定节点顺序的图 G,它与 G 同构并且表达了 G 的整个同构族isomorphism class 。在实践中,图规范化工具 NAUTY 表现出了卓越的性能。

  5. CNN 应用于图像时,感受野(正方形网格)以特定的步长在图像上移动。感受野为每个通道读取一次像素值,并为每个通道创建一批数值。由于图像的像素具有隐式排列(即,空间顺序),因此感受野总是从左到右、从上到下移动。此外,空间顺序唯一地确定了每个感受野的节点以及这些节点映射到排序空间方式。因此,当且仅当像素的结构角色 structural role (它们在感受野内的空间位置)相同时,使用两个不同绝对位置的感受野读取到的两个像素值被分配到同一个相对位置。

    为了展示 CNNPATCHY-SAN 之间的联系,我们把图像上的 CNN 视为一种框架:首先识别正方形网格图(代表图像)中的节点序列,然后为该序列中的每个节点建立一个归一化的邻域子图neighborhood graph(即,感受野)。

    对于缺少 application-dependent 节点顺序并且任何两个图的节点尚未对齐的图集合,我们需要为每个图确定:

    • 一个节点序列,其中我们即将为序列中的每个节点创建邻域子图。
    • 从图结构到向量 representation 的唯一映射,使得相似的邻域子图具有相似的向量representation

    我们通过graph labeling 过程来解决这些问题。如果来自两个不同图的节点在图中的结构角色相似,那么它们被分配到各自邻接矩阵中的相似的相对位置。给定一组图,PATCHY-SAN 对每个图执行以下操作:

    • 采用 Node Sequence Selection 算法从图中选择一个固定长度的节点序列。
    • 采用 Neighborhood Assembly 算法为节点序列中的每个节点组装一个固定大小的邻域。
    • 通过 Graph Normalization 对每个邻域子图进行归一化处理,从而将无序的图转换为有序的、长度固定的节点序列。
    • 利用CNN 学习邻域的 representation

7.2.1 Node Sequence Selection

  1. 节点序列选择node sequence selection是为每个输入图识别需要创建感受野的节点序列的过程。

    • 首先,输入图的节点根据给定的 graph labeling 进行排序。

    • 其次,使用给定的步幅 s 遍历生成的节点序列,并对每个访问到的节点采用创建感受野的算法来构造一个感受野,直到恰好创建了 w 个感受野为止。

      w 决定了卷积运算输出 feature map 的尺寸,它对应于一维CNN 中的序列长度。

    步幅 s 决定了在节点序列中,需要创建感受野的两个节点之间的距离。如果节点数量小于 w ,则算法创建全零的感受野,用于填充。也可以采用其它节点序列选择方法,如根据 graph labeling 进行深度优先遍历。

    类比一维卷积的运算,那么 w 就是数据序列的长度,s 就是一维卷积的步长。每个输入图都需要对其到 w 个感受野(即一维卷积中的序列长度对齐)。

  2. Select Node Sequence 算法:

    • 算法输入:

      • graph labeling 函数 Fl()
      • 输入图 G=(V,E)
      • 步幅 s 、宽度 w 、感受野尺寸 k
    • 算法输出:被选择的节点序列,以及对应的感受野

    • 算法步骤:

      • 根据 Fl() 选择节点集合 V 中的 top w 个节点,记作 Vsort

      • 初始化: i=1,j=1

      • 迭代,直到 jw 停止迭代。迭代步骤为:

        • 如果 i|Vsort|,则对排序后的节点 i 创建感受野 f=CreateReceptiveField(Vsort[i],k) ;否则创建全零感受野 f=ZeroReceptiveField(k)

        • f 应用到每个输入通道。

          因为节点的特征可能是一个向量,表示多维度属性。

        • 更新:i=i+s,j=j+1

      • 返回访问到的节点序列,以及创建的感受野序列。

7.2.2 Neighborhood Assembly

  1. 对于被选择的节点序列,必须为其中的每个节点构建一个感受野。创建感受野的算法首先调用邻域组装算法来构建一个局部邻域,邻域内的节点是感受野的候选节点。

    给定节点 v 和感受野的尺寸 k ,邻域组装算法首先执行广度优先搜索 BFS 来探索与节点 v 距离依次增加的节点,并将这些被探索到的节点添加到集合 Nv 。如果收集到的节点数量小于 k ,则使用最近添加到 Nv 节点的一阶邻域(即 BFS 过程),直到 Nv 中至少有 k 个节点;或者没有更多的邻居节点添加为止。注意,最终 Nv 的大小可能不等于 k

    即,广度优先搜索 k 个最近邻的节点(包括它自身)。

    另外,最终得到的 Nv 丢失了距离信息(和节点 v 的距离)。所以,如果这里能够保存距离信息,是否会更有利?

  2. Neighborhood Assembly 算法:

    • 算法输入:当前节点 v ,感受野尺寸 k

    • 算法输出:节点 v 的局部邻域 Nv

    • 算法步骤:

      • 初始化:Nv=[v],B=[v] ,其中 B 存放BFS 遍历到的节点。

        注意,节点 v 也是它自身的邻居。

      • 迭代,直到 |Nv|k 或者 |B|=0 停止迭代。迭代步骤:

        • 获取当前BFS 遍历节点的一阶邻域:B=wBNw(1),其中 Nw(1) 表示节点 w 的一阶邻域集合。
        • 合并BFS 遍历到的节点:Nv=NvB
      • 返回 Nv

7.2.3 Graph Normalization

  1. 子图归一化是对邻域子图的节点施加一个顺序,使得节点从无序的图空间映射到线性顺序的排序空间。子图归一化的基本思想是利用 graph labeling,对于不同子图中的节点,当且仅当节点在各自子图中的结构角色相似时,才给它们分配到各自邻接矩阵中的相似的相对位置similar relative position

    为了形式化该思想,我们定义了一个 Optimal Graph Normalization 问题,该问题的目标是找到给定的图集合的最佳 labeling

  2. Optimal Graph Normalization 问题:令 G 为一组图,每个图包含 k 个节点。令 Fl() 为一个 graph labeling 过程。令 dG(,)k 节点图之间的距离函数,令 dA(,)k×k 矩阵之间的距离函数。则我们的目标是寻找 F^l(),使得:

    F^l=argminFlEG[|dA(Al(G),Al(G))dG(G,G)|]

    即:从 G 中随机均匀采样的两个子图,子图在排序空间(基于 Fl 得到的邻接矩阵)的距离与图空间的距离的差距最小。

    图的最优归一化问题是经典的图规范化问题graph canonicalization problem 的推广。但是经典的labeling 算法仅针对同构图isomorphic graph 最佳,对于相似但是不同构的图可能效果不佳。相比之下,最优归一化问题的期望值越小,则labeling 过程将具有相似结构角色的节点进行对齐的效果越好。这里结构相似度由 dG(G,G) 来衡量。

    • 关于图的最优归一化问题,这里给出了两个定理:

      • 定理一:图的最优归一化问题是 NP-hard

        证明:通过从子图同构进行规约 reduction

        PATCHY-SAN 无法完全解决图的最优归一化问题,它只是比较了不同的 graph labeling 方法,然后选择其中表现最好的那个。

      • 定理二:设 G 为一组图,令 (G1,G1),,(GN,GN) 是从 G 中独立随机均匀采样的一对图的序列。令:

        θ^l=1Ni=1NdA(Al(Gi),Al(Gi))θl=EG[|dA(Al(G),Al(G))dG(G,G)|]

        如果 dA(Al(G),Al(G))dG(G,G) ,则当且仅当 θl1<θl2 时有 EG[θ^l1]<EG[θ^l2] 。其中 l1,l2 表示采用不同的 graph labeling 。证明见论文。

        该定理使得我们通过比较估计量 θ^l 来以无监督的方式比较不同的 graph labeling 。我们可以简单的选择使得 θ^l 最小的graph labeling

        当我们在图上选择编辑距离edit distance、在矩阵 Al(G) 上选择汉明距离时,假设条件 dAdG 成立。

        另外,上述结论不仅对无向图成立,对于有向图也成立。

  3. 图的归一化问题,以及针对该问题的合适的graph labeling 方法是PATCHY-SAN 算法的核心。我们对节点 v 的邻域子图进行归一化,并约束节点的 label:任意两个其它节点 u,w ,如果 d(u,v)<d(w,v)Fr(u)<Fr(w) ,即距离 v 越近,排名越靠前。该约束保证了节点 v 的排名总是1(即排名最靠前)。

    注意,PATCHY-SAN 中应用了两种 graph labeling 函数:

    • 第一种 graph labeling 函数 Fl() ,用于选择节点序列,即 Select Node Sequence 算法。
    • 第二种 graph labeling 函数就是这里的距离函数,用于图的归一化问题,即 Graph Normalization 算法。

    由于大多数 labeling 方法不是单射的,因此有必要打破 same-label 节点之间的联系。为此,我们使用 NAUTYNAUTY 接收先验的 node partition 作为输入,并通过选择字典顺序最大的邻接矩阵来打破剩余的联系 remaining ties

    注意,节点 v 的局部邻域 Nv 中,可能存在多个与节点 v 距离相等的邻居节点,因此距离函数作为 graph labeling 函数不是单射的。

    众所周知,对于有界degree 的图的同构问题可以在多项式时间求解,由于邻域子图的规模为 k 是一个常数,因此图的归一化算法可以在多项式时间内求解。我们的实验证明:图的邻域计算graph labeling 的过程仅产生一个微不足道的开销。

  4. Graph Normalization 算法:

    • 算法输入:

      • 节点 v 及其局部邻域 Nv
      • graph labeling 函数 Fl()(注意,它可能与 Select Node Sequence 算法中的 graph labeling 函数 Fl() 有所不同)
      • 感受野尺寸 k
    • 输出:归一化的邻域子图

    • 算法步骤:

      • Nv 中的每个节点,使用 Fl() 计算这些节点对 v 的排名,使得:

        u,wNv:d(u,v)<d(w,v)Fr(u)<Fr(w)
      • 如果 |Nv|>k,则根据 rankingNv 中的 top k 个节点,对所选择的节点再执行一次labeling 以及 ranking 的过程。

        这里必须使用 Fr() 在筛选出的较小的节点集合上重新计算,因为新的结构导致了新的 labeling 分布。

      • 如果 |Nv|<k,则:添加 k|Nv| 个断开的虚拟节点。

      • 根据这 k 个节点的排名来归一化这些节点,并返回归一化的结果。

  5. 下图为对红色根节点 v 的邻域进行归一化过程,颜色表示到根节点的距离,感受野尺寸为 k=9 。首先利用graph labeling 对节点进行排序,然后创建归一化的邻域。

    归一化还包括裁剪多余的节点和填充虚拟节点。节点的不同属性对应于不同的输入通道。不仅可以针对节点创建感受野,还可以针对边创建感受野,边的感受野尺寸为 k×k ,边的不同属性对应不同的输入通道。

    正如前面的评论所说,最终得到的 Nv 丢失了距离信息(和节点 v 的距离)。那么这里是否可以新增一个 “距离通道”,这个距离通道保存距离属性,即邻居节点和根节点 v 的距离。

    或者,如后文所述,也可以直接采用边的感受野(尺寸为 k×k )。

  6. 创建感受野的 Create Receptive Field 算法:

    • 算法输入:节点 vFl() ,感受野大小 k

    • 算法输出:节点 v 的感受野

    • 算法步骤:

      • 计算节点 v 的邻域:Nv=NeighborhoodAssembly(v,k)
      • 归一化邻域子图:Gnorm=GraphNormalization(Nv,v,Fl,k)
      • 返回 Gnorm
  7. 我们可以将 PATCHY-SAN 与图像的 CNN 相关联。

    定理:在图像中得到的一个像素序列上应用 PATCHY-SAN ,其中感受野尺寸为 k=(2b1)2、步幅为 s 、非零填充以及采用 1-WL 归一化,则这等效于 CNN 的一个感受野大小为 2b1、步幅为 s 、非零填充的卷积层。

    证明:如果输入图为一个正方形网格,则为节点构造的 1-WL 归一化的感受野始终是具有唯一节点顺序的正方形网格。

7.2.4 PATCHY-SAN 架构

  1. PATCHY-SAN 既能处理节点,也能处理边;它既能处理离散属性,也能处理连续属性。

  2. PATCHY-SAN 对每个输入图 G 产生 w 个尺寸为 k 的归一化的感受野。假设 av 为节点属性的数量、ae 为边属性的数量,则这将产生一个 w×k×av 的张量(节点的感受野)以及一个 w×k×k×ae 的张量(边的感受野)。这里 avae 都是输入通道的数量。

    我们可以将这两个张量reshape 为一个 wk×av 的张量和一个 wk2×ae 的张量,然后对每个输入通道采用一个一维卷积层进行卷积。节点产生的张量应用步幅 k 、感受野尺寸 k 的一维卷积层,边产生的张量应用步幅 k2、 感受野尺寸 k2 的一维卷积层 。剩下的结构可以任意结合 CNN 的组件。另外我们可以利用融合层来融合来自节点的卷积输出feature map 和来自边的卷积输出 feature map

7.2.5 算法复杂度

  1. PATCHY-SAN 的创建感受野算法非常高效。另外,由于这些感受野的生成是相互独立的,因此感受野生成过程原生支持并行化。

  2. 定理:令 N 为数据集中图的数量,k 为感受野尺寸,w 为宽度(每个子图包含的感受野数量)。假设 O(fl(n,m)) 为包含 n 个节点、m 条边的图的 graph labeling 过程的计算复杂度。则PATCHY-SAN 最坏情况下的计算复杂度为 O(N×w×[fl(n,m)+nlogn+exp(k)])

    证明见论文。

    当采用Weisfeiler-Lehman 算法作为graph labeling 算法时,它的算法复杂度为 O((n+m)logn) 。考虑到 wn,kn ,则PATCHY-SAN 的复杂度为 N 的线性、m 的准线性、n 的准线性。

7.3 实验

7.3.1 运行时分析

  1. 我们通过将PATCHY-SAN 应用于实际的图来评估其计算效率,评估指标为感受野的生成速度。我们将 PATCHY-SAN 生成感受野的速度,与 state-of-the-artCNN 执行学习的速度进行比较。

  2. 数据集:所有输入图都来自 Python 模块 GRAPHTOOL

    • torus 图:具有10k 个节点的周期性晶格。
    • random 图:具有10 个节点的随机无向图,节点的度的分布满足:p(k)1/k ,以及 kmax=3
    • power 图:美国电网拓扑网络。
    • polbooks2004年美国总统大选期间出版的有关美国政治书籍的 co-purchasing 网络。
    • preferential:一个 preferential attachment network,其中最新添加的节点的degree3
    • astro-ph:天体物理学 arxiv 上作者之间的 co-authorship 网络。
    • email-enron:一个由大约 50万 封已发送 email 生成的通信网络。
  3. 我们的PATCHY-SAN 采用 1-dimensional Weisfeiler-Lehman:1-WL 算法来归一化邻域子图。下图给出了每个输入图每秒产生感受野的速度。所有实验都是在单台 2.8 GHZ GPU64G 内存的机器上执行。

    • 对于感受野尺寸 k=5/k=10 ,除了在 email-eron 上的速度为 600/s320/s 之外,在其它所有图上PATCHY-SAN 创建感受野的速度超过 1000/s
    • 对于最大的感受野尺寸 k=50PATCHY-SAN 创建感受野的速度至少为 100/s

    对于一个经典的带两层卷积层、两层 dense 层的 CNN 网络,我们在相同机器上训练速度大概是 200-400 个样本/秒,因此PATCHY-SAN 感受野的生成速度足以使得下游 CNN 组件饱和。

7.3.2 可视化

  1. 可视化实验的目的是定性研究 restricted boltzman machine: RBM 等流行模型是否可以与 PATCHY-SAN 结合从而用于无监督特征学习。我们将 PATCHY-SAN 学到的尺寸为9 的归一化感受野使用 restricted boltzman machine:RBM 进行无监督学习,RNM 所学到的特征对应于重复出现的感受野模式。其中:

    • PATCHY-SAN 采用 1-WL 算法进行邻域子图归一化。
    • 采用单层RBM ,隐层包含 100 个隐单元。
    • RBM 采用对比散度算法contrastive divergence: CD 训练 30epoch,学习率设为 0.01

    下图给出了从四张图中得到的样本和特征。我们将RBM 学到的特征权重可视化(像素颜色越深,则对应权重重大)。另外我们还采样了每种模式对应的三个节点的归一化邻域子图,黄色节点表示当且节点(排序为1)。

    左上角为 torus 周期性晶格图、左下角为 preferential attachment 图、右上角为 co-purchasing 图、右下角为随机图。

7.3.3 图的分类

  1. 图分类任务是将每个图划分到若干类别之一。我们采用6 个标准 benchmark 数据集来比较不同图分类模型的分类准确性和运行时间。

    • MUTAG 数据集:由188 种硝基化合物组成的数据集,其类别表明该化合物是否对细菌具有诱变 mutagenic 作用。
    • PTC 数据集:由 344 种化合物组成的数据集,其类别表明是否对老鼠具有致癌性。
    • NCI1NCI109 数据集:筛选出的抑制 non-small 肺癌细胞和卵巢癌细胞活性的化合物。
    • PROTEIN:一个图的数据集,其中图的节点表示次级结构元素 secondary structure element, 边表示氨基酸序列中的相邻关系,或者三维空间中的氨基酸相邻关系。其类别表示酶或者非酶。
    • D&D:由 1178 种蛋白质组成的数据集,其类别表明是酶还是非酶。
  2. 我们将PATCHY-SAN 和一组核方法比较,包括shortest-path kernel: SPrandom walk kernel: RWgraphlet count kernel: GK,以及 Weisfeiler-Lehman sbutree kernel: WL

    • 对于核方法,我们使用 LIB-SVM 模型来训练和评估核方法的效果。我们使用10 折交叉验证,其中9-fold 用于训练,1-fold 用于测试。我们重复10 次并报告平均准确率和标准差。

      类似之前的工作,我们设置核方法的超参数为:WL 的高度参数设置为2GK 的尺寸参数设置为 7RW 的衰减因子从 {106,105,,101} 中进行挑选。

    • 对于 PATCHY-SAN: PSCN 方法,我们使用 1-dimensional WL 归一化,设置 w 为平均节点数量,设置感受野尺寸分别为 k=5k=10 。实验中我们仅使用节点的属性,但是在 k=10 时我们实验了融合节点的感受野和边的感受野,记作 k=10E

      所有 PSCN 都使用了具有两个卷积层、一个dense 层、一个 softmax 层的网络结构。其中:

      • 第一个卷积层有 16 个输出通道,第二个卷积层有 8 个输出通道,步长 s=1,感受野大小为 k=10
      • dense 层有 128 个隐单元(relu 激活函数),采用dropout = 0.5dropout。我们采用一个较小的隐单元数量以及 dropout 从而避免模型在小数据集上过拟合。

      所有卷积层和 dense 层的激活函数都是 reLU 。 模型的优化算法为 RMSPROP 优化算法,并基于Keras 封装的 Theno 实现。

      所有 PSCN 需要优化的超参数为 epoch 数量以及 batch-size

      k=10 时,我们也对 PATCHY-SAN 抽取的感受野应用一个逻辑回归分类器 PSLR

  3. 实验结果:这些模型在 benchmark 数据集上的结果如下表所示。其中前三行给出了各数据集的属性,包括图的最大节点数Max、图的平均节点数Avg、图的数量Graphs 。我们忽略了 NCI109 的结果,因为它几乎和 NCI1 相同。

    • 尽管使用了非常普通的CNN 架构,PSCN 的准确率相比现有的graph kernel 方法具有很强的竞争力。在大多数情况下,采用 k=10PSCN 具有最佳的分类准确性。
    • PSCN 这里的预测方差较大,这是因为:benchmark 数据集较小,另外 CNN 的一些超参数(epochbatch-size 除外)没有针对具体的数据集进行优化。与图像和文本数据的体验类似,我们预期 PATCHY-SAN 在大型数据集上的表现更好。
    • PATCHY-SAN 的运行效率是graph kernel 中最高效的 WL 方法的 28 倍。我们预计具有大量 graph 的数据集上,PATCHY-SAN 的性能优势会更加明显。
    • PATCHY-SAN + 逻辑回归的效果较差,这表明 PATCHY-SAN 更适合搭配 CNNCNN 学到了归一化感受野的非线性特征组合,并在不同感受野之间共享权重。
    • 采用中介中心性归一化 betweeness centrality normalization 结果也类似(未在表中体现),除了它的运行时间大约增加了 10%

    融合节点的感受野和边的感受野的 PSCN k=10E 的效果优于 PSCN k=10,这表明保留邻域子图的距离信息的有效性。

  4. 我们在较大的社交网络图数据集上使用相同的配置进行实验,其中每个数据集最多包含 12k 个图,每个图平均 400 个节点。我们将 PATCHY-SAN 和之前报告的 graphlet count: GKdeep graplet count kernel: DGK 结果相比。

    我们使用归一化的节点degree 作为节点的属性,这突出了PATCHY-SAN 的优势之一:很容易地包含连续特征。

    可以看到 PSCN 在六个数据集的四个中明显优于其它两个核方法,并且在剩下两个数据集也取得了很好的性能。

八、GraphSAGE[2017]

  1. 在大型图中节点的低维向量 embedding 已被证明作为特征输入非常有用,可用于各种预测和图分析graph analysis 任务。node embedding 方法背后的基本思想是:使用降维技术将关于节点的 graph neighborhood 的高维信息蒸馏成稠密的、低维的向量 embedding 。然后可以将这些 node embedding 馈入到下游机器学习系统,并帮助完成节点分类、节点聚类、以及链接预测等任务。

    然而,以前的工作集中在从单个固定图a single fixed graph上的节点的 embedding ,许多实际 application 需要为 unseen 的节点、或全新的图快速生成 embedding 。这种归纳能力 inductive capability 对于高吞吐量、生产型的机器学习系统至关重要,其中这些机器学习系统在不断演变的图上运行并不断遇到 unseen 的节点(如 Reddit 上的帖子、Youtube 上的用户和视频)。生成 node embedding 的归纳方法 inductive approach 还有助于跨具有相同形式特征的图进行泛化:例如,可以在源自模型器官 model organismprotein-protein 交互图上训练一个 embedding generator ,然后使用经过训练的 embedding generator 轻松地为在新器官上收集的数据生成 node embedding

    与直推式配置 transductive setting 相比,归纳式inductivenode embedding 问题特别困难,因为泛化到 unseen 的节点需要将新观察到的子图observed subgraph 与算法已经优化的 node embedding 进行对齐 aligning 。归纳式框架 inductive framework 必须学会识别节点领域的结构属性,这些属性揭示了节点在图中的局部角色local role 及其全局位置global position

    大多数现有的生成 node embedding 的方法本质上都是直推式的。这些方法中的大多数使用基于矩阵分解的目标直接优化每个节点的 embedding ,并且无法自然地泛化到 unseen 的数据,因为它们在单个固定图上对节点进行预测。这些方法可以被修改从而在归纳式配置中运行,但是这些修改往往在计算上代价很大,需要额外的梯度下降轮次才能作出新的预测。最近还有一些使用卷积算子来学习图结构的方法,这些方法提供了作为 embedding 方法的承诺(《Semi-supervised classification with graph convolutional networks》)。到目前为止,图卷积网络 graph convolutional network: GCN 仅应用于具有固定图 fixed graph 的直推式配置。在论文《Inductive Representation Learning on Large Graphs》 中,作者将 GCN 泛化到归纳式无监督学习的任务,并提出了一个框架,该框架泛化了 GCN 方法从而使用可训练的聚合函数(超越了简单的卷积)。

    《Semi-supervised classification with graph convolutional networks》 提出的 GCN 要求在训练过程中已知完整的图拉普拉斯算子,而测试期间 unseen 的节点必然会改变图拉普拉斯算子,因此该方法也是直推式的。

    论文的工作:

    • 作者提出了一个通用框架,称作 GraphSAGESAmple and aggreGatE),用于归纳式 node embedding。与基于矩阵分解的 embedding 方法不同,GraphSAGE 利用节点特征(如,文本属性、节点画像node profile信息、节点 degree )来学习一个 embedding 函数,该embedding 函数可以泛化到 unseen 的节点。通过在学习算法中加入节点特征,GraphSAGE 同时学习了每个节点邻域的拓扑结构、以及该邻域内节点特征的分布。虽然GraphSAGE 聚焦于特征丰富的 graph(如,具有文本属性的引文数据,具有功能标记/分子标记的生物数据),但是GraphSAGE 还可以利用所有图中存在的结构特征(如,节点 degree)。因此,GraphSAGE 也可以应用于没有节点特征的图。

    • GraphSAGE 不是为每个节点训练一个distinctembedding 向量,而是训练一组聚合器函数 aggregator function ,这些函数学习从节点的局部邻域来聚合特征信息(如下图所示)。每个聚合器函数聚合来自远离给定节点的不同 hop 数(或搜索深度)的信息。在测试或推断时,GraphSAGE 通过应用学到的聚合函数为 unseen 的节点生成 embedding

      遵从之前的 node embedding 工作,作者设计了一个无监督损失函数,允许在没有task-specific 监督信息的情况下训练 GraphSAGE 。作者还表明 GraphSAGE 可以通过完全监督的方式进行训练。

    • 作者在三个关于节点/图分类 benchmark 上评估GraphSAGE ,这些 benchmark 测试了 GraphSAGEunseen 数据上生成有效 embedding 的能力。作者使用基于引文数据和 Reddit 帖子数据(分别预测论文类别和帖子类别)的两个不断演变的文档图,以及基于 protein-protein 交互的数据集(预测蛋白质功能)的多图泛化multigraph generalization实验。

      使用这些 benchmark,作者表明GraphSAGE 能够有效地为 unseen 的节点生成 representation,并大大优于相关 baseline :跨所有这些不同的领域,与单独使用节点特征相比,GraphSAGE 的监督方法将分类 F1 分数平均提高了 51%,并且 GraphSAGE 始终优于强大的直推式的 baseline ,并且该 baseline 需要 100 轮迭代甚至更长的时间才能预测 unseen 的节点。

      作者还表明,与受图卷积网络(《Semi-supervised classification with graph convolutional networks》)启发的聚合器相比,论文提出的新聚合器架构提供了显著的增益(平均增益 7.4%)。

      最后,作者探讨了GraphSAGE 的表达能力expressive capability,并通过理论分析表明:GraphSAGE 能够学到有关节点在图中的角色的结构信息,尽管它本质上是基于特征的。

  2. 相关工作:我们的算法在概念上与之前的 node embedding 方法、图上学习的通用监督方法general supervised approache、以及将卷积神经网络应用于图结构数据的最新进展等等相关。

    • 基于分解的 embedding 方法:最近有许多 node embedding 方法使用随机游走统计和基于矩阵分解的学习目标来学习低维 embeddingGraRep, node2vec, Deepwalk, Line, SDNE)。这些方法还与更经典的谱聚类spectral clustering方法、多维缩放multi-dimensional scaling、以及 PageRank 算法密切相关。

      由于这些 embedding 算法直接为单个节点individual node 训练 node embedding,因此它们本质上是直推式的,并且至少需要昂贵的额外训练(如,通过随机梯度下降)来对 unseen 节点进行预测。此外,对于大多数这些方法,目标函数对于 embedding 的正交变换是不变的,这意味着 embedding 空间不会自然地在图之间泛化,并且在 re-training 期间可能会漂移 drift

      因为这些方法是基于矩阵分解的,而矩阵分解的内积函数 vivjembedding 空间的正交不变的,即:将 embeddign 空间旋转任意角度,原始内积函数和新内积函数的结果是相等的。

      这一趋势的一个显著例外是 Planetoid-I 算法,它是一种归纳式的、基于 embedding 的半监督学习方法。但是,Planetoid-I 在推断过程中不使用任何图结构信息,相反,它在训练期间使用图结构信息作为正则化的一种形式。

      与先前的这些方法不同,我们利用特征信息来训练模型从而为 unseen 节点生成 embedding

    • 图上的监督学习:除了 node embedding 方法之外,还有大量关于图结构数据的监督学习的工作。这包括各种各样的 kernel-based 方法,其中图的特征向量来自于各种 graph kernel 。最近还有许多神经网络方法可以对图结构数据进行监督学习。我们的方法在概念上受到大多数这些算法的启发。然而,这些方法试图对整个图(或子图)进行分类,但是我们这项工作的重点是为每个节点生成有用的 representation

    • 图卷积网络:近年来,人们已经提出了几种用于图上学习的卷积神经网络架构。这些方法中的大多数无法扩展到大型图、或者设计用于整个图的分类。然而,我们的方法与 《Semi-supervised classification with graph convolutional networks》 提出的图卷积网络 graph convolutional network: GCN 密切相关。原始的 GCN 算法是为直推式setting 的半监督学习而设计的,确切 exact 的算法要求在训练期间知道整个图的拉普拉斯算子。我们算法的一个简单变体可以视作 GCN 框架对归纳式setting 的扩展,我们将在正文部分重新讨论这一点。

8.1 模型

  1. 我们方法背后的关键思想是:我们学习如何从节点的局部邻域聚合特征信息(如,邻域节点的 degree 或文本属性)。我们首先描述 GraphSAGEembedding 生成(即,前向传播)算法,该算法在假设 GraphSAGE 模型参数已经学到的情况下为节点生成 embedding 。然后,我们描述了如何使用标准随机梯度下降和反向传播技术来学习 GraphSAGE 模型参数。

8.1.1 前向传播

  1. 这里我们将描述前向传播算法(也叫 embedding 生成算法),其中假设模型已经训练好并且参数是固定的。具体而言,假设我们已经学到了 K 个聚合函数 AGGk,k{1,2,,K},这些聚合函数用于聚合节点的邻域信息。假设我们也学到了 K 个权重矩阵 W(k),k{1,2,,K},它们用于在不同层之间传递信息。 K 也称作搜索深度,或 layer 层数。

    GraphSAGEembedding 生成算法为:

    • 输入:

      • G(V,E),输入特征 {xvvV},搜索深度 K ,邻域函数 N()
      • K 个权重矩阵 W(k)K 个聚合函数 AGGkk{1,,K}
      • 非线性激活函数 σ()
    • 输出:节点的embedding 向量 {zvvV}

    • 算法步骤:

      • 初始化:hv(0)=xv,vV

      • 对每一层迭代,迭代条件为:k=1,2,,K 。迭代步骤:

        • 遍历每个节点 vV,执行:

          hN(v)(k1)=AGGk({hu(k1)uN(v)})hv(k)=σ(W(k)concat(hv(k1),hN(v)(k1)))

          其中 concat() 表示向量拼接。

          这里是拼接融合,也可以考虑其它类型的融合方式。

        • 对每个节点 v 的隐向量归一化:

          hv(k)=hv(k)hv(k)2,vV
      • zv=hv(K)

  2. GraphSAGE 前向传播算法的背后直觉是:在每次迭代或搜索深度,节点都会聚合来自其局部邻域的信息;并且随着这个过程的迭代,节点将从图的更远范围逐渐获取越来越多的信息。

    在算法的外层循环中的每个 step 如下进行,其中 k 表示外层循环中的current step (也叫做搜索深度),h(k) 表示该 step 中的 node representation

    • 首先,每个节点 vV 聚合其直接邻域中节点的 representation {hu(k1)uN(v)} 到一个向量 hN(v)(k1) 中。注意,这个聚合步骤依赖于第 k1 轮迭代产生的 node representation (即 h(k1)),并且 k=0 时的 representation 被定义为节点输入特征 x

      邻域 representation 可以通过各种聚合器架构(以 AGGREGATE 占位符来表达)来完成,接下来我们会讨论不同的架构选择。

    • 然后,在聚合邻域特征向量之后,GraphSAGE 将节点的当前 representation hv(k1) 和聚合后的邻域向量 hN(v)(k1) 拼接起来,然后通过一个带非线性激活函数 σ() 的全连接层。这个全连接层的输出就是下一个 step 要用到的 representation,即 h(k)

      大多数节点 embedding 方法将学到的 embedding 归一化为单位向量,这里也做类似处理。

    为了记号方便,我们将第 K 步的 final representation 记做 zv=hv(K),vV

a. mini-batch 训练
  1. 为了将算法扩展到 mini-batch setting,给定一组输入节点,我们首先前向采样 forward sample 所需要的邻域集合(直到深度 K )然后执行内层循环,而不是迭代所有节点。我们仅计算满足每个 k 所需的 representation (而不是所有节点的 representation )。

  2. 为了使用随机梯度下降算法,我们需要对GraphSAGE 的前向传播算法进行修改,从而允许mini-batch 中每个节点能够执行前向传播、反向传播。

    即:确保前向传播、反向传播过程中用到的节点都在同一个 mini-batch 中。

  3. GraphSAGE mini-batch 前向传播算法(这里 B 包含了我们想要为其生成 representation 的节点):

    • 算法输入:

      • G(V,E),输入特征 {xvvB},搜索深度 K ,邻域函数 N()
      • K 个权重矩阵 W(k)K 个聚合函数 AGGkk{1,,K}
      • 非线性激活函数 σ()
    • 输出:节点的embedding 向量 {zvvB}

    • 算法步骤:

      • 初始化:B(K)=B

      • 迭代 k=K,,1,迭代步骤为:

        • B(k1)=B(k)
        • 遍历 uB(k),计算 B(k1)=B(k1)Nk(u)
      • 初始化:hv(0)=xvvB(0)

      • 对每一层迭代,迭代条件为:k=1,2,,K 。迭代步骤:

        • 遍历每个节点 vB(k),执行:

          hNk(v)(k1)=AGGk({hu(k1)uNk(v)})hv(k)=σ(W(k)concat(hv(k1),hNk(v)(k1)))

          这里用 Nk(v) 表示节点 v 的邻域在每个深度 k 都不相同,依赖于前向采样的结果。

        • 对每个节点 v 的隐向量归一化:

          hv(k)=hv(k)hv(k)2,vV
      • zv=hv(K),vB

  4. mini-batch 前向传播算法的主要思想是:首先采样所有所需的节点。集合 B(k1) 包含了第 k 轮迭代计算 representation 的节点所依赖的节点集合。由于 B(k)B(k1) ,所以在计算 hv(k) 时依赖的 hv(k1) 已经在第 k1 轮已被计算。另外第 k 轮需要计算 representation 的节点更少,这避免计算不必要的节点。

    然后计算目标节点的 representation,这一步和 batch 前向传播算法相同。

    mini-batch 前向传播和 batch 前向传播的主要区别在于:mini-batch 前向传播还有一个前向采样的步骤。

  5. 我们使用 Nk()k 来表明:不同层之间使用独立的 random walk 采样。这里我们使用均匀采样,并且当节点邻域节点数量少于指定数量时采用有放回的采样,否则使用无放回的采样。

    有一些算法聚焦于如何更好地进行采样,从而优化最终效果。

  6. mini-batch 算法的采样过程在概念上与 batch 算法的迭代过程是相反的。我们从需要以深度 K 生成 representation 的节点开始,然后我们对它们的邻域进行采样(即,深度 K1 ),依此类推。这样做的一个后果是邻域采样规模的定义可能有点违反直觉。具体而言,假设 K=2

    • batch 算法中,我们在 k=1 时对节点邻域内采样 S1 个节点,在 k=2 时对节点邻域内采样 S2 个节点。

    • mibi-batch 算法中,我们在 k=2 时对节点邻域内采样 S2 个节点,然后在 k=1 时对节点邻域内采样 S1×S2 个节点。

      这样才能保证我们的目标 B 中包含 mibi-batch 所需要计算的所有节点。

b. 和 WL-Test 关系
  1. GraphSAGE 算法在概念上受到图的同构性检验的经典算法的启发。在前向传播过程中,如果令 K=|V|W(k)=I,并选择合适的hash 函数来作为聚合函数,同时移除非线性函数,则该算法是 Weisfeiler-Lehman:WL 同构性检验算法的一个特例,被称作 naive vertex refinement

    如果算法输出的 node representation {zv,vV} 在两个子图是相等的,则 WL-test 算法认为这两个子图是同构的。虽然在某些情况下该检验会失败,但是大多数情况下该检验是有效的。

  2. GraphSAGEWL test 算法的一个continous 近似,其中GraphSAGE 使用可训练的神经网络聚合函数代替了不连续的哈希函数。虽然 GraphSAGE 的目标是生成节点的有效embedding 而不是检验图的同构性,但是GraphSAGEWL test 之间的联系为我们设计学习节点邻域拓扑结构的算法提供了理论背景。

  3. 可以证明:即使我们提供的是节点特征信息,GraphSAGE 也能够学到图的结构信息。参考 “理论分析” 部分。

c. 邻域定义
  1. GraphSAGE 中我们并没有使用完整的邻域,而是均匀采样一组固定大小的邻域,从而确保每个 batch 的计算代价是固定的。因此我们定义 N(v) 为:从集合 {uuV,(u,v)E} 中均匀采样的、固定大小的集合,并且我们在算法的每轮迭代 k 中采样不同的邻域。

    如果对每个节点使用完整的邻域,则每个 batch 的内存需求和运行时间是不确定的,最坏情况为 O(|V|) 。如果使用采样后的邻域,则每个 batch 的时间和空间复杂度固定为 O(k=1KSk) ,其中 Sk 表示第 k 轮迭代时的邻域大小。 K 以及 Sk 均为用户指定的超参数,实验发现 K=2,S1×S2500 时的效果较好。

    KSk 依赖于具体的数据集和任务。

8.1.2 模型学习

  1. 为了在完全无监督的环境中学习有用的、预测性的 representation,我们将一个 graph-based 损失函数应用于 output representation zu,uV ,并且通过随机梯度下降来学习模型参数。这个 graph-based 损失函数鼓励临近的节点具有相似的 representation,同时迫使不相近的节点具有高度不相似的 representation

    JG(zu)=log(sigmoid(zuzv))Q×EvnPn(v)log(sigmoid(zuzvn))

    其中:

    • v 是和节点 u 在一个长度为 lrandom walk 上共现的节点。
    • sigmoid(.)sigmoid 函数。
    • Pn() 为负采样用到的分布函数,vn 为负采样到的 negative nodeQ 为负采样的样本数。

    重要的是,与之前的 embedding 方法不同,GraphSAGE 中的节点 representation zu 是从节点局部邻域中包含的特征而生成的,而不是通过 embedding look-up 而生成的。

    可以看到,GraphSAGEDeepWalk 类似,也依赖于图上的随机游走过程。为了提高训练效率,通常在训练之前执行一次随机游走过程(避免在训练的每轮迭代中进行随机游走)。

  2. 以无监督方式学到的节点 embedding 可以作为通用 service 来服务于下游的机器学习任务。但是如果仅在特定的任务上应用,则可以简单地将特定于任务的监督学习损失替代或增强原始的无监督损失。

    通过结合监督损失和无监督损失,那么可以同时利用 labeled 数据和 unlabeled 数据,即半监督学习。

8.1.3 聚合函数

  1. 和网格型数据(如文本、图像)不同,图的节点之间没有任何顺序关系,因此算法中的聚合函数必须能够在无序的节点集合上运行。理想的聚合函数是对称的,同时可训练并保持较高的表达能力。这种对称性可以确保我们的神经网络模型可以用于任意顺序的节点邻域的训练和测试。

    对称性是指:对于给定的一组节点集合,无论它们以何种顺序输入到聚合函数,聚合后的输出结果不变。

    聚合函数有多种形式,我们检查了三种主要的聚合函数:均值聚合函数mean aggregatorLSTM聚合函数LSTM aggregator 、池化聚合函数 pooling aggregator

  2. mean aggregator:简单的使用邻域节点的特征向量的逐元素均值来作为聚合结果。这几乎等价于直推式 GCN 框架中的卷积传播规则。

    具体而言,如果我们将前向传播:

    hN(v)(k1)=AGGk({hu(k1)uN(v)})hv(k)=σ(W(k)concat(hv(k1),hN(v)(k1)))

    替换为:

    hv(k)=σ(W(k)MEAN({hv(k1)}{hu(k1)uN(v)}))

    则这得到直推式 GCN 的一个 inductive 变种,我们称之为基于均值聚合的卷积 mean-based aggregator convolutional 。它是局部谱卷积localized spectral convolution的一个粗糙的线性近似。

    GCN 的前向传播为:

    H(k)=W(k)(D~1/2A~D~1/2H(k1))

    其中:A~=A+IA 为邻接矩阵,D~A~degree 矩阵。

    因此有:

    hv(k)=σ(W(k)MEAN({hv(k1)}{hu(k1)uN(v)}))

    注意,GCNhv(0) 是通过 embedding look-up 而生成的(而不是输入特征 xv )。

    这个卷积聚合器与我们提出的其它聚合器之间的一个重要区别在于:它并未执行拼接操作(即,将 hv(k1)hN(v)(k1) 拼接起来) 。这种拼接操作可以视为 GraphSAGE 算法的不同 search depth (或 layer)之间的 skip connection 的一种简单形式,它可以显著提高性能。

    事实上其它聚合器在拼接操作之后执行了带非线性激活函数的投影,因此破坏了这种 skip connection。是否修改为以下形式更好?

    hv(k)=hv(k1)+σ(W(k)hN(v)(k1))
  3. LSTM aggregator :和均值聚合相比,LSTM 具有更强大的表达能力。但是 LSTM 原生的是非对称的(即,LSTM 不是 permutation invariant 的),它依赖于节点的输入顺序。因此我们通过简单地将 LSTM 应用于邻域节点的随机排序,从而使得 LSTM 可以应用于无序的节点集合。

  4. pooling aggregator :池化聚合器是对称的、可训练的。在这种池化方法中,邻域每个节点的特征向量都通过全连接神经网络独立馈入,然后通过一个逐元素的最大池化来聚合邻域信息:

    hN(v)(k1)=max({σ(Wpoolhu(k1)+bpool)uN(v)})

    其中 max 表示逐元素的 max 运算符,σ() 是非线性激活函数。

    理论上可以在最大池化之前使用任意深度的多层感知机,但是我们这里专注于简单的单层网络结构。直观上看,可以将多层感知机视为一组函数,这组函数为邻域集合内的每个节点representation 计算特征。通过将最大池化应用到这些计算到的特征上,模型可以有效捕获邻域集合的不同方面 aspect

    理论上可以使用任何的对称向量函数(如逐元素均值)来替代 max 运算符。但是我们在实验中发现最大池化和均值池化之间没有显著差异,因此我们专注于最大池化。

8.1.4 理论分析

  1. 这里我们将探讨 GraphSAGE 的表达能力,以便深入了解 GraphSAGE 如何学习图结构,即使它本质上是基于特征的。作为案例研究,我们考虑 GraphSAGE 是否可以学习预测节点的聚类系数 clustering coefficient,即:在节点的 1-hop 邻域内,闭合的三角形占所有三角形(闭合的和未闭合的)的比例。聚类系数是衡量节点局部邻域聚类程度的常用指标,它可以作为许多更复杂的结构主题structural motifbuilding block。可以证明:GraphSAGE 算法能够将聚类系数逼近到任意精度。

  2. 定理:令 xvU,vV 作为 GraphSAGE 算法针对图 G=(V,E) 的输入,其中 URd 的一个紧致子集 compact subset。假设存在一个固定的正的常数 CR+ 使得 xvxv2>C 对任意节点 pair (v,v) 成立,那么我们有:对于任意 ϵ>0 ,这里存在一个参数 setting Θ ,使得GraphSAGE 算法在 K=4 轮迭代之后有:

    |zvcv|ϵ,vV

    其中:zvRGraphSAGE 算法的 final output 值,cv 为节点的聚类系数。

    注意,这里假设 output representation 是一维的。

  3. 上述定理指出:对于任意的图,GraphSAGE 算法都存在一个参数 setting,如果每个每个节点的特征都是不同的(并且如果模型足够高维),那么算法可以将图的聚类系数逼近到任意精度。证明见原始论文。

    注意:作为该定理的推论,GraphSAGE 可以了解局部图结构,即使节点特征输入是从连续随机分布中采样的(因此特征输入与图结构无关)。

    证明背后的基本思想是:如果每个节点都有一个 unique 的特征,那么我们可以学习将节点映射到 indicator 向量并识别节点邻域。定理的证明依赖于池化聚合器的一些属性,这也提供了为什么 GraphSAGE-pool 优于 GCN 、以及 mean-based 聚合器的洞察。

8.2 实验

  1. 我们在三个 benchmark 任务上检验 GraphSAGE 的效果:Web of Science Citation 数据集的论文分类任务、Reddit 数据集的帖子分类任务、PPI 数据集的蛋白质分类任务。

    前两个数据集是对训练期间unseen 的节点进行预测,最后一个数据集是对训练期间unseen 的图进行预测。

  2. 数据集:

    • Web of Science Cor Collection 数据集:包含 2000 年到 2005 年六个生物学相关领域的所有论文,每篇论文属于六种主题类别之一。数据集包含 302424 个节点,节点的平均degree9.15 。其中:

      • Immunology 免疫学的标签为NI,节点数量 77356
      • Ecology 生态学的标签为 GU,节点数量 37935
      • Biophysics 生物物理学的标签为DA,节点数量 36688
      • Endocrinology and Metabolism 内分泌与代谢的标签为 IA ,节点数量 52225
      • Cell Biology 细胞生物学的标签为 DR,节点数量84231
      • Biology(other) 生物学其它的标签为 CU,节点数量 13988

      任务目标是预测论文主题的类别。我们根据 2000-2004 年的数据来训练所有算法,并用 2005 年的数据进行进行测试(其中 30% 用于验证)。

      我们使用节点degree 和文章的摘要作为节点的特征,其中节点摘要根据Arora 等人的方法使用 sentence embedding 方法来处理文章的摘要,并使用Gensim word2vec 的实现来训练了300 维的词向量。

    • Reddit 数据集:包含20149Reddit 上发布帖子的一个大型图数据集,节点标签为帖子所属的社区。我们采样了 50 个大型社区,并构建一个帖子到帖子的图。如果一个用户同时在两个帖子上发表评论,则这两个帖子将链接起来。数据集包含 232965 个节点,节点的平均degree492

      为了对社区进行采样,我们按照每个社区在 2014 年的评论总数对社区进行排名,并选择排名在 [11,50](包含)的社区。我们忽略了最大的那些社区,因为它们是大型的、通用的默认社区,会严重扭曲类别的分布。我们选择这些社区上定义的最大连通图largest connected component

      任务的目标是预测帖子的社区community。我们将该月前20 天用于训练,剩下的天数作为测试(其中 30% 用于验证)。

      我们使用帖子的以下特征:标题的平均embedding、所有评论的平均 embedding、帖子评分、帖子评论数。其中embedding 直接使用现有的 300 维的 GloVe CommonCral 词向量,而不是在所有帖子中重新训练。

    • PPI 数据集:包含Molecular Signatures Dataset 中的图,每个图对应于不同的人类组织,节点标签采用gene ontology sets ,一共121 种标签。平均每个图包含 2373 个节点,所有节点的平均 degree28.8

      任务的目的是评估模型的跨图泛化的能力。我们在 20 个随机选择的图上进行训练、2 个图进行验证、 2 个图进行测试。其中训练集中每个图至少有 15000 条边,验证集和测试集中每个图都至少包含 35000 条边。注意:对于所有的实验,验证集和测试集是固定选择的,训练集是随机选择的。我们最后给出测试图上的 micro-F1 指标。

      我们使用positional gene setsmotif gene sets 以及 immunological signatures 作为节点特征。我们选择至少在 10% 的蛋白质上出现过的特征,低于该比例的特征不被采纳。最终节点特征非常稀疏,有 42% 的节点没有非零特征(即,42% 的节点的特征全是空的),这使得节点之间的链接非常重要。

  3. Baseline 模型:

    • 随机分类器。
    • 基于节点特征的逻辑回归分类器(完全忽略图的结构信息)。
    • 代表因子分解方法的 DeepWalk 算法+逻辑回归分类器(完全忽略节点的特征)。
    • 拼接了 DeepWalkembedding 以及节点特征的方法(融合图的节点特征和结构特征)。

    我们使用了不同聚合函数的 GraphSAGE 的四个变体。由于卷积的变体是 GCNinductive 扩展,因此我们称其为 GraphSAGE-GCN

    我们使用了 GraphSAGE 的无监督版本,也直接使用分类交叉熵作为损失的有监督版本。

  4. 模型配置:

    • GrahSage

      • 所有GraphSAGE 模型都在 Tensorflow 中使用 Adam 优化器实现, 而 DeepWalk 在普通的随机梯度优化器中表现更好。
      • 为防止 GraphSAGE 聚合函数的效果比较时出现意外的超参数hacking,我们对所有 GraphSAGE 版本进行了相同的超参数配置:根据验证集的性能为每个版本提供最佳配置。
      • 对于所有的 GraphSAGE 版本设置 K=2 以及邻域采样大小 S1=25,S2=10
      • 对于所有的 GraphSAGE ,我们对每个节点执行以该节点开始的 50 轮长度为 5 的随机游走序列,从而得到pair 节点对。我们的随机游走序列生成完全基于 Python 代码实现。
      • 由于节点 degree 分布的长尾效应,我们将 GraphSAGE 算法中所有图的边执行降采样预处理。经过降采样之后,使得没有任何节点的 degree 超过 128 。由于我们每个节点最多采样 25 个邻居,因此这是一个合理的权衡。
    • 为公平比较,所有模型都采样相同的 mini-batch 迭代器、损失函数(当然监督损失和无监督损失不同)、邻域采样器。

    • 对于原生特征模型,以及基于无监督模型的 embedding 进行预测时,我们使用 scikit-learn 中的 SGDClassifier 逻辑回归分类器,并使用默认配置。

    • 在所有配置中,我们都对学习率和模型的维度以及batch-size 等等进行超参数选择:

      • 除了 DeepWalk 之外,我们为监督学习模型设置初始学习率的搜索空间为 {0.01,0.001,0.0001} ,为无监督学习模型设置初始学习率的搜索空间为 {2×106,2×107,2×108}

        最初实验表明 DeepWalk 在更大的学习率下表现更好,因此我们选择DeepWalk 的初始学习率搜索空间为 {0.2,0.4,0.8}

      • 我们测试了每个GraphSAGE模型的big 版本和 small 版本。

        • 对于池化聚合函数,big 模型的池化层维度为 1024small 模型的池化层维度为 512
        • 对于 LSTM 聚合函数,big 模型的隐层维度为 256small 模型的隐层维度为 128

        注意,这里设置的是聚合器的维度,而不是 hidden representation 的维度。

      • 所有实验中,我们将GraphSAGE 每一层的 hi(k) 的维度设置为 256

      • 所有的 GraphSAGE 以及 DeepWalk 的非线性激活函数为 ReLU

      • 对于无监督 GraphSAGEDeepWalk 模型,我们使用 20 个负采样的样本,并且使用 0.75 的平滑参数对节点的degree 进行上下文分布平滑。

      • 对于监督 GraphSAGE,我们为每个模型运行 10epoch

      • 我们对 GraphSAGE 选择 batch-size = 512。对于 DeepWalk 我们使用 batch-size=64,因为我们发现这个较小的 batch-size 收敛速度更快。

  5. 硬件配置:

    • DeepWalkCPU 密集型机器上速度更快,它的硬件参数为 144 coreIntel Xeon CPU(E7-8890 V3 @ 2.50 GHz)2T 内存。
    • 其它模型在单台机器上实验,该机器具有 4NVIDIA Titan X Pascal GPU( 12 Gb 显存, 10Gbps 访问速度), 16 coreIntel Xeon CPU(E5-2623 v4 @ 2.60GHz),以及 256 Gb 内存。

    所有实验在共享资源环境下大约进行了3 天。我们预期在消费级的单 GPU 机器上(如配备了 Titan X GPU )的全部资源专用,可以在 47 天完成所有实验。

  6. DeepWalk 测试阶段:

    • 对于 Reddit 和引文数据集,我们按照 Perozzi 等人的描述对 DeepWalk 执行 oneline 训练。对于新的测试节点,我们进行了新一轮的 SGD 优化,从而得到新节点的 embedding

      现有的 DeepWalk 实现仅仅是 word2vec 代码的封装,它难以支持 embedding 新节点以及其它变体。这里我们根据 tensorflow 中的官方 word2vec 教程实现了 DeepWalk 。为了得到新节点的 embedding,我们在保持已有节点的 embedding 不变的情况下,对每个新的节点执行 50 个长度为 5 的随机游走序列,然后更新新节点的 embedding

      我们还测试了两种变体:一种是将采样的随机游走“上下文节点”限制为仅来自已经训练过的旧节点集合,这可以缓解统计漂移;另一种是没有该限制。我们总数选择性能最强的那个。

      尽管 DeepWalkinductive 任务上的表现很差,但是在 transductive 环境下测试时它表现出更强的竞争力。因为在该环境下 DeepWalk 可以在单个固定的图上进行持续的训练。我们观察到在 inductive 环境下 DeepWalk 的性能可以通过进一步的训练来提高。并且在某种情况下,如果让它比其它方法运行的时间长 1000 倍,则它能够达到与无监督 GraphSAGE (而不是有监督 GraphSAGE )差不多的性能。但是我们不认为这种比较对于 inductive 是有意义的。

    • PPI 数据集中我们无法应用 DeepWalk,因为在不同的、不相交的图上运行 DeepWalk 算法生成的 embedding 空间可以相对于彼此任意旋转。参考最后一小节的证明。

  7. GraphSAGEbaseline 在这三个任务上的表现如下表所示。这里给出的是测试集上的 micro-F1 指标,对于 macro-F1 结果也有类似的趋势。其中 Unsup 表示无监督学习,Sup 表示监督学习。

    • GraphSAGE 的性能明显优于所有的 baseline 模型。

    • 根据 GraphSAGE 不同版本可以看到:与GCN 聚合方式相比,可训练的神经网络聚合函数具有明显的优势。

      注意,这里的 GraphSAGE-mean 是将 GraphSAGE-poolmax 函数替换为 mean 得到。

    • 尽管LSTM 这种聚合函数是为有序数据进行设计而不是为无序 set 准备的,但是通过随机排列的方式,它仍然表现出出色的性能。

    • 和监督版本的 GraphSAGE 相比,无监督 GraphSAGE 版本的性能具有相当竞争力。这表明我们的框架无需特定于具体任务就可以实现强大的性能。

  8. 通过在 Reddit 数据集上不同模型的训练和测试的运行时间如下表所示,其中 batch size = 512,测试集包含 79534 个节点。可以看到:

    • 这些方法的训练时间相差无几,其中 GraphSAGE-LSTM 最慢。
    • 除了 DeepWalk 之外,其它方法的测试时间也相差无几。由于 DeepWalk 需要采样新的随机游走序列,并运行多轮SGD 随机梯度下降来生成unseen 节点的 embedding,这使得 DeepWalk 在测试期间慢了 100~500 倍。

  9. 对于 GraphSAGE 变体,我们发现和 K=1 相比,设置 K=2 使得平均准确性可以一致性的提高大约 10%~15% 。但是当 K 增加到 2 以上时会导致性能的回报较低(0~5%) ,但是运行时间增加到夸张的 10~100 倍,具体取决于采样邻域的大小。

    另外,随着采样邻域大小逐渐增加,模型获得的收益递减。因此,尽管对邻域的采样引起了更高的方差,但是 GraphSAGE 仍然能够保持较强的预测准确性,同时显著改善运行时间。下图给出了在引文网络数据集上 GraphSAGE-mean 模型采用不同邻域大小对应的模型性能以及运行时间,其中 K=2 以及 S1=S2

  10. 总体而言我们发现就平均性能和超参数而言,基于 LSTM 聚合函数和池化聚合函数的表现最好。为了定量的刻画这种比较优势,我们将三个数据集、监督学习/无监督学习两种方式一共六种配置作为实验,然后使用 Wilcoxon Signed-Rank Test 来量化不同模型的性能。

    结论:

    • 基于 LSTM 聚合函数和池化聚合函数的效果确实最好。
    • 基于LSTM 聚合函数的效果和基于池化聚合函数的效果相差无几,但是由于 GraphSAGE-LSTMGraphSAGE-pool 慢得多(大约2 倍),这使得基于池化的聚合函数总体上略有优势。

8.3 DeepWalk Embedding 旋转不变性

  1. DeepWalk,node2vec 以及其它类似的 node embedding 方法的目标函数都有类似的形式:

    L=αi,jAf(zizj)+βi,jBf(zizj)

    其中:

    • f(),g() 为平滑、连续的函数。
    • zi 为直接优化的 node embedding (通过 embeddinglook up 得到)。
    • A,B 为满足某些条件的节点 pair 对。

    事实上这类方法可以认为是一个隐式的矩阵分解 ZZMR|V|×|V| ,其中:

    • ZRd×|V| 的每一列代表一个节点的 embedding
    • MR|V|×|V| 是一个包含某些随机游走统计量的矩阵。

    这类方法的一个重要结果是:embedding 可以通过任意单位正交矩阵变换,从而不影响矩阵分解:

    (QZ)(QZ)=ZQQZ=ZZM

    其中 QRd×d 为任意单位正交矩阵。所以整个embedding 空间在训练过程中可以自由旋转。

  2. embedding 矩阵可以在 embedding 空间可以自由旋转带来两个明显后果:

    • 如果我们在两个单独的图 AB 上基于 L 来训练 embedding 方法,如果没有一些明确的惩罚机制来强制两个图的节点对齐,则两个图学到的 embedding 空间将相对于彼此可以任意旋转。因此,对于在图 A 的节点 embedding 上训练的任何节点分类模型,如果直接灌入图 B 的节点 embedding ,这这等效于对该分类模型灌入随机数据。

      如果我们有办法在图之间对齐节点,从而在图之间共享信息,则可以缓解该问题。研究如何对齐是未来的方向,但是对齐过程不可避免地在新数据集上运行缓慢。

      GraphSAGE 完全无需做额外地节点对齐,它可以简单地为新节点生成 embedding 信息。

    • 如果在时刻 t 对图 A 基于 L 来训练 embedding 方法,然后在学到的 embedding 上训练分类器。如果在时刻 t+1 ,图 A 添加了一批新的节点,并通过运行新一轮的随机梯度下降来更新所有节点的 embedding ,则这会导致两个问题:

      • 首先,类似于上面提到的第一点,如果新节点仅连接到少量的旧节点,则新节点的 embedding 空间实际上可以相对于原始节点的 embedding 空间任意旋转。
      • 其次,如果我们在训练过程中更新所有节点的 embedding,则相比于我们训练分类模型所依赖的原始 embedding 空间相比,我们新的 embedding 空间可以任意旋转。
  3. 这类embedding 空间旋转问题对于依赖成对节点距离的任务(如通过 embedding 的点积来预测链接)没有影响。

    因为不管 embedding 空间怎么旋转,节点之间的距离不变(如通过内积的距离,或通过欧式距离的距离)。

  4. 缓解这类统计漂移问题(即embedding 空间旋转)的一些方法为:

    • 为新节点训练 embedding 时,不要更新已经训练的 embedding
    • 在采样的随机游走序列中,仅保留旧节点为上下文节点,从而确保 skip-gram 目标函数中的每个点积操作都是一个旧节点和一个新节点。

    我们尝试了这两种方式,并始终选择效果最好的 DeepWalk 变体。

  5. 从经验来讲,DeepWalk 在引文网络上的效果要比 Reddit 网络更好。因为和引文网络相比,Reddit 的这种统计漂移更为严重:Reddit 数据集中,从测试集链接到训练集的边更少。在引文网络中,测试集有 96% 的新节点链接到训练集;在 Reddit 数据集中,测试集只有 73% 的新节点链接到训练集。

九、GAT[2017]

  1. 卷积神经网络Convolutional Neural Network: CNN 已经成功应用于图像分类、语义分割以及机器翻译之类的问题,其底层数据结构为网格状结构grid-like structure 。这些架构通过将它们应用于所有的 input position 从而有效地 reuse 具有可学习参数的局部滤波器 local filter

    然而,许多人们感兴趣的任务涉及的数据无法以网格状结构来表达,而是位于不规则域irregular domain 。例如,3D mesh、社交网络、电信网络、生物网络、脑连接组brain connectome 等等。这些数据通常可以通过 graph 的形式来表达。

    有一些文献尝试扩展神经网络从而处理任意结构的图。

    • 早期的工作使用递归神经网络 recursive neural network: RNN 来处理 graph domain 中表示为有向无环图的数据。

    • 《A new model for learning in graph domains》《The graph neural network model》 提出了图神经网络 Graph Neural Network: GNN 作为 RNN 的泛化,从而可以直接处理更通用的 graph 类型,如:循环图、有向图、无向图。

      GNN 包含一个迭代过程,该迭代过程传播节点状态直到达到平衡。然后是一个神经网络,它根据每个节点的状态为每个节点生成一个输出。

    • 这个思想被 《Gated graph sequence neural networks》 所采纳和改进,该方法提出在传播过程中使用门控循环单元 gated recurrent unit: GRU

    然而,人们将卷积推广到 graph domain 的兴趣越来越大。这个方向的进展通常分为谱方法 spectral approach 和非谱方法 non-spectral approach

    • 一方面,谱方法与图的谱表示 spectral representation 一起工作,并已成功应用于节点分类的 context 中。

      • 《Spectral networks and locallyconnected networks on graphs》 中,卷积运算是通过计算图拉普拉斯矩阵graph Laplacian 的特征分解eigen decomposition从而在傅里叶域 Fourier domain中定义的,这导致潜在的稠密计算以及非空间局部化的滤波器 non-spatially localized filter 。 这些问题在随后的工作中得到解决。
      • 《Deep convolutional networks on graph-structured data》 引入了具有平滑系数的谱滤波器spectral filter的参数化parameterization,使得滤波器在空间上局部化。
      • 后来,《Convolutional neural networks on graphs with fast localized spectral filtering》 提出通过图拉普拉斯矩阵的切比雪夫展开来近似滤波器,从而无需计算图拉普拉斯矩阵的特征向量从而生成空间局部化的滤波器。
      • 最后,《Semi-supervised classification with graph convolutional networks》 通过限制滤波器仅操作每个节点周围的 1-step 邻域内来简化之前的方法。

      然而,在所有上述谱方法中,学到的滤波器依赖于拉普拉斯矩阵的特征基Laplacian eigenbasis ,而这个特征基依赖于图结构。因此,在特定图结构上训练的模型无法直接应用于具有不同结构的其它的图。

    • 另一方面,我们有非谱方法,该方法直接在图上定义卷积从而操作空间近邻的节点集合。这些方法的挑战之一是:定义一个与不同规模的邻域一起工作,并能保持 CNN 的权重共享属性的算子。

      • 在某些情况下,这需要为每个节点 degree 学习一个特定的权重矩阵(《Convolutional networks on graphs for learning molecular fingerprints》),或者需要使用转移矩阵transition matrix 的幂来定义邻域并同时针对每个输入通道和邻域 degree 来学习权重(《Diffusion-convolutional neural networks》),或者需要抽取和归一化邻域从而包含固定数量节点(《Learning convolutional neural networksfor graphs》)。

      • 《Geometric deep learning on graphs and manifolds using mixture model cnns》 提出了 mixture model CNNMoNet),这是一种空间方法,可以将 CNN 架构统一泛化到图。

      • 最近,《representation learning on largegraphs》 提出了 GraphSAGE,这是一种以归纳式的方式计算 node representation 的方法。该技术通过对每个节点采样固定尺寸邻域,然后该邻域执行特定的聚合器(如,均值池化聚合器,或 LSTM 聚合器)。GraphSAGE 在多个大规模归纳式 benchmark 中取得了令人印象深刻的性能。

        GAT 无需对邻域进行采样,能够处理可变邻域。

    在许多 sequence-based 任务中,注意力机制几乎已经成为事实上的标准。注意力机制的好处之一是:注意力机制允许处理可变尺寸的输入,并聚焦于输入中最相关的部分从而作出决策。当使用注意力机制来计算单个序列的 representation 时,它通常被称作 self-attentionintra-attention 。与 RNN 或卷积一起,self-attention 已被证明对机器阅读、sentence representation 学习等任务很有用。而且,《Attention is all you need》 表明:self-attention 不仅可以改进基于 RNN 或卷积的方法,而且足以构建一个强大的模型并且在机器翻译任务上获得 state-of-the-art 的性能。

    受最近这项工作的启发,论文《GRAPH ATTENTION NETWORKS》 引入了一种 attention-based 架构来执行图结构数据的节点分类。基本思想是:遵从 self-attention 策略,可以通过 attend 节点的邻居来计算图中每个节点的 hidden representation 。注意力架构有几个有趣的特性:

    • 操作是高效的,因为它可以跨 node-neighbor pair 进行并行化。
    • self-attention 通过给邻居赋予可学习的、任意的权重,从而可以应用于具有不同 degree 的图节点。
    • 该模型直接适用于归纳式的学习问题,包括模型必须泛化到完全 unseen 的图的任务。

    作者在四个具有挑战性的 benchmark 上验证了所提出的方法,实现或接近 state-of-the-art 的结果。实验结果凸显了 attention-based 模型在处理任意结构的图时的潜力。

    注:inductive learningtransductive learning的区别:

    • inductive learning 是从具体样本中总结普适性规律,然后泛化到训练中 unseen 的样本。
    • transductive learning 是从具体样本中总结具体性规律,它用于预测训练集中已经出现过的unlabelled 样本,常用于半监督学习。
  2. 相关工作:

    • 正如 《Semi-supervised classification with graph convolutional networks》《Diffusion-convolutional neural networks》 一样,我们的工作也可以重新表述为 MoNet 的一个特定实例。

    • 此外,我们跨 edge 共享神经网络计算neural network computation 的方法让人联想起关系网络relational network《A simple neural network module for relational reasoning》)和 VAIN《Vain: Attentional multi-agent predictive modeling》)的公式,其中 objectagent 之间的relation 是通过采用一种共享机制来 pair-wise 聚合的。

    • 同样地,我们提出的注意力模型可以与 《One-shot imitation learning》《Programmable agents》 等工作联系起来,它们使用邻域注意力操作neighborhood attention operation来计算环境中不同对象之间的注意力系数。

    • 其它相关方法包括局部线性嵌入 locally linear embedding: LLE、记忆网络 memory network

      • LLE 在每个 data point 周围选择固定数量的邻居,并为每个邻居学习一个权重系数,从而将每个 point 重构为其邻居的加权和。然后第二步优化是抽取 pointfeature embedding
      • memory network也与我们的工作有一些联系。具体而言,如果我们将节点的邻域解释为 memory,那么该 memory 被用于通过 attend memoryvalues 来计算 node featureREAD 过程),然后通过将新的特征存储在 node 对应的位置从而进行更新(WRITE 过程)。

9.1 模型

  1. 这里我们介绍用于构建任意 graph attention network: GATbuilding block layer(通过堆叠该层),即 graph attentional layer: GAL 。然后我们概述与神经图处理neural graph processing 领域的先前工作相比,这种 layer 的理论和实践上的优势和局限性。

9.1.1 Graph Attentional Layer

  1. 我们将从描述单个 graph attentional layer: GAL 开始,其中GAL 作为我们实验中使用的 GAT 架构中使用的唯一一种 layer 。我们使用的特定的 attentional setup《Neural machine translation by jointly learning to align and translate》 的工作密切相关,但是 GAT 框架与注意力机制的特定选择无关。

  2. GAL 的输入为一组节点特征:H={h1,,hN},hiRF ,其中 N 为图的节点数量、F 为节点的representation 维度。GAL 输出这些节点的新的representationH={h1,,hN},hiRF ,其中 F 为节点新的 representation 维度(可能与 F 不同)。

    为了获得足够的表达能力expressive power 从而将 input feature 转化为 higher-level feature ,至少需要一个可学习的线性变换。为此,作为初始的 step ,我们首先对所有节点应用一个共享权重的线性变换,权重为 WRF×F 。然后,我们在每个节点上应用 self-attention a (一个共享的 attentional mechanism ) :RF×RFR , 来计算attention 系数:

    ei,j=a(Whi,Whj)

    其中 ei,j 表示节点 j 的特征对于节点 i 的重要性。

    理论上讲,我们允许每个节点关注图中所有其它的节点,因此这可以完全忽略所有的图结构信息。实际上,我们采用 masked attention 机制将图的结构信息注入到 attention 机制:对于节点 i 我们仅仅计算其邻域内节点的 attention 系数 ei,j,jNi ,其中 Ni 为节点 i 的邻域。目前在我们的所有实验中,邻域 N 仅仅包含节点的一阶邻居(包括节点 i 在内)。

    注意:这里 Ni 包含节点 i 在内。因为我们需要计算 ei,i

    为使得系数可以在不同节点之间比较,我们使用 softmax 函数对所有的 j 进行归一化:

    αi,j=softmaxj(ei,j)=exp(ei,j)kNiexp(ei,k)

    在我们的实验中,注意力机制 a 是一个单层的前向传播网络,参数为权重 aR2F,采用 LeakyReLU 激活函数,其中负轴斜率 β=0.2。完全展开后,注意力机制计算的系数可以表示为(如下图所示):

    αi,j=softmaxj(ei,j)=exp(LeakyReLU(a[Whi||Whj]))kNiexp(LeakyReLU(a[Whi||Whk])))

    其中:|| 表示向量拼接操作。

    注意:这里的节点 i 作为 query,邻域 Ni 内节点作为 keyquery 节点 irepresentation 和每个 keyrepresentation 进行拼接。

  3. 一旦得到归一化的注意力得分,我们就可以用它对相应的邻居节点的特征进行加权线性组合,从而得到每个节点的final output feature

    hi=σ(jNiαi,jWhj)

    其中 WRF×F ,它就是前面计算注意力得分的矩阵。

    理论上也可以使用不同的 W,此时模型容量会得到进一步提升。

    我们使用 multi-head attention 来稳定 self-attention 的学习过程。我们采用 Khead,然后将它们的输出拼接在一起:

    hi(1)=σ(jNiαi,j(1)W(1)hj)hi(K)=σ(jNiαi,j(K)W(K)hj)hi=[hi(1)||||hi(K)]

    其中:

    • αi,j(k) 为第 khead 的归一化的注意力得分。
    • W(k) 为第 khead 的权重矩阵。

    最终的输出 h 的维度为 KF (而不是 F )。

    但是,如果 GAL 是网络最后一层(即输出层),我们对 multi-head 的输出不再进行拼接,而是直接取平均,因为拼接没有意义。同时我们延迟使用最后的非线性层,对分类问题通常是 softmax 或者 sigmoid

    hi=σ(1Kk=1KjNiαi,j(k)W(k)hj)

    理论上,最后的GAL 也可以拼接再额外接一个输出层。例如,实验部分作者就在最后一层使用 K=8attention head

    如下图所示为 multi head = 3,当且节点 i=1 。不同颜色的箭头表示不同的 head

9.1.2 和相关工作的比较

  1. GAL 解决了现有的、基于神经网络对图结构数据建模的方法的问题。

    • GAL 计算高效:

      • self-attentional layer 的操作可以跨所有 edge 并行化,输出特征的计算可以跨所有节点并行化。

        即,单个 self-attention 内部的、计算 ei,j 的操作可以并行化。不同节点之间计算 self-attention 也可以并行化。

      • 不需要特征分解eigen decomposition或类似的昂贵矩阵计算。

      • 单个 attention head 计算 F 个特征的时间复杂度为 O(|V|×F×F+|E|×F) ,其中 F 为输入特征的个数,|V| 为图中节点的数量,|E| 为图中边的数量。这种复杂度和一些baseline 方法(如 GCN )差不多。

        • 首先计算所有节点的 Whi ,计算复杂度为 O(|V|×F×F)
        • 再计算所有的 a[Whi,Whj] ,计算复杂度为 O(|E|×F)
        • 再计算所有的 αi,j ,计算复杂度为 O(|V|×d¯) ,其中 d¯=|E||V| 为节点的平均 degree ,则 αi,j 的计算复杂度为 O(|E|)

        最终计算复杂度为 |V|×F×F+|E|×F

      • 应用 multi-head attention 将存储需求和参数需求乘以 K 倍,而各个 head 的计算是完全独立的并且可以并行化。

    • GCN:和 GCN 相比,GAT 模型允许为同一个邻域内的节点分配不同的重要性,从而实现模型容量model capacity的飞跃。另外,和机器翻译领域一样,对学到的注意力权重进行分析可能会带来可解释性的好处。

    • 注意力机制以共享的方式应用于图的所有边,因此它不需要预先得到整个图结构或者所有节点(这是许多现有技术的局限性)。这有几个理想的含义:

      • 图可以是有向图,也可以是无向图。如果边 ji 不存在,则我们不需要计算系数 αi,j
      • GAT 可以直接应用到归纳式学习 inductinve learning :模型可以预测那些在训练期间中 unseen 的图。
    • GraphSAGE :最近发表的归纳式方法 GraphSAGE 对每个节点采样固定大小的邻域,从而保持计算足迹 computational footprint的一致性。这使得模型无法在测试期间访问整个邻域。

      注意:由于训练期间训练多个 epoch,则 GraphSAGE 可能访问到节点的整个邻域。

      此外,当使用 LSTM-based 邻域集合器时,GraphSAGE 取得了一些最强的结果。LSTM 假设在邻域之间存在一致的节点排序,并且作者通过向 LSTM 持续地提供随机排序的序列来使用 LSTM

      GAT 没有这两个问题:GAT 作用在完整的邻域上,并且不假设邻域内有任何节点的排序。

      注意:虽然 GAT 作用在完整的领域上,但是在大型图的训练过程中可能还需要对邻域进行采样。因为对于大型图,对于每个 mini-batch B,我们不仅要提供 B ,我们还需要提供 vB 的邻域、以及它的邻域的邻域,... 。如果 GATL 层,那么需要覆盖 BL 阶邻域。

      如果使用完整的邻域,那么每个 mini-batch 所需要的节点可能就是整个大图。这对于大型图而言是无法接受的(空间复杂度太高)。

    • MoNet:如前所述,GAT 可以重写表述为 MoNet 的特定实例。更具体而言:

      • 设定伪坐标函数pseudo-coordinate functionu(x,y)=f(x)||f(y) ,其中: f(x) 表示节点 x 的特征(可能是 MLP 变换而来),|| 表示特征拼接。
      • 设定权重函数为 wj(u)=softmax(MLP(u)) ,在节点的整个邻域上执行 softmax

      此时,这种 MoNet 的补丁算子 patch operator 将类似于我们的方法。

      然而,应该注意的是:与这个 MoNet 实例相比,我们的模型使用节点特征来计算相似性,而不是节点的结构属性(假设预先知道图结构)。

  2. 我们可以使用一种利用稀疏矩阵操作的 GAL 层,它可以将空间复杂度下降到节点和边的线性复杂度,从而使得模型能够在更大的图数据集上运行。但是我们的 tensor 计算框架仅支持二阶tensor 的稀疏矩阵乘法,这限制了当前版本的 batch 处理能力,特别是在具有很多图的数据集上。解决该问题是未来一个重要的方向。另外,根据现有图结构的规律,在稀疏矩阵的情况下,GPU 的运算速度并不会比 CPU 快多少因此无法提供主要的性能优势。

    还应该注意的是,我们模型的感受野 receptive field 的大小是网络深度的上限(类似于 GCN 或类似的模型)。然而,诸如 skip connection 之类的技术可以解决该问题,从而允许 GAT 使用更深的网络。

    最后,跨图中所有 edge 的并行化,尤其是以分布式方式,可能会涉及大量冗余计算,因为图中邻域通常高度重叠。

9.1.3 未来工作

  1. 一些有待改进的点:

    • 如何处理更大的 batch size
    • 如何利用注意力机制对模型的可解释性进行彻底的分析。
    • 如何执行graph-level 的分类,而不仅仅是node-level 的分类。
    • 如何利用边的特征,而不仅仅是节点的特征。因为边可能蕴含了节点之间的关系,边的特征可能有助于解决各种各样的问题。

9.2 实验

9.2.1 Transductinve Learning

  1. 数据集:三个标准的引文网络数据集Cora, Citeseer,Pubmed

    每个节点表示一篇文章、边(无向)表示文章引用关系。每个节点的特征为文章的 BOW representation。每个节点有一个类别标签。

    • Cora 数据集:包含2708 个节点、5429 条边、7 个类别,每个节点 1433 维特征。
    • Citeseer 数据集:包含3327 个节点、4732 条边、6 个类别,每个节点 3703 维特征。
    • Pubmed 数据集:包含19717 个节点、44338 条边、3 个类别,每个节点 500 维特征。

    对每个数据集的每个类别,我们使用20 个带标签的节点来训练,然后在 1000 个测试节点上评估模型效果。我们使用额外的 500 个带标签节点作为验证集(与 GCN 论文中使用的相同)。

    注意:训练算法可以利用所有节点的结构信息和特征信息,但是只能利用每个类别 20 个节点的标签信息。

  2. Baseline 模型:

    • 我们对比了论文 《Semi-supervised classification with graph convolutional networks》 中指定的相同的 baseline 。包括:标签传播模型label propagation: LP、半监督嵌入模型 semi-supervised embedding: SemiEmb、流型正则化模型 manifold regularization: ManiReg、基于SkipGramgraph embeding 模型(如 DeepWalk)、迭代式分类算法模型 iterative classification algorithm: ICAPlanetoid 模型。
    • 我们也直接对比了 GCN模型、利用高阶切比雪夫的图卷积模型Chebyshev filter-based《Convolutional neural networks on graphs with fast localized spectral filtering》)、以及 MoNet 模型。
    • 我们还提供了每个节点共享 MLP 分类器的性能,该模型完全没有利用图的结构信息。
  3. 参数配置:

    • 我们使用一个双层的 GAT 模型,它的架构超参数已经在 Cora 数据集上进行了优化,然后被 Citeseer 复用。

      • 第一层包含 K=8attention head,每个 head 得到 F=8 个特征,总计 64 个特征。第一层后面接一个exponential linear unit: ELU 非线性激活层。
      • 第二层用作分类,采用一个 attention head 计算 C 个特征,其中 C 为类别数量,然后使用 softmax 激活函数。
    • 当处理小数据集时,我们在模型上施加正则化:

      • 我们采用 L2 正则化,其中正则化系数为 λ=0.0005
      • 两个层的输入,以及 normalized attention coefficient 都使用了 p=0.6 (遗忘比例)的 dropout 。即每轮迭代时,每个节点需要随机采样邻居(因为有些邻居被 dropout 了)。
    • 对于60 个样本的 Pubmd 数据集,我们需要对 GAT 架构进行微调:

      • 输出为 K=8attention head ,而不是一个。
      • L2 正则化系数为 λ=0.001

      除此之外都和 Cora/Citeseer 的一样。

    • 所有模型都采用 Glorot 初始化方式来初始化参数,优化目标为交叉熵,使用 Adam SGD 优化器来优化。初始化学习率为:Pubmed 数据集为 0.01,其它数据集为 0.005

      我们在所有任务上执行早停策略,在验证集上的交叉熵和accuracy 如果连续 100epoch 没有改善,则停止训练。

  4. 我们报告了 GAT 随机执行 100 次实验的分类准确率的均值以及标准差,也使用了 GCNMonet 报告的结果。

    对基于切比雪夫过滤器的方法,我们提供了 K=2,K=3 阶过滤器的最佳结果。

    我们进一步评估了 GCN 模型,其隐层为 64 维,同时尝试使用 ReLUELU 激活函数,并记录执行 100 次后效果最好的那个(实验表明 ReLU 在所有三个数据集上都最佳),记作 GCN-64*

    结论:GATCoraCiteseer 上超过 GCN 分别为 1.5%, 1.6% ,这表明为邻域内节点分配不同的权重是有利的。

9.2.2 Inductinve learning

  1. 数据集:protein-protein interaction: PPI 数据集,该数据集包含了人体不同组织的蛋白质的24 个图。其中20 个图为训练集、2 个图为验证集、2 个图为测试集。至关重要的是,这里测试的图在训练期间完全未被观测到。

    我们使用 GraphSAGE 提供的预处理数据来构建图,每个图的平均节点数量为 2372 个,每个节点50 维特征,这些特征由 positional gene sets, motif gene sets, immunological signatures 组成。

    Molecular Signatuers Database 收集到的gene ontology121 种标签,这里每个节点可能同时属于多个标签。

  2. Baseline 模型:我们对比了四个不同版本的监督 GraphSAGE 模型,它们提供了多种方法来聚合采样邻域内的节点特征:

    • GraphSAGE-GCN:将图卷积方式的操作扩展到归纳式 setting
    • GraphSAGE-mean:取特征向量的逐元素均值来聚合。
    • GraphSAGE-LSTM:通过将邻域特征馈入 LSTM 来聚合。
    • GraphSAGE-pool :采用共享非线性多层感知机转换后的特征向量的逐元素最大池化来聚合。

    剩下的 transductinve 方法要么完全不适用于inductive 的情形,要么无法应用于在训练期间完全看不到测试图的情形,如 PPI数据集。

    我们还提供了每个节点共享 MLP 分类器的性能,该模型完全没有利用图的结构信息。

  3. 参数配置:

    • 我们使用一个三层GAT 模型:

      • 第一层包含 K=4attention head,每个 head 得到 F=256 个特征,总计 1024 个特征。第一层后面接一个exponential linear unit:ELU 非线性激活层。

      • 第二层和第一层配置相同。

      • 第三层为输出层,包含 K=6attention head ,每个 head 得到 121 个特征。

        我们对所有 head 取平均,并后接一个 sigmoid 激活函数。

    • 由于该任务的训练集足够大,因此我们无需执行 L2 正则化或者 dropout

    • 我们在 attention layer 之间应用 skip connection

    • 训练的 batch size = 2 ,即每批2graph

    • 为评估 attention 机制的效果,我们提供了一个注意力得分为常数的模型进行对比(a(x,y)=1),其它结构不变。

    • 所有模型都采用 Glorot 初始化方式来初始化参数,优化目标为交叉熵,使用 Adam SGD 优化器来优化。初始化学习率为:Pubmed 数据集为 0.01,其它数据集为 0.005

      我们在所有任务上执行早停策略,在验证集上的交叉熵和micro-F1 如果连续 100epoch 没有改善,则停止训练。

  4. 我们报告了模型在测试集(两个从未见过的 Graph )上的 micro-F1 得分。我们随机执行10 轮 “训练--测试”,并报告这十轮的均值。对于其它基准模型,我们使用 GraphSAGE 报告的结果。具体而言,由于我们的 setting 是有监督的,我们将与有监督的 GraphSAGE 方法进行比较。

    为了评估聚合整个邻域的好处,我们进一步提供了GraphSAGE 架构的最佳结果,记作 GraphSAGE* 。这是通过一个三层GraphSAGE-LSTM 得到的,三层维度分别为 [512,512,726],最终聚合的特征为 128 维。

    最后,我们报告常数的注意力系数为 Const-GAT 的结果。

    结论:

    • GATPPI 数据集上相对于 GraphSAGE 的最佳效果还要提升 20.5% ,这表明我们的模型在inductive 任务中通过观察整个邻域可以获得更大的预测能力。
    • 相比于 Const-GAT,我们的模型提升了 3.9%,这再次证明了为不同邻居分配不同权重的重要性。

注意:这里作者并未给出超参数研究的实验分析,包括:GAT 层数、multi-head 数量、是否使用 skip connection 等等。

9.2.3 可视化

  1. 学到的feature representation 也可以进行定性研究。为此,我们采用 t-SNE 对学到的特征进行可视化。我们对 Cora 数据集训练的 GAT 模型的第一层的输出进行可视化,该 representation 在投影到的二维空间中表现出明显的聚类。这些簇对应于数据集的七种类别,从而验证了模型的分类能力。

    此外我们还可视化了归一化注意力系数的相对强度(在所有8attention head 上的均值)。如何正确的解读这些系数需要有关该数据集的进一步的领域知识。

    下图中:颜色表示节点类别,线条粗细代表归一化的注意力系数均值:

    linei,j=1Kk=1Kαi,jk+αj,ik

十、R-GCN[2017]

  1. 知识库 knowledge base 组织和存储事实知识 factual knowledge,支持包括问答question answering 和信息检索在内的多种应用。尽管在维护上投入了巨大的努力,即使是最大的知识库(如 DBPedia, Wikidata, Yago)仍然是不完整incomplete的, 并且覆盖度coverage的缺失会损害下游应用application。预测知识库中的缺失信息是统计关系学习statistical relational learning: SRL 的主要关注点。

    遵从之前关于 SRL 的工作,我们假设知识库存储形式为三元组(subject, predicate, object)的集合。例如,考虑三元组 (Mikhail Baryshnikov, educated at, Vaganova Academy),我们将 BaryshnikovVaganova Academy 称作实体 entity,将 educated at 称作关系 relation 。此外,我们假设实体标有类型(如,Vaganova Academy 被标记为大学)。将知识库表示为有向的、带标签的 multigraph 很方便,其中实体对应于节点,而三元组被 labled edge 所编码。如下图所示,红色的标签以及边代表缺失信息,是需要我们推断的。。

    考虑两个基本的 SRL 任务:链接预测(缺失三元组missing triple的恢复 recovery)、实体分类(为实体分配类型或离散属性)。在这两种情况下,许多缺失的信息都可以预期存在于通过邻域结构neighborhood structure编码的图中。例如,知道 Mikhail BaryshnikovVaganova Academy 接受教育,这同时意味着 Mikhail Baryshnikov 应该有标签 person、以及三元组 (Mikhail Baryshnikov, lived in, Russia) 必须属于知识图谱knowledge graph。遵循这个直觉,论文《Modeling Relational Data with Graph Convolutional Networks》为关系图relational graph 中的实体开发了一个编码器模型,并将其应用于这两个任务。

    • 论文的实体分类模型与 GCN 类似,并在图中的每个节点处使用 softmax 分类器。分类器采用 relational graph convolutional network: R-GCN 提供的 node representation 来预测 label 。模型是通过优化交叉熵损失来学习的。

    • 论文的链接预测模型可以被视为一个自编码器 autoencoder,它由一个 encoder 和一个 decoder 组成,其中:

      • encoder:一个 R-GCN,它用于产生实体的 latent feature representation
      • decoder:一个张量分解模型,它利用这些实体的 representation 来预测 edge label 。尽管原则上任何类型的因子分解模型(或者任何评分函数)都可以作为解码器,但是这里作者使用最简单、最有效的因子分解方法:DistMult

    作者观察到,论文的方法在标准 benchmark 上取得了有竞争力的结果,优于直接的因子分解模型(如普通的 DistMult)。当我们考虑更具挑战性的 FB15k-237 数据集时,这种改进尤其大。这些结果表明:在 R-GCN 中对邻域进行显式建模有利于恢复知识库中的 missing fact

    论文的贡献如下:

    • 首先,据作者所知,这是第一个证明 GCN 框架可以应用于建模关系数据relational data(尤其是链接预测和实体分类任务)的人。
    • 其次,作者介绍了参数共享和强制稀疏约束enforce sparsity constraint的技术,并使用它们来将 R-GCN 应用于具有大量关系的 multigraph
    • 最后,作者展示了分解模型(以 DistMult 为例)的性能可以通过使用编码器模型来显著提高,其中该编码器在关系图relational graph中执行多个信息传播 step
  2. 相关工作:

    • 关系建模:我们用于链接预测的 encoder-decoder 方法依赖于解码器中的 DistMult ,这是 RESCAL 分解的一种特殊且更简单的情况,在 multi-relational knowledge base 的背景下比原始的 RESCAL 更高效。

      人们在 SRL 的背景下已经提出和研究了许多替代的分解模型,包括线性分解模型和非线性分解模型,其中许多方法可以被视为经典的张量分解方法(如 CPTucker)的修改或特殊情况。对于张量分解模型的全面综述,推荐阅读论文《Tensor decompositions and applications》

      合并实体之间的 path 到知识库中最近受到了相当大的关注。我们可以将先前的工作分为三个方向:

      • 创建辅助三元组auxiliary triple的方法,然后该方法将辅助三元组添加到分解模型的目标函数中。
      • 在预测 edge 时使用 path(或 walk)作为特征的方法。
      • 同时采用这两个方法。

      第一个方向在很大程度上与我们的方向正交,因为我们也预期通过向我们的损失函数中添加类似的项来改善(即,扩展我们的解码器)。

      第二个方向更具有可比性,R-GCN 为这些基于 path 的模型提供了一种计算成本更低的替代方案。直接比较有些复杂,因为 path-based 方法使用不同的数据集(如,来自知识库的 walksub-sampled 子集)。

    • graph上的神经网络:我们的 R-GCN 编码器模型与 graph 上神经网络领域的许多工作密切相关。R-GCN 编码器的主要动机是:对先前的 GCN 工作的适配,使其适用于大规模和高度 multi-relational 的数据(这是真实世界知识库的特点)。

      该领域的早期工作包括 《The graph neural network model》GNN 。人们后续对原始 GNN 提出了许多扩展,最值得注意的是 《Gated graph sequence neural networks》《Column networks for collective classification》 ,它们都利用了门控机制来促进优化过程。

      R-GCN 可以进一步被视为消息传递神经网络(《Neural message passing for quantum chemistry》)的一个子集,基于可微的消息传递解释。其中,消息传递神经网络包含许多先前的、用于图的神经网络,包括 GCN

10.1 模型

  1. 定义一个有向directed、带标签 labeledmulti-graphG=(V,E,R) ,其中节点集合 V={v1,v2,,vn} 代表实体,带标签的边 (vi,r,vj)E 表示关系relation ,其中 rR 代表关系类型。

10.1.1 R-GCN

  1. 我们的模型主要受到 GCN 所启发,并将基于局部图邻域local graph neighborhoodGCN 扩展到大规模的关系数据。

    GCN 相关的方法(如图神经网络)可以理解为简单的、可微的消息传递框架:

    hi(l+1)=σ(mMigm(hi(l),hj(l)))

    其中:

    • hi(l)Rdl 为节点 vi 在神经网络第 l 层的隐状态, dl 为对应的维度。
    • Mi 为节点 vi 的传入消息 incoming message的集合,它通常等于传入边incoming edge 的集合(即每条边代表一条消息)。
    • 输入的消息按照 gm(,) 的形式聚合。gm(,) 通常选择为message-specific的、类似于神经网络的函数或者仅仅是线性变换 gm(hi,hj)=Whj
    • σ() 为激活函数。

    事实证明,这类变换非常有效地从局部的、结构化邻域中累积和编码特征,并在诸如图形分类、图半监督学习领域带来显著改进。

  2. 受此类架构的影响,我们在 relational multi-graph 中定义了以下简单的消息传播模型:

    hi(l+1)=σ(rRjNir1ci,rWr(l)hj(l)+W0(l)hi(l))

    其中:

    • Nir 表示节点 vi 在关系类型 r 下的邻居集合。

      这里采用单个 representation hi(l+1) 来聚合所有类型的关系。

    • ci,r 为一个 problem-specific 正则化常数。它可以从数据中学习,也可以预先选择,如 ci,r=|Nir|

      ci,r 可以通过 attention 机制来学习。

    • 为了确保可以直接通过节点 vi 的第 l 层向第 l+1 层传递消息,我们在模型中添加了一个特殊关系类型的自连接(即 W0(l)hi(l) 项),即 skip-connection

      这里 hi(0)=xi 为节点的特征向量。如果节点没有特征向量,那么可以使用节点的 one-hot 编码(不需要引入 embedding layer,因为这种情况下图神经网络的第一层就是 embedding layer )。

    直观来看,上式累加了相邻节点的特征向量并进行归一化。与常规的 GCN 不同,这里我们引入特定于具体关系 r 的变换 Wr(l) ,即取决于 edge 的类型和方向。

    • 也可以选择更灵活的函数来替代这里简单的线性变换,如多层神经网络(但是计算代价会更高)。我们把它留待未来的工作。
    • 上式在每个节点的每一层 layer 执行,实践中通常采用稀疏矩阵乘法来有效实现,从而避免对邻域进行显式求和。
    • 可以堆叠多个层,从而允许跨多个关系链的依赖性。
  3. 我们将这个图编码器模型称作关系图卷积网络 R-GCNR-GCN 模型中单个节点的更新计算图如下所示。红色节点为待更新的节点,蓝色节点为邻域节点。

    我们首先收集来自不同类型的相邻节点以及自身的消息,对每种类型的消息在变换之后归一化求和得到绿色的 representation。最后将不同类型的representation 相加并通过激活函数,从而得到节点更新后的 representation

    可以在整个图上共享参数,从而并行地计算每个节点的更新。

    整个 R-GCN 模型就是堆叠大量的这种层,其中上一层的输出作为下一层的输入。如果实体没有特征,则可以将每个节点的 one-hot 作为第一层的输入。

10.1.2 正则化

  1. 如果关系类型数量非常庞大,则R-GCN 模型的参数数量爆炸性增长。实际上,这很容易导致模型对稀疏关系的过拟合,并且模型非常庞大。

    为解决该问题,我们引入两种不同的方法来正则化 R-GCNbasis-decomposition 基分解,以及 block-diagonal-decomposition 块对角分解。

    • basis-decomposition:每个权重 Wr(l)Rdl+1×dl 定义为:

      Wr(l)=b=1Bar,b(l)Vb(l)

      其中 Vb(l)Rdl+1×dl,b=1,2,,B 为一组基变换矩阵,Wr(l) 为这些基变换矩阵的线性组合,线性组合系数为 ar,b(l)

      这里 br ,因此可以显著降低参数规模。

    • block-diagonal-decomposition :令 Wr(l) 为一组低维矩阵的直接拼接:

      Wr(l)=[Q1,r(l)0000Q2,r(l)00000QB,r(l)]

      其中 Wr(l) 为分块对角矩阵, Qb,r(l)Rdl+1B×dlB

    基分解可以视为不同关系类型之间共享权重的一种方式;块对角分解可以视为每种关系类型权重矩阵的稀疏性约束。块分解结构认为:可以将潜在特征分组,使得组内的特征相比组外的特征更为紧密地耦合。

    这两种分解都减少了高度 multi-relational 的数据(如知识库)所需要的参数数量。同时,我们期望基分解能够缓解稀疏关系的过拟合,因为稀疏关系和非稀疏关系共享基变换矩阵。

  2. 然后,整个 R-GCN 模型堆叠 L 层,其中前一层的输出是下一层的输入。如果不存在节点特征,则可以将节点的 one-hot 编码作为模型的输入。

    虽然我们在这项工作中仅考虑了这种无特征 featureless 的方法,但是我们注意到 GCN 的工作表明:这类模型可以使用预定义的特征向量(如,节点的描述文本的 bag-of-words)。

10.1.3 实体分类

  1. 在节点分类任务中,我们将 R-GCN 最后一层(假设有 L 层)的输出接入一个 softmax 层。我们最小化所有标记节点的交叉熵(忽略所有未标记节点):

    L=viVyk=1Kti,kloghi,k(L)

    其中:

    • Vy 为标记节点的集合。
    • hi,k(L) 为节点 vi 在第 L 层输出的 hi(L) 的第 k 项。
    • ti,k 为节点 vi 的标签向量 ti 的第 k 项。

    定义好目标函数之后,我们使用随机梯度下降来训练模型。

    • 虽然我们在目标函数中仅使用了标记节点,但是这并不意味着算法未使用非标记节点。因为在计算 hi(L) 的过程中我们利用了全部节点(包括非标记节点),因此充分利用了图结构信息。
    • 此外,我们还可以在目标函数中显式添加 LINE 算法之类的非监督损失,从而迫使相邻的节点具有相似的 embedding

10.1.4 链接预测

  1. 在链接预测任务中,我们的目标是给定可能的链接 (s,r,o) ,评估其存在链接的概率 f(s,r,o) 从而确定它是否有可能属于边集 E

    普通的链接预测任务需要只需要预测二元组 (v1,v2) 是否属于边集,而这里预测的是三元组(包含 r 的信息)。这是通过为每种类型的关系 r 引入一个对角矩阵 Rr 来解决的。

    为解决该问题,我们引入一个图自编码器模型,该模型由一个节点编码器和一个评分函数(解码器)组成。

    • 编码器将每个实体 viV 编码到一个实值向量 viRd
    • 解码器根据节点的 representation 来重建图的边。换句话说,它通过一个评分函数 f 来对三元组 (subject, relation, object) 打分: f:Rd×R×RdR

    可以在此框架下解释大多数现有的链接预测方法,但是我们工作的关键区别在于编码器。之前大多数方法直接在训练中优化每个节点 viVrepresentation 向量 vi ,而这里我们通过 R-GCN 编码器来学到 vi=hi(L)

    整体架构如下图所示。其中:

    • (a) 表示节点分类的 R-GCN 模型,每个节点具有一个损失函数。
    • b 表示链接预测模型,包含 R-GCN 编码器,以及 DistMult 作为解码器,每条边具有一个损失函数。

  2. 在链接预测任务中,我们使用 DistMult 因子分解作为解码器(评分函数),该方法独立地应用于标准链接预测 baseline 时表现良好。

    DistMult 方法中,每个关系 r 关联一个对角矩阵 Rr=diag(Rr,1,,Rr,d)Rd×d,三元组 (s,r,o) 的评分为:

    f(s,r,o)=vsRrvo

    和之前的矩阵分解工作一样,我们使用负样本来训练模型。对于每个观察到的“正边”,我们随机采样 ω 条“负边”。对于每个“正边” 代表的三元组 (subject, predicate, object) ,我们通过随机选择不同的 subject 或者不同的 object 来采样。

    我们选择交叉熵作为损失函数,目标是最大化“正边”概率、最小化“负边”概率:

    L=1(1+ω)|E|(s,r,o,y)T[y×logϕ(f(s,r,o))+(1y)×log(1ϕ(f(s,r,o)))]

    其中:

    • T 为所有可能的三元组(它是边集合 E 的超集)。
    • y 为指示器:y=1 表示“正边”, y=0 表示 “负边”。
    • ϕ() 为逻辑回归函数。

10.2 实验

10.2.1 实体分类

  1. 数据集:我们评估了四个数据集,它们以 Resource Description Framework: RDF 格式来描述。数据集中的关系不一定要编码为有向的 subject-object 关系,也可以编码为给定实体之间存在或者不存在某个指定的属性。

    在每个数据集中,要分类的目标是一组实体的属性。我们删除了用于创建 label 的信息,如:AIFB 的雇员和从属关系、MUTAGis Mutagenic 关系、BGShasLithogenesis 关系、AMobjectCategorymaterial 关系。

    数据集的统计信息见下表,其中 Labeled 表示那些带标签的、用于分类的节点,它是所有节点的子集。

    我们采用 《A collection of benchmark datasets for systematic evaluations of machine learning on the semantic web》benchmark 训练集、测试集拆分的方式,并在训练集的基础上继续拆分 20% 样本作为验证集从而进行超参数调优。

  2. Baseline 方法:我们对比了最近的 state-of-the-art 方法: RDF2VEC embeddingWeisfeiler-Lehman kernel: WL、人工设计的特征提取器Feat

    • Feat 根据每个节点的入度in-degree、出度out-degree 来拼接每个节点的特征向量,即 feature-based 方法。
    • RDF2VEC 在图上执行随机游走,然后基于 SkipGram 模型来从随机游走序列中学习节点 embedding,然后该 embedding 用于下游的分类任务。
  3. 配置:

    • 我们的 R-GCN 模型采用两层隐层,隐层维度为 16 维(AM 数据集的隐层维度为 10),并采用基分解的正则化方式。
    • 我们使用 Adam 优化器训练 50epoch,学习率为 0.01
    • 最后,我们选择归一化常数为 ci,r=|Nir|
    • 所有实体分类实验均在具有 64GB 内存的 CPU 节点上运行。
  4. 评估指标:测试集的accuracy

  5. 实验效果如下表所示,结论:我们的模型在 AIFBAM 上取得最好的效果,在 MUTAGBGS 数据集上效果较差。

    为了探究R-GCN模型为什么在 MUTAGBGS 数据集上效果较差,我们深入洞察了这些数据集的性质。

    • MUTAG 是分子图的数据集,后来被转换为 RDF 格式,图中的关系要么表示原子键、要么表示某个属性是否存在。
    • BGS 是具有分层特征描述hierarchical feature description的岩石rock的类型,这些描述类似地转换为 RDF 格式,图中的关系编码了特定属性是否存在、或者属性的层级关系。

    MUTAGBGS 中的标记节点仅仅通过编码了某种特征的high-degree 的中心节点所连接。我们推测:采用固定的归一化常数对于 degree 很高的节点可能会成为问题,这导致了我们的模型在 MUTAG/BGS 数据集上效果不佳。

    克服该问题的一种潜在解决方案是:引入一种注意力机制 ai,j,r 来代替归一化常数 1/ci,r ,其中满足 j,rai,j,r=1 。我们认为这是未来研究的方向。

10.2.2 链接预测

  1. 数据集:链接预测任务通常在 FB15k (关系数据库 Freebase 的子集)和 WN18WordNet 的子集)上评估。但是在 《Observed versus latent features for knowledge base and text inference》 中,这两个数据集都观察到严重的缺陷:训练集中的三元组 t=(e1,r,e2) ,在测试集中出现了它的逆三元组 t=(e2,r1,e1) 。这使得大部分链接预测任务退化为记忆这些三元组。因此,即使是非常简单的基准方法 LinkFeak ,其效果都很大程度上优于现有的方法。LinkFeak 仅仅是将观察到的关系作为特征向量(该特征向量非常稀疏)作为输入,然后采用线性分类器进行分类。

    为解决该问题,《Observed versus latent features for knowledge base and text inference》 提出了一个简化的数据集FB15k-237,它删除了所有这些逆三元组。因此我们选择 FB15k-237 作为我们的主要评估数据集。由于 FB15kWN18 仍被广泛使用,因此我们也包含这些数据集的结果。

  2. baseline 方法:

    • DistMult :对每个节点直接优化embedding,而不是 R-GCN 编码器。
    • LinkFeat《Observed versus latent features for knowledge base and text inference》 提出的简单的基于邻域的方法。
    • ComplEx:将 DistMult 泛化为复数域来提升对非对称关系的建模。
    • HoIE:利用 circular correlation 代替了vector-matrix的乘积。

    最后,我们还包含了两种经典算法的比较:CP《The expression of a tensor or a polyadic as a sum of products》)和 TransE《Translating embeddings for modeling multi-relational data》)。

  3. 我们使用两种常用的评估指标:mean reciprocal rank: MRRHits at n: H@n 。我们报告了 raw MRR, filtered MRR,以及 n=1,3,10 时的 filtered Hits

    filtered MRR 指的是:对于排名差于 n ,其排名倒数置为零。

  4. 配置:

    • 我们通过验证集来选择 R-GCN 的超参数。

      • 我们发现归一化常数设定为 ci,r=ci=r|Nir| 效果最好,即:考虑所有关系的归一化效果最佳。

      • 对于 FB15kWN18,我们使用具有两个基矩阵的基分解正则化,以及使用 200 维的单层编码器。

        对于 FB15k-237,我们发现块对角分解正则化的效果最好,block 的大小为 5 x 5 ,同时我们使用 500 维的两层编码器。

      • 我们对编码器执行 dropout 正则化,dropout 位置在 normalization 之前,dropout 比例为:对于 self-loop0.2,对于其它边为 0.4 。使用dropout 正则化使得我们的训练目标类似于降噪自编码器。

      • 我们对解码器执行 L2 正则化,正则化系数为 0.01

      • 我们使用 Adam 优化器,学习率为 0.01

    • 对于baseline 模型,我们从 《Complex embeddings for simple link prediction》 中的参数(除了 FB15k-237 数据集上的维度)。

    • 为了使得不同方法具有可比性,我们对不同方法采用相同的负样本采样比例(如 ω=1 )。

    • 对所有的模型,我们使用 full-batch 优化。

  5. 我们给出了 FB15k 数据集上,R-GCNDistMult 在不同degree 上的表现。这里的 degree 表示三元组中 subject, object 节点的 degree 均值。在 FB15k 上,与 R0GCN 模型的设计形成对比的是,逆关系 inverse relation 形式的局部上下文 local context 将主导dominate分解的性能。

    可以发现:R-GCN 在上下文丰富的节点上(即 degree 较高)表现良好,而 DistMult 在上下文稀疏的节点上表现较好。我们观察到这两种模型是互补的,因此可以将这两种模型的优势结合在一起,成为一个新的模型,我们称之为 R-GCN+

    f(s,r,t)R-GCN+=αf(s,r,t)R-GCN+(1α)f(s,r,t)DistMult

    其中 α=0.4 是根据 FB15k 的验证集来选择的。

  6. 我们给出不同模型在 FB15kWN18 上的表现,其中标记 * 的结果来自于 《Complex embeddings for simple link prediction》, 标记** 的结果来自于 《Holographic embeddings of knowledge graphs》

    • R-GCNR-GCN+ 均超越了 DistMult。但是,和 LinkFeat 相比,R-GCNR-GCN+ 方法均表现不佳。这突出了逆关系的贡献。

    • 有意思的是:在 FB15kR-GCN+ 超越了 CompIEx,尽管 R-GCN 并未显式建模非对称关系而 CompIEx 显式建模了非对称关系。

      这表明:将 R-GCN 编码器与 CompIEx 的解码器相结合,可能是未来工作的一个有前景的方向。解码器的选择和编码器的选择是相互独立的,原则上可以使用任何模型作为解码器,因此可以考虑使用 ComIEx 作为解码器从而在 R-GCN+ 中显式建模非对称关系。

  7. FB15k-237 数据集上逆关系被删除,此时 LinkFeat 效果非常差。而我们的 R-GCNDistMult 提升 29.8%,这显示了编码器模型的重要性。另外 R-GCN/R-GCN+ 优于所有其它方法。

 

十一、 AGCN[2018]

  1. 尽管卷积神经网络CNN 在很多机器学习任务上取得极大成功,但是它要求输入数据为张量。例如,图像和视频分别建模为 2-D 张量和 3-D 张量。然而在实际任务中,很多数据都是不规则的图结构,如化学分子数据、点云数据、社交网络数据。这些数据被组织为图结构而不是规则形状的张量,并且不再满足平稳性stationarity和组合性compositionality (这两个性质允许执行 grid 上的 kernel-based 卷积),因此无法应用卷积操作。因此,有必要在图结构上重新构造卷积算子。

    然而将 CNN 从规则的网格推广到不规则的图,并非易事。

    • 早期的 Graph CNN《Spectral networks and locally connected networks on graphs》《Deep convolutional networks on graphstructured data》)通常假设数据是低维的(即 degree 较低),因为卷积器根据节点的 degree 来独立地处理节点。

    • 另外,卷积核也过度局部化 over-localized,很难从复杂的图结构中学到hierarchical representation

    • 某些情况下(如点云point cloud 的分类),图的拓扑结构要比节点特征包含更多信息。但是,现有的Graph CNN 无法利用图的结构特性,因为无法设计一个匹配各种各样邻域结构的空域卷积核spatial kernel

      GraphSAGEGAT 其实可以匹配各种邻域结构,因为它们是 inductive 的。而 transductiveGCN 无法匹配各种邻域结构。

    • 此外,考虑到图结构的灵活性以及模型参数规模,为数据集中每个图学习定制化customized 的、保留拓扑结构的空域卷积核是不现实的。

      这里我们假设数据包含很多图(比如分子图),每个图的结构都各不相同。

    • 除了在图上进行空域卷积之外,还可以在经过傅里叶变换之后的图的频域上进行谱卷积。

      类似经典的 CNN,图的谱卷积也假设样本之间(不同的图)共享卷积核。因此,为了确保卷积层输出的维度统一,卷积层的输入必须重新调整尺寸,这也是传统 CNN 的限制。

      但是,对图数据进行这种预处理可能会破坏图数据的完整性。例如,对分子图的粗化 coarsening 在化学意义来看很难证明其合理性,粗化后的图很可能丢失了使得当前分子和其它分子有区分的关键子结构。如下图所示为有机化合物 3, 4-亮氨酸(C7H9N) 及其图结构,移除了任何一个碳原子都会破坏苯环。

      因此,如果Graph CNN 可以接受不同图结构的原始数据样本(而不是粗化处理的)作为输入,则非常有意义。

    • 最后,我们提供给 Graph CNN 的数据要么具有本征 intrinsic 的图结构(例如分子图),要么可以通过聚类来构建一个图结构(如点云数据)。

      在之前的Graph CNN 模型中,初始的图结构在训练过程中是固定不变的。但是,很难评估本征图或者无监督聚类产生的图是否适合于当前的任务。以化合物为例,SMILES 序列给出的本征图无法说明化合物的毒性,仅靠本征图很难了解毒性的有意义的表示。

      尽管已有人提出了使用全连接网络的有监督的图的构建方法,但是由于训练参数规模巨大,这种方法仅适用于较小的图。另外,无法保证通过网络学到的图结构很好地作用于Graph CNN

    因此,当前 Graph CNN 的瓶颈包括:严格的 graph degree 限制、要求输入之间共享相同的图结构、固定构造且无需训练的图结构、无法从拓扑结构中学习。

    论文 《Adaptive Graph Convolutional Neural Networks》 中提出了一种新的频域图卷积神经网络,该网络以原始数据的不同图结构作为输入,例如由不同数量苯环组成的有机分子。为实现这一点,作者不使用共享的谱卷积核,而是为每个图(数据集中每个样本代表一个图)定制化图拉普拉斯矩阵,这些拉普拉斯矩阵客观地描述了每个图独特的拓扑结构。一个定制化的图拉普拉斯矩阵导致一个定制化的谱滤波器,该滤波器根据图的拓扑结构来组合邻域特征。

    有意思的是,什么样的图结构最适合目标监督学习任务?一些图数据具有本征图结构,例如,化学键自然地生成化合物的分子图,即本征图 intrinsic graph 。这些化学键已经通过化学实验被证明是正确的。但是,无法保证卷积器 convolver 能够提取到本征图中所有有意义的特征,因为本征图的图结构不一定和任务目标紧密相关。因此,AGCN 训练了一个所谓的残差图 residual graph,从而发现本征图中未能包含的残差子结构。此外,为了确保残差图是目标任务的最佳补充,作者设计了一个方案从而在训练Graph CNN 的同时来学习残差图。

    假设训练集中有 M 个样本,每个样本都是一个图数据,每个图都有 n 个节点。对于具有 n 个节点的图,直接学习图拉普拉斯矩阵的计算复杂度为 O(n2) ,所有数据集的计算复杂度为 O(M×n2) ,代价太大。如果以监督学习来学习马氏距离Mahalanobis distance,则可以将学习单个图拉普拉斯矩阵的参数数量降低到 O(d2) 甚至 O(d) ,其中 d 为节点的特征维度。假设度量参数 metric parameter 在不同样本之间共享,则数据集的参数数量也降低到 O(d2)O(d) 。因此,学习图拉普拉斯矩阵的复杂度和图大小 n 、图数量 M 无关。

    在经典 CNN 中,反向传播通常会更新 kernel weight 从而分别调整每个维度上相邻节点之间的关系。然后它聚合来自所有滤波器的信号从而构建 hidden layeractivation 。为了赋予 Graph CNN 类似的能力,作者提出使用额外变换 additional transform 来对 feature domain 进行重参数化re-parameterization

    最后,卷积层中总的 O(d2) 个训练参数由两部分组成:距离度量 distance metric,、以及节点的特征变换 feature transform 。给定训练好的 metric 、以及变换后的特征空间,我们可以构建更新后的残差图。

    在九个图数据集上进行的大量实验表明,AGCN 在训练速度和预测效果上都有很大的提升。

    论文主要贡献:

    • 为每个样本学习图拉普拉斯矩阵:为每个样本学习残差图的拉普拉斯矩阵,并将学到的残差图的拉普拉斯矩阵添加到初始图(由本征图或聚类图给出)上。

    • 学习度量矩阵:通过学习最佳的距离度量参数(这些参数在数据之间共享),图的拓扑结构随着训练的过程和不断更新。度量矩阵学习的算法复杂度为 O(d2) ,与图的大小无关。

      这个度量矩阵用于构建残差图。

    • 卷积中的 feature embedding :在执行图上的卷积之前,先完成节点特征的变换。

    • 灵活的输入图:由于前面的第一点和第二点,AGCN 可以接受不同结构和大小的图作为输入,并且没有图 degree 的限制。

  2. 相关工作:

    • 谱图卷积 Spectral Graph Convolution

      《Spectral networks and locally connected networks on graphs》 首次尝试在图上应用类似 CNN 的方法。具体而言,空间卷积聚合了由图邻接矩阵 Ak 定义的邻域的特征。卷积核是finite-size 有限尺寸的并且过度局部化。卷积层简化为类似全连接层的结构,但是使用由 Ak 定义的稀疏转换矩阵sparse transform matrix。空间卷积具有原生的困难:无法匹配各种各样的邻域结构。因此,如果不对图的拓扑结构加以限制,则图上的空间卷积核无法定义。

      谱图理论 spectral graph theory 使得频域上定义卷积核成为可能。并且频域乘子 multiplier 的平滑性带来空间局部性spatial locality。本文的 baseline 方法建立在 《Convolutional neural networks on graphs with fast localized spectral filtering》 的基础上,并且将 one-hoplocal kernel 扩展为带来最多 K-hop connectionkernel 。根据图傅里叶变换,如果 UL 的图傅里叶基 graph Fourier basis ,那么:

      xk+1=σ(gθ(LK)xk)=σ(Ugθ(ΛK)Uxk)Rn

      其中:n 为节点数量,L 为图的拉普拉斯矩阵,Λ=diag(λ1,,λn)Ln 个频率分量(即,特征值)的对角矩阵,σ() 为激活函数,gθ() 为卷积函数,x 为定义在图上的信号。

      • 《Convolutional neural networks on graphs with fast localized spectral filtering》 还利用契比雪夫多项式及其近似评估方案来降低计算成本并实现局部化的滤波。
      • 《Semi-supervised classification with graph convolutional networks》 展示了契比雪夫多项式的一阶近似作为 graph filter spectrum,从而导致更少的训练参数。

      尽管如此,人们已经开始构建更强调拓扑结构的定制化的 graph,甚至解除了对 input graph 的维度约束。然而,设计一个灵活的 graph CNN 仍然是一个悬而未决的问题。

    • 分子图Molecular Graph上的神经网络:对有机分子化学性质的预测通常通过人工抽取特征以及 feature embedding 来处理。由于分子自然地被建模为图,因此人们已经成功地在原始分子上构建神经网络来学习 representation。但是,由于空间卷积的局限性,这些网络无法充分利用原子的连通性connectivity(即一些原子组成的亚结构),这些连通性要比少数的化学键特征更能提供信息。

      最近,人们完成了对 progressive network、多任务学习、以及 low-shot/one-shot 学习的探索。目前为止,分子图上的 state-of-the-art 网络仍然使用无法充分利用空间信息的 non-parameterizedspatial kernel

      此外,拓扑结构可以作为有判别力discriminative的特征的丰富来源。

11.1 模型

11.1.1 SGC-LL

  1. 为了使得谱卷积spectral convolution能够适用于各种类型的图结构,我们对距离度量进行了参数化,使得图拉普拉斯矩阵本身是可训练的。通过训练好的度量函数,我们可以为不同形状和大小的输入图动态构建各自的动态图,并在这个动态图上执行卷积(而不是原始图上进行谱卷积)。

    可以学习图拉普拉斯矩阵的新的谱卷积层称作 Spectral Graph Convolution layer with graph Laplacian Learning : SGC-LL

a. 学习图拉普拉斯矩阵
  1. 给定图 G=(V,E) 以及邻接矩阵 A 、度矩阵 D ,则归一化的图拉普拉斯矩阵 L 定义为:

    L=ID1/2AD1/2

    显然 L 决定了node-wise 连通性(由邻接矩阵 A 刻画)以及节点的 degree(由 D 刻画),知道了拉普拉斯矩阵 L 意味着知道图 G 的拓扑结构。

    由于 L 是半正定的对称矩阵,因此可以对它进行eigen-decomposition 特征分解:

    L=UΛU

    其中 :

    • Λ=diag(λ1,,λn)n 个特征值构成的对角矩阵, 0λ1λn
    • U=[u1,,un]Rn×nuiRn 对应于 λi 的特征向量。

    类似于欧式空间中的傅里叶变换,图上的信号 xRn 在图上的傅里叶变换定义为:

    x^=Ux

    图上的一个信号定义了一个一维特征,该特征在图上每个节点都有取值。

    傅里叶逆变换为:

    x=Ux^=UUx
  2. 由于图的拉普拉斯矩阵的谱为 Λ,因此谱滤波器 gθ(Λ) 在空域定义了一个卷积核。《Spectral graph theory》表明:平滑的频域谱会产生localized 局部化的空间卷积核。

    《Convolutional neural networks on graphs with fast localized spectral filtering》 中定义了一个多项式卷积核:

    gθ(Λ)=k=0K1θkΛk

    这定义了一个 K 阶局部化的卷积核,从而允许最短距离 dG<K 的一对节点参与卷积。同时,距离较远意味着更少的相似性,因此分配的重要性也将减少,这可以通过 θk 来控制。

    多项式卷积核平滑了频谱,而参数 θk 使得卷积核的权重从中心节点到最远的、距离为 K 的节点呈圆形分布。这种做法限制了卷积核的灵活性。

    更重要的是:两个节点之间的相似性不仅和距离相关,更主要的是取决于所选的距离度量函数、节点的特征。对于在非欧几何种的数据,无法保证欧式距离是衡量相似性的最佳指标。因此,两个相连的节点之间的相似性,可能会比两个未连接节点之间的相似性更低。有两个可能的原因:

    • 图是在raw feature domain 原始特征领域构建的,没有经过任何特征抽取和变换,因此基于距离的相似性没有考虑特征信息。
    • 图结构是intrinsic本征的,它仅表示物理意义上的连接,如分子中的化学键,因此距离近不一定代表着相似。
  3. 为解决卷积核的这种限制,我们提出了一个新的谱滤波器,该滤波器对拉普拉斯矩阵 L 进行参数化,而不是对权重系数 θk 进行参数化。

    给定原始的图拉普拉斯矩阵 LRn×n 、特征矩阵 XRn×d ,参数 Γ ,其中 d 为节点特征维度,定义新的图拉普拉斯矩阵为:

    L~=F(L,X,Γ)

    这个新的图拉普拉斯矩阵定义了一个新的动态图,我们在这个新的动态图上进行谱卷积。

    新的滤波器为:

    gθ(Λ)=k=0K1(F(L,X,Γ))k

    则对于输入信号 X,卷积输出信号为:

    Y=Ugθ(Λ)UX=Uk=0K1(F(L,X,Γ))kUX

    由于存在稠密矩阵的乘法 UX , 上式的算法复杂度为 O(n2) 。考虑到 L~ 的稀疏性,如果 gθ(L~) 可以通过 L~ 的多项式进行近似从而直接计算,则上式的算法复杂度可以降低到 O(K) 。因此,我们选择使用切比雪夫多项式来近似 gθ(Λ)

    注意,这里的 θ 不再是可学习的参数,因此也就是不再是 transductive 的。

b. 度量的训练
  1. 对于图结构,欧式距离不再是衡量节点相似性的很好指标。因此,距离度量在训练过程中适应目标任务、节点特征。在度量学习的论文中,算法分为监督学习和非监督学习。监督学习的最佳度量最小化监督损失,无监督学习的最佳度量最小化簇内距离(也是最大化簇间距离)。

  2. 给定节点 vivj 的特征 xixj ,则特征之间的马氏距离定义为:

    D(xi,xj)=(xixj)M(xixj)

    如果 M=I 单位矩阵,则上式退化为欧式距离。

    AGCN 中,我们选择一个对称的半正定矩阵:M=WdWd ,其中 WdRd×dSGC-LL layer 学习的参数。因此上式为:

    D(xi,xj)=(Wd(xixj))(Wd(xixj))

    因此,Wdxixj 映射到新的欧式空间,从而在新空间中计算欧氏距离。

    然后我们使用新的距离来计算高斯核:

    G(xi,xj)=exp(D(xi,xj)2σ2)

    在归一化 G={G(xi,xj)}n×n 之后,我们得到一个新的、稠密的邻接矩阵 A^ 。在我们的模型中,最佳度量 W^d 构建了图拉普拉斯集合 {L^} 从而最小化预测损失。

    这个新的邻接矩阵定义了一个新的图拉普拉斯矩阵,就是前文中描述的 L~ ,它综合考虑了节点特征 X 以及图结构信息,并自适应地学习距离度量 。

    构建 A^ 的时间复杂度和空间复杂度都是 O(n2) ,因此该算法不适合大型图。

c. 特征变换上的重参数化
  1. 在经典的 CNN 中,卷积层的输出特征是来自最后一层的所有特征图的sum 和,而这些特征图feature map 是由独立的滤波器计算的。这意味着新特征不仅依赖于相邻节点,也依赖于其它内部节点。

    但是在图卷积中,为同一个图上的不同节点特征创建和训练独立的拓扑结构是不可解释的(对应于独立的滤波器)。为了构建同时包含节点内特征和节点间特征的映射,在 SGC-LL 层我们引入了一个特征变换矩阵以及一个 bias 向量作用于层输出上:

    Y=(Ugθ(Λ)U)W+b

    假设有 LSGC-LL 层,则在第 l 层,我们有待学习的参数 {Ml,Wl,bl},其中 MlRdl1×dl1,WlRdl1×dl,blRdl

    SGC-LL 层的计算复杂度为 O(dl×dl1) ,它们和图的大小以及节点 degree 无关。

  2. 在下一个 SGC-LL 层,谱滤波器将建立在另一个具有不同度量的 feature domain 中。

d. 残差图的拉普拉斯矩阵
  1. 某些图数据具有本征的图结构,如分子。分子被建模为以原子为节点、以化学键为边的分子图。这些化学键可以通过化学实验来证明。但是,大多数数据天然地不具备图结构,因此我们必须在将图输入网络之前首先构建好图。

    除了以上两种情况之外,最有可能的情况是:以无监督方式创建的图无法充分地为特定任务来表达所有有意义的拓扑结构。以化合物为例,SMILES 序列给出的本征图并不能说明化合物的毒性。仅仅依赖本征图,很难学到刻画毒性的有意义的 representation

  2. 由于缺乏距离度量的先验知识,通常我们会随机初始化度量矩阵 M,因此可能需要花费很长时间模型才能收敛。为了加快训练速度并提高被学习的图拓扑结构的稳定性,我们给出一个合理的假设:最优的图拉普拉斯矩阵 L^ 是原始图拉普拉斯矩阵 L 的一个小的偏移:

    L^=L+αLres

    即:原始的图拉普拉斯算子 L 已经给出了大量有用的图结构信息,除了一些无法在原始图上给出的一些虚拟节点组成的子结构(由残差图表示)。

    因此,我们并不直接学习 L^ ,而是学习残差图的拉普拉斯矩阵 Lres ,然后将 Lres 并乘以 α 并添加到原始图的拉普拉斯矩阵 L 上。

  3. SGC-LL 层算法:

    • 输入:

      • 输入节点特征 X
      • 拉普拉斯矩阵 L
      • 参数 α,M,W,b(注意,θ 不再是参数)
    • 输出:输入特征 X 卷积后的信号

    • 算法步骤:

      • 根据下式计算新的邻接矩阵 A^

        D(xi,xj)=(xixj)M(xixj)G(xi,xj)=exp(D(xi,xj)2σ2)

        G={G(xi,xj)}n×n 归一化后即可得到 A^

      • 计算残差图的拉普拉斯矩阵:

        Lres=ID^1/2A^D^1/2

        其中 D^A^ 的度矩阵。

      • 计算新的图拉普拉斯矩阵: L~=L+αLres

      • 计算卷积输出:Y=(Ugθ(Λ)U)W+b

读者注:

  1. transductive 变为 inductive

    • GCN 使用针对 θ 的参数化(并共享 θ ),参数的数量为 n ,依赖于图大小,因此无法适用于各种不同大小的图。
    • SGC 使用针对距离度量的马氏矩阵 M 的参数化(并共享 M ),参数的数量为 O(d2) ,不依赖于图大小,因此适用于各种不同大小的图。
  2. 根据卷积公式:Y=Ugθ(Λ)UX ,传统的 GCN 主要参数化 gθ ,而 SGC 可以视为参数化 U (残差图改变了特征分解的基向量)。

  3. 我们可以把 SGCGraphSAGE 等基于消息传播机制的方法结合起来:首先,学习自适应图;然后,在自适应图上应用 GraphSAGE

    唯一的局限性在于:自适应图是稠密的(时间复杂度和空间复杂度都是 O(n2)),因此可以采用剪枝从而使其稀疏化。

11.1.2 AGCN

  1. 我们提出的网络称为自适应图卷积网络 Adaptive Graph Convolution Network:AGCN,因为 SGC-LL 层能够根据数据和目标任务有效地学习自适应的图拓扑结构。

    除了 SGC-LL 层之外,AGCN 还有图最大池化层 graph max pooling layer 、图聚合层 graph gather layer

a. Graph Max Pooling
  1. 图最大池化层是feature-wise 的最大池化。假设节点 vi 的特征为 xi ,邻域集合为 Ni ,则 vi 的池化层输出为:

    x^i,j=max{xi,j,xv,j,vNi}x^i=(x^i,1,,x^i,d)

    即:池化层将 vi 的第 j 个特征 xi,j 替换为节点 vi 及其邻域节点中第 j 个特征的最大值。

b.Graph Gather
  1. 图聚合层逐元素地将所有节点的特征向量求和,从而作为图的 graph-level representation

    聚合层的输出向量用于 graph-level 预测,也可以没有聚合层从而训练 AGCN 并将其作为 vertex-level 预测。

c. Bilateral Filter
  1. AGCN 中使用双边滤波器层 bilateral filter layer 用于防止过拟合。

    学到的残差图拉普拉斯矩阵自适应地适配训练集,但是可能会存在过拟合风险。为了缓解过拟合,我们引入修正的双边滤波器层,通过增加 L 的空间局部性来正则化 SGC-LL 层的输出。

    我们还引入了 BN 层来加快训练速度。

d. Network Configure
  1. AGCN 由多个连续的layer combo 组合而成,其核心为 SGC-LL 层。每个 layer combo 包含一个 SGC-LL 层、一个 BN 层、一个图最大池化层,如下图所示。

    • 每个 SGC-LL 层都训练一个残差图的拉普拉斯矩阵。在随后的BN 层、最大池化层中使用自适应图adaptive graph (原始图 + 残差图),直到下一个 SGC-LL 层。

      由于 SGC-LL 层会转换特征,因此下一个 SGC-LL 层需要重新训练新的残差图。

      每一层都需要重新计算 A^ ,因此空间复杂度和时间复杂度太高。我们是否只需要 input 的残差图,然后在后续层中固定使用这个残差图?

    • 在通过组合层之后,我们将批量更新图结构(因为每次训练一批样本,每个样本代表一个图)。

    • 本文中我们评估的是 graph-wise 任务,因此在回归器之前还有一个 graph-gather 层。

  2. 对于像有机化合物这类数据,一些小的子结构对于特定的化学性质(如毒性)具有决定性作用。如:芳烃通常具有毒性,而如果氢原子被甲基取代,则毒性大大降低。

    因此,如果进行图粗化或者特征平均都会损害那些信息丰富的局部结构的完整性,因此我们选择最大池化,并且不跳过卷积中的任何节点。

11.1.3 Batch 训练

  1. 图数据结构上进行卷积的最大挑战之一是难以匹配训练样本(每个样本代表一个图)的各种各样局部拓扑结构:

    • 这带来设计卷积核的额外困难,因为在图上不满足核的不变性,而且节点的顺序有时也很重要
    • 对于某些数据(如分子),对图进行粗化(即调整图大小)或者调整图的形状都是不合理的(破坏分子结构)

    与在张量上进行经典卷积的网格数据不同,对于图上的卷积必须兼容多种拓扑结构。为此,我们提出了 SGC-LL 层,它训练了自适应的图拉普拉斯矩阵,从而保留了数据的所有局部拓扑结构。

    我们发现在构建图结构时真正重要的是特征空间和距离度量,因此 SGC-LL 层要求每个 batch 的样本共享相同的特征变换矩阵和距离度量。此外,训练参数的数量仅取决于特征的维度 d 。因此,AGCN 可以进行 batch 训练,每个 batch 可以包含具有不同拓扑结构和大小的原始图。

    注意:在训练之前需要构造原始图的拉普拉斯矩阵,这会带来额外的 RAM 开销。但是我们仍然需要保留初始拉普拉斯矩阵从而更新自适应的拉普拉斯矩阵。但是,这是可以接受的,因为图拉普拉斯矩阵是稀疏的。

11.2 实验

  1. 数据集:

    • 回归任务:

      • Delaney 数据集:包含 1144 种小分子量化合物的aequeous solubility 等效溶解度数据。数据集中最大的化合物包含 492 个原子,最小的化合物仅有 3 个原子。
      • NCI 数据集:包含大约 2 万种化合物,以及60 个从药物反应到临床药理学研究的预测任务。
      • Az-LogD 数据集:来自 ADME 数据集的 4200 种化合物渗透率的 logD 数据。
      • Hydration-free energy 数据集:我们提供的包含 642 个化合物的小型数据集,用于无水合能量研究。

      我们使用5 折交叉验证,并给出每个数据集中的平均 RSME 和标准差。

    • 分类任务:

      • Tox21 数据集:包含 12 篇论文中 7950 种化合物及其label,用于毒性分析。但是额外的困难来自于这 12 项任务中缺少部分标签。对于那些缺少标签的样本,我们将其从损失函数的计算中剔除,但是仍将其保留在训练集中。
      • ClinTox 数据集:包含 1451 种化合物的公开数据集,用于临床病理学研究。该数据集同时包含两个任务的标签。
      • Sider 数据集:包含 1392 种药物及其 27 种不同副作用或不良反应的标签。
      • Toxcast 数据集:另一个病毒学研究数据集,包含 8599SMILES 以及用于 617 个预测任务的标签。

      对于 N-task 预测,图模型将构建为具有 N 个叶结点的 L 层树模型,每个叶结点包含一个全连接层和task-specific 逻辑回归输出层。

    • 点云数据:

      • Velodyne HDL-64E LIDAR 点云数据集:包含澳大利亚悉尼的 Velodyne HDL-64E LIDAR 扫描的街道对象。

        由于对象的实际大小和形状存在很大差异,因此不同对象的点数也不同。如下图所示:1 表示自行车,有 124 个点;2 表示卡车,有 615 个点;3 表示行人,有 78 个点。

  2. baseline 方法:

    • GraphConv《Spectral networks and locally connected networks on graphs》 使用由线性双样条插值构建的谱滤波器实现卷积。
    • NFP:神经网络指纹Neural Fingerprint:NFP,它在空域中构建滤波器实现卷积。
    • GCN:使用 《Convolutional neural networks on graphs with fast localized spectral filtering.》 提出的 K 阶局部化的谱卷积核来实现卷积。
  3. 我们首先来验证 SGC-LL 层的效果。SGC-LL 层的滤波器基于自适应图 adaptive graph 来构建,而自适应图由原始图加残差图 residual graph 组成。原始图可以是数据直接给出的本征图 intrinsic graph (比如分子结构),或者是通过聚类得到的聚类图。网络以原始图作为输入,这使得AGCN 能够直接读取不同结构和大小的图。

    由于在网络训练期间会更新距离度量以及特征变换矩阵,因此在训练期间会不断更新自适应图(原因是残差图被不断更新)。实验证明:更新后的自适应图与模型的效果密切相关。

    如下图所示为化合物 C20N2O5S 的节点相似度矩阵(一个 28x28 的矩阵,以自适应图来构建的相似度矩阵)的热力度。左图为训练之前的相似度矩阵(记作 0),右图为训练了 20epoch 之后的相似度矩阵。从放大的细节种我们明显发现在 20epoch 之后,节点的相似性发生了显著变化。这意味着由于距离度量在训练中更新,化合物的自适应图的结构也发生了变化。

    同时,平均 RMSE 以及加权的 L2 损失函数在前 20epoch 急剧下降。另外和baseline 方法相比,AGCN 在收敛速度、预测准确性方面都呈现压倒性优势。我们将这些提升归因于 SGC-LL 层的自适应图以及残差图的拉普拉斯矩阵的学习。

  4. 首先我们对比不同的模型在回归任务上的表现。可以看到:AGCNDelaney 数据集上的 RMSE 降低了 31%~40%,在 Az-logD 数据集上的 RMSE 降低了 15%,在 NCI 数据集上降低了 2% ,在 Hydration-free 数据集上降低了 35%。 看似来似乎当数据更为稀疏时,AGCN 更为有效。

    然后我们对比这些模型在多任务分类上的效果。可以看到 AGCN 提升了所有数据集上的效果。对于 Toxcast617 项任务,AGCN 效果比 SOA 仍然提升了 3%

  5. 由化学式给出的分子图是化合物的本征图,这些本征图从图的结构到图的大小多种多样。

    • GraphConv 的谱卷积核只能连接 1 阶邻居(通过边直接相连的邻居),因此它 over-localized 过于局部化。

      当处理分子图时这是一个问题,因为分子图的某些重要子结构无法被这种过于局部化的卷积核所覆盖。

    • GCN 中的 K 阶邻域卷积核不存在过于局部化的问题,但是它假设卷积核在不同样本之间共享(每个样本代表一个分子图)。

      • 如果训练集中的样本分子共享了很多常见的子结构,如 OH(羟基)、C6H6 (苯基),则这种共享效果很好(如下图所示)。

      • 如果训练集中的样本分子来自于各种类别的化合物,则它们的子结构千差万别。这时 GCN 效果很差。尤其是当某些类别的样本数据不足时。

        这也可能是为什么 GCN 在大型数据集 (如 Sider)上具有和 AGCN 差不多的性能,但是在小型数据集(如 DelaneyClintox )上效果很差的原因。

    • AGCN 能够以更好的方式处理分子数据。自适应图允许每个输入分子图具有不同的结构和大型,因此我们可以为 AGCN 提供原始数据而不会丢失任何信息。

      此外,SGC-LL 层针对任务目标来训练距离度量函数和其它变换参数。因此当模型收敛时,对于每层 SGC-LL 我们都将找到最适合的特征空间和距离度量来构建最适合的自适应图。最终学到的自适应图可能包含原始分子图中不存在的新的边。

    下图为不同Graph CNN 模型的卷积比较,其中红点为卷积核的中心,橙点为卷积核的卷积范围。边的颜色代表谱卷积核的权重。

    • (1)2 维网格上的经典 3x3CNN卷积核。
    • (2)GraphConv/NFP 卷积核,可以看到它过于局部化。
    • (3)GCN 卷积核,它时 K 阶局部化的,并且在所有输入图上共享。
    • (4)AGCN 卷积核,它也是 K 阶局部化的,但是它作用在自适应图上(原始图 + 残差图)。学到的残差图的边以虚线表示。

  6. 最后我们考察点云数据集上的表现。初始的点云图是通过 agglomerative 聚类来构建的。

    • 在将点云数据馈入 Gaph CNN 之前,通常需要经过降采样来统一大小,这必然会丢失部分结构信息。而 AGCN 通过接受不同大小的原始点云图从而克服了该问题。
    • 如果使用 GCN,则 GCN 的卷积核在不同输入之间共享。这种共享的卷积核可能会混淆点云上的特征,而不考虑点之间的实际距离。而 AGCN 能够根据空间关系精确地进行卷积。
    • 点云识别的 SOA 方法为 PointNet,但是它无法处理大小变化的点云数据。

    我们采用 5 折交叉验证并报告了不同模型在测试集上的平均 ROC-AUC 得分。可以看到,AGCNAll Classes 上超越了所有其它方法。

    • 在大型对象(如建筑物)上,我们的 AUC 得分接近 1.0。其它 Graph CNN 模型效果较差,因为它们必须首先降采样。
    • 对于重要的道路物体(如交通信号灯),AGCNROC-AUC 的效果提升了至少 10%

    数据表明:AGCN 在点云图上可以提取比其他 Graph CNN 更多有意义的特征。另外,AGCN 输入信息的完整性也有利于提升性能。

十二、FastGCN[2018]

  1. 图是 pairwise relationshipuniversal representation。许多现实世界的数据自然而然地以 graph 的形式展现,如社交网络、基因表达网络、知识图谱。为了提高 graph-based 学习任务的性能,最近人们努力将已有的网络架构(包括 RNNCNN)推广到 graph 数据。

    虽然学习 graphfeature representation 是一个重要主题,但是这里我们重点关注节点的 feature representation 。在这方面,《Semi-supervised classification with graph convolutional networks》提出的 GCN 是最接近 CNN 架构的工作。借助针对图片像素的卷积滤波器的概念,或者信号的 linear array 的概念,GCN 使用图的连通性结构connectivity structure 作为滤波器进行邻域混合 neighborhood mixing 。该架构可以用总结为:

    H(l+1)=σ(A^H(l)W(l))

    其中:

    • A^ 是图的某个归一化邻接矩阵。
    • H(l) 为图的所有节点在网络第 lembedding 组成的 embedding 矩阵(按行)。
    • W(l) 为网络第 l 层的参数矩阵。
    • σ 为非线性函数。

    与许多图算法一样,邻接矩阵编码了训练数据和测试数据中的 pairwise relationship 。模型的学习和 embedding 是同时在训练数据和测试数据上进行的,至少根据作者的建议而言。然而,对于许多应用程序而言,测试数据可能并不容易获得,因为图可能会不断扩展新的节点(如,社交网络的新成员、推荐系统的新产品、以及用于功能测试的新药物)。这样的场景需要一个归纳式的方案inductive scheme ,该方案仅从训练数据中学习模型并且可以很好地泛化到测试数据。

    因为 GCNtransductive 的,因此需要在训练期间就知道测试数据,并同时针对测试数据进行训练。

    GCN 面临的一个更严峻的挑战是:跨层的邻域递归扩展会在 batched training 中产生昂贵的计算。尤其是对于稠密图dense graph和幂率图powerlaw graph,单个节点的邻域扩展会迅速填满图的大部分。然后,即使是一个很小的 batch size ,每个 mini-batch 训练都涉及到大量数据。因此,GCN 难以推广到大型稠密图。

    为解决这两个挑战,《FASTGCN: FAST LEARNING WITH GRAPH CONVOLUTIONAL NETWORKS VIA IMPORTANCE SAMPLING》 从另一个角度考察图卷积,并将图卷积解释为概率测度下 embedding 函数的积分变换。这种观点为归纳式学习inductive learning提供了一种从损失函数的公式到梯度的随机版本的原则性的机制principled mechanism

    具体来讲,论文将图节点解释为某种概率分布的独立同分布 iid 样本,并将损失函数以及每个卷积层视为节点 embedding 函数的积分。然后通过对积分进行蒙特卡洛模拟来求解,从而得到损失函数和梯度(损失函数和梯度中包含了 embedding 函数的积分)。也可以进一步改变蒙特卡洛模拟中的采样分布(如,重要性采样)来减少积分近似的方差。

    论文所提出的方法称作 FastGCN ,该方法不仅是 inductive 的,并且每个 batch 的计算成本可控。在撰写该论文时,作者注意到新发表的作品 GraphSAGE,其中 GraphSAGE 提出使用采样来减少 GCN 的计算代价。相比而言,FastGCN 的方法代价更低。实验表明,FastGCN 的每个batch 计算速度比 GraphSAGE 快一个量级以上,并且分类准确性相差无几。

  2. 相关工作:在过去的几年中,出现了几种graph-based的卷积网络模型,它们用于解决图结构数据的应用,如分子的 representation《Convolutional networks on graphs for learning molecular fingerprints》)。

    • 一个重要的工作方向是建立在谱图理论上的。它们受到傅里叶变换的启发,在谱域中定义了参数化的滤波器。这些方法学习整个图的 feature representation,并可用于图分类。

    • 另一个工作方向是学习 graph vertexembedding《Graph embedding techniques, applications, and performance: A survey》 是最近的一项综述,全面涵盖了几类方法。

      • 一个主要的类别包括基于分解的算法,这些算法通过矩阵分解来产生 embedding 。这些方法共同学习训练数据和测试数据的 representation
      • 另一类方法基于随机游走,通过探索邻域来计算 node representationLINE 就是这样的一种技术,它的动机是保留一阶邻近性和二阶邻近性。
      • 同时,也出现了一些深度神经网络架构,它们可以更好地捕获图中的非线性,如 SDNE

      如前所述,我们的工作是基于GCN 模型的。

    与我们工作最相关的工作是 GraphSAGE,它通过聚合邻域信息来学习 node representation。作者还承认所提出的聚合器之一采用了 GCN 架构。作者还承认 GCN 的内存瓶颈,因此提出了一种临时采样方案ad hoc sampling scheme 来限制邻域大小。我们的采样方法基于一个不同的、更有原则的公式。主要区别是我们采样节点而不是邻域。

12.1 模型

  1. GCN 和许多标准神经网络架构之间的一个显著区别是:样本损失之间缺乏独立性。诸如随机梯度下降 SGD 以及它的 batch 版本等训练算法是基于损失函数相对于独立数据样本的可加性来设计的。另一方面,对于图,每个节点都与它的所有邻居进行卷积,因此定义一个计算计算高效的样本梯度非常简单。

  2. 具体而言,考虑标准的随机梯度下降 SGD ,其中损失函数是某个函数 g 对数据分布 D 的期望,其中 g 为单个样本的损失:

    L=ExD[g(W;x)]

    其中 x 为单个样本特征,W 为待学习的模型参数。

    通常数据分布 D 是未知的,因此我们可以用经验损失函数(来代替上述损失函数,即:

    Lemp=1ni=1ng(W;xi),i,xiD

    其中 xin 个从分布 D 中采样的 iid 样本。

    SGD 的每一步中,梯度近似为 g(W;xi) ,它是 L 的一个无偏估计。人们可以解释为:每个梯度的 step 都会朝向着样本损失 g(W;xi) 增加的方向(因此,负梯度是最小化的方向)。这里,样本损失和样本梯度仅涉及单个样本 xi

  3. 对于图,利用样本独立性并通过递归地丢弃邻域节点及其邻域信息来计算样本梯度 g(W;xi) ,这是不可行的。因此,我们寻求另一个替代公式。为了在相同的采样框架下解决学习问题,我们假设存在一个(可能无限大)的图 G ,它包含节点集合 V 。这个图定义了一个概率空间 (V,F,P) ,其中:

    • V 为样本空间。
    • F 为事件空间。如 F=2V 表示 V 中的每个节点是否被选中。
    • P 为概率测度,它定义了一个采样分布。

    对于给定的图 G ,我们假设 GG 的诱导子图:G 的节点是根据概率测度 P 在节点集合 V 上采样的独立同分布 iid 样本。

    为解决图卷积的损失函数缺乏独立性问题,我们将卷积层定义为节点的 embedding 的函数,不同节点关联了相同的概率测度,但是节点之间相互独立。

    注意,这里每个节点代表一个随机变量。

    具体而言,考虑 GCN 体系架构:

    H~(l+1)=A^H(l)W(l),H(l+1)=σ(H~(l+1)),l=0,,L1L=1ni=1ng(hi(L))

    从函数泛化的角度,我们改写为:

    h~(l+1)(v)=A^(v,u)(h(l)(u))W(l)dP(u),h(l+1)(v)=σ(h~(l+1)(v)),l=0,,L1L=EvP[g(h(L)(v))]=g(h(L)(v))dP(v)

    第一个积分是对邻域聚合的替代,第二个积分是对损失函数求均值的替代。

    其中:

    • u,v 为独立的随机变量,它们都有相同的概率测度 P

    • 函数 h(l) 为第 l 层的 embedding 函数。第 l+1embedding 为第 lembedding 的卷积,并通过积分变换来公式化卷积。其中卷积核 A^(v,u) 对应于矩阵 A^ 的位置 (v,u) 的元素。

      注意:积分不是通常的 Riemann–Stieltjes 积分,因为随机变量 u,v 为图上的节点。但是这种区别只是形式上的区别而已。

    • H(l) 为第 l 层的 embedding 矩阵,每个节点占据一行。 h(l)(v) 表示 H(l) 中节点 v 对应的向量。而 () 将列向量转换为行向量。

    • 最终的损失函数是对 g(h(L)) 的期望。

  4. 我们通过蒙特卡洛模拟来求解上述积分,从而得到 batch 训练算法,并很自然地得到 inductive learning

    对于第 l 层,假设我们随机采样得到 tl 个独立同分布的节点 u1(l),,utl(l)P ,则得到:

    h~(l+1)(v)=1tlj=1tlA^(v,uj(l))(h(l)(uj(l)))W(l)h(l+1)(v)=σ(h~(l+1)(v))

    其中 h(l)() 表示根据蒙特卡洛模拟近似的 embeding 函数。

    最终的损失函数估计为:

    L=1tLi=1tLg(h(L)(ui(L)))

    原理是以蒙特卡洛模拟来执行 “期望公式 -- 积分” 之间的替代,即:“原始公式(期望视角) --> 积分 --> 新公式(期望视角)”。

    要保证结果正确的核心是:大数定理。例如,样本邻域不能太稀疏,否则计算 h~(l+1)(v) 时可能一个邻居都没有采样到,最终导致模型效果较差。

  5. 定理:如果 g()σ() 是连续函数,则 limt0,,tLL 以概率 1 收敛到 L

    证明见原始论文,其中依赖于大数定律、连续函数理论(要求激活函数 σ() 是连续的)。

  6. 实际应用中,给定一个图 G ,图的节点被假设为从 V 中采样的样本。因此我们的蒙特卡洛模拟采样过程中需要 bootstrap 采样从而获得一致的估计。

    给定一个 batch,我们从图 G 中随机采样 tL 个节点。我们在网络每一层进行有放回的采样从而得到样本节点 ui(l),i=1,,tl;l=0,,L1 。该过程等价于在每一层对 H(l) 的列进行均匀采样。

    注意:在第 L 层的时候我们不需要进行采样,因为第 L 层的 H(L) 是输出结果。我们将 H(L) 划分为若干个 batch (注意:这里是划分,而不是采样)。我们使用节点 u1(L),,utL(L) 来描述一个 batch 的节点,因此得到 batch loss

    Lbatch=1tLi=1tLg(h(L)(ui(L)))

    其中:

    h(l+1)(v)=σ(ntlj=1tlA^(v,uj(l))(h(l)(uj(l)))W(l)),l=0,,L1

    该公式可以理解为:基于采样的消息传播机制。其中,消息为 (h(l)(uj(l)))W(l),聚合权重由 A^(v,u) 给出。由于均匀采样,所以采样概率为 1/n ,因此需要除以采样概率从而恢复原始的期望值。

    注意:这里激活函数 σ() 内部的 n 为图中节点数量,用于解决 GCN 原始的矩阵形式和我们的 embedding 积分形式之间的归一化差异。

    可以通过在每个 H(l) 上应用链式法则来直接获取相应的 batch 梯度,最终我们得到了 batch 损失以及 batch 梯度。

    理论上讲,如果跨 batch 共享,那么训练速度会更快,但是效果可能会更差。论文这里选择 batch 之间独立地采样,即,不共享。

  7. 下图给出了 GCN 的两种观点。

    • 左图:图卷积的观点。每个圆圈表示图中的一个节点。在连续的两行上,如果图中两个节点存在连接,则对应的圆圈以灰线相连(其中部分灰线被橙线覆盖)。卷积层利用图的连接性来融合图的节点特征或者 embedding
    • 右图:积分变换的观点。下一层 embedding 函数为前一层 embedding 函数的积分变换,用橙色扇形表示。

    FastGCN 中,所有积分(包括损失函数)都是通过蒙特卡洛模拟采样进行评估的。对应于图中,FastGCN 从每一层进行有放回的节点采样从而近似卷积。采样部分由蓝色实体圆圈,以及橙线来表示。例如:

    • 输出层(第二层)的一个 batch 包含三个节点
    • 第一层有放回地随机采样三个节点,通过这三个节点来求解输出层的 embedding
    • 第零层有放回地随机采样三个节点,通过这三个节点来求解第一层三个节点的 embedding

    每个 batch 采样的节点集合(即,输出节点)不同、相同 batch 每一层采样的节点集合不同。

  8. FastGCNbatch 训练算法(一个 epoch):

    • 输入:

      • G(V,E) ,以及图的邻接矩阵 A^
      • 学习率 η
    • 输出:更新后的参数 {W(l)}l=0L1

    • 算法步骤:

      迭代每个 batch,迭代过程:

      • 对每一层 l ,均匀随机采样 tl 个节点:u1(l),,utl(l)

      • 对每一层 l ,如果节点 v 在第 l+1 层被采样到,则计算:

        h~(v)ntlj=1tlA^(v,uj(l)){(h(l)(uj(l)))W(l)}
      • 参数更新:WWηLbatch

12.2 重要性采样

  1. 根据前文所述,LL 的一个一致的估计量。现在我们关心这个估计量的方差,期望得到较小的方差。但是,由于网络架构非线性的影响,评估 L 的方差非常具有挑战性。因此这里我们考虑每一层的非线性之前 embedding 函数的方差。

    考虑第 l 层,函数 h~(l+1)(v) 是卷积 A^(v,u)(h(l)(u))W(l)dP(u) 的近似。当考虑 tl+1 个样本 v=u1(l+1),,utl+1(l+1) 时,这些样本的 h~(l+1)(uj(l+1)) 的均值存在一个方差,该方差捕获了第 l 层对最终损失函数估计量偏离的贡献。因此,我们现在希望改善这个方差。

    • 这里我们并未考虑单个函数 h~(l+1)(uj(l+1)) ,因为我们的目标是整个第 l 层的方差。
    • 我们考虑的是非线性之前的embedding 函数 h~(l+1)(v) ,而不是非线性之后的 embedding 函数 h(l+1)(v)
  2. 为表述方便,我们修改某些符号。

    • 对于第 l 层的随机变量记作 u ,采样的节点 uj(l) 记作 uj ,采样数量 tl 记作 t(h(l)(u))W(l) 记作 x(u)
    • 对于第 l+1 层的随机变量记作 v ,采样的节点 ui(l+1) 记作 vi ,采样数量 tl+1 记作 sh~(l+1)(v) 记作 y(v)

    在随机变量 v,u 的联合分布下,上述 tl+1 个样本的 h~(l+1)(uj(l+1)) 的均值为:

    g=1si=1sy(vi)=1si=1s(1tj=1tA^(vi,uj)x(uj))
  3. 推论:g 的方差为:

    var(g)=r+1stA^(v,u)2x(u)2dP(u)dP(v)

    其中:

    r=1s(11t)e(v)2dP(v)1s(e(v)dP(v))2e(v)=A^(v,u)x(u)dP(u)

    其中向量的平方 ()2 为向量逐元素的平方。

    证明见原始论文。

    可以看到,g 的方差由两部分组成:

    • 第一部分 r 几乎没有改善的余地,因为 v 变量空间的采样并未在第 l 层完成,第 l 层执行的是对 u 变量空间的采样。
    • 第二部分(双重积分)取决于 u 变量空间的节点采样方式。

    当前结果是使用概率测度 Puj 进行采样得到。我们可以执行 importance sampling 重要性采样,从而改变采样分布来减少 g 的方差。

    具体而言,我们使用新的概率测度 Q(u) 来对 uj 进行采样。因此我们定义样本均值新的近似。定义:

    yQ(v)=1tj=1tA^(v,uj)x(uj)(dP(u)dQ(u)|uj),u1,,utQ

    以及新的均值:

    gQ=1si=1syQ(vi)

    当然,无论新的测度 Q 如何,E[gQ]=E[g] 。因为:

    E[gQ]=E[1si=1syQ(vi)]=E[yQ(v)v]=A^(v,u)x(u)dP(u)=E[g]
  4. 定理:如果:

    dQ(u)=b(u)|x(u)|dP(u)b(u)|x(u)|dP(u)

    其中 b(u)=[A^(v,u)2dP(v)]1/2,则 gQ 的方差为:

    var[gQ]=r+1st[b(u)|x(u)|dP(u)]2

    则该方差为所有可选分布 Q 中最小的方差。

    其中 || 表示向量的长度。

    证明见原始论文。

    b(u) 的物理意义为:基于邻接向量 A^ 的、节点 u 的邻接向量的 L2 范数。

  5. 考虑 dQ(u)=b(u)|x(u)|dP(u)b(u)|x(u)|dP(u) ,这种方式定义的采样分布 Q 存在一个缺点:它涉及 |x(u)| ,而 x(u) 在训练期间不断变化,因为权重矩阵 W(l) 在训练期间不断更新。另外它还涉及到 embedding 矩阵 H(l)W(l) 的矩阵乘法,计算代价太高。

    作为折衷方案,我们考虑 Q 的另一种选择,它仅涉及 b(u) 。对于新的 Qvar(gQ) 可能会也可能不会小于 var(g) ,但是实践中我们发现它几乎总是有益的。

    推论:如果 dQ(u)=b(u)2dP(u)b(u)2dP(u) ,则 gQ 的方差为:

    var(gQ)=r+1stb(u)2dP(u)x(u)2dP(u)

    证明见原始论文。

    dQ(u) 的物理意义为:给定邻接向量 A^ ,节点 u 的邻接向量长度的平方,占所有节点邻接向量长度平方之和的比例。

  6. 使用 dQ(u)=b(u)2dP(u)b(u)2dP(u) 之后, dQ(u)/dP(u) 正比于 b(u)2=A^(v,u)2dP(v) 。这只是简单地将 A^(v,u)2v 的积分。

    实际应用过程中,我们为图中所有节点定义了概率质量函数:

    q(u)=a(u)2uVa(u)2,uV

    其中 a(u)=(A^(v1,u),,A^(vn,u)) ,为矩阵 A^u 列组成的向量,即节点 u 的邻接向量。

    然后我们根据这个概率分布来采样 t 个节点:{u1,,ut}

    即,根据邻域连接强度的平方之和为概率来采样。因此,degree 较高的节点更有可能被采样。

    q(u) 表达式中我们发现: q(u)l 不相关。因此所有层的节点采样分布都相同。

    使用 q(u) 之后,batch 损失 Lbatch 为:

    Lbatch=1tLi=1tLg(h(L)(ui(L)))

    其中:

    h(l+1)(v)=σ(1tlj=1tlA^(v,uj(l))(h(l)(uj(l)))W(l)q(uj(l))),uj(l)q,,l=0,,L1

    它和前述 h(l+1)(v)=σ(ntlj=1tlA^(v,uj(l))(h(l)(uj(l)))W(l)) 的主要区别在于:

    • 新的 h(l+1)(v) 根据 q 来采样,因此缩放比例为 1/q(uj(l))
    • 旧的 h(l+1)(v) 均匀采样,因此缩放比例为 1/n

    可以通过在每个 H(l) 上应用链式法则来直接获取相应的 batch 梯度,最终我们得到了 batch 损失以及 batch 梯度。

    为什么选择这样的 Q(u)q(u) ,没有理论的依据。论文是根据邻域连接强度的平方和作为采样概率,也可以选择 k 次方,k 为超参数。

  7. 基于重要性采样的 FastGCN batch 训练算法(一个 epoch ):

    • 输入:

      • G(V,E) ,以及图的邻接矩阵 A^
      • 学习率 η
    • 输出:更新后的参数 {W(l)}l=0L1

    • 算法步骤:

      对每个节点 u ,计算采样概率 q(u)a(u)2

      迭代每个 batch,迭代过程:

      • 对每一层 l ,根据概率 q(u) 随机采样 tl 个节点:u1(l),,utl(l)

        这里根据邻域连接强度的平方和作为概率,而不是均匀采样。

      • 对每一层 l ,如果节点 v 在第 l+1 层被采样到,则计算:

        h~(v)1tlj=1tlA^(v,uj(l))q(uj(l)){(h(l)(uj(l)))W(l)}
      • 参数更新:WWηLbatch

    这里虽然使用了邻接矩阵 A^ ,但是主要依赖于连接的强度 A^(v,u) ,因此整个算法是 inductive 的。

12.3 讨论

  1. inference:前述的采样方法清晰地将训练数据和测试数据分开,因此这种方法是 inductive 的,而不是 transductive 。本质是将图的节点集合转换为独立同分布的 iid 样本,以便学习算法可以使用损失函数的一致估计量的梯度来执行参数更新。

    在测试过程中,可以使用完整的 GCN 架构来计算新节点的 embedding ,也可以使用在训练过程中通过采样来近似的方法。通常,使用完整 GCNinference 更容易实现。

  2. GraphSAGE的比较:GraphSAGE 通过聚合邻域信息来生成节点 embedding。由于递归邻域扩展,它和 GCN 一样都存在内存瓶颈。为减少计算量,作者建议限制每一层的直接邻域大小。

    • GraphSAGE 中,如果在第 l 层每个节点采样了 tl 个邻居,那么扩展的邻域大小为 l=1Ltl
    • 而在 FastGCN 中,在每一层中,我们对节点进行采样,而不是对每个节点的邻居进行采样,因此涉及的节点数量为 l=1Ltl ,远小于 GraphSAGE 。实验表明,FastGCN 这种方式可以大幅度提高训练速度。

    事实上 FastGCN 训练算法(包括重要性采样的训练算法)并不完全遵循 SGD 的现有理论,因为尽管梯度的估计量是一致的,但是这个估计量是有偏的。论文证明了即使梯度估计量是有偏的,学习算法仍然是收敛的。

    FastGCN 主要聚焦于提升邻域采样方法的效率,这种做法也可以应用到 GraphSAGE 等方法。方法实现很简单,但是作者这里给了理论上的说明。

12.4 实验

  1. 数据集:

    • Cora 引文数据集:数据集包含以文档(具有稀疏 BOW 特征向量)作为节点,文档之间的引文链接作为边。共包含2708 个节点、5429 条边、7 个类别,每个节点 1433 维特征。
    • Pubmed 学术论文数据集:数据集包含以文档(具有稀疏 BOW 特征向量)作为节点,文档之间的引文链接作为边。共包含19717 个节点、44338 条边、3 个类别,每个节点 500 维特征。
    • Reddit 数据集:包含20149Reddit 上发布帖子的一个大型图数据集,节点标签为帖子所属的社区。

    我们调整了 Cora, Pubmed 的训练集、验证集、测试集划分,从而与监督学习的场景相一致。具体而言,训练集中所有标签都用于训练,而不是半监督学习使用训练集中非常少量的标签。这种方式与 GraphSage 工作中使用的Reddit 一致。

    这里没有给出平均 degree 信息,读者猜测:FastGCN 对于 degree 较小的长尾节点不利。

  2. Baseline 方法:

    • GCN《Semi-supervised classification with graph convolutional networks》提出的 GCN 方法。原始的 GCN 无法在非常大的图上(例如 Reddit),因此我们只需要在 FastGCN 中移除采样即可将其修改为 batch 版本。如,我们在每个 batch 使用所有节点,而不是在每个 batch 中在每一层随机采样一些节点。

      对于较小的图(如 CoraPubmed),我们还将batch 版本的 GCN 和原始 GCN 进行比较。

    • GraphSAGE :为比较训练时间,我们使用 GraphSAGE-GCN,它使用 GCN 作为聚合器,这也是所有聚合器中最快的版本。

      为进行准确性比较,我们还将它与 GraphSAGE-mean 进行比较。

  3. 实验配置:

    • 所有模型的学习率在 {0.01, 0.001, 0.0001} 中选择。

    • 所有模型都采用两层网络(包括 FastGCN, GCN, GraphSAGE)。

      • 对于 GraphSAGE,这两层的邻域采样大小分别为 S1=25, S2=10 ,隐层维度为 128
      • 对于 FastGCNReddit 数据集的隐层维度为 128,其它两个数据集的隐层维度为 16
    • 对于 batch 训练的模型(FastGCN, GCN-batch, GraphSAGE) ,Reddit, Cora 数据集的 batch size = 256Pubmed 数据集的 batch size = 1024

    • GraphSAGE, GCN 的代码是从原作者的网站上下载,使用原始论文的实现。

    • FastGCNinference 是通过完整的 GCN 网络来完成。

    • FastGCN 使用 Adam 优化器。

    • FastGCNCora, Pubmed, Reddit 三个数据集上采样的节点数量数量分别为 400, 100, 400

    • 硬件配置:42.5GHz Intel Core i716G Ram

12.4.1 超参数研究

  1. 首先我们观察不同采样规模对 FastGCN 的影响。下表左侧(Sampling 列)给出了随着采样数量增加,对应的训练时间(单位 s/epoch)、分类准确性(以 F1 衡量)的变化。该数据集为 Pubmed 数据集,batch size = 1024

    为便于说明,我们将网络两层的采样数量都设为同一个值。可以看到:随着采样数量的增加,每个 epoch 训练时间也会增加,但是准确性也会提高。

    我们观察到一个有趣的事实:在给定输入特征 H(0) 的情况下,底层的乘积 A^H(0) 不变。这意味着相对于 W(0) 的梯度链式扩展的最后一步在整个训练过程中都是恒定的。因此可以预计算这个矩阵乘积,而不是对该层采样从而获得效率提升。

    我们给出预计算的结果(右侧Precompute 列),可以看到:使用预计算后,训练时间大幅降低,但是预测准确性却相当。因此后续实验我们都使用预计算。

  2. 然后我们考察 FastGCN 中均匀采样和重要性采样的区别。三个图依次为 Cora, Pubmed, Reddit 数据集的结果。可以看到:基于重要性采样的 FastGCN 始终比基于均匀采样的 FastGCN 效果更好。

    我们这里使用的是折衷的重要性采样 dQ(u)=b(u)2dP(u)b(u)2dP(u),而不是最佳的重要性采样 dQ(u)=b(u)|x(u)|dP(u)b(u)|x(u)|dP(u) 。结果表明我们折衷的重要性采样比均匀采样更接近最佳的重要性采样。

    因此,后续实验将使用重要性采样。

12.4.2 Baseline 比较

  1. 最后我们对比了 FastGCNBaseline 方法的训练速度和分类效果。左图以对数坐标给出了每个 batch 的训练时间,单位为 s

    注意:在训练速度比较中,GraphSAGE 指的是 GraphSAGE-GCN ,它和其它聚合器(如 GraphSAGE-mean )是差不多的。GCN 指的是 GCN-batched 版本,而不是 GCN-original 版本。GCN-original 在大的图(如 Reddit ) 上内存溢出。

    可以看到:

    • GraphSAGE 在大型和稠密的图(Reddit )上训练速度比 GCN 快得多,但是在小数据集上(Cora, Pubmed) 要比 GCN 更慢。
    • FastGCN 训练速度最快,比第二名(除 Cora 之外)至少提高了一个量级,比最慢的提高了大约两个量级。
    • 除了训练速度优势之外,FastGCN 的准确性和其它两种方法相比相差无几。

  2. 上面比较了单个 batch 的训练速度。实际上总的训练时间除了受到 batch 训练速度的影响之外,还受到收敛性的影响(决定了需要训练多少个 batch)。这里我们给出总的训练时间,单位为秒。注意:收敛性受到学习率、batch sizesample size 等因素的影响。

    可以看到:尽管收敛速度使得FastGCN 拖慢了最终训练速度(整体训练速度的提升比例低于单个 batch 的提升比例),但是 FastGCN 整体训练速度仍然保持巨大优势。

    注意:即使GCN-original 的训练速度比 GCN-batched 更快,但是由于内存限制导致GCN-original 无法扩展。因此这里我们仅比较了 GCN-batched 版本。

    我们还给出了随着训练的进行,预测准确性的变化。下图从左到右依次为 Cora,Pubmed,Reddit 数据集。

  3. 在讨论期间,GraphSAGE 的作者提供了时间优化的版本,并提醒说 GraphSAGE 更适合于大图。原因是:对于小图,采样大小(它等于各层样本数量的乘积)和图的大小相差无几,因此改善的程度很小。

    此外,采样的开销可能会对训练时间有不利影响。为公平比较,GraphSAGE 的作者保留了采样策略,但是通过消除对采样节点的冗余计算,改进了原始代码的实现。

    可以看到:GraphSAGE 现在在小图 Cora 上的训练速度快得多。注意,这种实现方式不会影响大图(Reddit) ,并且我们的 FastGCN 仍然比它快一个量级。

  4. 在前面评估过程中,我们增加了 Cora,Pubmed 数据集中训练标签数量,从而与 Reddit 监督学习的训练集比例保持一致。作为参考,这里我们给出使用原始数据集拆分,从而使用更少的训练标签的结果。

    此外我们还给出FastGCNtransductive 版本,它同时使用训练节点、测试节点学习,这个过程中仅使用少量训练节点的标签信息(而不使用任何测试节点的标签信息)。

    可以看到:

    • GCN 的结果和 《Semi-supervised classification with graph convolutional networks》 报告的结果一致。由于训练标记数据稀疏,GCN 训练速度非常快。FastGCN 仅在 Pubmed 数据集上超越 GCN 的训练速度。
    • 由于训练标记数据稀疏,FastGCN 的准确性也比 GCN 更差。
    • transductive 版本的 FastGCNGCN 的准确性相差无几,比 inductiveFastGCN 更好。但是其训练时间也更长(训练节点更多)。
    • GraphSAGE 的结果有些奇怪,其F1 值非常低。我们怀疑模型严重过拟合,因为它的训练准确性为 1.0,非常完美。
    • 注意到这里的 GCN-original 要比前面报告给出的 GCN-original 更慢。这时因为我们这里使用和 《Semi-supervised classification with graph convolutional networks》 工作中相同的超参数,而前面给出的 GCN-original 使用调参之后的学习率(因为数据集拆分发生变化,所以需要调参)。

    下表中的Time 单位为 s/batch

十三、PinSage[2018]

  1. 深度学习方法在推荐系统应用中发挥着越来越重要的作用,并被用于学习图像、文本、甚至单个用户的有用的低维 embedding 。使用深度模型学到的 representation 可以用于补充甚至替代传统的推荐算法,如协同过滤。这些学到的 representation 具有很高的实用价值,因为它们可以在各种推荐任务中重复使用。例如,使用深度模型学到的 item embedding 可用于 item-item 推荐,也可用于被推荐主题的集合(如,playlists 或者 feed 内容)。

    近年来推荐领域取得了一些重大进展,尤其是随着图结构数据上的一些新的 深度方法的研发,这对于推荐 application 而言至关重要,如利用 user-item 交互的二部图、利用社交网络。

    在这些图的 deep learning 方法中,最突出的就是图卷积神经网络 GCN 相关的 deep learning 架构。GCN 背后的核心思想是:学习如何利用神经网络从图的 local graph neighborhood局部邻域 iteratively 迭代地聚合节点的特征信息。一次 “卷积” 运算就可以转换和聚合节点直接邻域(直接相连的邻居)中的特征信息。并且,通过堆叠这种卷积操作,信息可以向图的更远处进行传播。和单纯的 content-based 深度模型(如 RNN)不同,GCN 会同时利用内容信息以及图结构信息。

    虽然基于 GCN 的方法为无数推荐系统的 benchmark 设置了新的基准,但是 benchmark 上的这些任务的增益并未转换为实际生产任务的增益。主要挑战是 GCN 难以扩展到十亿节点、百亿边的大型图。

    GCNscale 非常困难,因为在大型图中违背了 GCN 设计过程中的诸多核心假设:

    • 首先,所有现有的基于 GCN 的推荐系统都需要在训练过程中对完整的图拉普拉斯矩阵进行操作,当底层的图具有数十亿节点时,计算和空间复杂度太高。
    • 其次,当图结构不断演变时,图的拉普拉斯矩阵发生变化,依赖于图拉普拉斯矩阵的 GCN 模型无法应用。

    为解决这些问题,论文 《Graph Convolutional Neural Networks for Web-Scale Recommender Systems》 提出了一个叫做 PinSagehighly-scalableGCN 框架,该框架是在 Pinterest 的生产环境中开发和部署的。PinSage 框架是基于随机游走的 GCN,应用在 30 亿节点、180 亿边的大规模图上。这种规模的图比 GCN 的典型任务大了 10000 倍。

    PinSage 利用几个关键洞察insight 来显著提高 GCN 的可扩展性:

    • 动态卷积On-the-fly convolution:传统的 GCN 算法通过将特征矩阵乘以完整的图拉普拉斯矩阵的幂来执行图卷积。相反,PinSage 算法通过对节点周围的邻域进行采样,并从该采样的邻域中动态构建计算图来执行高效的局部卷积 localized convolution

      类似于 GraphSAGE 的思想。

      这些动态构造的计算图指定了如何对特定节点执行局部卷积,从而缓解了训练期间对整个图进行操作的需求。

      注意:这里的计算图是原图的子图,而不是tensorflow 的计算图。

    • “生产者--消费者” mini-batch 构建:PinSage 设计了一种 “ 生产者--消费者” 体系结构来构建 mini-batch,从而确保模型训练期间最大限度地利用 GPU

      • 生产者:一个基于 CPU 的、超大内存的生产者高效地对节点的邻域进行采样来动态生成计算图,然后提取局部卷积需要的特征。
      • 消费者:一个基于 GPU 的消费者(tensorflow 模型)使用生产者动态生成的计算图以及节点特征,从而有效地执行随机梯度下降。
    • 高效的 MapReduce 推断:给定一个训练好的 GCN 模型,PinSage 设计了一种高效的 MapReduce pipeline ,它可以利用训练好的模型来为十亿级节点生成 embedding,并最大程度地减少重复计算。

      这意味着 item embedding 是离线计算的,而不是 online 学习的。

    除了可扩展性这方面的提升之外,作者还使用了新的训练技术以及创新算法从而提高了 PinSage 模型的效果,从而在下游推荐任务中显著提升了性能:

    • 基于随机游走的卷积:对节点的整个邻域进行卷积会产生巨大的计算图,因此PinSage求助于邻域采样。但是随机采样的结果是次优的suboptimal ,因此PinSage开发了一种基于 short random walk 采样来生成动态计算图。

      基于随机游走的卷积的另一个好处是:随机游走过程为每个邻域节点分配了一个 importance score,这个得分可以稍后应用于池化 pooling 层。

    • 重要性池化 importance pooling:图卷积的一个核心component 是对局部邻域特征信息的聚合,即池化 poolingPinSage通过随机游走来对邻域节点进行加权,从而引入基于重要性的池化。该策略使得离线效果评估指标提升 46%

      attention-based 聚合也是一种重要性池化方法。

    • curriculum trainingPinSage设计了一个 curriculum 训练方案,该方案在训练过程中向算法不断提供越来越难区分的样本。该策略使得模型性能提高 12%

    目前 PinSage 已经部署在 Pinterest 上用于各种推荐任务。Pinterest 是一个流行的内容发现和管理的 web 服务,它为用户提供大量的 pin (在线内容可视化的标签,如用户想要烹饪的食谱、用户想要购买的衣服)。用户可以和这些 pin 进行互动,如将这些 pin 保存到 board 中。每个 board 包含用户认为主题相关的一组pin,如都是食谱主题或者运动主题。总之 Pinterest 是世界上最大的用户精选 user-curated 的图,包含超过 20 亿去重的 pin、以及 10 亿个 board

    通过离线指标评估、用户调研评估、以及在线 A/B test,论文证明了 相比其它 scalablecontent-based 深度学习推荐算法,PinSageitem 推荐任务中和 homefeed 推荐任务中取得了 state-of-the-art 性能:

    • 在离线的 ranking 指标中,PinSage 比表现最好的 baseline 提高了 40% 以上。
    • head-to-head 的人工评估中,PinSage 的推荐在大约 60% 的时间里更受欢迎。
    • A/B test 中,在各种 setting 下,用户互动提高了 30%100%

    据作者所知,这时迄今为止 deep graph embedding 最大的应用,这为基于图卷积神经网络的新一代 web-scale 推荐系统指明了方向。

    这是一篇典型的工业界的论文,这类论文的一个重要问题是:效果没办法复现。一方面,其它研究者无法获完整的数据;另一方面,算法的训练和部署要求工业级的基础设施;第三,算法和业务强烈耦合。

  2. 相关工作:我们的工作建立在图结构数据深度学习方法的一些最新进展之上。

    • 《A new model for learning in graph domains》 首先概述了用于图数据的神经网络的概念,而 《The graph neural network model》 做了进一步的阐述。然而,这些在图上进行深度学习的初始方法需要运行昂贵的 message-passing 算法来收敛,并且在大型图上过于昂贵。

      《Gated graph sequenceneural networks》 提出的 Gated Graph Sequence Neural Network: GGSNN 解决了一些局限性,它采用了现代循环神经架构,但是计算成本仍然很高,并且主要用于小于 1 万个节点的图。

    • 最近,人们提出了很多的、依赖于 GCN 概念的方法。这些方法起源于 《Spectral networks and locally connected networks on graphs》,该论文提出了一个基于谱图理论spectral graph thery 的图卷积版本。遵从这项工作,许多作者提出了对谱卷积的改进、扩展、以及近似,从而在节点分类、链接预测、以及推荐系统任务等 benchmark 上产生了新的 state-of-the-art 结果。这些方法一直优于基于矩阵分解或基于随机游走的技术(如,node2vecDeepWalk)。并且,由于这些方法的成功,因此吸引了人们对将 GCN-based 方法应用到从推荐系统到药物设计的应用的兴趣。《Representation Learning on Graphs: Methods and Applications》《Geometric deep learning: Going beyond euclidean data》 对最近的进展进行了全面的综述。

    • 然而,尽管 GCN 算法取得了成功,但是以前没有任何工作能够将它们应用到具有数十亿节点和边的大型图数据。一个局限性是,传统的 GCN 方法需要在训练期间对整个图拉普拉斯算子进行操作。这里,我们填补了这一空白,并表明 GCN 可以扩展从而在涉及数十亿节点的 production-scale 的推荐系统 setting 中运行。我们的工作还展示了 GCN 在现实环境中对推荐性能的重大影响。

    • 在算法设计方面,我们的工作和 GraphSAGE 以及 FastGCN 密切相关。GraphSAGEGCNinductive 变体,从而避免在整个图拉普拉斯矩阵上进行操作。我们通过使用高效的随机游走来采样节点的邻域子图,从而消除了将整个图存储到 GPU 内存中的限制,从而从根本上改进了 GraphSAGE 。我们还引入了许多新的训练技术来提高性能,并引入 MapReduce pipelie 来扩展到数十亿节点的inference

    • 最后,经典的 graph embedding 方法(如 node2vec, DeepWalk)无法应用到此处。

      • 首先这些方法是无监督方法,而 Pinterest 包含大量的监督信息(用户保存了哪些 pin 是监督信息)
      • 其次,这些方法无法使用节点特征信息,如 pin 的视觉特征、文本特征。
      • 最后,这些方法直接学习节点的 embedding,因此模型参数规模和图的规模呈线性关系,这对于 Pinterest 是过于昂贵的。

      还有,这些方法是 transductive 的,因此无法应用到unseenitem

13.1 模型

  1. Pinterestgraph 包含 20 亿个去重的 pin10亿个 board,以及 180 亿条边。每条边包含一个 pin 节点、一个 board 节点。我们的任务是生成可用于推荐的高质量 embedding

    我们将 Pinterest 建模为一个二部图 G=(V,E),定义pin 集合为 I ,定义 board 集合为 C 。其中 V=ICe=(i,j)E,iI,jC

    每个pin iI 关联了实值特征向量 xiRd ,这些特征可以包括 pin 的元数据(如 degree )或者内容信息(如视觉特征或文本特征)。这里我们将 pin 与富文本和图像特征相关联。

    我们的目标是利用这些输入属性以及二部图的结构来生成高质量的 embedding。这些 embedding 然后通过最近邻查找用于推荐候选 item 的生成(召回阶段),或者作为机器学习系统中的特征来对候选 item 进行排名(排序阶段)。

13.1.1 模型架构

  1. 我们使用局部卷积模块为节点生成 embedding。我们从输入节点特征开始,然后学习神经网络,该神经网络在图上转换和聚合特征从而计算 node embedding
a. 前向传播算法
  1. 我们考虑为节点 i 生成 embedding hi ,这取决于节点 i 的输入特征以及节点的邻域结构。

  2. PinSage 的关键是局部图卷积 localized graph convolution

    为了生成 node embedding,我们应用了多个卷积模块(即,局部图卷积模块),这些模块从节点的局部图邻域来聚合特征信息(如,视觉特征、文本特征)。每个模块都学习如何从一个小的图邻域来聚合信息,并且通过堆叠多个这样的模块,我们的方法可以获得有关局部网络拓扑的信息。

    更重要的是,这些局部图卷积的参数在所有节点之间共享,使得我们方法的参数复杂度和输入图的规模无关。

  3. 局部图卷积操作 localized convolution operation 的基本思想是:

    • 通过全连接层对 i 的邻居节点的representation hv 进行变换, vN(i)N(i) 为节点 i 的邻域。
    • 然后对变换的结果应用池化函数 γ ,如均值池化,从而得到节点 i 的局部邻域 N(i)vector representation ni
    • 最后将节点 i 的局部邻域的representation ni 和节点的当前representation hi 拼接,并利用另一个全连接层对它进行转换。根据经验,当使用拼接操作(而非均值操作)时,我们观察到 PinSage 效果的显著提升。

    此外,可以通过对结果进行归一化从而使得训练过程更为稳定,并且归一化的 embedding 执行近似的最近邻搜索 approximate nearest neighbor search 更为有效 。

  4. PinSage 局部图卷积算法convolve

    • 输入:

      • 节点 i 的当前 embedding hi
      • 节点 i 的邻域节点的 embedding 集合 {hvvN(i)}
      • 节点 i 的邻域节点的加权系数组成的向量 α
      • 池化函数 γ()
    • 输出:节点 i 卷积后的、新的 embedding hinew

    • 算法步骤:

      • 计算局部邻域 N(i) 的表示:

        ni=γ({relu(Qhv+q)vN(i)},α)
      • 计算节点 i 的新的 embedding

        hinew=relu(W@concat(hi,nu)+w)

        其中 @ 表示常规矩阵乘法。

      • 执行归一化:

        hinew=hinewhinew2
      • 返回节点 i 卷积后的、新的 embedding hinew

b. Importance-based 邻域
  1. 我们方法的一项重要创新是如何定义节点 i 的邻域 N(i) 。过往的 GCN 方法仅检查 k 阶邻域,而 PinSage 定义了基于重要性的邻域:节点 i 的邻域 N(i) 定义为对节点 i 产生最大影响的 T 个节点。

    具体而言,我们模拟从节点 i 开始的随机游走,并计算由随机游走访问的节点的 L1 归一化的访问次数。归一化访问次数最高的 T 个节点就是节点 i 的邻域 N(i)

    这种基于重要性的邻域具有两个优点:

    • 首先,选择固定数量的邻域节点进行聚合,使得我们在训练过程中可以控制内存消耗。

    • 其次,它允许局部卷积算法在聚合邻域向量时考虑不同邻居节点的重要性。

      具体而言,我们将 γ 实现为邻居向量的加权均值,其中权重系数 α 根据 L1 归一化的访问次数来定义。我们将该方法称作重要性池化 importance pooling

c. 堆叠卷积
  1. 每次我们应用局部图卷积操作时,我们都会得到节点的一个新的 representation 。我们可以堆叠多层局部图卷积,从而得到节点 i 周围的图局部结构更多信息。其中第 l 层卷积的输入取决于第 l1 层卷积的输出。初始representation 就是节点的输入特征向量。

    注意:前述局部卷积算法中的模型参数 {Q,q,W,w} 在不同节点之间共享,但是在不同层之间有所不同,因此记作 {Q(l),q(l),W(l),w(l)}

  2. PinSage mini-batch 前向传播算法:

    • 输入:

      • mini-batch 节点集合 BV
      • 卷积堆叠层数 L
      • 邻域函数 N()
    • 输出:节点的 embedding zi,iB

    • 算法步骤:

      采样 mini-batch 节点的邻域:

      • 初始化: S(L)B

      • 迭代:l=L,,1

        • S(l1)S(l)
        • 合并 S(l) 中每个节点的采样邻域:S(l1)S(l1)N(i)

      生成节点 embedding

      • 初始化第零层的 representationhi(0)xi,iS(0)

      • 迭代:l=1,2,,L

        S(k) 中的每个节点 i 执行:

        • 获取节点 i 的邻域representation集合:H={hv(l1),vN(i)}
        • 计算卷积输出:hi(l)convolve(l)(hi(l1),H)

      通过全连接层计算最终 embedding:对每个节点 iB ,计算:

      ziG2relu(G1hi(L)+b1)
  3. PinSage mini-batch 前向传播算法中,算法首先计算每个节点的各层邻域,然后应用 L 个卷积层来生成目标节点的 Lrepresentation。最后将最终卷积层的输出馈入到全连接层,从而得到 final embedding zi,iB

    • 模型需要学习的参数是每层卷积层的权重和偏置 {Q(l),q(l),W(l),w(l),l{1,,L}} ,以及最后全连接层的参数 G1,G2,b1
    • 局部邻域 N(i)embedding niRm ,而所有卷积层输出 hi(l) 的维度为 d (除了 hi(0) ,因为它是模型的输入特征向量)。最终模型输出 ziembedding 维度也是 d
  4. PinSage 整体结构如下图所示:

    • 左图:一个小尺寸输入图的示例。

    • 右图:一个两层卷积层的 PinSage 用于计算节点 Aembedding

    • 底图:一个两层卷积层的 PinSage 用于计算所有节点的 embedding

      尽管每个节点的计算图都不同,但是它们都共享相同的网络参数(即 convolve(1),convolve(2) 函数参数)。

      其中,具有阴影图案的阴影框共享相同的参数;γ 表示重要性池化函数;细的矩形框(没有阴影图案)表示全连接层。

13.1.2 模型训练

  1. 我们首先详细描述我们的 margin-based 损失函数。然后我们概述了我们开发的几种技术,这些技术可以提高 PinSage 的计算效率和收敛速度,使得我们能够在十亿级节点的图以及数十亿个训练样本上进行训练。最后,我们描述了我们的课程学习方案curriculum-training scheme,该方案提高了整体的推荐质量。

  2. 损失函数:我们使用 max-margin ranking 损失函数来以监督学习的方式来训练 PinSage。我们根据用户历史行为数据来构造样本。每个样本都由一组 pin pairsq,i=(q,i) 组成,其中 qquery pin

    • 如果 qi 确实相关,则 label1,表示正样本。 i 称作 postive pin
    • 如果 qi 不相关,则 label0,表示负样本。 i 称作 negative pin

    如果用户对 pin q 互动之后立即和 pin i 互动,则我们认为 sq,i=(q,i) 是正样本,对于其它的所有 jI 我们认为 sq.j=(q,j) 为负样本。考虑到每个 q 的负样本数量太多,这里我们对负样本进行采样。

    max-margin ranking 损失函数的基本思想是:希望最大化正样本的 embedding 内积、并且确保负样本embedding 的内积比正样本 embedding 内积少一个预定义的 margin。因此,给定一个正样本的 pin pair(zq,zi) ,其损失函数为:

    J(zq,zi)=EnkPn(q)max{0,zqznkzqzi+Δ}

    其中:

    • Δ 为预定义的 margin,它是一个正的超参数。
    • Pn(q) 为针对 query pin q 的负样本分布,关于该分布后文详述。

    注意:在目标函数中我们仅考虑 pin 节点(因为 label 是定义在 pin 节点上的),不考虑 board 节点。但是在PinSage 的模型中,我们考虑所有类型的节点(包括 pinboard)。

  3. 大型 mini-batch 的多 GPU 训练:为了在单台机器上充分利用多 GPU 进行训练,我们以 multi-tower 的方式(multi-towertensorflow 利用多 GPU 训练的一种模式,默认情况下 tensorflow 使用单个 GPU 训练)进行前向传播和反向传播。

    对于多 GPU,我们首先将每个 mini-batch 划分为相等大小的部分,然后每个 GPU 使用 mini-batch 的一部分进行计算(即数据并行)。每个 GPU 使用相同的一组参数进行数据并行。在反向传播阶段,所有 GPU 上各个参数的梯度会汇聚在一起,并在每个迭代步执行同步 SGD 。由于需要训练数十亿样本,因此我们采用了较大的 batch size,从 5124096

    为处理较大的 batch size,我们使用类似于 《Accurate, Large Minibatch SGD: Training ImageNet in 1Hour》 等人提出的 gradual warmup procedure 技术,从而确保在保持准确性的条件下实现快速收敛:学习率从一个较小的值逐渐线性增加到峰值,然后指数下降。

    为什么要 warm up?因为刚开始训练时模型的权重是随机初始化的,此时如果选择一个较大的学习率可能带来模型的不稳定(震荡)。选择 warm up 预热学习率的方式,可以使得开始训练的前几个 epoch 或者 step 内的学习率较小,模型因此可以慢慢趋于稳定。等模型稳定之后再使用预先设置的学习率进行训练,使得模型收敛速度更快,模型效果更佳。

    上述这种 warm upconstant warm up,不足之处在于:从一个很小的学习率突然变为较大的学习率可能会导致训练误差突然增加。于是 18Facebook 提出了 gradual warmup 来解决这个问题,即学习率从一个较小的值逐渐增加到峰值,然后指数下降。

  4. “生产者 -- 消费者” mini-batch 构建:在训练期间,数十亿个节点的邻接表以及特征矩阵的规模太大,因此只能被放在 CPU 内存中。但是在 PinSage 卷积过程中,每个 GPU 进程都需要访问节点邻域,以及邻域中节点的特征信息。

    GPU 访问 CPU 内存中的数据的效率不高,为解决该问题我们使用 re-indexing 技术来重建一个子图 G=(V,E) ,该子图仅涉及当前的 mini-batch 节点(及其邻域节点)。另外我们还提取了当前 mini-batch 计算相关节点的特征,重建了一个较小的特征矩阵,矩阵的顺序和 G 中节点索引一致。

    G 的邻接表和重建的小的特征矩阵在每次 mini-batch 迭代开始的时候都被馈送到 GPU 中,因此在卷积过程中不再需要 GPUCPU 之间进行通信,从而大幅提升了 GPU 的利用率。

    训练过程交替使用 CPUGPU:模型运算在 GPU 中进行;特征提取、reindexing、负采样可以在 CPU 中进行。另外我们通过 tensorflowmulti-tower 模式来并行化 GPU 计算,通过 OpenMP 来并行化 CPU 计算。

    最后我们还设计了一个 “生产者 -- 消费者” 模式:当 GPU 在计算当前迭代的运算时,CPU 同时在计算下一轮迭代需要的特征提取、reindexing、负采样等等。该策略使得PinSage 训练时间进一步降低近一半。

  5. 负样本采样:为提高较大 batch size 的训练效率,对于 mini-batch 中的每个正样本 sq,i 我们并未独立采样负样本,而是采样了一组 500 个负样本从而在所有正样本之间共享负样本。

    和每个节点独立地负采样相比,这种共享负样本的方式可以大大节省每个训练 step 需要计算的 embedding 数量。从经验上讲,我们并未观察到这两种方式之间的性能差异。

    最简单的负采样方式是均匀采样,但是这种方式采样的负样本过于简单,无法为模型提供足够区分度的负样本。考虑到我们有 20 亿个去重的 pin,我们的推荐算法需要在 20 亿个 pin 中推荐 1000 个和 query pin q 最相关的 pin ,即在 200 万个 pin 中识别出 1pin,即模型分辨率为 1/200万。但是,如果是 500 个随机负样本(以及一个正样本),则模型的分辨率 resolution 仅为 1/501。因此,如果我们从 20 亿个 pin 中随机抽取 500 个负样本,则这些负样本与 mini-batch 中任何一个 query pin 相关的可能性都非常小。即:这些负样本都过于简单,没有足够的区分度。

    为解决上述问题,对于每个正样本 sq,i ,我们添加一些 hard 负样本,如和 query pin q 相关、但是和 postive pin i 不相关的 pin 集合,我们称之为 hard negative pin 。这些 hard negative pin 是根据针对 query pin qPersonalized PageRank 得分进行排序,然后挑选排序在 2000 - 5000pin 被随机采样为 hard negative pin 的。

    Personalized PageRank 用于计算所有节点相对于 q 的相关性。从节点 q 对应的节点开始随机游走,每到一个节点都以 1ϵ 的概率停止游走并从 q 重新开始,或者以 ϵ 的概率继续游走。从当前节点游走到下一个节点按照 out degree 均匀分布。这样经过多轮游走之后,每个节点被访问的概率趋于稳定。

    Personalized PageRank 和常规 PageRank 区别在于:前者在重新游走(即,重启)时总是从节点 q 开始,后者是随机选择一个节点开始。另外在初始化节点权重时,前者将节点 q 权重初始为 1、其它节点初始化化为 0 ,后者均匀初始化。

    如下图所示,相比随机负样本,hard negative pinquery pin 更相似,因此对模型的 ranking 能力提出了挑战,从而迫使模型学会更精细化地区分不同的 pin

    hard 负样本没有选择最相关的(排序在 top 2000pin)。

  6. 课程学习方案:一旦使用 hard negative pin,则训练收敛需要的 epoch 会翻倍。为加快训练的收敛速度,我们制定了课程学习方案:

    • 在训练的第一个 epoch,我们不使用任何 hard negative pin,因此算法可以快速找到参数空间中损失函数相对较小的区域。

    • 在随后的训练 epoch 中,我们逐渐添加更多的 hard negative pin,迫使模型学习如何区分高度相关的 postive pin 和稍微相关的 negtive pin

      在训练的第 nepoch ,我们对每个 query pin q 添加 n1hard negative pin

    学习过程由易到难。

13.1.3 MapReduce Pipeline

  1. 利用训练好的模型为所有 pin (包括训练期间未见过的 pin )生成 embedding 仍然是一项挑战。直接应用 PinSage mini-batch 前向传播算法 会导致大量的重复计算,因为 mini batch 中的各个节点的邻域会相互重叠。当为不同目标节点生成 embedding 时,会在很多层重复计算很多节点,如下图所示。

    为了进行高效的 inference,我们开发了一种 MapReduce 方法,该方法无需重复计算即可执行 model inference

  2. node embeddinginference 非常适合 MapReduce 计算模型,下图给出了 pin-board 二部图上 embedding inference 的数据流。

    第零层为输入层,这一层的节点为 pin 节点;第一层节点为 board 节点。MapReduce pipeline 包含两个关键部分:

    • 一个 MapReduce 作业将所有 pin 投影到低维embedding 空间。
    • 另一个 MapReduce 作业通过将 board 内的 pinembedding 进行池化,得到 boardembedding

    我们的方法避免了冗余计算,并且每个节点的潜在 embedding 仅计算一次。

    在获得了 board embedding 之后,我们采用上述类似的方式,使用另外两个 MapReduce 作业来计算 pin 的第二层 embedding,并持续迭代最多 L 次(因为有 L 层卷积层)。

13.1.4 高效的最近邻检索

  1. PinSage 生成的 embedding 可用于下游推荐任务。在许多场景中我们可以通过在学到的 embedding 空间中执行最近邻检索来提供推荐。即:给定 query pin q ,我们可以在 embedding 空间中检索 q 最近邻的 Kpin 作为推荐列表。
  2. 可以通过 locality sensitive hashing:lsh 来高效地获得近似的 kNNApproximate KNN) 。如果 PinSage 模型是离线训练好的,并且所有 node embedding 都是通过 MapReduce pipeline 计算并保存到数据库中,则 approximate KNN 可以使得系统在线提供推荐服务。

13.2 实验

  1. 为证明 PinSage 的效率和效果,我们对整个 Pinterest Graph 进行了全面的实验,包括离线实验、在线 A/B test 、用户调研user study

    我们评估了两个任务:

    • 相关 pin 的推荐 related-pin recommendation :选择query pin 最近邻的 K 个邻居。

      我们使用离线 ranking 指标,以及用户调研来评估推荐的效果。

    • 首页 feeds 流的推荐:选择用最近互动的 pin 的最近邻的 K 个邻居。

      我们使用在线 A/B test 来评估 PinSage 部署在生产系统上的效果。

  2. 数据集:我们通过Pinterest 用户历史行为数据来构建训练数据集。如果用户与 pin q 互动后,又立即和 pin i 互动,则我们认为 pin pairsq,i=(q,i) 为正样本;对于其它的所有 jI 我们认为 sq.j=(q,j) 为负样本。如前面 “模型训练” 部分所述,这里我们对负样本进行采样。

    总而言之,我们构建了 12 亿个正样本。此外,我们为每个 mini-batch 负采样了 500 个共享的负样本,以及每个 query pin 进行 hard 负采样了 6hard negative pin 。最终我们一共得到了 75 亿个训练样本。

    考虑到 PinSageinductive learning,因此我们仅在 Pinterest 的一个子图上进行训练,然后使用 MapReduce pipeline 为整个图生成 embedding

    我们从整个 PinSage 图中随机采样一个子图作为训练集,它包含 20%board 节点(以及这些 board 包含的所有 pin 节点),并且包含子图中 70% 的正样本。我们将子图中剩余的 10% 正样本作为验证集进行超参数调优;并将子图中剩余的 20% 正样本作为测试集,用于推荐效果的离线评估。

    注意:在测试期间我们对整个 PinSage 图进行 inference 从而计算所有 20 亿个 pinembedding 。而验证期间,我们只考虑训练集中出现的节点。

    使用整个图的子集来训练可以大大降低训练时间,而对最终的效果影响几乎可以忽略不计。总体而言,用于训练和验证的数据集大小约为 18TB,而完整的输出 embedding4TB

  3. 节点特征:Pinterest 的每个 pin 都和一副图片以及一组文本(标题、描述)相关联。对于每个 pin q ,我们将视觉 embedding4096 维)、文本 embedding256 维)、pinlog degree 拼接起来作为 q 的特征。

    • 视觉 embedding :使用 VGG-16 架构的的图像分类网络的第 6 层全连接层的输出。
    • 文本 embedding:使用 word2vec-based 模型训练的文本 embedding,其中上下文为每个 pin 关联的其它文本(如标题、描述性文字)。

    视觉 embedding 和文本 embedding 由已在 Pinterest 上部署的 state-of-the-art deep learning content-based 系统生成。

  4. baseline 方法:包括 content-based 方法、graph-based 方法以及 deep learning based 方法。

    • content-based 方法:

      • Visual :基于视觉 embedding 最近邻检索的推荐。
      • Annotation:基于文本 embedding 最近邻检索的推荐。
      • Combined:拼接视觉 embedding 和文本 embedding,然后使用两层的全连接层来得到一个同时捕获了视觉特征和文本特征的 embedding。最后基于这个新的 embedding 最近邻检索的推荐。
    • graph based 方法:

      • Pixie:使用有偏的随机游走,通过模拟从 query pin q 开始的随机游走来生成 ranking score。然后将排名最高的 Kpin 作为推荐列表。

        尽管这种方法不会产生 pin embedding,但是对某些推荐任务来讲它是 Pinterest 上的 state-of-the-art 技术,因此是一种很好的 baseline

    • deep learning based 方法:因为Pinterest 规模太大,因此我们并未与任何 deep learning based 方法进行比较。

    我们也未考虑其它生成 pin embedding 的非深度学习方法,因为其它工作已经证明了在推荐任务中生成 embedding 的深度学习方法是 state-of-the-art 的。

    最后我们评估了 PinSage 的几种变体从而进行消融研究:

    • max-pooling:使用最大池化 γ=max ,并且不使用 hard negative pin
    • mean-pooling:使用均值池化 γ=mean ,并且不使用 hard negative pin
    • mean-pooling-xent:使用均值池化 γ=mean ,并且不使用 hard negative pin ,且使用交叉熵损失函数。
    • mean-pooling-hard:使用均值池化 γ=mean ,并且使用 hard negative pin
    • PinSage:使用本文中介绍的所有优化,包括在卷积过程中使用重要性池化。

    最大池化和交叉熵的 settingGraphSAGEGCN 模型的最佳扩展。其它变体在测试中效果更差,因此这里不再讨论。

    所有的 Pinsage 及其变体使用 K=2 两层卷积层,邻域 emebdding ni 的维度 m=2048 ,输出 embedding 维度 d=1024

  5. 硬件配置:PinSage 采用 tensorflow 实现,并在单台机器上训练,机器配置为 32 core16Tesla K80 GPU

    为确保快速获取 pin 的视觉特征和文本特征,我们将视觉特征、文本特征和 Graph 一起放到内存中,并使用 Linux HugePages 将虚拟内存页的大小从 4KB 增加到 2MB。训练过程中使用的内存总量为 500GB

    inference 阶段的 MapReduce pipeline 运行在 Amazon AWS hadoop2 集群上,集群配置为 378d2.8 x large 节点。

13.2.1 离线评估

  1. 评估指标:

    • Hit Rate: HR:为评估 related-pin 推荐任务,我们定义了命中率hit-rate的概念。对于测试集中的每个正样本 sq,i=(q,i) ,我们将 q 作为 query pin,然后从采样的 500万 个测试 pin 中挑选出 top K 个最近邻的 pin 集合 NNq 。如果 iNNq ,那么就认为 query pin q 的推荐命中hit 了。

      总的命中的 query pin 占所有 query pin 的比例为命中率。该指标衡量了推荐列表中包含 query pin 相关的 pin 的可能性。在我们的实验中,我们选择 K=500

    • Mean Reciprocal Rank: MRR :除了命中率之外,我们还评估了均值倒数排名MRR 指标,该指标考虑了 query pin q 的推荐列表中,pin j 的排名:

      MRR=1|D+|(q,i)D+1Rq,i/100

      其中:

      • D+ 为所有正样本集合, |D+| 为正样本数量。
      • Rq,ipostive pin iquery pin q 的推荐列表中的排名。

      由于有大量的候选 pin(约 20 亿),因此我们对排名进行缩小,缩小比例为 100 倍。这是为了确保排名在 10002000 之间的候选 pin 的差异仍然很明显。

  2. 不同模型在 related-pin 推荐任务中的效果如下表所示。可以看到:

    • PinSage 达到了最佳的 67% 命中率,以及 0.59MRR。在命中率的绝对值上超越了 baseline 40%(相对值 150%),在 MRR 的绝对值上超越了 baseline 22%(相对值 60%)。
    • 将视觉信息和文本信息组合起来,要比单独使用任何一种信息都要好得多。Combined 方法比单独的 Visual 或者 Annotation 改进了 60% (相对值)。

    这里对比的 baseline 太弱了,没有和经典推荐模型(如基于矩阵分解的模型)进行对比,也没有和深度推荐模型(如 Wide & Deep )进行对比,因此不知道 GCN-based 推荐模型和其它推荐模型之间的差异如何。

  3. embedding similarity 分布:学到的 embedding 的另一个有效性指标是 embedding 随机 pair 对的距离的分布是否广泛。如果所有 pin 的距离大致相同(即,距离上紧密聚集),则 embedding 空间没有足够的分辨率来区分不同相关性的 pin

    下图给出了使用视觉 embedding、文本 embeddingPinSage embedding 绘制的随机 pin pair 对之间距离的分布,距离采用embedding 的余弦相似度。

    可以看到:PinSage 具有最广泛的分布,这证明了 Pinsage embedding 的有效性。尤其是 PinSage embedding 随机 pin pair 距离分布的kurtosis峰度为 0.43,而文本 embedding 峰度为 2.49、视觉 embedding 峰度为 1.20

    随机变量 X 的峰度定义为:E[(Xμσ)4] ,其中 μ 为均值, σ 为标准差。它衡量了概率分布函数峰部的尖度。

    PinSage embedding 随机 pin pair 距离分布具有这种广泛分布的另一个优点是:它降低了后续 LSH 算法的冲突概率,从而提高了推荐期间检索最近邻 pin 的效率。

13.2.2 用户调研

  1. 我们还通过对不同方法学到的 embedding 进行 head-to-head 比较来研究 PinSage 的有效性。

    在用户研究中,我们向用户展示 query pin 的图片,以及通过两种不同推荐算法检索到的两个 pin。然后要求用户选择两个候选的 pin 中哪个和 query pin 更相关。用户可以考虑各种的相关性,如视觉外观、图像的类别(比如动物、植物等等)、各自的标识等等。如果两个候选的 pin 看起来都相关,则用户可以选择 equal 。在同一个 query pin 问题上,如果有 2/3 的用户没有达成共识,则我们认为结果是不确定的。

    最终 PinSagebaseline 方法之间的 head-to-head 对比结果如下。最终 PinSage 的推荐结果平均超越了 baseline 大约 60%(相对值)。

  2. 给定一些 query pin ,我们给出了不同推荐的一些典型 case ,如下图所示。左图代表 query pin,右图代表不同方法得到的 embedding 检索的最相似的 top 3 pin 。 可以看到:

    • 基于视觉 embedding 通常可以很好地预测 pin 的类别和 pin 的视觉相似性,但是它们有时在图像语义方面会犯错。

      如下图中,由于具有相似的图像样式和外观,因此基于视觉的 embedding 混淆了 “植物” 和 “食物“、”砍伐树木“ 和 ”战争“。

    • 基于图的 Pixie 方法利用了 pin-to-board 的图关系,正确地识别了 queryplant 的类别,并推荐了该类别中的 pin。但是,该方法找不到最相关的 pin

    • 结合了视觉信息、文本信息以及图结构,PinSage 能够找到在视觉、文本以及拓扑结构都和给定 query 更相似的 pin

  3. 我们从 PinSage embedding 中随机选择 10000pin ,基于 2D t-SNE 来可视化 embedding 空间。

    我们观察到:相似内容的 pin 之间的 embedding 距离很近,并且相同类别的 item 也被嵌入到相同的区间。

    注意:视觉上不同但是主题相同的 pinembedding 空间中也彼此靠近,如图的底部给出了时尚主题的、视觉上不同的一些 pin

13.2.3 A/B Test

  1. 最后我们还报告了在线 A/B test 实验的结果。我们将 PinSage 和其它的基于内容的 deep learning 推荐系统在 Pinterest 首页信息流上的推荐效果进行比较。我们通过观察用户互动的提升来评估推荐效果。

    评估指标是 repin rate,它衡量的是首页信息流中,被用户保存到 board 中的pin 的占比。每个保存行为代表一次用户的互动。这意味着当前时间给用户推荐的 pin 是用户感兴趣的,因此用户将这个 pin 保存到他们的 board 中,从而方便用户以后查阅。

    我们发现 PinSage 推荐始终比其它方法具有更高的 repin rate。在特定的配置下,我们发现 PinSage 相比文本 embedding 和视觉 embedding10% ~30%repin rate 的提升。

13.2.4 速度

  1. PinSage 的一个优势是它是 inductive 的,因此在 inference 阶段我们可以为训练过程中未见过的 pin 计算 embedding。这使得我们可以在子图上进行训练,然后为剩下的节点计算 embedding

    另外,随着时间推移不断有新节点加入到图中,为这些新节点生成 embedding 也很简单。

    通过验证集的实验表明,对包含 3 亿个 pin 的子图上进行训练,即可在命中率上取得最佳性能。进一步增加子图的大小似乎对测试结果影响不大。

    和训练整个 Pinterest 相比,训练这个 3 亿pin 的子图可以将训练时间减少 6 倍。

  2. 下面我们考察 batch size 对训练过程的影响。我们使用 mean-pooling-hard 变体,结果如下:

    • batch size 越大,则每个 mini-batch 的计算时间越高,模型收敛需要的迭代数量越少。
    • 不同 batch size 训练时间不同, batch size = 2048 时训练效率最高,训练时间最少。

  3. 在使用重要性池化时,邻域大小 T 也会影响 PinSage 的训练时间和训练效果。我们发现随着 T 的增加,训练时间大幅增加、训练效果小幅增长。最终我们发现 T=50 可以很好的在效率和效果之间平衡。

  4. 训练完成后,由于高效的 MapReduce inference pipeline,为 30 亿个 pin 生成 embedding 可以在不到 24 个小时内完成。