分子动力学,是一种非常重要的研究材料性质的方法,但是想要很好的利用这个方法就很大程度的取决于计算方法的准确性以及效率。从头算分子动力学(AIMD)是一种非常准确的方法,但是它通常受限于计算效率以及规模。另一种常用的方法就是使用力场,即对势能进行参数化。然而这种传统的力场往往是需要人工与经验的参数调整,同样也是非常耗时与复杂的任务。机器学习力场(MLFF)是一种近期很火热的方法,它可以自动地利用AIMD得到的数据来预测目标结构的性质,从而有效的简化了力场的生成过程。然而在利用MLFF的过程中,如何去选择最为合适的训练集仍然是一个问题。这里我们就介绍一种利用主动学习方法在MD模拟过程的不断更新力场的方法MLFF on the fly。
那么这里的MLFF on the fly到底做了什么呢?
MLFF on the fly的基本思想是,在利用MLFF进行MD模拟的每一个步骤中,都对这个结构进行一次判断,并且求得一个参数γ(extrapolation grade),它的意义就是度量了这个结构是否能够被现有训练集良好的预测。当γ大于设定的阈值时,则会进行DFT计算并将DFT得到的力和能量加入训练集并替换掉之前被判断表现的不好的数据,并对新的训练集重新训练出新的模型用于接下来的MLFF的预测。流程图如下
On the fly在运行的过程中每一步的MD模拟前都会对当前的结构进行判断是否能够在当前的训练集的预测范围内,由此可以保证MLFF on the fly得到的结果与DFT得到的结果精度一直保持接近由训练集得到的精度,这句话可能有点怪,它的意思是on the fly这个方法本身并不会改变MLFF对结果预测的准确程度,而是对MLFF的应用场景做一个筛选,判断这个结构能不能被现有的模型良好的预测,也就是“interpolation”而非“extrapolation”。所以这个方法可以用于长时间的分子动力学模拟,可以保证结果的可靠性。
以LiGePS为例(体系原子数50个,一个gamma点,赝势为SG15,Ecut/Ecut2=60/240,Nose-Hoover热浴恒温600K,间隔2fs;MLFF选用线性模型,特征为2b&3b,训练集使用5000步(10ps)的MOVEMENT),extrapolation grade γ阈值设置为10(γ阈值需要大于等于1,越接近1和AIMD的结果误差越小,但同时重新训练的次数会更多)。对比AIMD和MLFF on the fly的结果(每隔30步mlff的预测计算一次DFT,对比两者每个原子上的力和能量的均方根误差),并附上下图两者的均方位移(MSD)与时间的关系。
第二点就是可以通过运行MLFF on the fly来得到一个更为可靠的力场。因为在运行过程中,主动学习算法 会不断地扩大能够预测的结构的边界,所以一个运行足够长的结果不仅有MD的结果还有可靠的力场可以用于相同体系的MLFF的MD模拟。值得注意的是,最后得到的训练集是一个非常小的训练集,在重新生成特征和训练时将会非常的迅速。但请不要往里面添加额外的训练集,这可能会很大程度的影响结果的准确性。
综上做个总结,那么该如何选择MLFF on the fly和MLFF的呢?首先MLFF on the fly本身就是对MLFF的方法的一个扩展使用方法,两者并无本质区别。那么在实际使用时值得关注的点就是运行的效率以及结果和DFT的贴合程度,所以当已有的AIMD的训练集覆盖面足够广时可以直接使用MLFF获得MD结果;当对训练集并不自信,需要主动学习方法进一步扩展训练集预测边界或者需要进行长时间模拟的话可以使用MLFF on the fly保证模型的结果不会太偏离DFT的结果。