搞过DFT计算的人都做过参数收敛测试。截断能从400 eV试到600 eV,K点从3×3×3试到8×8×8,Hubbard U从3.0试到6.0 eV——单个参数一维扫描还能应付,但参数之间有交互:高截断能是否允许用稀疏K点?U值的增减是否受展宽值的影响?这些问题在手动试错中不是被忽略就是被看心情处理。贝叶斯优化(Bayesian Optimization)的核心价值就在这里——它把黑箱函数的全局优化形式化了,用最少的评估次数找到多维参数空间的最优组合。

贝叶斯优化的第一步是用高斯过程(Gaussian Process, GP)拟合目标函数在参数空间中的分布。目标函数可以是总能、带隙、晶格参数与实验值的偏差——任何你需要最小化或最大化的标量输出。
GP的核心输出不是单个预测值,而是一个概率分布——在每个参数点上,GP给出预测均值μ和预测方差σ²。均值告诉你”这个参数组合的预期结果是多少”,方差告诉你”GP对自己在这个点的预测有多不确定”。一个参数组合的方差大,说明附近缺少已知数据点,GP在”猜”——这正是下一步应该去探的区域。
GP的关键超参数是核函数(kernel)。平方指数核(RBF核)是最常用的默认选择——它假设参数空间中相近的点有相似的目标值,相似度随距离指数衰减。但对DFT参数空间,有些维度的响应不是平滑的——比如K点从整数网格跳跃(3×3×3到4×4×4),能量的变化是离散的。这种情况下,Matern核(ν=5/2)比RBF核对这种”不够平滑”的目标函数鲁棒性更好。
有了GP的概率预测后,下一步用采集函数决定下一个试哪组参数。采集函数的设计需要平衡两个对立目标:利用(去预测均值最优的区域试,可能找到更好的结果)和探索(去预测方差最大的区域试,降低不确定性)。
期望改进(Expected Improvement, EI) 是应用最广的采集函数。它计算每个候选参数组合相对于当前最优结果的”期望改进量”——既看预测均值是否更好,也看预测方差是否够大(方差大意味着”惊喜”的可能性大)。EI在单目标、参数维度≤10的场景下表现最好。
置信下限(Lower Confidence Bound, LCB) 用一个线性加权组合来做平衡:LCB = μ − κσ。κ参数控制了探索-利用的偏向——κ=2倾向于探索(σ的权重高),κ=0.1倾向于利用(只信μ)。LCB的优势是可调——在实际使用中可以设置动态κ:优化早期κ大,广撒网;后期κ小,精打细磨。
采集函数的”贪婪程度”有一个需要警惕的倾向:过于贪婪的采集函数(如纯EI)可能在参数空间中的一个局部最优坑里反复转圈,因为那个区域的EI始终为正。加入一定比例的随机探索(每轮随机挑一个参数组合做DFT)可以打破这种循环,代价是收敛慢一点。
以VASP的K点密度、截断能和Hubbard U值三个参数为例,贝叶斯优化的典型工作流如下:
第一轮随机选5-8组参数跑VASP,拿到初始训练集。这些参数应该覆盖参数空间的主要方向——不是扎堆在一个区域。然后用GP拟合总能(或其他目标量),采集函数选出下一组参数。第二轮开始,每次跑完VASP后更新GP,再选下一组。通常在5-8轮(总共约10-15次VASP计算)后,帕累托前沿会稳定下来。
衡量”最优”的标准值得单独讨论。对K点和截断能的收敛测试,传统做法是要求总能收敛到<1 meV/atom。但在参数组合优化的场景下,单一的精度阈值不够——你可能愿意接受1.5 meV/atom的误差来换取计算时间缩短40%。贝叶斯优化天然适合同时优化精度和速度两个目标——用帕累托前沿画出”精度越高速度越慢”的权衡曲线,人来做最终决策。
贝叶斯优化在三个场景下表现不好。第一,参数维度超过15-20维时,GP的拟合质量下降严重——因为高维空间中数据点的稀疏性让核函数难以学到有意义的距离度量。第二,目标函数噪声大(比如DFT的SCF收敛导致总能波动在meV量级),噪声会误导采集函数去追假的最优。用重复计算或贝叶斯层序模型来估计噪声水平可以缓解,但不能根治。第三,参数空间中有硬约束(如K点必须是整数、晶格参数必须满足对称性),GP天然支持连续参数,对离散/约束参数需要额外的处理层。
贝叶斯优化的价值在于把参数调优从”凭经验、反复试”变成”每跑一步都有信息增益、每次都有明确方向”。它不是AI替你跑VASP,是AI告诉你怎么跑最划算。
参考文献:Snoek et al., NeurIPS, 2012, 25, 2951-2959;Ueno et al., npj Comput. Mater., 2016, 2, 16031.