利用DeepMD-kit训练神经网络力场

文章目录

1.机器学习

1.机器学习

  • 机器学习 :计算机从被标注的数据集出发,训练模型,预测数据的对应特征
  • 机器学习分类监督学习非监督学习强化学习
  • 监督学习 :在监督学习中,提供给算法的包含所需解决方案的训练数据,成为标记或标签包括:分类、回归
  • 非监督学习 :非监督学习的训练数据都是未经标记的 ,算法会在没有知道的情况下自动学习。包括:降维、聚类
  • 强化学习 :强化学习是一个非常与众不同的算法,它的学习系统能够观测环境做出选择 ,执行操作并获得回报,或者是以负面回报的形式获得惩罚。它必须自行学习什么事最好的策略,从而随着时间推移获得最大的回报。

2.数据集

  • 训练集(Training set)学习样本数据集,通过匹配一些参数来建立模型,主要用来训练模型。
  • 验证集(Validation set) :对学习出来的模型进行验证,调整模型的参数,如在神经网络中选择隐藏单元数。验证集还能用来确定网络结构或者控制模型复杂程度的参数。
  • 测试集(Test set) :在该数据集上测试训练好的模型的分辨能力。

3.误差评价

  • 均方误差 (MSE)指的是每个样本的平均平方损失 。如何获得MSE?计算出所有样本的平方损失之和,然后除以样本数量:
    M S E = 1 N ∑ ( x , y ) ∈ D ( y ^ − y ) 2 MSE=\frac{1}{N}\sum_{(x,y)\in D}(\hat{y}-y)^{2} MSE=N1(x,y)∈D∑(y^−y)2
  • ( x , y ) (x,y) (x,y)指的是样本 ,其中 x x x指的是模型进行预测时使用的特征集, y y y指的是样本的标签。
  • y ^ \hat{y} y^指的是从特征集x依据模型预测得到的函数值。
  • D D D指的是包含多个有标签样本(即 ( x , y ) (x,y) (x,y))的数据集
  • N N N指的是 D D D中的样本数量
  • 常用根均方差RMSE表示误差大小

4.损失函数

  • 损失函数 是用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。
  • 均方误差就是一种常用的损失函数------平方损失函数
  • 机器学习训练的目标:降低损失函数的值
  • 梯度下降法 : θ 1 = θ 0 − α ∇ J ( θ ) \theta ^{1}=\theta ^{0}-\alpha\nabla J(\theta) θ1=θ0−α∇J(θ),常用的降低损失函数值的方法之一。
  • 学习速率 α \alpha α过小 :训练时间延长;学习速率 α \alpha α过大 :难以到达最小值。因而在训练过程中需要选取适当的学习速率,以高效地完成训练任务。

5.异常拟合

  • 欠拟合(Underfitting):模型没有很好地捕捉到数据特征,不能够很好地拟合数据,对训练样本的一般性质尚未掌握。
  • 过拟合(Overfitting):模型对训练样本学习过于精细,可能导致把一些训练样本自身的特性当做了所有潜在样本都有的一般性质,导致泛化能力下降。

2.机器学习势函数

1.机器学习势函数

  • 机器学习势函数的基本要求
       能量守恒(力是能量的偏导)+旋转平移置换不变
  • 已有机器学习力场 类型
       Gradient Doman Machine Learning Potentials
       Gaussian Approximation Potentials
       Neural Network Potentials
  • Code Package
       sGDMLSchNetPackAMP (Atomistic Machine-Learning Package),ænet (Atomic Energy NETwork),DeepMD-kitDscriben2p2 (neural network potential package),PROPhet (PROPerty Prophet),TensorMolQMLRKHS ToolkitRuNNerLASP...

2.神经网络势函数:DPMD

  • 体系能量表示成组成体系的每个原子能量之和:
    E = ∑ i E i E= {\textstyle \sum_{i}^{}} E_{i} E=∑iEi
  • 每个原子能量由局域环境 (临近原子)所决定:
    E i = E s ( i ) ( R i , { R j ∣ j ∈ N R C R ( i ) } ) E_{i}=E_{s(i)}(R_{i},\left \{ R_{j}|j\in N_{R_{C}R}(i)\right \}) Ei=Es(i)(Ri,{Rj∣j∈NRCR(i)})
  • 通过神经网络训练具有旋转、平移、交换对称性的描述符
    D i = D i ( R i , { R j ∣ j ∈ N R C R ( i ) } ) D_{i}=D_{i}(R_{i},\left \{ R_{j}|j\in N_{R_{C}R}(i)\right \}) Di=Di(Ri,{Rj∣j∈NRCR(i)})
  • 神经网络拟合势函数:
    E i = N S ( i ) ( D i ) E_{i}=N_{S(i)}(D_{i}) Ei=NS(i)(Di)
  • 损失函数由能量、原子受力和维里确定(dipole也可以拟合)
    L ( p ϵ , p f , p ξ ) = p ϵ N Δ E 2 + p f 3 N ∑ i Δ F i ∣ 2 + p ξ 9 N ∣ ∣ Δ Ξ ∣ ∣ 2 L(p_{\epsilon},p_{f},p_{\xi})=\frac{p_{\epsilon}}{N}\Delta E^{2}+\frac{p_{f}}{3N}\sum_{i}^{} \Delta F_{i}|^{2}+\frac{p_{\xi}}{9N}||\Delta\Xi||^{2} L(pϵ,pf,pξ)=NpϵΔE2+3Npfi∑ΔFi∣2+9Npξ∣∣ΔΞ∣∣2通过调整 p ϵ p_{\epsilon} pϵ, p f p_{f} pf, p ξ p_{\xi} pξ等参数,调整模型向能量、力和维里的倾斜程度。

3.DPMD:构造描述符se_e2_a:

1.生成局域环境矩阵

  • 建立一个坐标系,为截断半径 r c r_{c} rc内 的原子进行坐标变换
    { x j i , y j i , z j i } ⟶ { s ( r j i ) , x ^ j i , y ^ j i , z ^ j i } \left\{x_{ji},y_{ji},z_{ji}\right\}\longrightarrow \left\{s(r_{ji}),\hat{x}{ji},\hat{y}{ji},\hat{z}_{ji}\right\} {xji,yji,zji}⟶{s(rji),x^ji,y^ji,z^ji}
  • 对 r c − r c s r_{c}-r_{cs} rc−rcs之间的径向部分 进行处理,使函数平滑过渡到0,降低远距离原子的权重。(常用处理方式,同BP-NNP方法和Tersoff势)
    s ( r j i ) = { 1 r j i , r j i < r c s 1 r j i { 1 2 c o s [ π ( r j i − r c s ) ( r c − r c s ) ] + 1 2 } , r c s < r j i < r c 0 , r j i > r c s(r_{ji})=\left\{\begin{matrix} \frac{1}{r_{ji}},\quad \quad \quad \quad \quad \quad \quad \quad \quad \quad & r_{ji}<r_{cs}\quad \quad \\ \frac{1}{r_{ji}}\left\{\frac{1}{2}cos[\pi \frac{(r_{ji}-r_{cs})}{(r_{c}-r{cs})}]+\frac{1}{2} \right\}, & r_{cs}<r_{ji}<r_{c}\\ 0,\quad \quad \quad \quad \quad \quad \quad \quad \quad \quad & r_{ji}>r_{c}\quad \quad \end{matrix}\right. s(rji)=⎩ ⎨ ⎧rji1,rji1{21cos[π(rc−rcs)(rji−rcs)]+21},0,rji<rcsrcs<rji<rcrji>rc

2.得到特征矩阵

  • 通过神经网络将 S ( r j i ) S(r_{ji}) S(rji)转化为 G ( r j i ) G(r_{ji}) G(rji),得到嵌入矩阵 ( G i ) j k = ( G ( s ( r j i ) ) ) k (\mathcal{G}^{i}){jk}=(G(s(r{ji})))_{k} (Gi)jk=(G(s(rji)))k
  • 构建特征矩阵(描述符) , D i = ( G i 1 ) T R ~ i ( R ~ i ) T G i 2 \mathcal{D}^{i}=(\mathcal{G}^{i1})^{T} \tilde{\mathcal{R}}^{i}(\tilde{\mathcal{R}}^{i})^{T}\mathcal{G}^{i2} Di=(Gi1)TR~i(R~i)TGi2
  • D i \mathcal{D}^{i} Di具有旋转平移和置换不变性,DPMD的描述符是训练出来的,DeepMD-kit的Embedding Network在descriptor部分设置。

3.使用Deep-kit训练数据

1.准备训练数据

  • 通过python脚本准备数据,支持VASP、CP2K、Gaussian等多种类别的输出文件。

  • VASP 为例,可以把OUTCAR 处理成用于训练势函数的数据集

    python 复制代码
    import dpdata
    from dpdata import LabeledSystem,MultiSystems
    # LabeledSystem方法将OUTCAR中的能量、力、维里等信息提取出来
    # MultiSystems将含有原子数不同的数据处理后整合输出

    利用MultiSystems.to_deepmd_rawMultiSysterms.to_deepmd_npy 输出成训练需要的文件(npy是训练需要的二进制文件 )。
        检查生成文件中的数据:box.raw (盒子信息)、coord.raw (位置)、force.raw (受力)、energy.raw (能量)、viriral.raw (维里),以上每一帧DFT数据(一个离子步)对应其中一行;type.raw、type_map.raw 分别是原子按顺序对应的元素序号(数字表示)、体系中元素种类。
        DeepMD-kit中数据的单位:Time(ps)、Length(Å)、Energy(eV)、Force(eV/Å)、Pressure(Bar)
        如果有的OUTCAR中含有维里,有的没有,使用MultiSystems模块会报错,可以注释掉dpdata/systems.py中读取维里的代码

2.获取DFT数据集

  • 已有的DFT计算数据
  • 运行短时间的AIMD(不同温度)
  • 进行结构优化计算
  • 创造缺陷,形变后跑AIMD和结构优化
  • 使用dpgen探索构型空间
  • 保证DFT计算数据的一致性和正确性,例如K点取点、XC、基组选取、自旋设置等
  • DFTD3校正、LDA+U都会改变能量,应保持计算体系一致
  • 可以尝试删除明显不合理的数据,比如把力大于某阈值的数据剔除:读取force.raw,把过大的力的行删除,并删除其他文件中对应行,然后用dpdata读取raw文件夹,生成新的npy文件即可。

3.运行命令

python 复制代码
 dp -h       # dp命令说明
 dp train -h       # 训练命令说明
 dp train input.json         # 普通训练
 dp train -r model.ckpt input.json   # 重启训练
 dp train -i model.ckpt input.json   # 在训练记录的基础上进行新训练
 dp train -f compressed_model input.json   # 在压缩模型基础上训练
 nohup dp train input.json 1>out1 2>out2 &   # 后台输出

 dp freeze -o modelname.pd            # 输出模型,pd文件
 dp compress -i model.pb -o compressed_model.pd -s 0.001               # 模型压缩
 # 可在压缩模型的基础进行二次训练,时间大幅减少:短时间训练后压缩继续训练
 # 模型过大时,需调整-s后的步长参数
 dp test -m model.pb -s system -d detailfile   # 使用输出的detail里的DPMD和DFT分析训练结果

注意:

1.不同原子数 的结构可以一起训练

2.GPU版 本比CPU版本快3-7倍

3.模型压缩后再训练,CPU版本加速非常明显

参考文献:Unke O T, Chmiela S, Sauceda H E, et al. Machine learning force fields[J]. Chemical Reviews, 2021, 121(16): 10142-10186.

相关推荐
埃菲尔铁塔_CV算法19 分钟前
深度学习神经网络创新点方向
人工智能·深度学习·神经网络
秀儿还能再秀1 小时前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
学术搬运工1 小时前
【珠海科技学院主办,暨南大学协办 | IEEE出版 | EI检索稳定 】2024年健康大数据与智能医疗国际会议(ICHIH 2024)
大数据·图像处理·人工智能·科技·机器学习·自然语言处理
图片转成excel表格2 小时前
WPS Office Excel 转 PDF 后图片丢失的解决方法
人工智能·科技·深度学习
哇咔咔哇咔3 小时前
【科普】简述CNN的各种模型
人工智能·神经网络·cnn
李歘歘3 小时前
万字长文解读深度学习——多模态模型CLIP、BLIP、ViLT
人工智能·深度学习
Chatopera 研发团队3 小时前
机器学习 - 为 Jupyter Notebook 安装新的 Kernel
人工智能·机器学习·jupyter
IT古董3 小时前
【机器学习】数学知识:标准差,方差,协方差,平均数,中位数,众数
人工智能·数学·机器学习
宋一诺333 小时前
机器学习—为什么我们需要激活函数
人工智能·机器学习