BC.Wang Welcome

在化学中进行机器学习

2018-10-28
BCWang

阅读:


  • 文章更新自我的github项目:https://github.com/B-C-WANG/DoMachineLearningInChemistry

    在化学中进行机器学习

  • 我在理论催化领域中进行机器学习的总结
  • 关于相关的程序开发实现可在https://github.com/B-C-WANG/MyDevelopFramework中找到

    从计算化学到数据集

  • 我所做的机器学习的数据集来源,大部分来源于VASP-https://www.vasp.at/的DFT(密度泛函理论)计算结果。通常一个VASP任务是一个“结构优化任务”,VASP通过求取“力”的方式优化结构(类似于梯度下降),以求达到一个局部极小值点,这个局部极小值点就是我们需要的结构,它通常与初始结构比较相近。处于这个极小值点的结构的能量才是稳定的,通常一个结构可能有多个极小值点,为了求取这些点的能量,需要摆出多个结构。VASP中一次优化会得到一个结构以及相应的能量,一般一个优化任务中有平均20~100个结构(以及对应的能量)可用。每一个结构能量的求取,需要经过平均7~30的“电子步”进行优化(具体与DFT计算相关),会用时约2~5分钟(取决于原子数目,时间复杂度大约为N**4)。一次优化大约能有平均30~120个结构(取决于一开始摆的结构距离极小值点位置的远近)用于制备成为数据集。
    通常的数据集的矩阵shape为(n_sample, n_atom, 3/4/6),分别是结构的数目,一个结构中原子的数目,每个原子的信息,3代表是每个原子的x y z信息,4代表原子序数和xyz信息,6代表xyz和受力向量的分量fx fy和fz信息。能量为一个实数值,在VASP中可能为float64

    机器学习任务

    给定物种的能量预测

  • 通过SMILES编码(相当于化学式,详见https://da.wikipedia.org/wiki/SMILES)、分子图模型和坐标(直角坐标和分数坐标)等方式给定一个物种,然后预测其总能量。

    不同位点的吸附能预测

  • 以坐标方式给定物种,通常是给出一个催化表面,以及吸附物种。吸附物种在表面有多个位置,而表面原子只会随着吸附物种位置的不同进行微调(结构优化的结果),预测不同吸附物种位置上的吸附能。

特征编码

  • 以矩阵表示的结构(与SMILES编码区分)为X进行机器学习时,除了部分任务,如电子密度预测(电子密度通常使用xyz作为矩阵的shape,然后值为一个实数表示该位置上的电子密度,如shape为(40,40,40)表示这个正方体体相割成小块,每一块的电子密度)不需要太多特殊处理以外。其他数据集非常依赖于特征的编码
  • 这个编码可以理解为数据集的预处理,但是在这个领域,特征的编码已然成为与算法同等重要的操作 。直接以坐标矩阵作为X来预测能量是灾难性的,因为坐标只要平移过后,其数值整体变动很大,但其能量并未发生很大的改变,对于旋转操作也是这样;另一点,坐标本身并不会和能量大小建立关联。于是特征的编码就需要满足这两点,一是保证坐标平移和旋转操作,编码后的结果不会发生变化(对称操作);二是编码后的特征需要和能量建立密切的联系(比如坐标和能量有相关性,但是很难直接建立不过拟合的联系,需要转化为键长键角二面角的值再进行,这是和一般计算机视觉、自然语言处理等领域比较大的区别——数据集输入和模型输入需要增加人工知识,这些知识作为编码的手段)
  • 对于编码手段,可以采用symmetry function的方法,可通过deepchem的ANI transform函数实现(https://github.com/deepchem/deepchem),另一种是Smooth Overlap Atomic Position(SOAP)方法,可使用SOAPLite进行编码(https://github.com/SINGROUP/SOAPLite)。

实例

  • 利用ANI Transform或SOAP编码的手段,对于每一个原子进行编码得到特征向量,然后每一个原子本身属于某个元素,将这个原子的Feature放入属于这个原子的DenseNN中,预测其能量分量,最后进行一个reduce sum得到总能量,利用这个模型进行训练和预测,目前已经实现了ANI transform的版本,在https://github.com/B-C-WANG/DeepLearningMoleculeEnergyPredict,SOAP理论上可以视作ANI的替代手段进行DenseNN的模型建立,目前尚未测试
  • SOAP编码与ANI编码的区别在于,它在设计之初就支持空间任意一个位置的化学环境编码,于是可以使用这样一种“探针模型”,比如有一个作为背景、不能够移动太多的结构A,A中有一个可以随意移动的“探针”B,B在某一个位置时,总体有一个能量,但是这个总体的能量几乎只随着B位置的改变而改变,于是可以将这个能量与只有背景A的能量进行扣除(类似与吸附能的操作)。于是能够得到B在A中的位置与能量的关系,利用机器学习模型训练后,可以知道在A中任意位置B的能量。一个实例是在金属原子表面预测OH的吸附能,金属原子有很多不同的位点,把OH放在很多位点上预测能量,(实际使用时不能够把OH准确地放在位点上,而应该放在偏离平衡位置,让VASP优化过去,这样能够覆盖更多数据集。),最后就可以做出OH在任意位置的能量的预测,预测准确度与训练时OH位置与测试时OH位置的相似性决定,最终可以做出一个image或者3D image一样的图像。

    上图是这种探针法做出的OH吸附能在碳纳米管中某一横截面的吸附能数据,蓝色区域吸附能弱,红色区域吸附强。

Comments

Content
0