Gilmer J, Schoenholz S S, Riley P F, et al. Neural message passing for quantum chemistry[C]//International conference on machine learning. PMLR, 2017: 1263-1272.
分子的监督学习在化学、药物发现和材料科学方面具有不可思议的潜力。幸运的是,文献中已经描述了几个有前途的和密切相关的神经网络模型,这些模型不受分子对称性的影响。这些模型学习消息传递算法和聚合过程来计算整个输入图的函数。在这一点上,下一步是找到这种通用方法的一个特别有效的变体,并将其应用于化学预测基准,直到我们解决它们或达到该方法的极限。在本文中,我们将现有模型重新制定为一个我们称为消息传递神经网络(MPNNs)的单一公共框架,并在该框架内探索其他新的变体。
使用mpnn,我们在一个重要的分子性质预测基准上展示了最先进的结果;这些结果足够强大,我们相信未来的工作应该集中在更大分子或更准确的地面真值标签的数据集上。
对分子结构的图监督学习已经提出了许多图神经网络模型,本文提出了MPNN框架,将这些模型都纳入这个框架当中,并探索新的变体。
- 提出了一种MPNN,在分子预测的13个目标上实现了最先进的结果,并在其中的11个目标上达到了化学精度
- 提出了几种不同的MPNN,在单独操作分子拓扑(没有空间信息作为输入)的情况下,在13个目标中的5个目标上达到了化学精度
- 提出了一种通用方法来训练具有更大节点表示的MPNN,而不会相应增加计算时间和内存,与以前高维节点表示的MPNN相比,节省了大量时间
MPNN在无向图G上操作,节点特征为xv,边缘特征为evw,可以向有向图推广。前向传播分为两个阶段:消息传递阶段和读出阶段。消息传递阶段运行T步,由消息函数Mt和定点更新函数Ut定义。图中每个节点的隐藏状态hvt由消息mvt+1更新:
$$
\boldsymbol{m}_i^{k+1}=\sum _{v_j\in N(v_i)}M^{(k)}(\boldsymbol{h}_i^{(k)},\boldsymbol{h}j^{(k)},\boldsymbol{e}{ij})
$$
hi(k+1)=Ui(k)(hi(k),mi(k+1))
读出函数读取整个图的特征,更新特征向量:
y^=R(hvT∣v∈G)
其中消息函数Mt、定点更新函数Ut、读出函数R均为可学习的可微函数。R作用于节点状态集合,必须不受节点状态排列的影响。
Convolutional Networks for Learning Molecular Fingerprints, Duvenaud et al. (2015)
M(hv,hw,evw)=Concat(hw,evw)
Ut(hvt,mvt+1)=Sigmoid(Htdeg(v)mvt+1)
R=f(v,t∑softmax(Wthvt))
Gated Graph Neural Networks (GG-NN), Li et al. (2016)
M(hv,hw,evw)=Aevwhwt
Ut(hvt,mvt+1)=GRU(hvt,mvt+1)
R=v,t∑σ(i(hv(T),hv0))⊙(j(hv(T))
Interaction Networks, Battaglia et al. (2016)
M(hv,hw,evw)=Concat(hv,hw,evw)
Ut(hvt,mvt+1)=Concat(hv,xv,mv)
R=f(v∈G∑hvT)
Molecular Graph Convolutions, Kearnes et al. (2016)
M(hv,hw,evw)=evwt
Ut(hvt,mvt+1)=α(W1(α(W0hvt),mvt+1)
evwt+1=Ut’(evwt,hvt,hwt)=α(W4(α(W2,evwt),α(W3(hvt,hwt))))
其中α表示ReLU函数,(…,…)表示Concat连接。
Deep Tensor Neural Networks, Schutt et al. (2017)
Mt=tanh(Wfc((Wcfhwt+b1)⊙(Qdfevw+b2)))
Ut(hvt,mvt+1)=hvt+mvt+1
R=v∑NN(hvT)
通过上述模型总结,可以寻找MPNN中的关键想法。
数据集中的分子包括氢(H)、碳(C)、氧(O)和氮(N) ,和氟(F)原子,并且含有最多9个重(非氢)原子。总的来说,这导致了大约134k个类似药物的有机分子,这些分子跨越了广泛的化学范围。
消息函数:
-
将分子图视为有向图,因此m向量容量变成双倍;
-
以GG-NN为基线作变体调整;
-
增加虚拟边,允许长距离传递信息
-
增加虚拟主节点,保存全局信息
读出函数:尝试了GG-NN的读出函数和set2set
输入表示:

