【论文阅读】Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces
- 一.背景
- 二.嵌入
- 1.径向部分
- 高斯函数
- 截断函数
- 2.角度部分
- 三、总结
一.背景
相信大家都接触过一些机器学习预测分子能量的算法,从大名鼎鼎的ANI、SchNet到后来的DimeNet、NequIP,这些算法都是基于神经网络的势函数。关于这些算法的原理和应用,网上有很多很好的资料,比如frank_haha老师的专栏。
图神经网络和分子表征_frank_haha的博客-CSDN博客
但是,当我们想要将这些算法应用于分子模拟或者类似的问题时,却发现,近年来的系统虽然在精确度上有着很高的提升,但从SchNet或类似时代的网络开始,因为消息传递的高开销,其速度就很不理想。那么我们如果想构建一个既快速又准确的神经网络势函数,就必须回到ANI时代,看看当时的神经网络是如何设计的。
提到ANI,就不得不提到BP势。2007年,Jörg Behler和Michele Parrinello(两位都是大牛)发布的《Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces》,至今已经获得了4000+的引用。那么这篇短短4页的文章,为什么能在当时一举成名呢?让我们仔细看一下它所使用的方法。
看到它的神经网络方法,和今天动辄几十层的网络相比,简直是简单到不能再简单。
S
S
S层是最简单的线性层和非线性层组成的神经网络,不是我们今天关注的重点。我们现在完全可以用图神经网络来取代这些。后面使用了每一个原子的能量加和产生分子的总能量,也是非常简单的想法。今天我们重点关注的,是原子坐标是如何产生“对称函数值” 的,或者用今天的机器学习术语,中间层(现在大家一般用图神经网络)的初始嵌入(embedding)是如何产生的。
二.嵌入
这篇文章作为这一系列的开始,其使用的方法肯定不是非常复杂的。在下图我们可以看到,对于每个原子,他的嵌入其实只有两个,分别是 G i 1 G_i^1 Gi1和 G i 2 G_i^2 Gi2。
分别来说, G i 1 G_i^1 Gi1负责径向部分,而 G i 2 G_i^2 Gi2负责角度部分。
1.径向部分
G
i
1
G_i^1
Gi1的表达式如下: 其中
f
c
(
R
i
j
)
f_c(R_{ij})
fc(Rij)是它的截断函数(下文再说明),超过一定距离,这个值就会是0。设置截断是必要的,否则我们的计算开销就会非常大,因为你不可能在计算一个原子的嵌入的时候,对整个体系都进行计算,所以我们只关注邻近的原子。而截断函数之前的那一个指数部分,是著名的高斯函数。这种函数形式,显然是受量子化学方法中高斯型基组的启发而产生的。
高斯函数
至于高斯函数中的两个参数是如何影响形状的,2021年《Four Generations of High-Dimensional Neural Network Potentials》这篇文章使用了一张图来说明:
图a:固定 R s R_s Rs=0Å,从深蓝色到绿色的值为 η \eta η = 0.0、0.03、0.08、0.16、0.3 和 0.5Å。
图b:固定 η = 0 \eta=0 η=0,从深蓝色到绿色的值为 R s R_s Rs = 1.5、2.0、2.5、3.0、3.5 和 4.0 Å。
截断函数
至于
f
c
(
R
i
j
)
f_c(R_{ij})
fc(Rij),它是截断函数,本文使用的是:
它的图像是这样的:
至于为什么使用余弦这样的截断函数,可以这么想:既然想要截断,最简单的想法肯定是使用一个阶梯函数:截断半径之内截断函数是1,截断半径之外是0。但这样在截断的那个点,我们的数值就会有一个突变。进一步,如果使用一个从1单调下降到0的直线,虽然函数本身不会发生突变,但它的一阶导在截断点就会突变。那么使用余弦函数就可以让函数值和它的高阶导数在这个截断点不产生突变。
2.角度部分
本文使用的函数是:
首先我们看到了截断函数,那么说明对于原子 i i i,这里的 j j j和 k k k都是落在它的截断半径之内的。也就是说,对于某个原子 i i i,我们是在对它的所有邻居中的任意两个进行求和。
这里的
θ
i
j
k
\theta_{ijk}
θijk的定义就是
∠
j
i
k
\angle jik
∠jik,即向量
e
⃗
i
j
\vec e_{ij}
e
λ
\lambda
λ和
ζ
\zeta
ζ取值的影响的图片依然来自上文给出的2021年的这篇文章:
λ = 1 \lambda=1 λ=1 的项以蓝色到黑色显示, λ = − 1 \lambda=−1 λ=−1 的项以橙色到棕色显示。从浅色调到深色调为 ζ = \zeta= ζ= 1、2、4 和 16。
三、总结
这篇文章的主要部分就到此结束了。下面,我们会阅读著名的ANI的文章,看看ANI相比BP势,做了哪些改进。
【论文阅读】Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces
- 一.背景
- 二.嵌入
- 1.径向部分
- 高斯函数
- 截断函数
- 2.角度部分
- 三、总结
一.背景
相信大家都接触过一些机器学习预测分子能量的算法,从大名鼎鼎的ANI、SchNet到后来的DimeNet、NequIP,这些算法都是基于神经网络的势函数。关于这些算法的原理和应用,网上有很多很好的资料,比如frank_haha老师的专栏。
图神经网络和分子表征_frank_haha的博客-CSDN博客
但是,当我们想要将这些算法应用于分子模拟或者类似的问题时,却发现,近年来的系统虽然在精确度上有着很高的提升,但从SchNet或类似时代的网络开始,因为消息传递的高开销,其速度就很不理想。那么我们如果想构建一个既快速又准确的神经网络势函数,就必须回到ANI时代,看看当时的神经网络是如何设计的。
提到ANI,就不得不提到BP势。2007年,Jörg Behler和Michele Parrinello(两位都是大牛)发布的《Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces》,至今已经获得了4000+的引用。那么这篇短短4页的文章,为什么能在当时一举成名呢?让我们仔细看一下它所使用的方法。
看到它的神经网络方法,和今天动辄几十层的网络相比,简直是简单到不能再简单。
S
S
S层是最简单的线性层和非线性层组成的神经网络,不是我们今天关注的重点。我们现在完全可以用图神经网络来取代这些。后面使用了每一个原子的能量加和产生分子的总能量,也是非常简单的想法。今天我们重点关注的,是原子坐标是如何产生“对称函数值” 的,或者用今天的机器学习术语,中间层(现在大家一般用图神经网络)的初始嵌入(embedding)是如何产生的。
二.嵌入
这篇文章作为这一系列的开始,其使用的方法肯定不是非常复杂的。在下图我们可以看到,对于每个原子,他的嵌入其实只有两个,分别是 G i 1 G_i^1 Gi1和 G i 2 G_i^2 Gi2。
分别来说, G i 1 G_i^1 Gi1负责径向部分,而 G i 2 G_i^2 Gi2负责角度部分。
1.径向部分
G
i
1
G_i^1
Gi1的表达式如下: 其中
f
c
(
R
i
j
)
f_c(R_{ij})
fc(Rij)是它的截断函数(下文再说明),超过一定距离,这个值就会是0。设置截断是必要的,否则我们的计算开销就会非常大,因为你不可能在计算一个原子的嵌入的时候,对整个体系都进行计算,所以我们只关注邻近的原子。而截断函数之前的那一个指数部分,是著名的高斯函数。这种函数形式,显然是受量子化学方法中高斯型基组的启发而产生的。
高斯函数
至于高斯函数中的两个参数是如何影响形状的,2021年《Four Generations of High-Dimensional Neural Network Potentials》这篇文章使用了一张图来说明:
图a:固定 R s R_s Rs=0Å,从深蓝色到绿色的值为 η \eta η = 0.0、0.03、0.08、0.16、0.3 和 0.5Å。
图b:固定 η = 0 \eta=0 η=0,从深蓝色到绿色的值为 R s R_s Rs = 1.5、2.0、2.5、3.0、3.5 和 4.0 Å。
截断函数
至于
f
c
(
R
i
j
)
f_c(R_{ij})
fc(Rij),它是截断函数,本文使用的是:
它的图像是这样的:
至于为什么使用余弦这样的截断函数,可以这么想:既然想要截断,最简单的想法肯定是使用一个阶梯函数:截断半径之内截断函数是1,截断半径之外是0。但这样在截断的那个点,我们的数值就会有一个突变。进一步,如果使用一个从1单调下降到0的直线,虽然函数本身不会发生突变,但它的一阶导在截断点就会突变。那么使用余弦函数就可以让函数值和它的高阶导数在这个截断点不产生突变。
2.角度部分
本文使用的函数是:
首先我们看到了截断函数,那么说明对于原子 i i i,这里的 j j j和 k k k都是落在它的截断半径之内的。也就是说,对于某个原子 i i i,我们是在对它的所有邻居中的任意两个进行求和。
这里的
θ
i
j
k
\theta_{ijk}
θijk的定义就是
∠
j
i
k
\angle jik
∠jik,即向量
e
⃗
i
j
\vec e_{ij}
e
λ
\lambda
λ和
ζ
\zeta
ζ取值的影响的图片依然来自上文给出的2021年的这篇文章:
λ = 1 \lambda=1 λ=1 的项以蓝色到黑色显示, λ = − 1 \lambda=−1 λ=−1 的项以橙色到棕色显示。从浅色调到深色调为 ζ = \zeta= ζ= 1、2、4 和 16。
三、总结
这篇文章的主要部分就到此结束了。下面,我们会阅读著名的ANI的文章,看看ANI相比BP势,做了哪些改进。