[ICLR2023]MLP的权重可以直接转移到GNN!

294 阅读4分钟

在这篇文章中,我们很高兴地介绍MLPInit,这是一种创新的初始化技术,旨在显著加快图形神经网络(GNN)的训练。

我们发现,多层感知器(MLP)和图式神经网络(GNN)的可训练权重是可以共享的。因此,我们想知道是否有可能将MLP的训练权重直接应用到GNN中。由于MLP的训练速度非常快,如果可以直接转移权重,将大大加快GNN的训练过程。

当我们把训练好的MLP权重直接应用于GNN进行推理时,我们发现结果是相当惊人的。结果如下:

PeerMLP和GCN与PeerMLP的权重的比较。

基于这一耐人寻味的观察,我们提出了一种加速GNN训练的简单方法,称为MLPInit。顾名思义,MLPInit用来自MLP的训练有素的权重初始化GNN。这种方法允许GNN快速有效地收敛,如下图的结果所示:

采用随机初始化和MLPInit的GNN的训练速度比较。

MLPInit:Embarrassingly Simple GNN Training Acceleration with MLP Initialization, ICLR2023
Pdf:arxiv.org/abs/2210.00…
Code:https://github.com/snap-research/MLPInit-for-GNNs
Slides:ahxt.github.io/files/mlpin…

为了方便研究人员进一步尝试和研究我们发现的现象,我们在开源代码库中提供了几个独立的Jupyter笔记本,展示了MLP和GNN权重转移的比较以及MLPInit在OGB-产品数据集上的结果。欢迎大家试用并提供反馈意见

1.初步实验

从第一个表格中,我们观察到,优化GNN中的PeerMLP的权重会减少GNN的训练损失。为了证实这一点,我们进行了一个实验,训练PeerMLP的权重,并使用它们来计算两个模型的损失,这两个模型共享权重。结果支持我们的观察。下图的左图显示了损失曲线:蓝色(MLP)和红色(GNN)线随着PeerMLP权重的优化而下降,即使没有聚合邻居。GNN的损失持续下降,表明优化PeerMLP权重降低了GNN的训练损失。

在PeerMLP的训练过程中,GNN和MLP的关系。

从上述实验中,我们观察到以下情况:

  1. 优化GNN的PeerMLP权重可以减少GNN的训练损失。
  2. PeerMLP权重提供了良好的GNN初始化。

2.我们提出的方法:MLPInit

MLPInit的基本思路很简单:我们采用已收敛的PeerMLP的权重来初始化GNN,随后对GNN进行微调,包括以下步骤:

  1. 构建其PeerMLP
  2. 训练PeerMLP以收敛→W
  3. 用W初始化GNN
  4. 微调GNN

PyTorch风格的伪代码如下:

3.实验结果

3.1 MLPInit能在多大程度上加速GNN训练?

我们比较了使用随机初始化和MLPInit的GNN的训练速度。具体来说,MLPInit将GNN的训练速度平均提高了2-5倍,在某些情况下高达30倍。为了比较训练速度,我们追踪了随机初始化的GNN达到最佳测试性能所需的历时。然后,我们跟踪了使用MLPInit的GNN达到类似的测试性能所需的历时。在不同的数据集上,MLPInit一直在减少所需的训练历时数,这表明它有能力大大加速GNN的训练。

当MLPInit达到与随机初始化GNN相当的性能时,速度得到了提高。

3.2 MLPinit在节点分类和链接预测任务上的表现如何?

我们进行了实验来证明所提出的MLPInit方法在初始化GNN模型方面的性能改进。在节点分类和链接预测任务上,与随机初始化相比,MLPInit提高了模型的性能。对于节点分类,MLPInit在GraphSAGE、GraphSAINT、ClusterGCN和GCN上平均获得了7.97%、7.00%、6.61%和14.00%的改进。对于链接预测,MLPInit在不同指标上平均获得1.05%、1.10%、17.81%、20.97%、14.88%和10.46%的改进。

节点分类任务的性能

链接预测任务的性能

3.3 Mlpinit是否会促进GNNS的更好收敛?

损失表面的几何形状反映了模型的特性,并提供了对泛化和稳健性的见解。我们将GraphSAGE随机初始化和MLPInit的损失景观可视化。损失景观是根据OGB-arXiv和OGB-products上的训练损失绘制的。为了公平比较,我们在每个数据集中使用相同的随机方向和最低损失值。MLPInit的结果是,在每个数据集的相同损失水平下,低损失区域更大。这表明MLPInit帮助GNN实现了更大的低损耗区域,表明了更好的泛化和稳健性。

用随机初始化和MLPInit训练的GNN的损失景观。

4.结论

这项工作提出了MLPInit,一种加速GNN训练的初始化方法。MLPInit使用收敛的PeerMLP初始化GNN权重,然后微调GNN。实验表明,MLPInit加快了训练速度达33倍,提高了性能达7.97%,并产生了更强大的GNNs。MLPInit很容易实现,可以加速应用中的GNN训练。