DFT可以在给定晶体结构的情况下算出形成能,但一个含20个原子的晶胞用HSE06杂化泛函跑一次形成能需要几十到上百个CPU核时。Materials Project里有超过15万条DFT计算结果,如果能训练一个模型直接从晶体结构映射到形成能,高通量筛选的成本会从核时级别降到毫秒级别。

这就是晶体图卷积神经网络(CGCNN,2018年由MIT的Xie和Grossman提出)的出发点。CGCNN把晶体结构编码成一个图——节点是原子(特征向量包括原子序数、电负性、原子半径等),边是原子间化学键(用径向截断距离R_cut≈8Å来判定),边特征包括原子间距和高斯展开。然后在这张图上做卷积,信息沿边从节点传到近邻节点,最后全局池化得到整个晶体的特征向量,再通过全连接层映射到目标性质(形成能、带隙等)。
一个钙钛矿氧化物ABO₃体系的形成能预测项目,训练集取了Materials Project中约5000个ABO₃钙钛矿(含立方、四方、正交等不同晶系),目标性质是形成能ΔH_f。CGCNN在测试集(随机划分,约20%数据)上的MAE(平均绝对误差)约0.08 eV/atom——对形成能来说这个精度相当不错(DFT本身的精度在形成能上约0.05-0.1 eV/atom)。
但这个测试精度背后藏着一个问题:随机划分意味着训练集和测试集里可能出现了同一个化学体系的多个不同多晶型——模型学到的是”这个体系在什么晶格参数下形成能大概是多少”,而不是”从这个体系的结构特征中提取形成能的物理规则”。换句话说,CGCNN在测试集上的0.08 eV/atom可能有一部分是”记住了”体系信息,而不是真正从结构中学会了物理。
换了一种更严格的测试方式:按化学体系划分训练集和测试集——例如把含Sr的钙钛矿全部放进测试集,训练集里只有不含Sr的钙钛矿。这种划分下,CGCNN的MAE从0.08涨到了0.25 eV/atom——翻了三倍。模型对未见过的化学体系(Sr基钙钛矿)的形成能预测能力显著下降。
原因出在节点特征的编码上。CGCNN的原子特征向量(原子序数、电负性、电离能、原子半径等)是一个固定长度的向量——它对Sr原子的”描述”和Ba原子的”描述”在这个特征空间里非常接近(都是碱土金属、电负性和原子序数相近)。但当Sr从A位替代Ba进入钙钛矿结构后,Sr²⁺(离子半径1.44Å)和Ba²⁺(1.61Å)对晶格畸变的影响完全不同——Sr基钙钛矿的容忍因子比Ba基钙钛矿小得多,相稳定性(形成能)的差异无法仅从原子特征向量中充分体现。
MEGNet(Materials Graph Network,2019年由Google Brain提出)通过引入全局状态向量来补救这个问题。除了原子节点和边的图卷积外,MEGNet在每一层卷积中都维护一个全局状态向量——它综合了整个晶体的”上下文信息”(晶格参数、体积、原子数等),并在反向传播过程中让这些全局信息参与节点和边的特征更新。这种节点-边-全局三向信息流使得MEGNet对结构畸变更敏感。
在体系外推测试中,MEGNet的MAE从CGCNN的0.25降到了0.15 eV/atom——仍然比随机划分的0.08差,但提升显著。全局状态向量让MEGNet学会了”容忍因子小了→结构更不稳定→形成能更正”这个物理规则,而不只是从原子特征中统计相关性。
但MEGNet的训练和推理速度比CGCNN慢了约30%(因为多了全局状态向量的更新,且需要同时处理节点-边-全局的三组消息传递),在真正做高通量筛选(百万级候选结构)时,这个速度差会从毫秒级放大到分钟级。选CGCNN还是MEGNet,取决于你的任务更看重速度(CGCNN)还是化学体系外推到新元素的能力(MEGNet)。
GNN的预测精度在训练集覆盖的化学空间中确实可以媲美DFT(0.05-0.1 eV/atom),但这个”覆盖”是有限定条件的:数据库中已有的化学体系范围内。一旦走到了数据库覆盖稀疏或空白的化学空间(如全新的四元钙钛矿组合),MAE涨到0.2-0.3 eV/atom是常态——这个误差量级对于判断一个化合物是稳定、亚稳还是不稳定的定性判断来说通常够用(三类之间的形成能差距通常是0.5-1.0 eV/atom级别),但对于定量比较两个相近化合物的相对稳定性来说精度不足。
在这个项目里,GNN的角色被定位为高通量筛选的粗筛——用MEGNet对约10万个候选钙钛矿成分做形成能预测,取预测的ΔH_f < 0.2 eV/atom的候选(约3000个),然后对这3000个候选用DFT(PBE)做精确计算。GNN省掉的是对那9.7万个明显不稳定候选的DFT计算,而不是替代DFT。定位准确了,”泛化能力不够”就不再是缺陷——精度不够的粗筛也远胜于没有粗筛的全局DFT计算。