MR LaBrosse 等人发表的文章:
从科学的角度讨论了如何选择训练集“条目”。以Co.ff的训练为例,本文仅讨论训练集,而不是力场的优化,内容包括:
本文是AMS软件自带案例,位于AMS202*.*/scripting/scm/params/examples/import_old_ReaxFF/Co/converted_to_params。SCM → ParAMS → File → Open 选择 job_collection.yaml可以在ParAMS中打开。通过这个案例,希望读者能够理解训练集涉及的方方面面的理论。
训练集与验证集的关系,类似中学生的“练习题”与“考试题”的关系。练习题要尽量覆盖所有“知识点”,考试题最好不要与练习题一模一样,但也不能超纲,题量可以很小,但是尽量覆盖一些重要“知识点”。
选中训练集或验证集中的条目,菜单栏Training Set → Move to Training Set或Move to Validation Set,可以互相转移。
需要注意训练集与要训练的力场参数的对应关系,并提供充分、全面的训练集,尽量覆盖MD会经历的各种结构情况。
如果要训练原子电荷,那么训练集里面就需要生成电荷相关的条目,ReaxFF力场影响原子电荷的参数是原子参数里面。如果有电荷的训练集,却没有打开影响电荷的参数,这就是没有意义的。反之亦然,总之训练参数与训练集/验证集是需要具有很好的对应关系的。如果原子电荷没有充分的训练集进行训练,后期使用该力场时,在一些特殊结构点,很容易出现类似“non-physically large charges produced by EEM”这种报错。
柔性势能面扫描对于化学反应的正确描述,也就是原子间相互作用,是非常重要的。因为当一个分子进攻另一个体系的过程中,各自的键长键角都会随之调整。DFT的柔性势能面扫描,就是在复刻这个过程。因此训练的力场参数,就必须包括柔性势能面扫描过程中,键长发生显著变化的所有原子间的键长参数。
要描述好分子和另一个体系之间,碰撞并发生反应的过程,那么训练集就应该既包含能发生反应的这种碰撞过程的柔性势能面扫描,得到一个较低的能垒。也应该包含其他不发生反应的碰撞过程势能面扫描,得到一个较高的能垒。有了这种对比数据,化学反应才会倾向于通过低能垒的方式去发生。如此,训练出来的力场,才能也有这种反应属性。
否则由于其他碰撞方式能垒参考数据的缺失,最终得到的力场,对其他碰撞方式的能垒计算就会出现大的误差,甚至有可能低于真正的最低能垒,从而导致模拟出错误的反应机理。
通常用于描述晶体中原子间的相互作用力,因此如果有这类训练集,那么训练的力场参数里面应该包含键相关参数。
主要用于优化力场中键角、二面角参数。不过要注意,实际上二面角的属性,键长和键角已经隐含了二面角的属性,即,如果力场对键长和键角已经描述的非常精确了,那二面角即使不再训练,也不会差到哪里去。更泛泛的说,只要力场训练的能够足够精确描述键长,那键角、二面角都是精确描述的。
不过一般二面角涉及到键长较长的区域,这部分区域,键长参数的描述并不会很精确,因此键长参数训练完毕后,也可以酌情考虑单独训练一下键角和二面角参数。
为了估计我们选定的这些 ReaxFF 参数相对于一些训练集(即参考集、reference)的质量,定义了一个平方误差损失函数(或目标函数或误差函数、损失函数):
\[\textrm{Error} = \sum_{i=1}^{n} w_i {\Big[ \frac{x_{i,ref} - x_{i,ReaxFF} }{\sigma_{i}} \Big]}^2\]
其中,总和遍历所有训练集条目,每个参考属性 ($x_{i,ref}$) 和 ReaxFF 计算值 ($x_{i,ReaxFF}$) 之间的差异,通过权重 $w_i$和 $σ_i$ 单独加权。
AMS2021 之前的版本,仅使用 $σ$ 值。新版中,$w$ 和 $σ$ 均使用。设定训练集和训练参数时,您可以根据自己的喜好修改其中一个或两个都修改(权重是在训练集中设定,$σ$ 是在Optimizer里面设置)。有关更多详细信息,请参阅:Sigma vs. weight: What is the difference?
注意:所谓力场的优化,就是在最小化该损失函数的值。因此,选择好的权重非常重要,能够避免对一个或另一个“条目”产生偏差。
总的来说,Co 训练集包含 144 个条目,全部为能量。训练数据分布如下:
在某种程度上,可以使用误差函数的权重来直观地看到每个条目对整体误差函数的贡献:
如果是晶体相关的力场,则还需要晶体相的数据。训练数据中包含了优化立方相之间的能量差异(左图:五个结构;右图:五个结构对应的能量):
对应的权重与 $σ$ 、Reference_value:
Weight Sigma Reference_value Expression 6.300 1.255 -101.300 kcal/mol +energy("hcp_opt")/2-energy("Co_1_atom")/1 3937.683 1.255 -0.520 kcal/mol +energy("hcp_opt")/2-energy("fcc_opt")/4 157.507 1.255 -2.210 kcal/mol +energy("hcp_opt")/2-energy("bcc_opt")/2 1.575 1.255 -17.000 kcal/mol +energy("hcp_opt")/2-energy("sc_opt")/1 0.394 1.255 -28.600 kcal/mol +energy("hcp_opt")/2-energy("diam_opt")/8
此外,还包括一组大小为 2、3、4、5、6、8 和 13 个原子的小簇的内聚能:
对应的权重与 $σ$、Reference_value:
Weight Sigma Reference_value Expression 0.394 1.255 -29.790 kcal/mol +energy("Co_2_atom")/2-energy("Co_1_atom")/1 0.394 1.255 -38.800 kcal/mol +energy("Co_3_atom")/3-energy("Co_1_atom")/1 0.394 1.255 -46.940 kcal/mol +energy("Co_4_atom")/4-energy("Co_1_atom")/1 0.394 1.255 -56.910 kcal/mol +energy("Co_5_atom")/5-energy("Co_1_atom")/1 0.394 1.255 -64.580 kcal/mol +energy("Co_6_atom")/6-energy("Co_1_atom")/1 0.394 1.255 -65.680 kcal/mol +energy("Co_8_atom")/8-energy("Co_1_atom")/1 0.394 1.255 -71.060 kcal/mol +energy("Co_13_atom")/13-energy("Co_1_atom")/1
其中还包括 Co₂ 二聚体的键拉伸扫描:
对应的权重与 $σ$、Reference_value:
Weight Sigma Reference_value Expression 0.063 1.255 -22.750 kcal/mol +energy("dimer_sep_1")/2-energy("Co_1_atom")/1 0.063 1.255 -27.360 kcal/mol +energy("dimer_sep_2")/2-energy("Co_1_atom")/1 0.063 1.255 -29.430 kcal/mol +energy("dimer_sep_3")/2-energy("Co_1_atom")/1 0.063 1.255 -29.790 kcal/mol +energy("dimer_sep_4")/2-energy("Co_1_atom")/1 0.063 1.255 -29.750 kcal/mol +energy("dimer_sep_5")/2-energy("Co_1_atom")/1 0.063 1.255 -29.520 kcal/mol +energy("dimer_sep_6")/2-energy("Co_1_atom")/1 0.063 1.255 -28.890 kcal/mol +energy("dimer_sep_7")/2-energy("Co_1_atom")/1 0.063 1.255 -27.270 kcal/mol +energy("dimer_sep_8")/2-energy("Co_1_atom")/1 0.063 1.255 -25.410 kcal/mol +energy("dimer_sep_9")/2-energy("Co_1_atom")/1 0.063 1.255 -23.420 kcal/mol +energy("dimer_sep_10")/2-energy("Co_1_atom")/1 0.063 1.255 -22.170 kcal/mol +energy("dimer_sep_11")/2-energy("Co_1_atom")/1
毫不奇怪地,二聚体键长扫描的条目是一系列的单点计算。
训练集包括以下结晶相的状态方程 (EOS) 曲线(能量体积曲线)(HCP等是晶型的专业名称缩写,详见固体物理学相关书籍):
这些曲线是通过在晶胞体积不变的情况下,进行完全松弛(也就是结构优化)而生成的。相应的能量是针对每个原子来定义的,且其值是是相对于能量最低的结构。例如,HCP 和金刚石相的状态方程定义如下:
Weight Sigma Reference_value Expression 9.844 1.255 -13.420 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_1")/2 39.377 1.255 -1.860 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_2")/2 157.507 1.255 -1.040 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_3")/2 157.507 1.255 -0.460 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_4")/2 157.507 1.255 -0.120 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_5")/2 157.507 1.255 -0.010 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_6")/2 157.507 1.255 -0.080 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_7")/2 157.507 1.255 -0.340 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_8")/2 157.507 1.255 -0.770 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_9")/2 157.507 1.255 -1.340 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_10")/2 39.377 1.255 -2.000 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_11")/2 9.844 1.255 -6.790 kcal/mol +energy("EOS_hcp_6")/2-energy("EOS_hcp_12")/2
Weight Sigma Reference_value Expression 0.025 1.255 -14.800 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_1")/8 0.025 1.255 -5.590 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_2")/8 0.025 1.255 -1.630 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_3")/8 0.025 1.255 -0.350 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_4")/8 0.025 1.255 -0.010 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_5")/8 0.025 1.255 -0.430 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_6")/8 0.025 1.255 -1.510 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_7")/8 0.025 1.255 -3.100 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_8")/8 0.025 1.255 -5.040 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_9")/8 0.025 1.255 -7.260 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_10")/8 0.025 1.255 -12.350 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_11")/8 0.025 1.255 -17.950 kcal/mol +energy("EOS_diam_5")/8-energy("EOS_diam_12")/8
训练集包含几个表面,训练值为修改后的表面形成能。其定义为,表面每个原子的能量相对于体相每个原子的能量(优化后的HCP)。
对于立方表面 (FCC、BCC、SC),低米勒表面和高米勒表面均包括在内。里面只给 HCP 相添加了 (0001) 表面。
Weight Sigma Reference_value Expression 0.394 1.255 9.670 kcal/mol +energy("Surface_bcc100")/28-energy("hcp_opt")/2 0.394 1.255 15.970 kcal/mol +energy("Surface_bcc110")/11-energy("hcp_opt")/2 0.394 1.255 7.790 kcal/mol +energy("Surface_bcc310")/30-energy("hcp_opt")/2 157.507 1.255 6.690 kcal/mol +energy("Surface_fcc100")/14-energy("hcp_opt")/2 0.025 1.255 25.200 kcal/mol +energy("Surface_fcc110")/7-energy("hcp_opt")/2 0.394 1.255 6.840 kcal/mol +energy("Surface_fcc510")/37-energy("hcp_opt")/2 630.029 1.255 4.710 kcal/mol +energy("Surface_hcp1000")/7-energy("hcp_opt")/2 0.005 1.255 19.720 kcal/mol +energy("Surface_sc100")/7-energy("hcp_opt")/2 0.005 1.255 35.550 kcal/mol +energy("Surface_sc110")/7-energy("hcp_opt")/2 0.005 1.255 23.140 kcal/mol +energy("Surface_sc111")/14-energy("hcp_opt")/2 0.005 1.255 20.950 kcal/mol +energy("Surface_sc510")/32-energy("hcp_opt")/2 0.000 1.255 10.000 kcal/mol +energy("Surface_bcc510")/54-energy("hcp_opt")/2 0.003 1.255 48.060 kcal/mol +energy("Surface_bcc111")/14-energy("hcp_opt")/2 0.025 1.255 0.810 kcal/mol +energy("Surface_fcc310")/21-energy("hcp_opt")/2
由于 Co 原子在不同表面上的迁移对于形成能量有利的表面至关重要,因此训练集包含各种表面(FCC、BCC、SC)上的各种吸附原子结构(顶位、桥位、空心位)。所有 DFT 训练集都经过优化,以确保吸附原子位于局部能量最小值。
Weight Sigma Reference_value Expression 0.394 1.255 9.830 kcal/mol +energy("Surf_adatom_bcc100")/29-energy("hcp_opt")/2 0.394 1.255 8.200 kcal/mol +energy("Surf_adatom_bcc110")/49-energy("hcp_opt")/2 0.394 1.255 7.360 kcal/mol +energy("Surf_adatom_fcc100")/57-energy("hcp_opt")/2 0.394 1.255 8.190 kcal/mol +energy("Surf_adatom_fcc110")/37-energy("hcp_opt")/2 0.394 1.255 6.650 kcal/mol +energy("Surf_adatom_fcc111")/25-energy("hcp_opt")/2 0.394 1.255 7.380 kcal/mol +energy("Surf_adatom_fcc310")/43-energy("hcp_opt")/2 0.394 1.255 8.220 kcal/mol +energy("Surf_adatom_fcc510")/63-energy("hcp_opt")/2 0.063 1.255 21.740 kcal/mol +energy("Surf_adatom_sc110")/29-energy("hcp_opt")/2
为了考虑体相 Co 中的空位和缺陷,训练集包含
训练集包含面心立方 Co 晶体中 1-6 个合并空位的形成能。如论文所述,训练数据表明,两个空位作为最近邻,在能量上是最有利的。
Weight Sigma Reference_value Expression 1.575 1.255 -154.090 kcal/mol +energy("Vac_0v")/1-energy("Vac_1v")/1-energy("Co_1_atom")/1 0.098 1.255 -305.260 kcal/mol +energy("Vac_0v")/1-energy("Vac_2v1")/1-energy("Co_1_atom")/0.5 0.098 1.255 -309.220 kcal/mol +energy("Vac_0v")/1-energy("Vac_2v2")/1-energy("Co_1_atom")/0.5 0.098 1.255 -307.460 kcal/mol +energy("Vac_0v")/1-energy("Vac_2v3")/1-energy("Co_1_atom")/0.5 0.098 1.255 -308.340 kcal/mol +energy("Vac_0v")/1-energy("Vac_2v4")/1-energy("Co_1_atom")/0.5 0.098 1.255 -307.880 kcal/mol +energy("Vac_0v")/1-energy("Vac_2v5")/1-energy("Co_1_atom")/0.5 0.098 1.255 -308.270 kcal/mol +energy("Vac_0v")/1-energy("Vac_2v6")/1-energy("Co_1_atom")/0.5 0.098 1.255 -308.330 kcal/mol +energy("Vac_0v")/1-energy("Vac_2v7")/1-energy("Co_1_atom")/0.5 0.098 1.255 -308.000 kcal/mol +energy("Vac_0v")/1-energy("Vac_2v8")/1-energy("Co_1_atom")/0.5 0.098 1.255 -308.370 kcal/mol +energy("Vac_0v")/1-energy("Vac_2v9")/1-energy("Co_1_atom")/0.5 0.098 1.255 -452.510 kcal/mol +energy("Vac_0v")/1-energy("Vac_3v")/1-energy("Co_1_atom")/0.33333333 0.098 1.255 -598.220 kcal/mol +energy("Vac_0v")/1-energy("Vac_4v")/1-energy("Co_1_atom")/0.25 0.098 1.255 -738.330 kcal/mol +energy("Vac_0v")/1-energy("Vac_5v")/1-energy("Co_1_atom")/0.2 0.098 1.255 -865.980 kcal/mol +energy("Vac_0v")/1-energy("Vac_6v")/1-energy("Co_1_atom")/0.16666667
通过在 2500K 下对 108 个原子 FCC 晶格,进行从头算 NVT MD 生成非晶态体相 Co。轨迹快照作为单点计算包含在训练数据中:
Weight Sigma Reference_value Expression 0.025 1.255 14.130 kcal/mol +energy("Amorphous_1")/108-energy("hcp_opt")/2 0.025 1.255 10.350 kcal/mol +energy("Amorphous_2")/108-energy("hcp_opt")/2 0.025 1.255 8.480 kcal/mol +energy("Amorphous_3")/108-energy("hcp_opt")/2 0.025 1.255 7.270 kcal/mol +energy("Amorphous_4")/108-energy("hcp_opt")/2 0.098 1.255 8.500 kcal/mol +energy("Amorphous_5")/108-energy("hcp_opt")/2
立方相的堆垛层错能是通过 [100] 方向的半晶格偏移产生的。HCP 相的堆垛层错能,是通过从 HCP(0001) 到 FCC(111) 的分层转变来描述的。
Weight Sigma Reference_value Expression 0.394 1.255 32.720 kcal/mol +energy("SFE_bcc001")/8-energy("hcp_opt")/2 6.300 1.255 0.320 kcal/mol +energy("SFE_fcc111")/16-energy("hcp_opt")/2 6.300 1.255 4.940 kcal/mol +energy("SFE_hcp100")/16-energy("hcp_opt")/2 0.394 1.255 21.280 kcal/mol +energy("SFE_sc001")/8-energy("hcp_opt")/2
如论文所述,弹性应变模量是通过改变晶格矢量(从而原子位置也随之发生变化)来计算的。训练数据中包含以下体相 Co 的弹性常数 C11、C12 和 C44:
Weight Sigma Reference_value Expression 25.201 1.255 3.340 kcal/mol +energy("Elast_bcc_c11")/1-energy("hcp_opt")/2 25.201 1.255 3.060 kcal/mol +energy("Elast_bcc_c44")/1-energy("hcp_opt")/2 0.063 1.255 29.890 kcal/mol +energy("Elast_diam_c11")/2-energy("hcp_opt")/2 0.063 1.255 29.370 kcal/mol +energy("Elast_diam_c44")/2-energy("hcp_opt")/2 25.201 1.255 2.270 kcal/mol +energy("Elast_fcc_c11")/1-energy("hcp_opt")/2 25.201 1.255 1.560 kcal/mol +energy("Elast_fcc_c44")/1-energy("hcp_opt")/2 25.201 1.255 2.080 kcal/mol +energy("Elast_hcp_c11")/2-energy("hcp_opt")/2 25.201 1.255 0.780 kcal/mol +energy("Elast_hcp_c44")/2-energy("hcp_opt")/2 0.394 1.255 18.740 kcal/mol +energy("Elast_sc_c11")/1-energy("hcp_opt")/2 0.394 1.255 16.830 kcal/mol +energy("Elast_sc_c44")/1-energy("hcp_opt")/2
AMSinput → Model → Lattice 中,修改晶格尺寸时,勾选Adjust atoms when changing lattice vectors,则在调整晶格尺寸时,原子会保持分数坐标不变,随之而调整位置。