1. 引言
近年来,第一性原理高通量计算(ab-initio high-throughput computational methods)在预测新材料和优化材料的属性等方面被证明是一种强大而且成功的方法。然而,大量的计算资源需求成为了高通量计算的瓶颈。当化合物可能的结构搜索空间变得很大,元胞的结构变得很复杂时,即使采用高效的 Kohn-Sham 密度泛函理论(KS-DFT),所需的计算量对于有限的计算资源来说也是一项挑战。人们希望有一种更快的方式来预测新材料的物理属性,而无需求解 KS-DFT 方程。随着机器学习技术不断发展,越来越多的研究利用机器学习技术去预测材料性质或发现和设计新材料。机器学习技术和传统的基于第一性原理计算的本质区别在于,机器学习摒弃了传统计算方法中通过求解多电子体系薛定谔方程来预测材料的物理属性,而是直接从大量已知的物理数据出发,通过机器学习模型,找到不同材料的不同物理属性的内在关系,从而迅速地得到未知新材料的物理属性。基于机器学习的计算效率很高,模型训练结束后,预测给定材料的特定属性通常仅需要几秒。
在机器学习中,特征工程往往是非常重要的,特征的选择直接对模型的预测效果起重要作用。那么在预测材料性质的任务中,往往会根据材料的化学式、组成原子的原子物理化学性质、材料分子的物理化学性质等建立一维特征向量,输入机器学习模型对目标性质(例如形成能等)进行预测。有一些论文会通过对预测材料的先验知识,选择一些与预测目标性质有关的特征作为模型输入;而随着相关研究的发展,研究者整理了比较全面的145个材料特征,提出一个机器学习用来预测材料性质的通用框架[1]。当然这些都是一维的材料特征,只能用于传统的机器学习方法输入,这里提到一种二维的材料特征–OFM描述符。
2. 提出OFM描述符
在基础化学中,在分子或晶体系统的电子结构的某些重要的方面可以被原子周围最近的原子或价电子来简单描述;利用这种启发式直觉,通过结合局部结构的信息和协调中心原子的价电子轨道的数量来发展一种新的表示。作者将这种类型的描述符命名为“轨道场矩阵(OFM)”。
OFM有以下三个特点:(1)利用局部结构的信息,(2)包含了价原子的结构,(3)接受代数操作从局部描述符构造全局描述符。
OFM将材料化学式中每个原子表示为一个32-dim的独热向量,其中每个维度符号表示D = {s1,s2, p1, p2, … , p6, d1, d2, … , d10, f1, f2, … , f14}(例:d5表示原子最外层d轨道中包含5个电子的电子构型)。具体来说,考虑每个原子的最外层电子轨道排布式,例如Na的电子构型是[Ne]3s1,Na的原子表示是第一个维度是1,后面31个维度都为0的独热向量,如图1所示。
得到原子的32维向量之后,通过公式(1)得到计算材料的OFM描述符,其中
k
k
k是最近邻原子数的索引;
n
p
n_p
np是
p
p
p位置的最近邻原子数;
w
k
w_k
wk是表示原子
k
k
k对中心原子配位数
p
p
p的贡献的权重;
O
p
O^p
Op就是
p
p
p位置原子的独热向量。
为了包括关于价轨道大小的信息,将
p
p
p和
k
k
k原子之间的距离
r
p
k
r_{pk}
rpk加入权重中,得到公式(2),其中
ζ
(
r
p
k
)
=
1
/
r
p
k
ζ (r_{pk}) = 1/r_{pk}
ζ(rpk)=1/rpk
上面得到的是材料p位置的局部结构描述符,整个晶体系统或者整个分子的描述符可以通过对局部结构描述符求和或取平均得到,公式如下:
3. 验证描述符有效性
选择一种简单的方法,其中材料的描述符是通过对其组成原子的局部结构的描述符进行平均或求和来得到的。在此,我们实现了晶体系统的形成能和分子系统的原子化能的预测模型,以检验OFM描述符的适用性。
在晶体系统的形成能预测中,OFM描述符通过局部结构描述符取平均得到;在分子系统的原子化能预测中,OFM描述符通过局部结构描述符相加得到。选择的预测模型是KRR模型,预测效果如表3所示。可以看出在预测晶体系统的形成能任务中,OFM描述符有较大的提高;而在预测分子系统的原子化能的任务中,OFM描述符和CM描述符效果差不多。作者分析了原因,如图4所示,图4(a)和(b)分别描述了QM7和LATX数据集的所有局部结构的ofm的标准差。很明显,QM7数据集只包含少量的非零OFM元素,而LATX数据集显示了大量的OFM元素。此外,QM7数据集的OFM偏差较小,而LATX数据集的偏差较大。
4. OFM描述符复现
4.1 导入包
import pandas as pd
from pymatgen.core.structure import Structure
from matminer.featurizers.structure import OrbitalFieldMatrix
import os
import json
4.2 定义OFM函数
def ofm(path):
for root,dirs,files in os.walk(path):
print(files)
data = pd.DataFrame()
for i in files:
with open(path+i,'r') as f:
json_data = json.load(f)
a = [json_data['structureinfo']["formula"],
Structure(json_data['structureinfo']["std_lattice"],
json_data['structureinfo']["atom_types"],
json_data['structureinfo']["std_position"])]
b = ['formula','structure']
data1 = pd.DataFrame([a], columns=b)
data = data.append(data1, ignore_index=True)
ofm = OrbitalFieldMatrix(period_tag=False) # period_tag判断是32*32还是39*39
ofm.set_n_jobs(1)
data = ofm.fit_featurize_dataframe(data, 'structure')
return data
补充: 这里39*39是因为有研究者将原子周期数加到原子独热编码里面,这样7个周期就增加了7个维度。
4.3 Ag2Br2的OFM描述符示例
参考
[1] A general-purpose machine learning framework for predicting properties of inorganic materials.
[2] Machine learning reveals orbital interaction in materials.