Page 187 - 《软件学报》2025年第9期
P. 187
4098 软件学报 2025 年第 36 卷第 9 期
in
in
T
6. P out = (1/λ )×(split(P ,l)− AKK ) ▷ 按层分别更新权重的误差协方差矩阵 P
l
in
7. w out = split(w ,l)+ A× K ×errY ▷ 按层分别状态值, 也即权重 w
l
8. end for
in
9. λ out = λ v+1−v ▷ 更新记忆因子
10. w out = collect(w out | l = 1,...,L) ▷ 将切分的权重进行聚合
l
11. P out = collect(P out | l = 1,...,L) ▷ 将切分的子 P 矩阵进行聚合
l
out
out
out
输出: w , P , λ ▷ 输出
总的来说, 隐式特征计算的神经网络力场模型, 在采用一阶优化方法时, 训练时间长, 通常为数天不等. Hu 等
人 [35] 提出拟牛顿优化器算法用于加速典型的隐式特征计算的神经网络力场模型 (例如深度势能模型) 的训练. 然
而显式特征计算的神经网络力场模型在训练过程中仍存在多方面的挑战, 且当拟牛顿法用于显式特征计算的神经
网络力场模型时, 具体的训练方法并未给出、性能表现也并未评估. 本文提出了一种通用的避免调参的拟牛顿算
法的训练方法, 并对拟牛顿在多个显式特征计算的神经网络力场模型进行测试.
2 层重组卡尔曼滤波训练方法
在本节中, 我们首先总结一阶方法在神经网络力场训练过程中的常见问题, 基于 3 个观察引出本文的主要贡
献. 第 2.1 节阐述交替训练方法并对其精度收益和时间代价进行详细的分析. 第 2.2 节介绍建模层重组卡尔曼滤波
优化器的分层阈值的超参数并进行验证. 第 2.3 节对层重组卡尔曼滤波方法的防止梯度爆炸属性进行理论证明并
分析该方法在神经网络力场训练过程中的鲁棒性.
● 观察 1: 联合训练时损失函数的权重因子的选取影响收敛精度.
力场预测的模型需同时预测能量和力 (原子受力不能直接通过网络的前向过程拟合, 物理上为了保证能量守
恒, 原子受力的计算是通过原子总能对原子位置求导得到的). 在计算损失时, 现有的方法会联合考虑能量和受力
的整体损失, 如公式 (6) 所示.
( ) ( )
(6)
Loss = α×MSE E i , b E i +β×MSE F i , b F i
其中, MSE(E i , b E i ) 和 MSE(F i , b F i ) 分别表示当前批处理样本 (batch size) 原子能量和受力的均方误差, α 和 β 分别表
示能量和力场的均方误差在总的损失中的权重系数. 我们发现在不同的方法中, α 和 β 的取值各自不同, 暂时没有
α 和 的值的选取, 能保证在不同模型的训练中有很好的收敛效果. 在两体和三体的余弦的基组
一种统一的 β
,
(2B3B-Cosine) 的工作中, α = 1 β 的取值由用户指定. 在 DeePMD 的力场预测模型中, α 和 β 的取值随着迭代的进
行实时变化, 具体的, α t = lim e +(start e −lim e )×lr t /lr 0 β t = lim f +(start f −lim f )×lr t /lr 0 , 其中 start e lim e start f lim f
,
,
,
,
分别表示在计算能量和力场的权重时的起始值, 这些值是训练前需要预先给定的超参. 我们观察到, 这些参数的确
定在模型收敛的过程中起着重要作用, 不当的取值会使得最终收敛的精度变差. 例如选取固定的 α和β, 当 α = 1 时,
β = 1000,1,0.001 时, 收敛误差在表 1 α和β 时, 例如
分别选取 中配置①–③中. 当我们选取随迭代次数变动的
,
,
,
DeePMD 中默认的 start e lim e start f lim f 的值, 误差记录在配置④中. 当把能量和力的起始值交换时, 收敛精度如
配置⑤所示. 表 1 最后两列分别表示能量和原子受力的误差, “/”前后分别表示训练集和测试集的结果.
表 1 损失函数的不同权重因子对收敛性的影响
2B3B-Cosine α β 能量RMSE (eV) 力RMSE (eV/Angstrom)
配置① (固定值) 1 1 000 0.059 9/0.071 4 0.062 5/0.074 2
配置② (固定值) 1 1 0.053 0/0.064 9 0.086 6/0.106 2
配置③ (固定值) 1 0.001 0.060 0/0.075 0 0.117/0.145
配置④ (变动值) start e ,lim e : 0.02/1.0 start e ,lim e : 1 000/1.0 0.054 3/0.060 3 0.061 4/0.073 3
配置⑤ (变动值) start e ,lim e : 1 000/1.0 start e ,lim e : 0.02/1.0 0.061 1/0.078 1 0.079 8/0.098 8

