前言

最近读了Neural Message Passing for Quantum Chemistry(MPNN arxiv),我导和我一致认为这篇论文有点拉跨,但毕竟是Message Passing Neural Networks的首次提出,所以还是讲一下。本文旨在提供一个high level的idea,并不讨论细节。

任务

给定化学分子,对它的量子化学性质进行预测,DFT方法计算昂贵,本文提出了MPNN方法,速度很快,且误差也很小。

方法

1. 框架

作者从六大类图神经网络中抽象出了一个框架:MPNN,并且以GG-NN作为baseline(原文:We began our exploration of MPNNs around the GG-NN model which we believe to be a strong baseline.)。

该框架分为三个部分:Message passingVertex updatingReadout

M_t是一个函数/神经网络,Message passing就是说用顶点v以及它的邻居w的隐藏状态(hidden state),以及连接它们的边的信息,生成信息m_v^{t+1}

U_t是一个函数/神经网络,Vertex updating就是说用刚才生成的m_v^{t+1},和自己的隐藏状态,更新为h_v^{t+1}

R是一个函数/神经网络,Readout就是说整合所有节点T次迭代(Message passing+Vertex updating)之后的隐藏状态,做一个输出。

2. baseline

作者的思想就是以GG-NN为baseline,然后替换三大部分中的构件,取得一个好的效果。

Message passing:使用可学习的、与边vw相关的矩阵A,去乘节点w的隐藏状态。缺点是没有利用顶点v的隐藏状态。

Vertex updating:GRU是Gated Recurrent Unit,读者可以自行去了解。

Readout:熟悉GLU(Gated Linear Units)的读者会一眼看出这个结构:σ()⊙()。内部的i和j是两个不同的神经网络,i将初始状态也作为输入。但是二者的输出维度必须是一样的,因为要做对应元素相乘⊙。

3. Interaction

f是一个神经网络,它用到了顶点v的隐藏状态。

4. set2set

论文里说的是将元组(h_v^T,x_v)进行线性投影,形成T=\{(h_v^T,x_v)\},然后经过M步计算,得到一个图级的嵌入q_t^*,再将q_t^*输入到一个神经网络中得到最终的输出。

5. multiple towers

为了提高模型的运行速度以及对大图的泛化能力,作者提出了多塔(其实就是MapReduce的思想)。节点属性的维度是d,现在将属性划分为k个维度是d/k的属性,每个分布式分别迭代所有节点的d/k属性,最后再拼接起来输入到一个神经网络中进行readout。

实验

1. 数据集

作者选择了QM-9数据集,内含130462个分子,随机选择其中的10000个作为验证集,10000个作为测试集。分子的性质包括原子类型、质子数等。

2. 步骤

这里放原文的一句话:We focused on trying different message functions, output functions, finding the appropriate input representation, and properly tuning hyperparameters.其实就是炼丹。

结果

1. 超越baseline

在所有的13个性质预测中都取得了最小的误差(Target是13个预测任务,左边是之前的方法,中间是baseline,右侧是作者的方法)。

2. 类似消融实验

Virtual edge虚拟边(对没连接的节点进行连接) ,Master node主节点(与所有的节点相连),set2set就是之前提到的readout阶段的东西。可以看出set2set效果是最好的。

对比joint training(13个任务联合训练)和individual training(对每个任务分别训练),肯定是有针对性效果更好;对比有8个tower和没有,有塔的误差更小,达到了泛化能力强的目标。

结语

有问题欢迎在评论区探讨!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐