New Journal of Physics:不同机器学习力场特征的准确性测试

文章信息

作者:Ting Han1, Jie Li1, Liping Liu2, Fengyu Li1, * and Lin-Wang Wang2, *

通信单位:内蒙古大学物理科学与技术学院、中国科学院半导体研究所

DOI:10.1088/1367-2630/acf2bb

研究背景

近年来,基于DFT数据的机器学习力场(machine learning force field, MLFF)发展迅速。而MLFF预测能量和力的准确性依赖于对化学环境的准确描述(特征)。目前已经提出了诸多特征方法,但是对于给定的物理问题如何选择合适的特征方法仍然是个难题。汪林望教授课题组和内蒙古大学李锋钰老师课题组使用相同的系统、相同的数据集、相同的数量特征,系统地比较了9种不同特征方法的准确性,为如何选择特征方法提供了宝贵思路。

文章简介

本文基于S、C体系,测试了9种特征类型,包括余弦特征(2-body+3-body)、高斯特征(2-body+3-body)、Moment Tensor Potential(MTP)特征、spectral neighbor analysis potential(SNAP)特征、Chebyshev多项式(DP-Chebyshev)特征和高斯多项式(DP-Gaussian)特征和原子簇展开(Atomic Cluster Expansion,ACE)特征。通过比较各特征类型对系统总能、群能、力的均方误差(RMSE)和损失函数误差,筛选出误差最小的最优特征方法为MTP,并在S、C和Cu系统中测试验证了MTP模拟的精度。

此外考虑到余弦(2-body+3-body)特征和高斯(2-body+3-body)特征对群能、总能和力模拟的较小误差,本文提出对于一个给定的系统,可以先用线性模型对不同的特征进行测试,然后将该特征集用于神经网络模型的训练。为了扩展数据集进行训练,我们采用了能量分解方法,将DFT总能分解到单个原子或者多个原子上。

01

单原子能量Ei:将DFT总能量划分为原子能量,每个原子的能量之和等于系统的总能量

由于Ei只依赖于原子i附近的原子构型,这种局部特性为MLFF模型提供了比作为总能量导数的力更加有效的数据。

02

组群多原子能量Egroup:为了减少局部能量密度分配给附近原子时的非唯一性,本文定义了一个群能(𝐸group):

为DFT计算出的围绕中心原子i的原子能量的加权平均。

主要内容

01

使用DFT进行AIMD计算产生数据集

具体步骤如表1所示。计算得到3个S训练数据集:S-300 K分子动力学轨迹,S-1500 K分子动力学轨迹,S-300 K和S-1500 K轨迹组合;以及4个不同构型的C在 300-3500K的训练数据集。相应温度下的S和C结构分别如图2和3所示。

表1 S和C体系及其AIMD步骤

图2 S的结构: (a)初始s8环结构; (b) 300k下2 ps模拟后的结构; (c) 在1500 K下模拟2 ps后的结构

图3 (a)金刚石、(b)石墨烯、(c)类石墨烯 (d) m -碳结构在0 K和300-3500K下的俯视图和侧视图

02

通过拟合总能、群能、力和损失函数的误差比较不同特征方法的准确性

S-300 K和S-1500 K数据集(包含256000个原子能量和768000个原子力),S-300K和S-1500 K组合数据集(包含12000个原子能量和1536000个原子力)以及4种不同结构C-300-3500K数据集的总能、群能、力和损失函数的均方根误差分别如图4、5、6所示。

对于S-300 K体系(图4实线),MTP特征对总能的拟合效果最好(RMSE~0.060 eV);余弦(2-body+3-body)特征对群能拟合效果最好(RMSE~0.004 eV); 高斯特征(2-body+3-body)拟合力效果最好(RMSE~0.09 eV/Å)。总体而言,MTP特征为最佳线性模型,损失函数误差为0.002。

对于S-1500 K系统(图4虚线),各RMSE均大于S-300 K系统,群能、总能和力的均方根误差最小值分别在0.017 eV、0.263 eV和0.419 eV/Å左右,损失函数的拟合误差为0.036。除了力的最小误差由ACE特征得到,群能、总能和损失函数的最小误差均由MTP特征得到。

S-300 K和S-1500 K组合数据集与S-1500K数据集有类似的结果,MTP线性模型对总能量(RMSE~0.269 eV)、群能(RMSE~0.013 eV)和损失函数(RMSE~0.027)的误差最小,ACE特征是力精度的最佳特征类型(RMSE ~0.270 eV/Å)。但是由图5可知,组合数据集的各项误差均大于S-300 K的拟合结果,说明复杂的模拟系统对力场的拟合来说具有更高的挑战性。

图4 在S-300 K数据集(实线)和S-1500 K数据集(虚线)中,不同特征类型对于(a)总能、(b)群能、(c)力、(d)损失函数的训练误差。在python-ace包中使用了一个不同的无群能量损耗函数,故ACE结果仅在总能和力的图中显示

图5 在S-300 K和S-1500 K组合数据集中,不同特征类型对于 (a)总能、(b)群能、(c)力、(d)损失函数的训练误差。在python-ace包中使用了不同的无群能量损失函数,故ACE结果仅在总能量和力的图中显示

对于C系统,ACE模拟存在很大的错误,故只讨论其他6种特征方法的结果。如图6所示,MTP线性模型在拟合群能(RMSE~0.101 eV)、总能(RMSE~0.012 eV)方面表现出优势; 高斯(2-body)特征和余弦(3-body)特征在拟合力(RMSE~0.110 eV/Å)方面具有优势; MTP特征在损失函数上误差接近(RMSE~0.016)。

图6 在C系统的组合数据集中,不同特征类型对于 (a)总能,(b)群能,(c)力和(d)损失函数的训练误差

03

选择最优特征方法MTP,对测试集进行训练

对于S系统:使用不在训练集内的S结构,利用DFT分别在300K和1500K下进行6ps 的AIMD计算,并以最后1ps为测试集。用S-300K、S-1500K和S-300-1500K模型对两个测试集进行模拟。其与DFT计算相比,训练模型和测试集在同一温度下时,总能和力都有很好的匹配性,如图7和8所示。此外,当训练模型和测试集不在同一温度范围,模拟的误差非常大,这是由于不同温度下训练模型与测试集中的结构信息不同。

图7 基于相同轨迹的MLFF模型和DFT计算能量的比较:基于S-300K模型(a, b)、S-1500K模型(c, d)和组合模型(e, f)对S-300K-new集(a, c, e)和S-1500K-new集(b, d, f)

图8 基于相同轨迹的MLFF模型和DFT计算受力的比较: S-300K模型(a, b)、S-1500K模型(c, d)和组合模型(e, f)对S-300K-new (a, c, e)和S-1500K-new (b, d, f)的影响

对于C系统:选择训练集之外的C结构进行了300K 6ps的NVT AIMD模拟,以最后1ps轨迹作为测试集。如图9 (a) 和 (b) 所示,MTP-LR模型在AIMD轨迹上的总能量和力也与DFT吻合良好。C体系的总能和力的误差分别为0.22eV和0.09 eV/Å。

对除C和S以外的Cu系统:以Cu-300-1000 K的NVT 2 ps AIMD模拟作为训练集;在1000 K时对训练集之外的Cu结构进行了1 ps的NVT AIMD仿真,作为测试集。如图9 (c)和 (d) 所示,可见Cu系统的MLFF模型沿着AIMD轨迹的总能和力都与DFT结果吻合较好。其中,Cu体系的总能和力的误差分别为0.12 eV和0.05 eV/Å。

图9 在C (a, b)和Cu (c, d)两种模型中,DFT和MTP线性模型沿分子动力学轨迹的总能和力的比较

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/128482.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一款构建Python命令行应用的开源库

1 简介 当我们编写 Python 程序时,我们经常需要与用户进行交互,接收输入并输出结果。Python 提供了许多方法来实现这一点,其中一个非常方便的方法是使用 typer 库。typer 是一个用于构建命令行应用程序的 Python 库,它使得创建命令…

小红书婴童产业探索,解析消费者需求!

在消费升级、市场引导的背景下,众多产业都在悄然发生着变化,其中“婴童产业”就是非常有代表性的一个。今天就来深入分析小红书婴童产业探索,解析消费者需求! 一、何为婴童产业 事实上,婴童产业,并不仅仅局…

安装torchtext遇到的坑及解决办法

刚开始秉着需要什么就pip install什么的原则直接pip install torchtext,结果: 把我这个环境打乱了,自作主张的删掉之前的很多包重新安装了其他版本的包而不是自适应的安装当前torch所对应的torchtext。因为这个环境比较重要也用在其他的工程…

无为WiFi的一批服务器

我们在多个地区拥有高速服务器&#xff0c;保证网速给力&#xff0c;刷片无压力 嘿嘿 <?phpinclude("./includes/common.php"); $actisset($_GET[act])?daddslashes($_GET[act]):null; $urldaddslashes($_GET[url]); $authcodedaddslashes($_GET[authcode]);he…

WPF向Avalonia迁移(四、其他事项)

开发必备 1. Avalonia项目源代码&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;没有源代码&#xff0c;你连控件的背景色怎么改都找不着&#xff01;&#xff01; 2.下载你所使用的版本&#x…

微信、支付宝、百度、抖音开放平台第三方代小程序开发总结

大家好&#xff0c;我是小悟 小伙伴们都开启小长假了吧&#xff0c;值此中秋国庆双节之际&#xff0c;小悟祝所有的小伙伴们节日快乐。 支付宝社区很用心&#xff0c;还特意给寄了袋月饼&#xff0c;愿中秋节的圆月带给你身体健康&#xff0c;幸福团圆&#xff0c;国庆节的旗帜…

uniapp 实现地图头像上的水波纹效果

最近实现了uniapp 地图头像水波纹的效果&#xff0c;话不多说&#xff0c;先来看看视频效果吧&#xff1a;链接 在这里具体的代码就不放出来了&#xff0c;还是利用了uniapp的 uni.createAnimation 方法&#xff0c;因为cover-view 不支持一些css 的动画效果&#xff0c;所以这…

微信小程序 movable-area 区域拖动动态组件演示

movable-area 组件在小程序中的作用是用于创建一个可移动的区域&#xff0c;可以在该区域内拖动视图或内容。这个组件常用于实现可拖动的容器或可滑动的列表等交互效果。 使用 movable-area 组件可以对其内部的 movable-view 组件进行拖动操作&#xff0c;可以通过设置不同的属…

Unity实现设计模式——适配器模式

Unity实现设计模式——适配器模式 适配器模式又称为变压器模式、包装模式&#xff08;Wrapper&#xff09; 将一个类的接口变换成客户端所期待的另一种接口&#xff0c;从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 在一个在役的项目期望在原有接口的基础…

qt5.14.2+VS源码调试记录

在对qt使用时&#xff0c;有时需要对源代码进行调试&#xff0c;方便进行问题定位和debug&#xff0c;但直接安装的qt不能进入qt源码&#xff0c;需要进行一定的操作才能进行源码调试和定位。 源码调试需要对应版本的pdb文件&#xff0c;可以在官网下载&#xff0c;也可找其它…

Docker项目部署lnmp+wordpress

一.项目环境 公司在实际的生产环境中&#xff0c;需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能调优和管理工作。 1.1 环境描述 主机 操作系统 IP地址 主要软件 Docker C…

【虚拟机】根据已有IP获取当前网段的主机范围

虚拟机有的时候会需要自己手动分配IP&#xff0c;此时无论是和宿主主机通信、还是访问外网&#xff0c;都需要保证和宿主主机在一个网段。现在已知宿主主机的 IP 和子网掩码&#xff0c;需要知道宿主主机所处网段可以分配哪些IP。 假设宿主主机 IP 为172.20.10.2&#xff0c;子…