跟我学 AI 建模:分子动力学仿真模拟之 DeepMD-kit 框架
摘要:分子动力学仿真模拟的重点就在于如何建立模型描述分子间的相互作用。
本文分享自华为云社区《AI建模-分子动力学仿真》,作者: 木子_007 。
一、背景
分子动力学的仿真模拟广泛应用于医药、化学、生物、材料等领域,研究模拟物质的微观结构,可以帮助我们理解物质的宏观性质,甚至对物质的宏观性质做出预测,物质的微观结构是由原子间的相互作用决定的,所以分子动力学仿真模拟的重点就在于如何建立模型描述分子间的相互作用。
传统的建模手段有两种:DFT(第一性原理)和经验力场。
DFT
DFT 又称为第一性原理,具体建模和计算的过程非常复杂,需要很高深的数学和领域知识,了解一下即可
DFT 构建的模型,可以看做是黑盒,根据输入,可以计算出下一帧体系内原子的状态
DFT 的计算结果是比较准确的,但是因为计算代价太高,导致计算效率太低,只能够模拟几百个原子的物理体系。
经验力场
经验力场,是人们在研究某个物理体系时,根据其物理特性和一些实验结果,再加上一些处理经验,所构建的一个高阶函数,如研究惰性气体时的势能函数。
这种构建方式计算效率很高,但是其建模方式本身就决定了其精度不高。所以传统的分子动力学仿真存在一个困境,即无法效率和精度兼顾,而随着深度学习的普及使这种困境有了解决的思路。接下来就分子动力学仿真框架 DeepMD 的建模思想,做一个简单的介绍。
二、AI 建模(water H2O 为例)
微观粒子上的相互作用
本质上是关于原子空间坐标的一个高维函数,如果能够计算出这个函数,那么在进行仿真的时候,就可以性能与精度兼顾了,传统数学工具对高维函数缺乏有效手段,而 AI 深度学习,本质上就是一个数学工具。为高维函数的逼近提供了有力工具,接下来会介绍一下建模的思想和过程。首先理清楚我们的目的和已具备的条件:
目的:构建一个深度学习网络,最终可以训练计算出一个高维函数(训练出一个模型)来表示这个物理体系,最终计算出来的结果,近似于第一性原理的计算结果。
模型:
训练及测试数据:
由第一性原理计算出来的体系内不同帧的原子状态,包括,原子坐标 coord,空间尺度坐标 box,体系的能量 energy,体系中每个原子受到的力 force
训练:
训练 L2 级别的 loss
2.1 数据处理
通过上面的分析,我们要建立的这个模型,输入就是体系内原子的坐标,输出就是体系的势能和原子受到的力,但是,有一点需要特别注意,对于一个体系如水分子,如果一个水分子发生了旋转,平移或者它的两个氢原子发生交换,那么能量是不变的。
这种变化我们从直觉上理解是正常的,但是从模型的角度,这就要求,在坐标发生变化之后,输出还能保持与变化前一致,这对模型来说,往往是不可能的,所以在真正进入到深度学习 DNN 网络之前,需要对原始的原子三维坐标,做一些处理,使其能够满足空间中的平移,旋转和交换不变性。
2.1.1 平移不变性
要保证平移不变性,我们可以把空间中的原子左边转为原子间的相对距离,创建一个距离矩阵 Ri。
根据原子中心框架,对距离矩阵做平滑处理,将超过截断半径外的原子的影响置为 0。
2.1.2 交换和旋转不变性
要满足空间中的交换和旋转不变性,需要对距离矩阵做一些变化,这里介绍一下结论
创建矩阵 G,将环境描述符 D 表示为如下的形式,可以满足空间的交换不变。
同时,因为对距离矩阵做旋转变化后,仍然是其本身,所以也满足了旋转不变。
这样,空间的坐标就转为了具备实际物理意义的环境描述 D,就可以参与到接下来的 DNN 网络训练中。
2.2 整网训练
到这里,训练网络的构建已经完成,如下图所示
深度势能的构造如下:
环境描述
原子的受力根据其平滑势能计算,得到如下,实际上是对原子势能面计算梯度得到。
损失函数定义为
那么这个建模就完成了,之后就是具体的实现了。
三、小结
以上只是分享了一些 DeepMD-kit 框架的构建思想,分子动力学仿真领域还有很多框架和思想值得学习挖掘,比如为了增强模型对物理场景分布的覆盖,需要在训练的过程中随机采样,生成数据让模型做出预测,预测的不准,就把数据加入训练集继续训练,这个操作是包装了 DeepMD-kit 的另外一个框架 DeepGen 做的内容,以后有时间再总结一下其中的一些设计思想和算法优化的内容。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/1c164b09285ef5f7e02c4af3b】。文章转载请联系作者。
评论