图神经网络

DimeNet

DimeNet(Directional Message Passing Neural Network)是一种专门用于分子图结构的神经网络,在预测分子性质和模拟分子间相互作用方面表现出色。DimeNet 的独特之处在于它引入了方向性消息传递机制,使其能够更好地捕捉分子中的几何和角度信息。DimeNet的关键特点之一是方向性消息传递,传统的消息传递神经网络(Message Passing Neural Network, MPNN)主要考虑节点和边之间的消息传递。SchNet进一步的对节点之前的相对距离进行建模。而DimeNet则更进一步引入了方向性消息传递的概念,这意味着它不仅考虑节点和边的信息,还将相邻边之间的角度信息纳入计算。 1.1引入角度信息 在SchNet模型中介绍的连续卷积中,存在一个截断距离C的概念。通过截断距离的设置,可以限制仅在这个距离范围内的原子之间才允许信息的传递。这种方法相当于在分子图中引入了一个局部邻域的概念,每个原子只与它的近邻原子“交流”,而不是与整个分子中的所有原子交流,这其实就是卷积算法中“关注局部”的思想与优点。 这种局部化的方法可以大大降低计算负担,因为它减少了模型必须处理的消息数量。同时,它也减少了模型可能学习到的噪声或不相关信息,因为远离的原子对通常对当前原子的化学性质影响较小。但是,这种方法也有其局限性,特别是当两个结构上不同但在局部尺度上相似的分子,例如在大约2埃的截断距离下,一个常规的GNN可能无法区分六边形分子(例如环己烷)和两个三角形分子(例如环丙烷)。这是因为在图神经网络(GNN)的常规处理方式中,原子之间的关系通常是基于它们之间的距离来建模的,而非它们在空间中的具体方向或者角度。当我们说一个原子的“邻域”时,是指在一定截断距离内与该原子相连的其他原子。在截断距离限制下,原子只能“看到”它周围一定范围内的其他原子,并与这些原子交换信息。 以环己烷(一个六边形分子)和环丙烷(一个由两个三角形组成的分子)为例,如果它们的键长相同,每个原子在截断距离内的邻域将是相似的,如图1所示。也就是说,每个原子周围可能都有两个相邻原子,它们之间的距离大约是2埃,因此从每个原子的局部视角来看,它们的邻域模式看起来是无法区分的。这样,基于局部信息的GNN将无法区分这两种分子的整体结构。 为了区分这两个分子,模型需要能够识别原子之间关系的角度特征,也就是需要知道这些原子是如何在三维空间中定向的。在三维空间中,六边形的角度和三角形的角度是不同的,因此这是区分这两种分子的关键。然而,如果模型仅仅基于距离信息而不考虑角度信息,它就会丧失这种区分能力。因此,为了更准确地建模分子结构,需要引入能够处理角度信息的机制,这便是DimeNet的设计动机。 1.2球谐函数和贝塞尔径向模型 在构建分子的基础表示时,DimeNet采用了球谐函数和贝塞尔径向模型这两类数学函数。球谐函数用于捕捉分子形状及原子在不同方向上的分布,这对于理解分子的三维结构至关重要。贝塞尔径向模型则在处理问题时更加关注于原子间的实际距离,这些函数特别适合于描述原子间距离相关的性质。 在DimeNet模型中,球谐函数和贝塞尔径向模型的应用是一种关键的数据预处理步骤,旨在从分子的三维结构中提取空间特征,尤其是原子间的距离和角度信息。具体来说,几何深度学习模型在处理原子问题时的输入一般是原子在笛卡尔坐标系(x,y,z)下的三维坐标。通过计算任意两个原子之间的欧几里得距离,并把这个距离作为贝塞尔径向模型的输入,贝塞尔径向模型能够捕捉到原子间距离上的波动特征。类似的,可以将笛卡尔坐标系下原子的位置表示转换为球坐标系中的角度表示,这些角度信息再作为球谐函数的输入,球谐函数能够捕捉到原子间方向上的角度特征。基于上述距离和角度,我们使用球谐函数和贝塞尔函数公式中的系数组合作为几何深度学习模型的输入特征。球谐函数和贝塞尔函数的数学特征正交性可以确保从这些转换得到的特征在信息上是独立且互补的,减少了特征间的冗余。 值得注意的是,球谐函数和贝塞尔方程公式中的系数是固定的数学函数,不需要被训练。只要有点的三维坐标作为输入,球谐函数和贝塞尔方程拆解的结果就是固定的。球谐函数和贝塞尔方程的使用更像是一种基于原子坐标的特征工程手段,用于将原始的几何数据转换成一种对模型更有用的形式。这种特征转换方法为DimeNet提供了一种“强大的语言”,使其能够精确描述并利用原子间的距离和角度相互作用信息。正交性保证了转换得到的特征集中每个特征都携带有用且独特的信息,有助于模型从数据中学习到更多独立的特征,从而提高预测分子性质的准确性。 最后,还有一个关键问题是模型如何习得这些系数特征的含义?毕竟球谐函数和贝塞尔函数并没有被内置在模型的结构中作为模型的一部分。实际上,DimeNet并不需要“知道”这些系数代表了什么。模型有能力通过训练过程学习这些转换后的系数特征与目标属性(如分子的能量或其他化学性质)之间的关系。通过大量的训练数据,DimeNet能够识别哪些模式(在这些系数表示的特征中)与预测的化学性质有关联。这种学习过程是数据驱动的,不需要模型对系数的物理意义有先验的理解。使用球谐函数和贝塞尔函数作为输入预处理步骤是因为它们提供了一种有效的方式来表达分子结构中的三维空间信息。这些信息是传统图神经网络(例如GCN、GraphSAGE、GAT等)难以直接处理的,因为它们通常设计用于处理图结构数据,而没有考虑到原子间复杂的空间和方向性关系。 […]

DimeNet Read More »

SchNet

SchNet是一种用于分子和材料的量子化学计算的深度学习模型,最初由德国的研究人员在2017年开发。它是一种基于图的神经网络,专门设计来处理三维分子结构中的原子间相互作用。SchNet的独特之处在于它使用了连续卷积操作,可以捕捉到原子之间复杂的距离依赖关系,从而能够预测分子的能量、力以及其他重要的化学性质。这种模型通过学习原子环境的表示来实现高精度的预测,而不依赖于任何人工定义的特征或先验的物理知识。SchNet已经在多种化学和材料科学任务中展现出了卓越的性能,成为了分子模拟领域的一种重要工具。 1.1 SchNet模型结构 SchNet的架构如图1所示,这是一个针对分子和材料建模而设计的深度学习网络。图中分为三个主要部分:架构总览、交互模块和滤波器生成网络。 1.架构总览 如图1左图所示,输入表示为\((Z_1,\cdots,Z_n)\)和\((r_1,\cdots,r_n)\),其中\(\mathbf{z}_{i}\)是原子类型(例如氢、氧、碳等)被编码成的一个one-hot编码的向量。这是基本的化学信息,对于识别不同原子的性质非常重要。\(r_{i}\)是每个原子在分子中的三维坐标,这些位置信息对于模型来说至关重要,因为它们直接决定了原子之间的距离和相互作用,这些都是决定分子性质的关键因素。 输入数据首先经过嵌入层(embedding),这是一个常见的深度学习技术,一般使用神经网络层将每个原子的one-hot节点特征向量转换成一个固定大小的连续特征向量。在这个例子中,每个原子经过神经网络层映射成的新特征向量的维度是64,即每个原子被映射为一个包含64个元素的向量。这个向量编码了原子的某些属性,可以在网络训练过程中进行学习和优化。接下来是多个交互层,每个层都旨在捕捉和更新原子之间的相互作用信息,得到更有效的原子特征向量表示。之后,一个原子级别的操作(atom-wise)对每个原子的特征进行转换。原子级别操作将对每个原子的特征向量独立地进行学习变换。这意味着网络在进行这些操作时,不会考虑原子之间的相互作用或原子的邻居,而是将注意力集中在单个原子的特征向量上。在实践中,这通常通过应用一个全连接层来实现。 Shifted softplus是一种激活函数,用于引入非线性,该激活函数定义为:\(\text{Shifted softplus}(x)=\ln(0.5e^x+0.5)\) 其函数图像如图2所示。 它是一个平滑的非线性函数,可以将非线性引入神经网络。Shifted Softplus类似于激活函数ReLU,但对于负输入值具有非零梯度。即使输入具有负值,也可以帮助网络继续学习,且在x=0的位置过度的更加平滑。值得注意的是,Shifted Softplus 在处理几何数据时往往比ReLU更受欢迎,主要原因有下面几个: (1)平滑的梯度:Shifted Softplus 函数在整个定义域中都有一个平滑的导数。这意味着梯度不会突然变为零(如ReLU在负输入时的表现),从而避免了神经网络在训练过程中的梯度消失问题。在几何结构的数据中,原子或节点的特征可能涉及复杂的相互作用和细微的变化,平滑的梯度允许模型更细致地调整其参数以捕获这些特征。 (2)非饱和性:Shifted Softplus是一个非饱和激活函数,这意味着它的输出不会在较大的正输入值时饱和到一个固定值(与Sigmoid或Tanh不同)。非饱和性有助于减轻训练过程中的梯度饱和问题,提高网络在深层结构中的信息流动。

SchNet Read More »

Graph Attention Network(GAT)

接下来介绍图注意力网络GAT,GAT可以有两种运算方式,一种被称为全局注意力(Global Graph Attention),顾名思义,就是每一个顶点都对于图上任意顶点都进行Attention运算。这样做的优点是完全不依赖于图的结构,即不依赖图的邻接矩阵,对于Inductive任务无压力。缺点也很明显:首先,丢掉了图结构的特征。其次,当图数据规模很大的时候,运算面临着高昂的成本。第二种被称为掩码图注意力机制(Mask Graph Attention),每个节点的Attention计算仅限于其邻接节点(即邻接矩阵所定义的直接连接)。这样做保留了图的结构特性,并利用了局部邻域信息。与全局注意力相比,掩码图注意力机制大大降低了计算成本,因为每个节点只与其直接邻居进行交互,而不是图中的所有节点。这种方式有效地利用了图的拓扑结构,可以捕捉到节点之间的局部关系,这对于许多图数据分析任务是非常有价值的。值得注意的是,虽然在掩码图注意力机制的GAT中用到了邻接矩阵,但是并不像GCN一样是利用全部的邻接矩阵信息,而是仅利用邻接矩阵查询某节点的邻居是谁。因此可以来处理Inductive任务。换句话说,GAT中节点可以通过注意力权重动态地选择其信息的重要来源,即它的邻居。这些权重是由模型通过学习自动确定的,并不依赖于预先定义的结构。这一点区别于GCN,后者使用的是固定的邻接矩阵加自环的归一化形式来确定节点之间信息传递的权重。 接下来主要讲解GAT中的 Attention机制。类似于Transformer中的注意力机制,GAT的计算也分为两步:计算注意力系数(Attention Coefficient)和加权求和(Aggregate)进行特征重要程度的重分配。对于顶点i,逐个计算它的邻居们(\(j\in N_{i}\))和它的注意力系数\(e_{ij}=\alpha([Wh_i\parallel Wh_j]),j\in\mathcal{N}_i\),具体流程如图1所示。 在图1中\(h_{i}^{l}\)是节点i的特征向量,\({h_j^l}\)是的节点i所有邻居的特征向量的集合,W是一个共享参数,通过一个单层的神经网络层来实现。\([\cdot||\cdot]\)代表对节点i,j经过神经网络层W变换后的特征进行拼接操作(Concat)。最后通过\(\alpha\)把拼接后的高维特征映射到一个实数上,也是通过一个单层的神经网络层来实现。显然学习节点i,j之间的相关性系数,就是通过可学习的神经网络层的参数W和\(\alpha\)映射完成的。有了相关系数,再对其进行Softmax归一化操作即可得到注意力系数\(\alpha_{ij}\)。至于加权求和的实现也很简单,根据计算好的注意力系数,把特征加权求和聚合(Aggregate)一下。即: \(h_i’=\sigma(\sum_{j\in\mathcal{N}_i}\alpha_{ij}Wh_j)\) \(h_i^{\prime}\)就是GAT 输出的对于每个节点i的新特征,这个新特征的向量表示融合了邻域信息,\(\sigma(\cdot)\)是激活函数。最后,与Transformer一样,GAT也可以用多头注意力机制来进化增强: \(h’_i(K)=\|_{k=1}^K\sigma(\sum_{j\in\mathcal{N}_i}\alpha_{ij}^kW^kh_j)\) 其中K是注意力机制的头数,每个头都会维护更新自己的参数,计算得到自己的结果,\(||_{k-1}^K\)表示将所有头的计算结果进行拼接(Concat)得到最后更新好的新节点向量。多头注意力机制也可以理解成用了集成学习的方法,就像卷积中,也要靠大量的卷积核才能有比较好的特征提取效果一样。最后通过一个示例来复习一下GAT的计算过程,图数据如图2所示。 计算注意力系数的两个神经网络层的参数分别是W和\(\alpha\),假设其初始化的值为W=[1,1],\(\alpha\)=[1,1,1,1]。注意,这些参数都是可学习的,随着网络的训练而更新。首先,计算注意力系数\(e_{ij}=\alpha(Wh_i,Wh_j)\),以节点1为例,与其它节点的相关性系数为: \(\begin{aligned}&e_{12}=\alpha\cdot[0.1,0.2,0.2,0.2]=0.7 \\&e_{13}=\alpha\cdot[0.1,0.2,0.25,0.2]=0.75 \\&e_{14}=0

Graph Attention Network(GAT) Read More »

Graph Sample and Aggregate Network(GraphSAGE)

相比GCN,GraphSAGE可以处理Inductive类型的任务。Inductive任务的关键在于设计能够良好泛化到未见过的图或节点上的模型。其挑战在于模型需要能够处理图的结构和特征在训练集和测试集之间可能有显著差异的情况。因此,适用于Inductive任务的GNN模型在设计时,应该侧重于学习能够代表单个节点的通用表示,而不是依赖于整个图的结构。这意味着模型应该能够从节点的局部邻域信息中学习其表示,而不是从整个图的全局结构中学习,GCN利用整个邻接矩阵这一做法就违反了这一点。GraphSAGE对此则进行了改进,更新节点信息的方式就不依赖于图的全局结构。具体来说,其更新过程主要分三步: (1)聚合邻居节点的信息,聚合函数有三种,将在下文展开解释; (2)将聚合后的信息与自身的节点信息进行拼接,进行特征的融合; (3)送入神经网络模型中进行映射,得到更新后的节点信息。 例如:图数据如图1所示,现在使用GraphSAGE对节点1进行更新。 节点1特征向量的更新步骤如下三步: (1)聚合邻居节点:\(h_{\mathcal{N}(1)}^1\leftarrow\mathrm{AGGREGATE}(h_3^0,h_4^0,h_5^0,h_6^0)\) (2)拼接自身信息:\(h_1^1\leftarrow\mathrm{CONCAT}(h_1^0,h_{\mathcal N(1)}^0)\) (3)经过神经网络映射:\(h_1^1\leftarrow\sigma(W^1\cdot\mathrm{CONCAT}(h_1^0,h_{N(1)}^0))\) 假设步骤1中聚合函数AGGREGATE是Mean函数,则代数得: \(h_{N(1)}^1\leftarrow\mathrm{AGGREGATE}(h_3^0,h_4^0,h_5^0,h_6^0)=\mathrm{Mean}([0.3,0.4],[0.2,0.2],[0.7,0.8],[0.5,0.6])\) 另外,在这个计算流程中有两个地方需要额外注意。第一,GraphSAGE在聚合某节点邻居信息的时候,并不是聚合全部的邻居,而是聚合K个邻居,K是一个超参数。举例,在图1中,若K等于3,则在聚合节点1的周围邻居时,随机从节点3、4、5、6中选择3个进行聚合。若K等于5,则除了选择节点1的周围4个邻居以外,再重复从这4个邻居中抽样一个节点。这样做的好处是,当图数据非常庞大时,选取某节点的全部邻居做聚合是非常耗时耗力的,若只选择其中的K个邻居,可以更快的进行计算。超参数K本质上是计算精度和计算速度之间的一种权衡。 第二个需要注意的是GraphSAGE定义了三种不同的聚合函数: \(\begin{aligned}&(1) \mathrm{Mean:}\quad AGG=\sum_{u\in N(\nu)}\frac{h_{u}^{(l)}}{\mid N(\nu)\mid} \leftarrow\\&(2)

Graph Sample and Aggregate Network(GraphSAGE) Read More »

Graph Convolutional Network(GCN)

先来看一下之前讲解的朴素图神经网络,如图1所示。 图1左上角方框部分可以看作图神经网络的初始状态。以1号节点为例,在图神经网络中,信息的传递是先汇聚一号节点的邻居节点信息,得到汇聚后的新向量,这个向量可以看作图神经网络第一层的输入信息\(H^{(l)}\)。然后\(H^{(l)}\) 经过一个 MLP 的映射, 得到一个新的输出向量\(H^{(l+1)}\) , 这个向量则作为第二层图神经网络的输入信息, 依次类推, 可以定义出一个多层的图神经网络。层与层之间的信息传递公式可以写作: \(H^{(l+1)}=\sigma(H^{(l)}W^{(l)})\) 而图卷积神经网络的计算公式则为: \(H^{l+1}=\sigma(\tilde{D}^{-\frac12}\tilde{AD}^{-\frac12}H(l)W(l))\) 两者最主要的区别就是图卷积神经网络比图神经网络多了一个\(\tilde{\boldsymbol{D}}^{-\frac12}\tilde{\boldsymbol{AD}}^{-\frac12}\)。其中,\(\tilde{A}=A+I_N\), \(A\) 就是图的邻接矩阵,\(I_{N}\)是一个全一的对角矩阵,即: \(\begin{aligned}&\boldsymbol{A}=\begin{pmatrix}0.&1.&1.&0.\\1.&0.&1.&0.\\1.&1.&0.&1.\\0.&0.&1.&0.\end{pmatrix}&\boldsymbol{I}_N=\begin{pmatrix}1.&0.&0.&0.\\0.&1.&0.&0.\\0.&0.&1.&0.\\0.&0.&0.&1.\end{pmatrix}\\&\tilde{\boldsymbol{A}}=\boldsymbol{A}+\boldsymbol{I}_N=\begin{pmatrix}1.&1.&1.&0.\\1.&1.&1.&0.\\1.&1.&1.&1.\\0.&0.&1.&1.\end{pmatrix}\end{aligned}\) 邻接矩阵 \(A\)表示的是节点与节点之间的关系,全一的对角矩阵\(I_{N}\)表示的是节点自身,所以\(\tilde{A}=A+I_N\)表示考虑了节点自身信息的邻接矩阵。 先将\(A\)矩阵加入图卷积神经网络的计算公式中,得到:

Graph Convolutional Network(GCN) Read More »

Scroll to Top