深度学习

优化算法与优化器

当解决房价预测问题时,首先制作一个训练数据集,在房价的例子中,收集了过去两年的房子交易记录。房子的数据(面积、地域、采光等)作为训练集,对应的房子成交价格作为真实值。这些训练数据会随着时间的积累越来越多。然后可以创建一个神经网络模型或其他机器学习模型,先随机初始化其中的权重和偏置,再将训练数据送进模型,得到一个计算结果,即估计值。此时,由于参数是随机初始化的,这个预估值大概率不准确;接下来使用损失函数进行真实值与预估值的比较,根据比较的结果反馈,来更新新的模型权重,这个更新权重的方法被称为优化算法。 优化算法是机器学习领域的一个核心任务,简单说就是通过调整模型的参数来最小化或最大化某个目标函数(通常是损失函数或效用函数)。为了实现这一目标,研究人员和工程师们开发了多种优化算法,这些算法可以大致分为几个类别,包括梯度下降及其变体、进化算法、以及基于统计的方法。这些算法在不同的情境和对不同类型的问题中各有优势。 进化算法,如遗传算法、免疫算法、鸟群算法、鲸鱼算法、灰狼算法、蝙蝠算法、蚁群算法、模拟退火等等。这些算法一般模仿生物进化过程中的自然选择、遗传、变异等机制来迭代地改进模型参数。这些算法属于启发式搜索算法,一般用于全局优化问题。 基于统计的优化算法,如期望最大化(EM)、马尔可夫链蒙特卡罗(MCMC)方法等等,采用统计学原理来引导优化过程。例如,EM算法通过交替计算期望和最大化步骤来估计模型参数,尤其适用于包含隐变量的情况。MCMC通过构造马尔可夫链生成符合目标分布的样本序列,广泛应用于贝叶斯统计中后验分布的估计。这些算法在处理高维空间和存在多个局部最优解的复杂问题时特别有用,但是计算复杂度一般非常昂贵。 在深度学习领域,最常用的优化算法实际上是梯度下降及其变体。梯度下降是一种求解可微分函数局部最小值的迭代算法。简单说,它的工作原理是计算目标函数关于参数的梯度(即斜率),然后沿着梯度下降的方向调整参数,逐步逼近最小值点。由于其简单、高效且易于理解的特点,梯度下降成为了深度学习和其他机器学习领域中最基础和最广泛使用的优化算法。梯度下降及其变体之所以在机器学习中至关重要,是因为它们为如何有效地训练模型提供了可行的路径,特别是在处理非常大的数据集和非常复杂的模型结构时。这些算法的进一步发展和改进将继续是机器学习和人工智能领域研究的一个活跃方向。下面将重点对梯度下降算法进行展开讲解。 1、梯度下降算法 在深度学习领域使用的优化算法一般是梯度下降算法,具体解释如下: 从某种程度上,读者可以把梯度理解成某函数偏导数的集合,例如函数\(f(x,y)\)的梯度为: \(\mathrm{grad}f(x,y)=\left(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}\right)\) 当某函数只有一个自变量时,梯度实际上就是导数的概念。 需要注意的是,梯度是一个向量,既有大小又有方向。梯度的方向是最大方向导数的方向,而梯度的模是最大方向导数的值。另外,梯度在几何上的含义是函数变化率最大的方向。沿着梯度向量的方向前进,更容易找到函数的最大值,反过来说,沿着梯度向量相反的方向前进是梯度减少最快的方向,也就是说更容易找到函数的最小值。 例如,维基百科上用来说明梯度的图片特别典型,说明非常形象,所以引来供读者学习。 【例1】设函数\(f(x,y)=-(\cos2x+\cos2y)^{2}\),则梯度\(\mathrm{grad}f(x,y)\)的几何意义可以描述为在底部平面上的矢量投影。每个点的梯度是一个矢量,其长度代表了此点的变化速度,而方向表示了其函数增长速率最快的方向。通过梯度图可以很清楚地看到,在矢量长的地方,函数增长速度就快,而其方向代表了增长最快的方向,梯度图如图1所示。 现在回到损失\(\ell\)的概念,\(\ell\)也是一种函数(例如平方差损失函数),因此要求\(\ell\)的最小值,实际上只需要沿着\(\ell\)梯度的反方向寻找即可,这就是梯度下降的概念。其公式表示为: \(\mathrm{grad}=\frac{\partial\ell}{\partial\boldsymbol{\omega}_{t-1}}\) \(\omega_t=\omega_{t\cdot1}-\eta\times\mathrm{grad}\) […]

优化算法与优化器 Read More »

SE(3)-Transformers

SE(3)-Transformers: 3D Roto-Translation Equivariant Attention Networks是一篇研究如何在三维空间中实现旋转和平移等变性的深度学习网络的工作。这种网络通过结合\(SE(3)\)群的等变性,将传统的Transformer结构扩展到了三维空间,从而在不牺牲表达能力的前提下,显著提升了对三维几何信息的建模能力。此项工作为在三维空间中的物理模拟、生物信息学以及计算机视觉等领域的应用提供了强大的工具。 1、SE(3)-Transformer的计算流程 图1展示了一个用于\(SE(3)\)-Transformer等变注意力机制的工作流程。该流程分为四个步骤:首先获取节点的最近邻居及其相对位置,然后通过\(SE(3)\)等变权重矩阵进行特征映射,接着将查询、键和值向量传递到边上,最后通过注意力机制计算并聚合邻居节点的信息。整个过程确保了在旋转等变性下节点特征的更新,适用于需要保持空间对称性的图形数据处理任务。 在第一步中,节点\(\mathrm{i}\)的最近邻居(节点\(\mathrm{j}\))及其相对位置\(x_{j}-x_{i}\)被获取。最近邻居通常通过在三维空间中的某个距离度量来定义,图1中节点\(\mathrm{i}\)和它的邻居节点\(\mathrm{j}\)以向量的形式表示它们之间的相对位置。 在第二步中,重点在于构造\(SE(3)\)等变的权重矩阵\(W(x)\),这是为了确保在\(SE(3)\)群的选择操作下,模型的输出结果保持不变。具体而言,权重矩阵\(W(x)\)是通过结合Clebsch-Gordan系数\(\varrho_{Jm}^{\ell k}\)、径向神经网络\(\varphi_J^{\ell k}(\parallel x\parallel)\)和球谐函数\(Y_{Jm}\left(\frac{x}{\parallel x\parallel}\right)\)来构建的。Clebsch-Gordan系数用于处理不同角动量态之间的耦合关系,径向神经网络则基于距离\(\left|x\right|\)来建模径向特征,而球谐函数用于处理角度方向上的信息。通过这些成分的组合,构建出的权重矩阵能够确保特征在旋转操作下依然保持\(SE(3)\)等变性。这一矩阵为后续计算中的查询、键和值向量提供了基础,使得模型能够在处理三维空间中的数据时保持旋转对称性,即对数据进行旋转时输出结果不会发生改变。这对于处理具有空间对称性的数据(如3D点云、分子结构等)尤其关键。 在第三步中,模型通过\(SE(3)\)等变权重矩阵将节点的特征向量映射为査询(query)、键(key)和值(value)向量,并将这些向量传递到图的边上。具体来说,给定目标节点\(\mathrm{i}\)的特征向量\(f_{i}\)和其邻居节点\(\mathrm{j}\)的特征向量\(f_{j}\),模型首先利用相对位置(\(x_j-x_i\))结合特征\(f_{j}\),通过等变权重矩阵\(W_{K}\)和\(W_{V}\)生成键向量\(k_{ij}\)和值向量\(\boldsymbol{v}_{{ij}}\)。同时,目标节点\(\mathrm{i}\)的查询向量\(q_{i}\)由其自身特征向量\(f_{i}\)通过另一权重矩阵\(W_{Q}\)生成。这个过程确保了在图的每条边上都有与目标节点和邻居节点相关联的查询、键和值向量,且这些向量的生成过程具有\(SE(3)\)等变性,即在旋转和平移操作下保持不变。这一机制为后续的注意力计算和信息聚合奠定了基础,使得模型能够有效地捕捉邻居节点对目标节点的影响,并保证结果的空间变换不变性。 在第四步中,模型利用先前计算的查询、键和值向量,通过注意力机制对邻居节点的信息进行加权聚合。具体来说,目标节点\(\mathrm{i}\)和其邻居节点\(\mathrm{j}\)之间的注意力权重\(\alpha_{ij}\)是通过目标节点的查询向量\(q_{i}\)和邻居节点的键向量\(k_{ij}\)的点积计算得出的,表达式为: \(\alpha_{ij}=\frac{\exp(q_i^\top k_{ij})}{\sum_{j^{\prime}}\exp(q_i^\top k_{ij^{\prime}})}\) 这种注意力权重反映了目标节点\(\mathrm{i}\)对邻居节点\(\mathrm{j}\)信息的关注程度。随后,目标节点的输出特征\(f_{\mathrm{out},i}\)是对所有邻居节点的信息(即值向量\(\boldsymbol{v}_{{ij}}\))进行加权求和后的结果,公式为:

SE(3)-Transformers Read More »

SEGNN

Geometric and Physical Quantities Improve E(3) Equivariant Message Passing是另一篇研究如何通过几何和物理量来增强E(3)等变消息传递的论文。E(3) 等变性指的是在三维欧几里得空间中,模型在平移、旋转和反射变换下保持不变性。在分子模拟和其他三维数据应用中,捕捉输入数据的对称性(如平移、旋转和反射)是至关重要的。SEGNN实际上与TFN非常相似,甚至其模型计算与结构更加简单,但是SEGNN对于一些操作的术语使用与描述更加专业合理,可能在某些情况下提供了更为直观和易于理解的等变性实现方法。另一方面,TFN强调使用张量场来捕捉几何关系,而SEGNN则更多地依赖于图神经网络的结构和消息传递机制。 1、可导向特征 使用可导向向量(Steerable features)是在图神经网络中实现等变性的有效方法。这里的“可导向性”指的是是一类在特定变换下具有特定行为的特征。例如,如果一个结构被旋转,那么它的可导向特征将以已知的方式响应这次旋转。这些特征通常是在网络的设计中引入对称性和等变性原则,以确保在变换(如旋转、平移或反射)下,特征能够保留输入的对称性。简单说,可导向特征确保了特征表示的等变性,即当输入发生变换时,特征表示也会相应变换。 在SEGNN中,可导向向量的定义如下:向量\(\tilde{h}\)被定义为可导向的,这意味着它可以通过矩阵\(\boldsymbol{D}(g)\)来响应变换\(\mathrm{g}\)。例如,在三维空间中,一个欧几里得向量通过旋转矩阵\(\mathrm{R}\)进行变换,为了表示向量在变换下的行为,矩阵\(\boldsymbol{D}^{(l)}(g)\)通常是Wigner-D,根据球谐函数的定义,这些矩阵是\((2l+1)\)维的,可以作用于对应维数的向量空间。Wigner-D矩阵帮助实现了向量在旋转下的等变性,如图1所示。 图1(a)显示了一个可导向向量\(\tilde{\boldsymbol{h}}^{(l)}\)。可导向向量在不同\(\mathrm{l}\)阶的球谐函数子空间中被展开,这里\(l=0,1,2\),分别表示标量空间、向量空间和张量空间。每个子空间通过基函数\(Y_m^{(l)}\)(球谐函数)进行表示,向量的不同分量\(\left[h\right]_l^m\)与对应的阶数的球谐函数相乘,形成了这个向量的完整表达。具体来说,\(Y^{(l)}(x)\cdot Y_m^{(l)}(\cdot)\) 的运算表示在点\(\mathrm{x}\)处的球谐函数展开与基函数\(Y_{m}^{(l)}(\cdot)\)的组合。\(Y^{(l)}(x)\)是一个向量,包含所有磁量子数\(\mathrm{m}\)对应的球谐函数值,\(Y_{m}^{(l)}(\cdot)\)是具体的一个基函数,表示在某个特定模式下的值。\(Y^{(l)}(x)\)和\(Y_{m}^{(l)}(\cdot)\)的乘积表示一种分解和重构方式,将复杂函数表示为一组基函数的线性组合。这种表示在处理具有旋转对称性的系统时非常有效,能够方便地进行旋转和其他对称操作的计算。 图1(b)描述的是展示了应用旋转矩阵\(\mathrm{R}\)后向量\(\tilde{\boldsymbol{h}}^{(l)}\)的变化。每个子空间分别变换,向量的整体形态随着旋转而变化,但其基本结构和信息保持一致,体现了等变性。旋转矩阵\(\mathrm{R}\)的本质是Winger-D矩阵,Wigner-D 矩阵是对球谐函数在旋转下的变换进行描述,保证了每个分量在旋转下的正确变换行为。因此,当应用旋转矩阵\(\mathrm{R}\)时,不同阶数\(\mathrm{l}\)的子空间\(V_{l}\)内的向量部分通过相应的 Wigner-D

SEGNN Read More »

ComENet

ComENet计算二面角的方式与GemNet、SphereNet等模型不同,它是从边的角度出发的。在GemNet和SphereNet等模型中,通常是从原子的立体结构和位置出发,使用球坐标系统来建模分子的几何结构。GemNet直接计算原子间的距离、夹角和二面角,依赖于对原子三维坐标的精确描述;而SphereNet则通过投影的方式对二面角的计算进行的简化。 ComENet则采用了一种更为抽象的方法,其专注于边的角度。ComENet首先定义了分子结构中的边,然后利用这些边来构建一个图的局部表示。在这种表示中,二面角不是直接通过计算四个原子的空间位置来得到的,而是通过分析连接这些原子的边之间的相对方向和转动。这种方法有助于模型更好地理解和预测分子在不同化学环境中的行为,因为它抓住了化学键之间相互作用的本质,具体方式如图1所示。 如图1所示,对于图中的任意一条边\(e_{ij}\),选取两个参考节点\(f_j^i\)和\(f_i^j\),分别代表除了节点j之外节点i的最近邻节点,以及除了节点i之外节点j的最近邻节点,\(\mathcal{I}_{ij}\)是从由\(f_i^j,i,j\)形成的平面到由\(f_j^i,j,i\)形成的平面的角度。 这种计算方式的侧重点是边的相对方向而非原子的绝对位置,因此降低了对计算资源的需求。具体来说,在传统的计算方法中,二面角的计算需要四个原子组合参与。而针对一个分子结构而言,四个原子的组合方法要远远多于边的数量,因此ComENet实际上是通过减少计算次数来提高计算效率的。以乙醇(Ethanol)分子为例,如图2所示。 其分子式为 C2H5OH,包含两个碳原子、一个氧原子,以及六个氢原子(共9个原子)。在乙醇中,主要的化学键包括碳-碳键、碳-氧键、以及碳和氧的氢键。具体连接如下:CH键5个、CC键1个、CO键1个、OH键1个,总共有8条边。但是,对于CH和OH边来说,H原子没有其他的邻居,ComENet二面角的计算方法并不适用,对于这种情况,通常会忽略这些边的转动角计算。实际上,单个氢原子的转动对分子的整体构象变化影响较小,尤其是在它只连接一个碳的情况下,因此这种情况下不计算边转动角也不会有太大影响。所以,实际参与二面角计算的边只有2个(CC键和CO键)。对比之下,如果是随机选择四个连续的原子进行二面角的计算,则共用12种,分别是H1-C1-C2-H4、H1-C1-C2-H5、H2-C1-C2-H4、H2-C1-C2-H5、H3-C1-C2-H4、H3-C1-C2-H5、H1-C1-C2-O、H2-C1-C2-O、H3-C1-C2-O、C1-C2-O-H6。对比之下,ComENet二面角的计算方法效率更高。 从另一个角度来说,ComENet计算二面角的过程中参与的四个原子是相互之间距离最近的,这使得模型能更有效地捕捉到分子内部的局部结构变化。这种局部信息特别重要,因为分子的化学性质和反应活性常常由其局部结构决定。因此,通过专注于这些局部连接的原子,ComENet不仅提高了计算效率,也增强了模型对分子行为的预测能力。

ComENet Read More »

SphereNet

为了更好的描述解释SphereNet的二面角计算方式,我们首先正式定义一个三维分子图,通常表示为一个四元组\(G=(u,V,E,P)\)。其中\(u\in R^{d_{u}}\)是分子图的全局特征向量。$ V=\left\{\boldsymbol{v}_{i}\right\}_{i=1}^{n} $是原子特征集,其中每个\(v_{i}\in R^{d_{\nu}}\)是原子i的特征向量。$E = \left\{ (e_k, r_k, s_k)\right\}_{k=1}^{m}$是边集,其中每个\(e_k\in\mathbb{R}^{d_c}\)是特征向量,\(r_{k}\)是接收原子的索引,而\({s_{k}}\)是发送边k的原子的索引。$P= \left\{ p_h\right\}_{h=1}^{n}$是包含每个原子三维空间信息的三维笛卡尔坐标集。另外,我们使用$E = \left\{ (e_k, r_k, s_k)\right\}_{k=1}^{m}$表示指向原子i的边集,\(N_{i}\)表示进入原子i 的节点的索引集。信息传递过程后的输出包括更新的全局特征向量\(u^{^{\prime}}\in R^{d_u}\)、更新的原子特征$V’ =

SphereNet Read More »

Gemnet

GemNet专门设计用于精准预测分子之间的相互作用,相比之前广泛使用的DimeNet,GemNet通过引入几何二面角信息,使其能够更好的捕捉原子之间复杂的空间关系,考虑它们的位置和类型。 1.1 引入二面角信息 对比DimeNet的消息传递机制,GemNet 的思路比较好理解,既然在DimeNet中,引入方向性的夹角消息传递能够提升精度,那么引入更高维的二面角信息理论上应该能更进一步,如图1所示。 (1)角度表示:图1中展示了三种角度类型:\(\phi_{\mathrm{cab}},\phi_{\mathrm{abd}}\)和二面角\(\theta_{\mathrm{cabd}}\)。这些角度被用来更新原子a和b之间的嵌入\(m_{\mathrm{ca}}\)和\(m_{\mathrm{db}}\)。 (2)二面角的可视化:当分子被旋转使得原子a和b重合时,二面角\(\theta_{\mathrm{cabd}}\)变得可见。二面角是由四个原子a,b,c和d形成的,它关乎两个平面之间的角度,这在化学结构中非常重要,因为它影响了分子的形状和功能。 GemNet中,上述角度信息的公式化表述如公式1、2、3所示,每个公式都定义了特定的数学函数,用于计算原子间相互作用的几何特征。 \(\boldsymbol{e}_{{_{{\mathrm{RBF},n}}}}(x_{{_{{\mathrm{db}}}}})=\sqrt{\frac{2}{c_{{_{{\mathrm{emb}}}}}}}\frac{\sin(\frac{n\pi}{c_{{_{{\mathrm{emb}}}}}}x_{{_{{\mathrm{db}}}}})}{x_{{_{{\mathrm{db}}}}}}\) \(e_{\mathrm{CBF,ln}}(x_{\mathrm{ba}},\varphi_{\mathrm{abd}})=\sqrt{\frac2{c_{\mathrm{int}}^3j_{l+1}^2(z_{\mathrm{ln}})}}j_l(\frac{z_{\mathrm{ln}}}{c_{\mathrm{int}}}x_{\mathrm{ba}})Y_{\mathrm{l0}}(\varphi_{\mathrm{abd}})\) \(e_{\mathrm{SBF,lnm}}(x_{\mathrm{ca}},\varphi_{\mathrm{cab}},\theta_{\mathrm{cabd}})=\sqrt{\frac2{c_{\mathrm{emb}}^3j_{l+1}^2(z_{\mathrm{ln}})}}j_l(\frac{z_{\mathrm{ln}}}{c_{\mathrm{emb}}}x_{\mathrm{ca}})Y_{\mathrm{lm}}(\varphi_{\mathrm{cab}},\theta_{\mathrm{cabd}})\) 公式1称为径向基函数,其中\(e_{\mathrm{RBF},n}(x_{\mathrm{db}})\)是第n个径向基函数,用于编码两个原子d和b之间的距离\(x_{\mathrm{db}}\)。\(c_{\mathrm{emb}}\)是归一化常数,用于调整函数的周期性。公式1的作用是捕捉原子对之间的距离信息,它通过正弦函数形式的径向基函数来表示原子间距的信息,并将该信息编码为神经网络可以处理的形式,这种编码对于理解原子对之间的相互作用是重要的。 公式2称为复合基函数(Continuous Filter,CBF),这个表达式结合了球贝塞尔函数\(j_{l}\)和第l阶的球谐函数\(Y_{_{l 0}}\),以编码原子b和a之间的距离\(x_{\mathrm{ba}}\),以及它们与第三个原子d形成的角度\(\varphi_{\mathrm{abd}}\)。\(c_{\mathrm{int}}\)是另一个归一化常数,而\(z_{ln}\)表示l阶球贝塞尔函数的第n个零点。公式2结合了球贝塞尔函数和球谐函数,它的作用是捕捉原子三元组之间的角度关系,用于表征由三个原子构成的角度特征,这些信息对于定义分子结构中的角度依赖性特征至关重要。 公式3称为结构基函数(Structural Basis Function,SBF),这个公式用于编码原子c和a之间的距离\(x_{\mathrm{ca}}\),以及它们与其他两个原子b和d形成的角度\(\varphi_{\mathrm{cab}}\)和二面角\(\theta_{\mathrm{cabd}}\)。这里使用了l阶球贝塞尔函数和l阶m次球谐函数\(Y_{\mathrm{lm}}\)。类似于CBF,SBF的作用是通过考虑更多的角度信息(如二面角)来编码原子四元组间的空间关系,这种复合的基函数允许模型捕捉分子结构的更复杂几何特征,如扭曲和立体排列。 值得注意的是,在公式3中,球谐函数的参数m,当m=0时,球谐函数\(Y_{l}^{m}\left(\theta,\varphi\right)\)只依赖于极角\(\theta \),与方位角\(\varphi

Gemnet Read More »

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 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