神经信息传递法(MPNN)—预测分子和材料特性

神经信息传递法(MPNN)—预测分子和材料特性前言基于图神经网络(GNN)的方法在模拟复杂相互作用方面具有巨大的潜力,被广泛应用于分子量子力学性质以及材料预测的预测。目前为止,传统的机器学习模型普遍应用于预测分子性质,与GNN不同,ML模型需要先对分子特征进行操作,尽管这些分子特征是各种分子性质的良好预测指标,不过基于网络训练的模型,效果可能会更好。1.消息传递神经网络(MPNN)​ 近年来,随着量子化学计算和分子动力学模拟等实验展开了巨大的数据量,图神经网络能够应用于分子模型(原子系统的对称性
摘要由CSDN通过智能技术生成

神经信息传递法(MPNN)—预测分子和材料特性

前言

基于图神经网络(GNN)的方法在模拟复杂相互作用方面具有巨大的潜力,被广泛应用于分子量子力学性质以及材料预测的预测。目前为止,传统的机器学习模型普遍应用于预测分子性质,与GNN不同,ML模型需要先对分子特征进行操作,尽管这些分子特征是各种分子性质的良好预测指标,不过基于网络训练的模型,效果可能会更好。

1.消息传递神经网络(MPNN)

​ 近年来,随着量子化学计算和分子动力学模拟等实验展开了巨大的数据量,图神经网络能够应用于分子模型(原子系统的对称性),MPNN正是可以应用于图上的监督学习框架。在图中,所有数据节点相互连接,意味着数据不再独立,这使得大多数标准机器学习模型无法使用。图神经网络可以从图形中提取数值数据或使用直接对此类数据进行操作的模型。这种架构可以从图形中提取数值数据或使用直接对此类数据进行操作的模型

1.1 MPNN概念

MPNN概念很简单,图中的每个节点都有一个隐藏状态(即特征向量)。对于每个节点Vt,我们将所有相邻节点的隐藏状态和可能的边与节点Vt本身聚合在一起。然后,我们使用获得的消息和该节点先前的隐藏状态来更新节点Vt的隐藏状态

在这里插入图片描述

注:节点V1的消息传递架构的一个非常简单的示例。在这种情况下,消息是邻居隐藏状态的总和。更新函数是消息mh1之间的平均值(图参考该网站

​ 主要有三个方程定义了MPNN框架。从相邻节点获得的消息由以下等式给出:
m v t + 1 = ∑ w ∈ N ( v ) M t ( h v t , h w t , e v w ) m_{v}^{t+1}=\sum_{w \in N(v)} M_{t}\left(h_{v}^{t}, h_{w}^{t}, e_{v w}\right) mvt+1=wN(v)Mt(hvt,hwt,evw)
​ 它是从邻居节点获得所有消息Mt的总和。Mt是一个任意函数,它取决于相邻节点的隐藏状态和边缘。我们可以通过保留一些输入参数来简化这个函数。使用一个方程来更新节点Vt的隐藏状态:
h v t + 1 = U t ( h v t , m v t + 1 ) h_{v}^{t+1}=U_{t}\left(h_{v}^{t}, m_{v}^{t+1}\right) hvt+1=Ut(hvt,mvt+1)
​ 节点Vt的隐藏状态是通过用新获得的消息Mv更新旧的隐藏状态获得的。从上图可以了解,更新函数Ut是之前隐藏状态与消息的平均值。我们重复这个消息传递算法指定的次数。最后建立读出阶段公式:
y ^ = R ( { h v T ∣ v ∈ G } ) \hat{y}=R\left(\left\{h_{v}^{T} \mid v \in G\right\}\right) y^=R({ hvTvG})
​ 在该式,我们可以提取所有更新的隐藏状态并创建一个描述整个图的最终特征向量。然后将该特征向量作为标准机器学习模型的输入。

2. MPNN用于分子特性预测

​ 参考keras官方案例将通过MPNN来预测血脑屏障通透性(blood-brain barrier permeability)的分子特性。数据集将从MoleculeNet.org下载。

2.1 数据集

​ 该数据包含2050个分子。每个分子都有对应的名称,标签和SMILES字符串。BBB是将血液与脑细胞外液隔开的膜,因此阻止了大多数药物(分子)到达大脑。正因为如此,BBBP对于研究针对中枢神经系统的新药的开发非常重要。该数据集的标签是二进制(0或1),表示分子的渗透性。

​ 首先导入相关库:

import os

# Temporary suppress tf logs
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import warnings
from rdkit import Chem
from rdkit import RDLogger
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem.Draw import MolsToGridImage

# Temporary suppress warnings and RDKit logs
warnings.filterwarnings("ignore")
RDLogger.DisableLog("rdApp.*")

np.random.seed(42)
tf.random
  • 14
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值