介绍2篇ICLR 2021的文章,其均尝试将传统机器学习方法(如AdaBoost和GBDT)与GNN结合,非常好玩~ 尽管看起来像是A+B式的创新论文,看了之后感觉还是有点东西的~
题目
首先介绍AdaGCN,是把AdaBoost加入到GCN里的一个文章,主要挖掘图上不同层的邻居节点上的信息,并且利用AdaBoost加以整合,使其能够一定程度缓解过平滑问题。
不同于直接叠加多个图卷积层,AdaGCN在所有层之间共享相同的基本神经网络结构,并进行递归优化,这点类似于RNN构造。模型整体如图所示,
和
分别表示参数和节点权重。
AdaGCN的结构
大体上,这个流程可以简化成:
等式(1)(2)两步可以看做一个基本的图网络操作,(3)则是在说将多层网络的输出用AdaBoost进行筛选。
具体而言,等式(1)的推导可以从一个最基本的GCN开始:
在多层时,忽略激活函数,合并邻接矩阵和权重矩阵后,这个模型可以化简为:
其中,
表示了
阶的邻居信息,
是
层的权重。
等式(2)表现为预测时所需要的图特征,我们通常用一个非线性函数
来得到图的表示
,
在等式(3)中,作者结合了AdaBoost,将GCN的每一层看做一个弱分类,并且采用了SAMME来更新每个节点权重。
为了保证每个弱分类的效果都会比较好,就需要
为正,进而需要
(这个是09年的AdaBoost里说过的)。
最后,反应到预测标签上的形式为:
由于加入了Adaboost,作者也给出了模型的更新方式,主要体现在第5步和第6步,由于代码暂时还未放出来,就暂时先看一下伪代码。。。
AdaGCN
实验部分主要说了两件事,一个是这个AdaGCN是能够处理由多层GCN导致的过平滑问题,另一个是这个模型速度很快。
准确率随着层数变化
值得注意的是,AdaGCN(红线)能够在三个数据集的层数增加的情况下一致地提高性能。这意味着AdaGCN在构造深图模型的过程中可以有效地融合不同阶邻域的知识,避免了原始GCN的过平滑问题。另外,在层数较大的情况下,AdaGCN的性能波动比GCN小得多。
模型时间的对比,k表示拟合线性回归中的斜率
左图作者重点比较了AdaGCN与目前GNN的运行时间,可以看出AdaGCN的效率非常高。从右图可以观察到SGC(绿线)和GCN(红线)都呈线性增长趋势,这是由于模型堆叠计算会造成运算时间上升,而AdaGCN由于每一层都用
进行计算,所以相当于这一步算是并行计算。
题目
这个是把GDBT塞到GNN里,主要看上的是怎么用图来做异构表格数据 (heterogeneous tabular data),叫做BGNN。作者利用GBDT模型建立了异构数据通用的超平面决策边界,然后利用GNN关系信息对预测进行细化。该方法可以与任意消息传递神经网络和梯度增强方法结合。
GBDT能够对表格数据有良好预测,这样就可以想办法来增强图网络的表现。因此作者就让GBDT与图网络结合,直接进行端到端学习。
BGNN模型流程
在这篇文章里的图网络是针对节点定义的:
这里的
是指第
层。
同时,GBDT是根据多个弱分类器
增强的一种模型,在第
次迭代时,式子可以被写成:
(PS:经过查证源码可以发现这里的两个
实际上并没有什么关系,在后续的表述中
更多指的是GBDT里的迭代更新。)
作者将
定义为决策树,决策树将特征空间划分为不相交的叶子,这些叶子的表现由最小化损失构成。设
为子树,赋值为
来估计对应的
。在本文中,
为平均值叶子的负梯度值。
实际上,这个模型的GNN根据loss更新和GBDT的
特征更新是在一个epoch里是分两步走的,互不影响,这个看源代码可以更清楚一些。如果先做GDBT的feature在扔进GNN,就会退化成作者说的Res-GNN。节点特征
的更新形式为:
注意由于使用了GDBT方法,所以这一块学习器本身也需要被更新为
。
实验部分主要回答了两个问题:1. GBDT和GNN的结合是否能在异质节点回归和分类问题中获得更好的定性结果?2. 端到端训练是否优于预训练GBDT与GNN的结合?
回归和分类的主体结果如下:
回归结果主表
分类结果主表
之后,来验证是否端到端的效果就会更好一些,实验可以发现从一开始端到端的方法就会非常猛:
效率提高的原因是BGNN和Res GNN收敛的迭代次数要少得多。如图所示,BGNN在前十次迭代即可收敛,从而导致快速训练。相反,Res-GNN在前100个迭代次数的收敛性方面与GNN相似,但随后它继续降低RMSE,而GNN需要更多的时期才能收敛。
附录里还有一张总表,表示了模型的RMSE指标与训练时间。大多数时候作者提出的方法都会快一些,但是总会有意外,比如Wiki数据集在AGNN上的改版。猜想这个时间可能与图网络的密集度有关,但是这个作者没有明确说明。