图神经网络(三)可微池化

前言

在前面几章,我们介绍了图神经网络,最终我们可以得到图上每个节点的向量,当我们需要求到一个关于整个图的向量时,一般有两种做法,一个是基于统计的,另一个是基于学习的。

基于统计

基于统计的方法就是将所有节点进行一个求和池化,平均池化或最大池化等等,将所有节点的向量聚合成一个向量作为整个图的代表向量。这种做法会丢失掉很多信息,所以容易造成较大的性能损失。为了减小这种损失,人们提出了直方图的统计方法,直方图的统计方法是按照某种规则,将原本的全局池化变成若干局部池化,这些局部池化能够更多地保留信息,从而减小因信息丢失造成的性能损失。

基于学习

基于统计的方法没有为聚合过程添加任何参数,在解释性上也存在许多不足,所以就有了基于学习的方法。

全局节点

在图上我们可以找到一个节点作为全局的根,在特定领域我们可以设计特定的根节点。当不能找到这个根节点,我们也可以虚拟出一个根节点,然后这个根节点按照某种规则与全局各个节点产生联系,最终使用这个虚拟节点的向量作为图的全局向量。

可微池化

参考基于统计的直方图方法,可微池化并没有一次性将所有节点聚合,而是分层聚合,每一层将所有节点先聚合成规定数目的类,然后对这些类建立全新的图,下一层在这个新图上再聚合,如此循环往复直到聚合成一个点得到全图的向量表示。在可微池化的方法中,存在两个图神经网络,一个负责聚合节点向量产生下一层各个节点的向量,另一个负责产生各个节点属于各个类别的概率度量,可以用下式表示:

其中$A_l$表示第$l$层图的邻接关系,$H_l$是第$l$层各个节点的向量,$S_l$是第$l$层各个节点属于各个类的概率度量,$\hat{H}_l$是通过聚合第$l$层的节点得到各个节点的向量表示,$SC$和$NR$都是一层图神经网络,接着我们可以下式更新下一层的状态:

上面两个式子,第一个式子的意义是现在每个节点都有一些概率度量作为属于各个类的概率大小,那么就把这个节点的向量乘上相应的概率度量值作为这个类的向量的一部分,每个节点都这么做最终各个类都会得到一个向量。第二个式子则是通过各个节点属于各个类的概率乘上邻接关系再乘上各个节点属于各个类的概率得到各个类之间的联系强度,作为新图的邻接关系,在新图中每个类作为一个节点。