文章目录
- 前言
- 一、模型架构
- 二、嵌入
- 1.原子类型区分
- 2.角度函数修正
前言
书接上文:
【论文阅读】Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces
在BP势这篇文章发表10年之后,2017年,ANI横空出世,至今仍然是各大榜单上被比较的对象。虽然在机器学习榜单的准确率上,ANI通常是最低的那一个,但如果我们把目标放在速度上,那么ANI这个简单的机器学习势仍然在称霸。从2007年到2017年是机器学习突飞猛进的10年。让我们打开ANI-1: an extensible neural network potential with DFT accuracy at force field computational cost这篇论文,看看2017年的ANI,对BP做出了哪些改进。
一、模型架构
对于一个机器学习模型,第一眼肯定要关注它的模型架构:
ANI模型的特殊之处,或者说相比BP势和之后的一些图神经网络(GNN)模型来说,最大的特点是,他在创建embedding后,对每一种元素用了不同的网络进行预测。当然,这么做有好有坏,好处是可以最大程度利用原子种类信息,坏处是模型会变的复杂,可拓展性会下降。
在这篇文章中,不同于之后的GNN相对复杂的消息传递环节,它使用的中间的NNP部分只是一些简单的线性和非线性的网络。本系列关注的重点是,在进入NNP之前,
G
⃗
i
u
\vec{G}_i^u
G
二、嵌入
TorchANI: A Free and Open Source PyTorch-Based Deep Learning Implementation of the ANI Neural Network Potentials 这篇文章中,显示了
G
⃗
i
u
\vec{G}_i^u
G
我们可以看到,和BP势类似,ANI依旧分为径向和角度两部分。但是不同的地方大概有两点:1.比起BP势只将径向和角度部分加和到同一个位置,ANI区分了不同的原子类型。2.径向部分的函数形式略有不同。
那让我们分别看一下这两点。
1.原子类型区分
这一点如何理解呢?在ANI的SI里,有这么一幅图作为例子:
这幅图以甲酸里的碳作为例子,在径向部分,碳在截断距离之内有氢、氧,所以把它们分别放在了嵌入向量的对应位置。而在它的氧这个位置,应该有两个氧,于是就把他们加和。角度部分也是相同的处理, ∠ H C O \angle HCO ∠HCO就放在HO的位置上。
这么做的好处显而易见,不同类型的键角被区分开了,在后续提取的时候更加精确,精度肯定更好。而坏处是,原子的嵌入向量长度会变得很长,如果只有4个元素还好,如果要引入更多的元素,那么一定会导致其他的问题。
关于这一点,在SI中,他们给出了如果不使用不同的种类,结果会怎么样。有兴趣的同学可以去看一下具体的数值,显然结果是不如区分开的。
2.角度函数修正
在这里我们贴出BP和ANI两个角度函数的具体形式,以作对比:(图来自我的知乎,可能有水印,凑活看一下)
可以看到,对于角度函数我们可以发现的不同是:
(1)对于截断函数和前面的指数,BP考虑了 i j ij ij 、 i k ik ik 、 j k jk jk 之间的距离,而ANI没有考虑 j k jk jk。Four Generations of High-Dimensional Neural Network Potentials中,Behler是这么解释的:
对于BP,我们有3个截断函数相乘,这3个截断函数的值都小于1,相乘后整体就更小了,所以函数值的范围更小。所以通常的做法是将每个对称函数的值范围重新调整为区间 [0,1],或者采用ANI形式的只考虑两项的截断函数。
也就是说,下图所示的形式中,如果 R 13 R_{13} R13和 R 23 R_{23} R23都超过了截止半径,那么BP只会考虑蓝色部分的三元组,但ANI会考虑到红色部分:
(2)ANI多引入了
θ
s
\theta_s
θs 和
R
s
R_s
Rs 这两个参数,其中
θ
s
\theta_s
θs可以给角度进行一个平移:
而
R
s
R_s
Rs部分和径向部分(下图)的参数保持一致,是为了可以根据与相邻原子的平均距离来考虑径向壳内的角度环境。说白了就是多了一个自由度,函数的形状变化更自由了。
ANI的优点和缺点都很明显,下面我们可以看看有什么其他的工作对此进行改进。
文章目录
- 前言
- 一、模型架构
- 二、嵌入
- 1.原子类型区分
- 2.角度函数修正
前言
书接上文:
【论文阅读】Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces
在BP势这篇文章发表10年之后,2017年,ANI横空出世,至今仍然是各大榜单上被比较的对象。虽然在机器学习榜单的准确率上,ANI通常是最低的那一个,但如果我们把目标放在速度上,那么ANI这个简单的机器学习势仍然在称霸。从2007年到2017年是机器学习突飞猛进的10年。让我们打开ANI-1: an extensible neural network potential with DFT accuracy at force field computational cost这篇论文,看看2017年的ANI,对BP做出了哪些改进。
一、模型架构
对于一个机器学习模型,第一眼肯定要关注它的模型架构:
ANI模型的特殊之处,或者说相比BP势和之后的一些图神经网络(GNN)模型来说,最大的特点是,他在创建embedding后,对每一种元素用了不同的网络进行预测。当然,这么做有好有坏,好处是可以最大程度利用原子种类信息,坏处是模型会变的复杂,可拓展性会下降。
在这篇文章中,不同于之后的GNN相对复杂的消息传递环节,它使用的中间的NNP部分只是一些简单的线性和非线性的网络。本系列关注的重点是,在进入NNP之前,
G
⃗
i
u
\vec{G}_i^u
G
二、嵌入
TorchANI: A Free and Open Source PyTorch-Based Deep Learning Implementation of the ANI Neural Network Potentials 这篇文章中,显示了
G
⃗
i
u
\vec{G}_i^u
G
我们可以看到,和BP势类似,ANI依旧分为径向和角度两部分。但是不同的地方大概有两点:1.比起BP势只将径向和角度部分加和到同一个位置,ANI区分了不同的原子类型。2.径向部分的函数形式略有不同。
那让我们分别看一下这两点。
1.原子类型区分
这一点如何理解呢?在ANI的SI里,有这么一幅图作为例子:
这幅图以甲酸里的碳作为例子,在径向部分,碳在截断距离之内有氢、氧,所以把它们分别放在了嵌入向量的对应位置。而在它的氧这个位置,应该有两个氧,于是就把他们加和。角度部分也是相同的处理, ∠ H C O \angle HCO ∠HCO就放在HO的位置上。
这么做的好处显而易见,不同类型的键角被区分开了,在后续提取的时候更加精确,精度肯定更好。而坏处是,原子的嵌入向量长度会变得很长,如果只有4个元素还好,如果要引入更多的元素,那么一定会导致其他的问题。
关于这一点,在SI中,他们给出了如果不使用不同的种类,结果会怎么样。有兴趣的同学可以去看一下具体的数值,显然结果是不如区分开的。
2.角度函数修正
在这里我们贴出BP和ANI两个角度函数的具体形式,以作对比:(图来自我的知乎,可能有水印,凑活看一下)
可以看到,对于角度函数我们可以发现的不同是:
(1)对于截断函数和前面的指数,BP考虑了 i j ij ij 、 i k ik ik 、 j k jk jk 之间的距离,而ANI没有考虑 j k jk jk。Four Generations of High-Dimensional Neural Network Potentials中,Behler是这么解释的:
对于BP,我们有3个截断函数相乘,这3个截断函数的值都小于1,相乘后整体就更小了,所以函数值的范围更小。所以通常的做法是将每个对称函数的值范围重新调整为区间 [0,1],或者采用ANI形式的只考虑两项的截断函数。
也就是说,下图所示的形式中,如果 R 13 R_{13} R13和 R 23 R_{23} R23都超过了截止半径,那么BP只会考虑蓝色部分的三元组,但ANI会考虑到红色部分:
(2)ANI多引入了
θ
s
\theta_s
θs 和
R
s
R_s
Rs 这两个参数,其中
θ
s
\theta_s
θs可以给角度进行一个平移:
而
R
s
R_s
Rs部分和径向部分(下图)的参数保持一致,是为了可以根据与相邻原子的平均距离来考虑径向壳内的角度环境。说白了就是多了一个自由度,函数的形状变化更自由了。
ANI的优点和缺点都很明显,下面我们可以看看有什么其他的工作对此进行改进。