目录

ParAMS高阶、重要教程:如何选择训练集

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中打开。通过这个案例,希望读者能够理解训练集涉及的方方面面的理论。

1,训练集与验证集

1)训练集与验证集的概念

训练集与验证集的关系,类似中学生的“练习题”与“考试题”的关系。练习题要尽量覆盖所有“知识点”,考试题最好不要与练习题一模一样,但也不能超纲,题量可以很小,但是尽量覆盖一些重要“知识点”。

选中训练集或验证集中的条目,菜单栏Training Set → Move to Training Set或Move to Validation Set,可以互相转移。

2)尽量合理地生成训练集

需要注意训练集与要训练的力场参数的对应关系,并提供充分、全面的训练集,尽量覆盖MD会经历的各种结构情况。

例1:原子电荷:

如果要训练原子电荷,那么训练集里面就需要生成电荷相关的条目,ReaxFF力场影响原子电荷的参数是原子参数里面。如果有电荷的训练集,却没有打开影响电荷的参数,这就是没有意义的。反之亦然,总之训练参数与训练集/验证集是需要具有很好的对应关系的。如果原子电荷没有充分的训练集进行训练,后期使用该力场时,在一些特殊结构点,很容易出现类似“non-physically large charges produced by EEM”这种报错。

例2:势能面扫描:

柔性势能面扫描对于化学反应的正确描述,也就是原子间相互作用,是非常重要的。因为当一个分子进攻另一个体系的过程中,各自的键长键角都会随之调整。DFT的柔性势能面扫描,就是在复刻这个过程。因此训练的力场参数,就必须包括柔性势能面扫描过程中,键长发生显著变化的所有原子间的键长参数。

要描述好分子和另一个体系之间,碰撞并发生反应的过程,那么训练集就应该既包含能发生反应的这种碰撞过程的柔性势能面扫描,得到一个较低的能垒。也应该包含其他不发生反应的碰撞过程势能面扫描,得到一个较高的能垒。有了这种对比数据,化学反应才会倾向于通过低能垒的方式去发生。如此,训练出来的力场,才能也有这种反应属性。

否则由于其他碰撞方式能垒参考数据的缺失,最终得到的力场,对其他碰撞方式的能垒计算就会出现大的误差,甚至有可能低于真正的最低能垒,从而导致模拟出错误的反应机理。

例3:应力张量:

通常用于描述晶体中原子间的相互作用力,因此如果有这类训练集,那么训练的力场参数里面应该包含键相关参数。

例4:键角、二面角的扫描

主要用于优化力场中键角、二面角参数。不过要注意,实际上二面角的属性,键长和键角已经隐含了二面角的属性,即,如果力场对键长和键角已经描述的非常精确了,那二面角即使不再训练,也不会差到哪里去。更泛泛的说,只要力场训练的能够足够精确描述键长,那键角、二面角都是精确描述的。

不过一般二面角涉及到键长较长的区域,这部分区域,键长参数的描述并不会很精确,因此键长参数训练完毕后,也可以酌情考虑单独训练一下键角和二面角参数。

2,各个条目的权重

为了估计我们选定的这些 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 个条目,全部为能量。训练数据分布如下:

在某种程度上,可以使用误差函数的权重来直观地看到每个条目对整体误差函数的贡献:

3,一般的能量、团簇模型和二聚体 Co₂

如果是晶体相关的力场,则还需要晶体相的数据。训练数据中包含了优化立方相之间的能量差异(左图:五个结构;右图:五个结构对应的能量):

对应的权重与 $σ$ 、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

毫不奇怪地,二聚体键长扫描的条目是一系列的单点计算。

4,结晶相描述

训练集包括以下结晶相的状态方程 (EOS) 曲线(能量体积曲线)(HCP等是晶型的专业名称缩写,详见固体物理学相关书籍):

这些曲线是通过在晶胞体积不变的情况下,进行完全松弛(也就是结构优化)而生成的。相应的能量是针对每个原子来定义的,且其值是是相对于能量最低的结构。例如,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

Diamond相

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

5,“Co-表面”体系的描述

训练集包含几个表面,训练值为修改后的表面形成能。其定义为,表面每个原子的能量相对于体相每个原子的能量(优化后的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

6,吸附原子

由于 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

7,空缺和缺陷

为了考虑体相 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

8,弹性应变模量

论文所述,弹性应变模量是通过改变晶格矢量(从而原子位置也随之发生变化)来计算的。训练数据中包含以下体相 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,则在调整晶格尺寸时,原子会保持分数坐标不变,随之而调整位置。

9,过拟合与欠拟合