一种基于强化学习构建分子反应力场的系统及方法与流程

文档序号:18124947发布日期:2019-07-10 09:50阅读:949来源:国知局
一种基于强化学习构建分子反应力场的系统及方法与流程

本发明涉及材料信息学技术领域,尤其涉及一种基于强化学习构建分子反应力场的系统及方法。



背景技术:

分子动力学方法是计算材料学模拟实验的一种理论方法,是研究凝聚态系统的有力科研工具。该方法不仅可以得到原子的运动轨迹,还可以观察到原子运动过程中的各种微观细节,可以深入认知原子尺度的现象机理。

随着高性能计算机的普及与改进,分子模拟软件开始逐渐普及,例如namd、gromacs、amber、lammps等。这些软件能够较好地通过模拟的方法代替实验来得出结果,可以有效地减少材料设计的试错成本。由于模拟时需要构造原子或分子的势函数或力场参数,传统的分子力场构建通常采用遗传算法,而这一算法有着计算时间长,大规模实验准确性误差难以量化的问题,对使用者的计算机性能、知识掌握能力、结果预判能力提出了很大的挑战。



技术实现要素:

本发明要解决的技术问题是针对上述现有技术的不足,提供一种基于强化学习构建分子反应力场的系统及方法,本方法可以快速、准确优化得到原子体系的反应力场用于分子动力学模拟,从而大幅度缩减材料的研发成本,提升材料的研发效率。

为解决上述技术问题,本发明所采取的技术方案是:

一方面,本发明提供一种基于强化学习构建分子反应力场的系统,包括输入输出模块、参数与配置模块、分子动力学接口模块、环境设置模块、优化模块;

输入输出模块用于输入目标分子的初始反应力场描述文件和输出优化力场文件,并将初始反应力场描述文件传输至参数与配置模块;

参数与配置模块用于读取初始反应力场描述文件对文件进行解析,根据解析后的初始反应力场描述文件用户选择算法并载入与该算法相对应的强化学习模型,并将强化学习模型传输至优化模块;

环境设置模块用于保存数据和输出初始力场参数,将初始力场参数输出至分子动力学接口模块,所述保存数据包括目标分子的几何文件、目标分子的参考训练集和目标分子的参数集;

分子动力学模块用于提取环境设置模块中的力场参数并进行分子动力学模拟获取目标分子的材料物性误差,并将获得的误差输出至优化模块;

优化模块用于根据目标分子的材料物性误差通过强化学习模型对力场参数进行优化,并根据优化后的力场参数形成优化力场文件,将得到的优化力场文件传输至输入输出模块;

另一方面,本发明还提供一种基于强化学习构建分子反应力场的方法,通过一种基于强化学习构建分子反应力场的系统实现,包括以下步骤:

步骤1:用户通过输入输出模块输入目标分子的初始反应力场描述文件,并解析该文件,用户在解析后的初始反应力场描述文件中选择用户需要的算法并载入与该算法相对应的强化学习模型;

所述的目标分子的初始反应力场描述文件的解析方法为:通过正则表达式删除注释、定位数据区、识别头文件和分隔符,并将解析后的数据保存到列表容器中,封装成为方便对其进行读写操作的对象;定位待优化的参数,封装待优化的参数,然后对运算符进行重载。

步骤2:根据目标分子从环境设置模块选取初始力场参数q={q1,q1,…qn},其中n代表初始力场参数总数;所述环境设置模块中包括目标分子的几何文件、目标分子的参考训练集和目标分子的参数集;

步骤3:采用分子动力学模块对初始力场参数进行分子动力学模拟,获取目标分子的材料物性数据;并通过奖励函数获取误差δerr1;

步骤4:调整初始力场参数大小继续进行模拟,通过奖励函数获取误差δerr2;

步骤5:比较误差δerr2与误差δerr1,判断力场参数调整方向;若判断误差减小,则保存调整后的力场参数q′={q′1,q′1,…q′n},执行步骤6;若误差增大,则反向调节力场参数,并返回步骤4;

步骤6:将步骤1中选择的强化学习模型加以训练,基于强化学习算法产生训练后的力场参数q″={q″1,q″1,…q″n},比较训练后力场参数与步骤2中选取的初始力场参数或步骤5中得到的调整后的力场参数,将两者的差值与预设误差值进行判断,若其两者的差值大于预设误差值,则执行步骤4;若其两者的差值小于等于预设误差值,则将训练后力场参数q″={q″1,q″1,…q″n}转换为优化力场文件,将优化力场文件传输至输入输出模块并输出优化力场文件;

所述的强化学习算法采用了优先回放机制,选择td偏差δ作为设置采样权重的标准,td偏差大,该状态处的值函数与td目标的差距大,观察序列j处对应的td偏差为δj,则该观察序列处的采样概率为:

其中,p(j)表示观察序列j处的采样概率,pjε表示在采样率为ε时在观察序列j处的采样率,pkε表示表示在采样率为ε时在观察序列集k的采样率之和。其中pkε由td偏差δj决定,这里rank(j)根据|δj|的排序得到;

训练过程中使用的参数更新如下式所示:

其中θt+1是更新后的参数,θt表示更新前的参数,s代表更新前状态,a表示当前动作,θ表示当前参数,s′代表更新后状态,a′表示下一动作,通过函数获得,θ-表示下一参数。α表示根据输入条件选择的学习率,表示td目标值,其中r表示误差变化率reward,γ表示折扣因子,是使得(s′,a′;θ)取得最大值所对应的a′,表示状态为s′,动作为a′,参数为θ-的奖赏最大值。q(s,a;θ)为状态为s,动作为a,参数为θ的奖赏值,是状态为s,动作为a,参数为θ的奖赏变化。

所述步骤3中的奖励函数为每次执行后会返回误差的变化率,误差的变化率是当前状态也就是当前解和上一个状态之间的距离;每次更新后得到的新的力场参数进行重新评估,同时得到当前反应力场参数对应的误差值;

所述误差的变化率的表达式为:

reward=errt-1-errt

其中errt表示在t时间步上的误差;errt-1表示在t-1时间步上的误差;误差errt的公式为:

其中,表示累积奖赏值的实际值,表示累积奖赏值的理想值,weighti表示权重,n表示时间步总数。

所述步骤6中的强化学习算法中还包括统计累计步数t的计数器变量,如果在某一个回合中当前迭代步误差值erri小于历史最小误差值err*,并且误差的变化率和强化学习过程中误差的最小值都小于某一规定阈值,当累计步数t小于规定阈值时,每运行一次,累计步数自增1,表示为t←t+1,当累计步数t大于其设定值tmax,则认为已经进入最优位置点,放缓搜索步伐通过调整学习率α或者动作幅值,等当前回合结束后,使用该回合内的误差最小值对err*进行更新,当某一回合的迭代误差小于历史最小误差,则将当前误差值替换为历史最小误差,表示为err*←minimum{erri},实现对重要的经验进行重新强化学习。

采用上述技术方案所产生的有益效果在于:本发明提供的一种基于强化学习构建分子反应力场的系统及方法;通过本发明所提出的基于强化学习的分子动力学反应力场构造方法,用户可以通过参数与配置模块选定特定力场参数;基于选定的参数和优化算法模块;使用多进程的方式与环境模块交互来实现并行训练;使用输入输出模块与分子动力学模拟衔接并获得回报及其状态;采取动作策略改变力场参数的值。本方法可以快速、准确优化得到原子体系的反应力场用于分子动力学模拟,从而大幅度缩减材料的研发成本,提升材料的研发效率。

附图说明

图1为本发明实施例提供的基于强化学习构建分子反应力场的系统结构图;

图2为本发明实施例提供的基于强化学习构建分子反应力场的方法流程图;

图3为本发明实施例提供的强化学习反应力场参数优化系统流程;

图4为本发明实施例提供的dqn神经网络结构模型示意图;

图5为本发明实施例提供的基于强化学习构建分子反应力场的方法与其它算法的效率对比图,其中a为迭代步数的效率对比图,b为最优误差的效率对比图;

图6为本发明第一实施例提供的溴元素力场参数优化误差及回报值变化图,其中a为迭代回报值变化图,b为过程误差变化图;

图7为本发明第二实施例提供的hf分子动力学模拟的效果图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

反应力场数据库文件与环境之间的交互及强化学习训练过程中产生的数据存储与读取,这都是对大数据进行操作,直接读入内存不会导致内存溢出,程序不能正常运行,因此本实施例选择使用分布式系统对数据进行存储。

对于反应力场数据库文件的分布式存储本方法采用当前最流行的hadoop分布式文件系统(hadoopdistributedfilesystem,hdfs),这是一个高度容错性的系统,并可以部署在廉价的机器上。hdfs本质上是一个主从复合结构,一个hdfs集群由一个名字节点(namenode)和多个数据节点(datanode)组成。由于实验室环境所限所以本方法选择这种可以部署在廉价机器上的分布式系统。

本方法选用四台配置为运行内存4g,主硬盘1tb,cpu为intel(r)core(tm)i5-4590的联想90cxcto1ww主机来搭建分布式存储系统,其中一台作为主节点,另外三台作为从节点。

如图1所示,本实施例的方法如下所述。

一方面,本发明提供一种基于强化学习构建分子反应力场的系统,包括输入输出模块、参数与配置模块、分子动力学接口模块、环境设置模块、优化模块;

输入输出模块用于输入目标分子的初始反应力场描述文件和输出优化力场文件,并将初始反应力场描述文件传输至参数与配置模块;

参数与配置模块用于读取初始反应力场描述文件对文件进行解析,根据解析后的初始反应力场描述文件用户选择算法并载入与该算法相对应的强化学习模型,并将强化学习模型传输至优化模块;

环境设置模块用于保存数据和输出初始力场参数,将初始力场参数输出至分子动力学接口模块,所述保存数据包括目标分子的几何文件、目标分子的参考训练集和目标分子的参数集;

分子动力学模块用于提取环境设置模块中的力场参数并进行分子动力学模拟获取目标分子的材料物性误差,并将获得的误差输出至优化模块;

优化模块用于根据材料物性误差对力场参数进行优化,并根据优化后的力场参数形成优化力场文件,将得到的优化力场文件传输至输入输出模块;

另一方面,本发明还提供一种基于强化学习构建分子反应力场的方法,通过一种基于强化学习构建分子反应力场的系统实现,如图2所示,包括以下步骤:

步骤1:用户通过输入输出模块输入目标分子的初始反应力场描述文件,并解析该文件,用户在解析后的初始反应力场描述文件中选择用户需要的算法并载入与该算法相对应的强化学习模型;

目标分子的初始反应力场描述文件(forcefieldfile)对于整个强化学习反应力场参数计算系统最为重要。反应力场描述文件分为头文件、注释、数据区、分隔符等,这是一种非常复杂的文件形式,并不能直接被强化学习环境使用。因此,需要对这个反应力场解释文件进行预处理,处理成强化学习环境可以直接使用的形式。

目标分子的初始反应力场描述文件的解析方法为:通过正则表达式删除注释、定位数据区、识别头文件和分隔符,并将解析后的数据保存到列表容器中,封装成为方便对其进行读写操作的对象;定位待优化的参数,封装待优化的参数,然后对运算符进行重载。

步骤2:根据目标分子从环境设置模块选取初始力场参数q={q1,q1,…qn},其中n代表初始力场参数总数;所述环境设置模块中包括目标分子的几何文件、目标分子的参考训练集和目标分子的参数集;初始力场参数是在环境设置模块中的目标分子的参数集内。

步骤3:采用分子动力学模块对初始力场参数进行分子动力学模拟,获取目标分子的材料物性数据;并通过奖励函数获取误差δerr1;

奖励函数为一个连续型的奖励函数,奖励函数函数设计主要借助garffield来对每次更新后得到的新的力场参数进行重新评估,这时garffield会给出一个当前反应力场参数对应的误差值,但是为了与强化学习中的标准回报函数形式相对应,本方法将误差的变化率作为reward;每次执行后会返回误差的变化率,误差的变化率是当前状态也就是当前解和上一个状态之间的距离;每次更新后得到的新的力场参数进行重新评估,同时得到当前反应力场参数对应的误差值;

所述误差的变化率的表达式为:

reward=errt-1-errt

其中errt表示在t时间步上的误差;errt-1表示在t-1时间步上的误差;误差errt的公式为:

其中,表示累积奖赏值的实际值,表示累积奖赏值的理想值,weighti表示权重,n表示时间步总数。

可以看出,garffield计算的误差整体是一个加权后求和的误差,其中分子部分为在某一参数下,量子力学计算得到的参数值与反应力场计算得到的近似值之间的差值。

这样得到的reward可以标识上一个状态采取动作质量的好坏程度,同样也可以指示出在当前状态下采取这个动作后与理想状态的差距。如果在某一个状态下采取了此次动作之后,差距变大了,那么就要减小下次再到达这个状态选择这个动作的概率;相反,就要增加选择该动作的概率值,这都将通过更新调整神经网络的参数值实现。

步骤4:调整初始力场参数大小继续进行模拟,通过奖励函数获取误差δerr2;

步骤5:比较误差δerr2与误差δerr1,判断力场参数调整方向;若判断误差减小,则保存调整后的力场参数q′={q′1,q′1,…q′n},执行步骤6;若误差增大,则反向调节力场参数,并返回步骤4;

步骤6:根据环境模块选择需要强化学习模型,并在运行的时候对初始强化学习模型加以训练,基于强化学习算法产生训练后的力场参数q″={q″1,q″1,…q″n},比较训练后力场参数与步骤2中选取的初始力场参数或步骤5中得到的调整后的力场参数,将两者的差值与预设误差值进行判断,若其两者的差值大于预设误差值,则执行步骤4;若其两者的差值小于等于预设误差值,则将训练后力场参数q″={q″1,q″1,…q″n}转换为优化力场文件,将优化力场文件传输至输入输出模块并输出优化力场文件。

强化学习算法采用的是基于attention机制的dqn强化学习算法,该算法在实现的过程中采用了经验回放机制,即通过构建一个经验回放池把每个时间步agent与环境交互得到的转移样本(st,at,rt,st+1)储存到经验回放池d中,训练时在经验池中进行随机批量采样,使用采样得到的样本进行训练。本方法采用了优先回放机制(prioritizedreplay),其核心思想就是打破均匀采样,赋予学习效率高的状态更大的采样权重。选择td偏差δ作为设置采样权重的标准,td偏差大,该状态处的值函数与td目标的差距大,观察序列j处对应的td偏差为δj,则该观察序列处的采样概率为:

其中,p(j)表示观察序列j处的采样概率,pjε表示在采样率为ε时在观察序列j处的采样率,pkε表示表示在采样率为ε时在观察序列集k的采样率之和。其中pkε由td偏差δj决定,主要分为两种方式,首先是pj=|δj|+ε;其次是这里rank(j)根据|δj|的排序得到,本方法选择第二种方案,在具体代码实现中设置d的大小为5000。

本方法搭建td目标网络用来计算td目标值,除此之外还有一个用来逼近值函数的网络,这两个网络的结构相同都是使用上面提到的基础dqn网络,将td目标网络参数化用θ-表示,用于值函数逼近的网络表示为θ。在算法开始运行阶段,初始化两个网络参数θ-=θ,先进行经验存放,然后采样训练,在训练过程中用于动作值函数逼近的网络每一步都更新,而计算td目标值的网络参数先固定一段时间步,然后再进行更新。由于dqn网络模型是神经网络模型,因此在训练过程中使用的是梯度下降算法:

其中,为td目标值,可看到是用θ-网络计算的,但是由于此处计算时采用了最大化操作,会导致估计的值函数会比真实的值函数大也就是过估计问题,这将导致最后找到的策略不一定是最优策略。为了解决这个问题,借鉴doubledqn的思想将动作的选择和动作的评估分别用不同的值函数表示,改变后训练过程中使用的参数更新如下式所示:

其中θt+1是更新后的参数,θt表示更新前的参数,s代表更新前状态,a表示当前动作,θ表示当前参数,s′代表更新后状态,a′表示下一动作,通过函数获得,θ-表示下一参数。α表示根据输入条件选择的学习率,表示td目标值,其中r表示误差变化率reward,γ表示折扣因子,是使得(s′,a′;θ)取得最大值所对应的a′,表示状态为s′,动作为a′,参数为θ-的奖赏最大值。q(s,a;θ)为状态为s,动作为a,参数为θ的奖赏值,是状态为s,动作为a,参数为θ的奖赏变化。

这样反应力场dqn网络结合了优先经验回放和doubledqn两种方法,这样网络将会更加容易稳定收敛,鲁棒性更好。反应力场dqn网络由4个全连接层实现,如图4所示,隐藏层使用的是relu激活函数,输出层的激活函数是softmax输出的是每个动作对应的概率值。整个网络模型在linux系统下,以python为编程语言并借助tensorflow1.7基础框架完成完整搭建。网络层数和每层神经元的个数是通过交叉验证选择,在算法运行过程中会在向经验池中不断存储数据,将这些数据进行标定分成测试集和验证集,选择在测试集和验证集上都表现比较好的模型。

所述强化学习算法中还包括统计累计步数t的计数器变量,如果在某一个回合中当前迭代步误差值erri小于历史最小误差值err*,并且误差的变化率和强化学习过程中误差的最小值都小于某一规定阈值,当累计步数t小于规定阈值时,每运行一次,累计步数自增1,表示为t←t+1,当累计步数t大于其设定值tmax,则认为已经进入最优位置点,放缓搜索步伐通过调整学习率α或者动作幅值,等当前回合结束后,使用该回合内的误差最小值对err*进行更新,当某一回合的迭代误差小于历史最小误差,则将当前误差值替换为历史最小误差,表示为err*←minimum{erri},实现对重要的经验进行重新强化学习。

如图3所示,由优化系统流程中可看到,最开始是数据库部分主要就是建立某一种体系对应的标准格式的garffield优化器输入文件,然后通过输入输出模块读取输入文件中的力场文件并进行解析,得到需要调整的参数和其对应的可调阈值;读取garffield四个输入文件中的params和ffield文件并进行解析计算得到需要调整的参数值以及参数历史值和当前梯度和历史梯度以及reward即是基本要素中对应的状态,注意初始状态中的参数历史值设置为0,历史梯度也对应设置为0。接下来按照强化学习模型设计章节中提到的设计s,a,r的方法分别建立起强化学习的状态空间、动作空间和回报函数;接下来研究并设计强化学习算法进行反应力场参数优化,最后设计相关实验进行算法模型评估及力场质量评估。

具体模型的训练过程为:在某一初始状态下,按照一定策略选择一个动作并执行(这里对应着该变力场参数并写入力场文件),将新的力场文件和剩余的garffield输入文件输入garffield优化器当中进行误差计算并求出与上一次误差之间的变化值,将其作为reward返回。新的力场参数对应着新的状态,再次选择动作并执行动作,周而复始下去,最终得到可以寻找到最优反应力场参数组合的策略。

本实施例选择了溴元素分子力场参数优化过程进行演示。算例所使用的参考数据集来源于第一性原理计算结果,其采用b3lyp密度泛函理论方法,基组选择6-31+g(d)和sdd赝势基组的混合基组,参数化过程中量子力学dft计算是用gaussian09进行的。

采用强化学习算法优化后得到的力场文件用于分子动力学模拟的效果图,如图7所示,图中显示分子动力学方法模拟出的解离势能曲线与第一性原理方法获得的标准数据符合的非常好,特别是在非平衡位置处,效果要优于传统的遗传算法获得的力场参数。

采用attention-dqn强化学习算法优化卤族元素力场参数与其它算法的效率对比图,如图5所示,图5中a所示纵坐标是迭代步数,图5中b所示纵坐标是最优误差,横坐标对应每一种元素,从最优误差变化条形图上可以看出三种算法的整体趋势都下降的,但是在整体的迭代步数上,attention-dqn相较其它两种算法更快找到最优解,可以证明本方法技术方案的高效性。

具体的迭代回报值(如图6中a所示)和过程误差(如图6中b所示)的变化。在溴元素的力场参数优化过程中,误差及reward变化曲线与氯元素的变化趋势相近,因为氯与溴在同一主族,并且理化性质较为类似,唯一不同就是其电子结构溴比氯多一层,因此在到达最优值需要的迭代步上溴元素与氯元素相比到达最优参数需要多近一倍的迭代步数,这也印证其反应力场形式比氯更为复杂。在计算精度上基于attention机制的dqn算法误差为8.1671,与传统的garffield遗传算法精度(8.0714)极为接近,但是dqn算法效率要高于遗传算法。同时,随着循环步数的增加,力场参数的回报值在增加(如图6a),迭代误差在减小(如图6b),验证了强化学习算法的可行性。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1