假设你把一个学徒从师父的厨房派到一家完全陌生的餐厅。在师父厨房里,他闭着眼都能把糖醋排骨做得地道——因为每天练的都是这几道拿手菜。可到了新餐厅:食材品牌换了、灶台火力不同、连调味品的咸淡都变了,他还能不能端出让客人满意的菜?这个问题,就是我们要讲的“力场迁移性”。 在 DFT 加速的世界里,机器学习势函数(ML Potentials)就是那位“学徒”。训练数据是“师父的厨房”,而各种新化学环境——没见过的分子构象、陌生元素组合、极端温度压力——就是“陌生的餐厅”。一个势函数能否从熟悉的化学空间推广到未知区域,直接决定了它在材料筛选、反应预测等真实任务中是否可信。掌握迁移性的评估与提升方法,是每个 AI for Science 从业者从“把模型训出来”走向“把模型用出去”的必修课。

岗位关联

对 AI 从业者而言,理解力场迁移性意味着你能判断模型在哪些场景可靠、如何用主动学习补齐短板——这是 ML 势函数走向工业级落地的核心能力,也是 AI+物理与化学交叉领域的稀缺技能。

目录
  1. 可视化演示
  2. 一、迁移性概念:学徒的“换厨房考验”
  3. 二、评估方法:如何科学“试菜”
  4. 三、主动学习:让学徒主动“探店尝新”
  5. 四、失败诊断:客人说“菜不对味”,是谁的错?
  6. 五、跨体系迁移:从川菜厨房到法餐后厨
  7. 六、提升策略:练好“基本功”
  8. 七、应用前景:从实验室灶台到中央厨房
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示力场迁移性评估方法(训练域vs外推域误差分布)、外推失效诊断(数据盲区与集成分歧检测)、跨元素体系迁移与主动学习数据扩展策略,交互理解DFT加速中ML势函数泛化能力的核心机制。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+modeData.eval.caption+'

一、迁移性概念:学徒的“换厨房考验”

在师父的厨房里,学徒每天用同一品牌酱油、同一型号燃气灶,把剁椒鱼头练得炉火纯青。可一旦被调到新餐厅,面对卤牛肉的配方、刺身食材、完全陌生的灶具,他的“厨艺”还能不能覆盖新菜单?——这就是迁移性,一个厨师从“熟悉灶台”走向“万能后厨”的关键考验。

在 DFT 加速语境下,“厨艺”就是机器学习势函数从原子坐标映射到能量的能力。研究者先用密度泛函理论(DFT,一种高精度但昂贵的量子化学计算方法)在已知体系上算出能量与受力,再训练一个快速模型去替代 DFT,这个模型就是“学徒”。训练时见过的化学环境构成“师父的厨房”(训练分布),而真实任务中的水溶液界面、多元合金、化学反应过渡态则是“新餐厅”(目标分布)。模型在新环境里能否继续给出可靠预测,就是力场迁移性,本质上是 ML 势函数的泛化能力。

技术核心在于数据覆盖范围。势函数会学习原子的局域环境特征——配位数、键长键角、近邻元素种类等。训练数据覆盖的局域环境构成内插可靠域;一旦测试环境落在覆盖范围之外,就进入外推区间。此时模型只能凭“感觉”作答,能量与受力常出现不可控偏差。迁移失败的典型表现有两种:预测能量误差突然飙升,以及用该势函数跑分子动力学模拟时结构非物理地散架。

所以,看一个 ML 势函数能不能“走天下”,先看它训练时见过多少种“厨房”;覆盖越广,迁移性越有底气。但光靠“见得多”还不够,还得有一套科学的验收办法。

Errnew=1M∑j=1M∣EML(Rj)−EDFT(Rj)∣\displaystyle \mathrm{Err}_{\mathrm{new}} = \frac{1}{M} \sum_{j=1}^{M} \left| E_{\mathrm{ML}}(\mathcal{R}_j) - E_{\mathrm{DFT}}(\mathcal{R}_j) \right|
这个公式表明:力场迁移性本质上衡量的是模型在“新餐厅”里的平均出餐偏差。迁移性差,不是模型没训练好,而是训练数据没有覆盖目标化学环境。
  1. 新环境构型集$M$ 个来自目标化学环境的原子构型,$\mathcal{R}_j$ 表示第 $j$ 个构型的所有原子坐标集合。
    M, RjM,\ \mathcal{R}_j
  2. 两套能量$E_{\mathrm{ML}}(\mathcal{R}_j)$ 是机器学习势函数对构型 $j$ 的预测总能量,$E_{\mathrm{DFT}}(\mathcal{R}_j)$ 是 DFT 参考能量,也就是“标准答案”。
    EML(Rj),EDFT(Rj)E_{\mathrm{ML}}(\mathcal{R}_j),\quad E_{\mathrm{DFT}}(\mathcal{R}_j)
  3. 平均绝对偏差对所有构型的能量偏差取绝对值再求平均,得到新环境下的平均迁移误差。
    1M∑j=1M∣⋅∣\frac{1}{M} \sum_{j=1}^{M} \left| \cdot \right|

二、评估方法:如何科学“试菜”

有经验的厨师长不会只让学徒做拿手菜来打分——那等于考试只考学生背过的题。他会专门点几道学徒从没做过的菜,看他在陌生食材面前的临场发挥。迁移性评估,同理。

很多初学者沿用传统机器学习的留出法验证:把数据随机打乱,按 8:2 切分训练与测试。这在化学任务里是严重的“放水”——同一化学环境的构型会同时出现在两边,模型的测试误差只是“背题成绩”,无法反映换厨房后的真实水平。正确的做法是构造外推测试集:按化学环境划分,例如训练集只用晶格常数 1.0–1.1 的构型,测试集全部落在 1.4 以上,或者训练集只含 C/H/O 元素,测试集掺入 N/S。这样训练与测试的环境分布就真正错开了。

评估指标上,误差指标通常报告两个数:均方根误差(RMSE)对异常构型更敏感,平均绝对误差(MAE)更稳健。另一个常被忽视的维度是不确定性量化:用多个模型组成的集成(Ensemble)对同一构型分别预测,把预测方差当作“模型自我怀疑程度”。方差大的区域,即使误差指标暂时好看,也意味着那里极可能藏着迁移盲区。

评估完成后,若发现外推误差确实很大,下一步不是叹气,而是启动主动学习——让学徒主动去“探店尝新”。

RMSE=1n∑i=1n(EML,i−EDFT,i)2\displaystyle \mathrm{RMSE} = \sqrt{ \frac{1}{n} \sum_{i=1}^{n} \left( E_{\mathrm{ML},i} - E_{\mathrm{DFT},i} \right)^2 }
RMSE 把每个构型的偏差平方后再开根号——大偏差会被“放大批评”,所以它比 MAE 更严格,适合考核迁移失败场景。
  1. 单个样本偏差第 $i$ 个测试构型的预测能量与 DFT 能量之差,平方后消除正负偏差相互抵消的问题。
    (EML,i−EDFT,i)2\left( E_{\mathrm{ML},i} - E_{\mathrm{DFT},i} \right)^2
  2. 取平均对所有 $n$ 个测试样本的平方偏差求和并除以 $n$,得到“平均平方误差”。
    1n∑i=1n(⋅)2\frac{1}{n} \sum_{i=1}^{n} \left( \cdot \right)^2
  3. 开根号把量纲还原回能量单位(如 meV/原子),方便直接解读为“平均偏差量级”。
     ⋅ \sqrt{\, \cdot \,}

三、主动学习:让学徒主动“探店尝新”

聪明的学徒不会坐等师父安排新菜式。他会自己去逛菜市场,认认不认识的食材,翻翻网上的新菜谱,试做几道端给师父点评——把“师父的评语”变成自己的新经验。这套策略在机器学习里叫主动学习(Active Learning)。

技术流程是一个迭代循环:先拿当前模型对一批未标注构型做预测,同时给每个构型打一个“不确定度分”;挑出不确定度最高的一批构型,交给 DFT 计算能量与原子受力,得到新鲜标注后并入训练集;重新训练模型,再进入下一轮。如此滚雪球,训练数据就能用最少的 DFT 计算量,覆盖最广阔的原子环境多样性。迭代数据扩充的关键不在于“加多少”,而在于“加在哪”——每一轮都要找到模型最容易翻车的新环境。

这个过程中还牵扯到探索与利用的平衡:一味探索未知区域,可能浪费算力在极端无用的构型上;一味利用已有知识精修熟悉区域,又无法扩大迁移范围。业界常用“不确定度阈值 + 多样性约束”来控制节奏——既允许模型对新奇环境说“我不懂,我想学”,也防止它被稀有离群点带偏。

主动学习能有效扩充覆盖,但有时即便数据够了,模型换厨房后还是“菜不对味”。这时候就得做迁移失败的诊断——逐层排查到底是哪个环节出了问题。

x∗=arg⁡max⁡x∈U  σens(x)\displaystyle x^* = \arg\max_{x \in \mathcal{U}} \; \sigma_{\mathrm{ens}}(x)
主动学习的核心就一句话:把 DFT 算力花在最能消除“模型困惑”的构型上,而不是重复标注已经会做的题。
  1. 候选池$\mathcal{U}$ 是未标注构型的集合——这些构型还没被 DFT 算过,是待探索的“新菜候选”。
    U\mathcal{U}
  2. 不确定度打分$\sigma_{\mathrm{ens}}(x)$ 是集成模型对构型 $x$ 预测的标准差;标准差越大,说明模型内部“吵得越凶”,越需要师父评理。
    σens(x)\sigma_{\mathrm{ens}}(x)
  3. 选出最优$\arg\max$ 表示“让这个值最大”的那个构型 $x^*$,也就是最值得送去 DFT 标注的样本。
    x∗=arg⁡max⁡x∈U σens(x)x^* = \arg\max_{x \in \mathcal{U}} \, \sigma_{\mathrm{ens}}(x)

四、失败诊断:客人说“菜不对味”,是谁的错?

一道菜被客人退回,厨师长不会盲目重做,而是先自己尝一口:是盐放多了(能量偏差)、火候过了(受力偏差),还是食材本就不新鲜(训练数据缺失)?迁移失败的诊断,也是一样的“归因学”。

第一步是逐原子误差分析:把构型中每个原子受力预测值与 DFT 参考值做差,统计误差最大的原子出现在哪些官能团、哪些配位环境。第二步是化学环境分解:按配位数、元素种类、键连接模式等将原子分成不同桶,分别统计误差分布,就能快速锁定“最容易翻车的是哪类邻居组合”。第三步是力能一致性检查——能量误差与受力误差必须满足理论梯度关系;如果能量预测很准、受力却严重跑偏,说明模型学到了一个“能量很平滑但不物理”的表面,这对分子动力学模拟是致命的。最后还能用残差分布做异常预测识别:正常构型的误差呈小范围聚集,一旦某个区域误差分布出现长尾,就是迁移失效的预警信号。

诊断做完了,如果发现模型在“换餐厅”后大面积失灵,就要接受一个残酷事实:迁移性是有边界的。接下来看边界到底在哪里——这就是跨体系迁移要回答的问题。

ΔFi=∥FML(i)−FDFT(i)∥2\displaystyle \Delta F_i = \left\| \mathbf{F}_{\mathrm{ML}}^{(i)} - \mathbf{F}_{\mathrm{DFT}}^{(i)} \right\|_2
迁移失败诊断的核心逻辑是精确归因:不把账算在“整个模型不行”头上,而是定位到“哪类原子、哪类环境、哪个物理量不行”,后续提升才有靶心。
  1. 原子受力向量$\mathbf{F}_{\mathrm{ML}}^{(i)}$ 是模型对第 $i$ 个原子的受力预测,$\mathbf{F}_{\mathrm{DFT}}^{(i)}$ 是 DFT 给出的参考受力,两者都是三维向量。
    FML(i),FDFT(i)\mathbf{F}_{\mathrm{ML}}^{(i)},\quad \mathbf{F}_{\mathrm{DFT}}^{(i)}
  2. 向量差两个受力向量相减,得到该原子受力预测的“方向与大小偏差”。
    FML(i)−FDFT(i)\mathbf{F}_{\mathrm{ML}}^{(i)} - \mathbf{F}_{\mathrm{DFT}}^{(i)}
  3. 二范数对误差向量三个分量的平方求和再开根号,把向量误差压缩成一个标量 $\Delta F_i$,单位通常是 eV/Å。
    ∥⋅∥2\left\| \cdot \right\|_2

五、跨体系迁移:从川菜厨房到法餐后厨

让一个川菜学徒直接去做法餐,考验的不再是刀工火候,而是对陌生食材属性的理解——鹅肝的处理逻辑跟猪大肠完全不同。ML 势函数的跨体系迁移,也分难度等级。

最低难度是构象相变迁移:训练集只含某个分子的平衡构象,测试时让它去预测高温拉伸、压缩甚至相变路径上的构型能量——原子还是那些原子,但“体态”变了。中等难度是元素组合差异:训练集只覆盖 C/H/O,测试体系掺入 N/S 或金属原子,描述符空间几乎都是新区域,迁移误差显著上升。更高难度是界面表面体系:催化剂表面、固液界面处原子配位环境极度不均匀,训练集中的体相构型很难覆盖表面悬键、吸附位点等特殊环境。

面对这些关卡,研究者常用迁移效果对比实验来摸底:准备多个训练体系与多个目标体系,两两组合做测试,画出一张“迁移误差矩阵”热力图。矩阵对角线(同体系)误差小、非对角线(跨体系)误差大,就一目了然地暴露出哪些元素组合、哪类化学环境是最短板。

知道短板之后,就要想方设法把短板补上——这需要一套系统地提升迁移性的“基本功训练”。

MAEatom=1Natom∑i=1Natom∣EML(i)−EDFT(i)∣\displaystyle \mathrm{MAE}_{\mathrm{atom}} = \frac{1}{N_{\mathrm{atom}}} \sum_{i=1}^{N_{\mathrm{atom}}} \left| E_{\mathrm{ML}}^{(i)} - E_{\mathrm{DFT}}^{(i)} \right|
跨体系迁移的误差矩阵就像一张“餐厅评级表”——哪些后厨组合是学徒能应付的,哪些一进去就翻车,全部写得明明白白。
  1. 原子能量碎片$E_{\mathrm{ML}}^{(i)}$ 是把构型总能量按原子局域环境分解后,模型给第 $i$ 个原子的能量贡献。
    EML(i),EDFT(i)E_{\mathrm{ML}}^{(i)},\quad E_{\mathrm{DFT}}^{(i)}
  2. 绝对偏差求和对目标体系中每个原子的预测能量与 DFT 值的绝对差逐一相加,保留每个原子的误差信息。
    ∑i=1Natom∣⋅∣\sum_{i=1}^{N_{\mathrm{atom}}} \left| \cdot \right|
  3. 原子数归一除以原子总数 $N_{\mathrm{atom}}$,得到“每个原子平均迁移误差”,便于比较不同尺寸体系。
    1Natom\frac{1}{N_{\mathrm{atom}}}

六、提升策略:练好“基本功”

要让学徒走遍天下都不怕,靠两件事:一是见多识广,二是基本功扎实。前者是数据,后者是模型与物理约束。

数据侧,数据增强可以系统性地枚举化学环境的自由度:扫描键长键角、生成构象系综、对晶格施加随机扰动,让训练集尽可能“看过更多厨房”。模型侧,模型架构改进能提升表达能力——从传统的指纹描述符加神经网络,到消息传递网络、等变图神经网络,模型对旋转、平移等物理对称性的编码越来越自然,外推的“直觉”也更贴近物理规律。预训练微调则借鉴大语言模型范式:先用大规模通用势场数据预训练一个“基座厨师”,再在目标体系上做少量微调,迁移起点远高于从零训练。最后是物理约束引入:能量守恒、作用力与能量梯度关系、等变对称性等先验知识被直接写进网络结构或损失函数,相当于给学徒规定了“下厨必须遵守的物理法则”,再怎么自由发挥也不会离谱到把菜烧成炭。

这些策略可以组合使用,其中物理约束与不确定度感知还能嵌入损失函数。一个经典的改进是不确定度加权损失:让模型在训练时“自行报告”每个样本的可靠程度,可靠样本多学,可疑样本少学。

当模型的基本功足够扎实、迁移性足够可靠,它就不再只是某个实验室的“私厨”,而是能撑起一片天的中央厨房主厨。

Ltotal=∑i(EML,i−EDFT,i)22 σi2+log⁡σi\displaystyle \mathcal{L}_{\mathrm{total}} = \sum_{i} \frac{\left( E_{\mathrm{ML},i} - E_{\mathrm{DFT},i} \right)^2}{2\,\sigma_i^2} + \log \sigma_i
这个损失函数教会模型一个谦逊的美德:既能拟合数据,又能说出“这个环境我没把握”,以此减少迁移时的盲目自信。
  1. 加权平方误差每个样本的误差除以 $2\sigma_i^2$,其中 $\sigma_i$ 是模型预估的该样本不确定度;不确定度大的样本对损失的贡献自动变小。
    (EML,i−EDFT,i)22 σi2\frac{\left( E_{\mathrm{ML},i} - E_{\mathrm{DFT},i} \right)^2}{2\,\sigma_i^2}
  2. 不确定度正则项$\log \sigma_i$ 的存在阻止模型把 $\sigma_i$ 无限调大来偷懒——想逃避拟合,就得付出代价。
    log⁡σi\log \sigma_i
  3. 求和对所有训练样本求和,让模型在“拟合数据”和“准确自省”之间找到平衡。
    ∑i(⋅)\sum_{i} \left( \cdot \right)

七、应用前景:从实验室灶台到中央厨房

一个迁移性强的势函数,就像一位能独当一面的大厨——不仅服务一家餐厅,还能支撑“中央厨房”为整个连锁体系供餐。这正是力场迁移性在 AI for Science 中的核心价值。

在新材料筛选中,研究者面对成千上万个候选晶体结构,全部用 DFT 算一遍代价极高;迁移性好的 ML 势函数可以先粗筛一遍,把明显不稳定的结构淘汰掉,只把少数候选留给 DFT 精算。在化学反应预测中,过渡态搜索和反应路径采样需要反复评估势能面,ML 势函数能把遍历速度提升几个数量级。在药物分子设计中,构象集成、结合自由能计算都对能量精度和覆盖面提出高要求,可迁移的势函数帮助算法在广阔的化学空间中快速定位有潜力的分子。

这些应用的共同底气来自计算成本对比:DFT 做一步分子动力学通常要算电子结构,成本随原子数急剧上升;而 ML 势函数只需一次前向推理。两者耗时差距,典型在千倍到万倍之间。

回看整个故事:迁移性就是学徒的“换厨房力”。从概念到评估、从主动学习到失败诊断,再到跨体系迁移的系统性摸底与四类提升策略,最终都服务于一个目标——让机器学习势函数从论文里的漂亮指标,变成真实材料与化学问题里可靠、高效的“中央厨房主厨”。

Speedup=TDFTTML∈[103,  104]\displaystyle \mathrm{Speedup} = \frac{T_{\mathrm{DFT}}}{T_{\mathrm{ML}}} \in \left[ 10^{3},\; 10^{4} \right]
这意味着,原本只能跑几十皮秒、几百原子的 DFT 分子动力学,用可迁移的 ML 势函数可以推进到纳秒级、数十万原子,直接改变材料模拟的“世界观”。
  1. 每步耗时$T_{\mathrm{DFT}}$ 是 DFT 做一步分子动力学(MD)的耗时,$T_{\mathrm{ML}}$ 是 ML 势预测同样一步的耗时。
    TDFT,TMLT_{\mathrm{DFT}},\quad T_{\mathrm{ML}}
  2. 耗时比值两者相除得到加速倍数,描述“用 ML 替换 DFT 每步能快多少”。
    TDFTTML\frac{T_{\mathrm{DFT}}}{T_{\mathrm{ML}}}
  3. 典型量级$10^3$ 到 $10^4$ 表示提速通常落在千倍到万倍区间,具体取决于体系大小与模型复杂度。
    [103,  104]\left[ 10^{3},\; 10^{4} \right]

AI 应用场景

高通量新材料筛选

阶段:模型推理与筛选

解决的问题:传统材料筛选对每个候选晶体结构都做一次 DFT 计算,数万个候选结构意味着数百万 CPU 小时的成本。用迁移性强的 ML 势函数先做粗筛,把明显不稳定的结构快速淘汰,再对少数幸存者做 DFT 精算,能把筛选成本压缩两个数量级以上。

具体案例:某电池研究组在 C/H/O/N 体系上训练 ML 势,随后用主动学习补充锂离子插层构型的标注,使模型对含锂环境的迁移误差收敛到每原子 3 meV 以内。团队最终在 5000 个候选正极材料结构中粗筛出 30 个高潜力候选,再交由 DFT 精确验证,整体筛选周期从数月缩短到两周。

分子动力学长程模拟

阶段:模型部署与推理

解决的问题:DFT-MD 受限于计算量通常只能模拟几十皮秒、几百个原子,无法观测到缓慢的扩散、成核与界面重构过程。ML 势函数能替代 DFT 完成每步能量与受力计算,把模拟规模推到数十万原子、纳秒量级。

具体案例:催化研究团队训练了一个包含金属表面与水分子的 ML 势,并验证其迁移到“水-铂界面”时能量误差保持在化学精度范围内。他们用该势跑出 5 ns 的界面水动力学轨迹,统计出的氢键寿命与实验 X 射线散射数据吻合良好,而同等规模的 DFT-MD 在超算上也难以完成。

药物分子构象探索

阶段:主动学习与迭代标注

解决的问题:药物分子拥有大量可旋转键,构象空间巨大;用 DFT 逐一枚举构象成本高、覆盖慢。主动学习策略可以先从低精度构象采样中挑出模型最不确定的分子,用 DFT 补标签,再用增量数据训练势函数,让构象覆盖在数据与模型之间螺旋上升。

具体案例:某 AI 制药团队用不确定度驱动的主动学习训练可迁移势函数,对候选药物分子进行构象系综生成。相比随机采样,相同 DFT 预算(约 2000 次计算)下,主动学习覆盖的稳定构象数量提升了 3 倍,结合自由能计算与实验结合常数的相关性也显著改善。

Python 演示

python62 行
import numpy as npfrom sklearn.ensemble import RandomForestRegressor  def env_feature(coords, center_idx):    """Build a local environment feature vector for atom center_idx."""    center = coords[center_idx]    dists = np.linalg.norm(coords - center, axis=1)    mask = (dists > 1e-6) & (dists < 5.0)    ds = np.sort(dists[mask])    features = [0.0, 0.0, 0.0]    if ds.size > 0:        features = [ds.min(), ds.mean(), float(ds.size)]    return np.array(features)  def make_lattice(a, n=3):    """Build a simple cubic lattice with lattice constant a."""    axis = np.linspace(0.0, a * (n - 1), n)    atoms = []    for x in axis:        for y in axis:            for z in axis:                atoms.append([x, y, z])    return np.array(atoms)  def build_data(lattice_consts, ref_a):    """Return features/labels for a set of lattice constants."""    feats, labels = [], []    for a in lattice_consts:        coords = make_lattice(a)        scaled = (a - ref_a) / ref_a        for i in range(coords.shape[0]):            feats.append(env_feature(coords, i))            labels.append(10.0 * scaled * scaled + 0.1)    return np.array(feats), np.array(labels)  def main():    rng = np.random.RandomState(42)    train_a = [1.00, 1.05, 1.10, 1.15]    interp_a = [1.075, 1.125]    extrap_a = [1.40, 1.50]     X_tr, y_tr = build_data(train_a, ref_a=1.05)    X_in, y_in = build_data(interp_a, ref_a=1.05)    X_out, y_out = build_data(extrap_a, ref_a=1.05)     model = RandomForestRegressor(n_estimators=80, random_state=rng)    model.fit(X_tr, y_tr)     rmse_in = float(np.sqrt(np.mean((model.predict(X_in) - y_in) ** 2)))    rmse_out = float(np.sqrt(np.mean((model.predict(X_out) - y_out) ** 2)))    print("内插区域 RMSE: %.4f" % rmse_in)    print("外推区域 RMSE: %.4f" % rmse_out)    ratio = rmse_out / max(rmse_in, 1e-8)    print("迁移性结论:", "外推误差显著变大,迁移性不足" if ratio > 3.0 else "外推表现尚可")  if __name__ == "__main__":    main()
目的:复现“训练覆盖不足导致外推失准”的经典场景,演示迁移性评估的基本流程——内插与外推分别评测、误差对比。
  1. def env_feature(coords, center_idx):把中心原子的局域环境压缩成特征向量,相当于机器学习势函数中的“化学指纹”。
  2. dists = np.linalg.norm(coords - center, axis=1)计算中心原子到其他所有原子的距离,为构建局域环境提供基础。
  3. def make_lattice(a, n=3):生成不同晶格常数的简单立方晶体骨架,晶格常数代表不同的“化学环境”。
  4. labels.append(10.0 * scaled * scaled + 0.1)用晶格常数相对于参考值的偏移构造能量标签,简化原子间相互作用。
  5. train_a = [1.00, 1.05, 1.10, 1.15]训练数据只覆盖狭小晶格常数区间,人为制造“厨房盲区”。
  6. extrap_a = [1.40, 1.50]外推测试点远在训练覆盖之外,是检验迁移性的“陌生新菜”。
  7. ratio = rmse_out / max(rmse_in, 1e-8)用内插与外围误差之比判断迁移性是否失效,模拟“内外误差对比”评估策略。

常见误区

误区我把数据集随机打乱,按 8:2 划分,测试集误差很低,说明我的势函数迁移性很好。

正解随机划分时,测试集与训练集几乎来自同一化学环境,模型相当于“背过答案的考生”。正确做法是按化学环境划分——比如按晶格常数区间、元素组合或温度压力区域切分,让测试集里的环境在训练集里“没露过面”。随机划分的误差只能说明拟合能力,不能说明迁移能力。

为何常见:传统机器学习任务默认样本独立同分布,初学者把这一习惯直接搬进物理建模,忽略了化学环境下相邻构型的高度相关性。

误区模型在外推测试集上能量 MAE 只有 5 meV/原子,那受力肯定也准,可以放心跑 MD 模拟了。

正解总能量是大量原子能量贡献之和,正负误差会相互抵消;而受力是能量对坐标的梯度,局部误差会被放大。一个模型完全可能能量漂亮、受力跑偏。必须单独检查原子受力误差与能量-力一致性,否则分子动力学轨迹会逐渐偏离真实物理。

为何常见:能量误差简单直观、容易统计,受力误差需要逐原子分析,做起来麻烦,于是被默认“能量好则一切好”。

误区外推误差大,说明数据不够,我使劲往训练集里塞更多构型,总能堆出迁移性。

正解加的构型如果都来自同一化学环境,等于反复做同一道菜,盲区还是盲区。正确做法是主动学习——让模型自己指出哪里不确定(方差大),有针对性地补充信息量最大的构型。盲目堆数据,DFT 标注预算花完了,外推误差却纹丝不动。

为何常见:“数据越多越好”的直觉在独立同分布问题上成立,但化学数据是“按环境聚团”的,增量价值要看覆盖度而非数量。

误区我换了最新的等变图神经网络,参数量大、训练损失低,迁移性自然就好。

正解模型表达能力只是必要条件,不是充分条件。等变网络能更好地编码物理对称性,但如果训练数据根本没覆盖目标化学环境,再强的架构也只能在盲区里“创造”答案。迁移性的上限由“数据覆盖 + 物理约束 + 模型表达”三者共同决定,缺一不可。

为何常见:模型越新、参数越多,越容易让人产生“强大所以可靠”的错觉,忽略了泛化的根本限制来自训练分布。

误区模型跨体系测试误差很大,说明这个路线失败了,只能推倒重来训练一个全新的势函数。

正解迁移失败往往是局部性的——误差可能集中在某类配位环境、某个元素组合或某类构象。先用逐原子误差分析和化学环境分解做诊断,再用主动学习针对盲区补数据,或引入物理约束修正,通常比推倒重来高效得多。迁移性是可以“修补”的,而不是一次定生死。

为何常见:初学阶段习惯把模型看作“黑盒”,成功与失败都笼统归因于“整体不行”,缺乏逐层归因的诊断意识。

面试题

Q1. 力场迁移性描述的核心能力是

单选题 · easy

  • A.在训练集上达到接近零的误差
  • B.推广到训练分布之外的环境← 正确答案
  • C.降低DFT参考计算的复杂度
  • D.增大训练数据集的整体规模

答案:B。迁移性对应模型在新化学环境中的泛化能力,而不是训练集拟合(A)、DFT 加速手段(C)或数据规模(D)。就像学徒换厨房后还能做好菜,才是真的“手艺到位”。

Q2. 最能检验迁移性的测试集划分方式是

单选题 · mid

  • A.随机打乱后按八比二划分样本
  • B.按元素种类与晶格常数划分← 正确答案
  • C.取训练集数据量的十分之一
  • D.使用训练时见过的同批构型

答案:B。随机划分会让测试集与训练集共享大量相似化学环境,属于“背题”。按元素种类、晶格常数等化学环境维度划分,才能让测试环境真正落在训练覆盖之外,验证“换厨房”的能力。

Q3. 主动学习中选择下一个标注构型的关键依据是

单选题 · mid

  • A.与训练数据最相似的构型
  • B.体系总能量最低的构型
  • C.从候选池中随机抽样的构型
  • D.预测不确定性最高的构型← 正确答案

答案:D。不确定度最高代表模型对该区域最“没把握”,补它的标签能带来最大信息增益。最相似的构型(A)信息量低,能量最低(B)不指向盲区,随机抽样(C)效率低下。

Q4. 能量误差小而原子受力误差大,最可能的解释是

单选题 · mid

  • A.力不需要梯度即可从能量导出
  • B.能量误差被抵消且力约束不足← 正确答案
  • C.训练集未记录任何受力标签
  • D.模型对称性太强导致力被抑制

答案:B。总能量是各原子能量贡献之和,正负误差会相互抵消,而受力是局域梯度量,误差无法被平均掉。若训练时力标签权重不足或覆盖不够,就会出现“能量看着好、受力不给力”的典型迁移失败信号。

Q5. 迁移失败诊断时,发现力误差集中在少数配位环境的原子,优先采取的措施是

单选题 · hard

  • A.删除误差最大的原子再重新训练
  • B.针对该环境归因并补充采样← 正确答案
  • C.将力权重统一调为零再训练
  • D.随机丢弃部分训练数据

答案:B。诊断的价值在于精确定位盲区,然后用主动学习定向补充该类化学环境的标注(B)。删除原子、降权或丢弃数据都会浪费信息,属于“把问题藏起来而不是解决它”。

Q6. 内插与外推的本质区别是

单选题 · easy

  • A.内插用GPU外推用CPU
  • B.内插处于训练覆盖内而外推超出← 正确答案
  • C.内插算能量外推算受力
  • D.内插必然零误差外推必定发散

答案:B。内插与外推描述的是推理构型相对于训练分布的位置关系:内插在覆盖范围内,外推超出覆盖范围。与硬件、物理量或误差的必然性无关。

Q7. 评估迁移性时,用来判断模型“知道自己不知道”的最佳线索是

单选题 · hard

  • A.训练集损失值的大小
  • B.集成模型预测的方差← 正确答案
  • C.模型隐藏层的数量
  • D.DFT参考计算的基组大小

答案:B。集成模型对同一构型的预测方差可以量化“模型内部分歧”——分歧越大,说明越没把握。训练损失小只代表拟合好,层数与基组量级与模型盲区无关。

Q8. 提升势函数迁移性的合理手段包括

多选题 · mid

  • A.扩充训练集覆盖多样化学环境← 正确答案
  • B.引入能量守恒等物理约束← 正确答案
  • C.仅增大模型隐藏层的参数量
  • D.跨体系预训练后目标体系微调← 正确答案

答案:ABD。A 扩大覆盖直接缓解外推风险;B 物理约束让模型遵循真实规律;D 预训练微调提供更好的迁移起点。C 只加参数不加数据,容易过拟合,反而损害迁移性。

Q9. 迁移失败的典型信号包括

多选题 · hard

  • A.外推测试集误差相对内插急剧上升← 正确答案
  • B.分子动力学轨迹出现非物理发散← 正确答案
  • C.训练集上的损失值继续下降
  • D.力误差集中在特定配位环境← 正确答案

答案:ABD。A 直接暴露外推失准,B 说明模型驱动模拟时物理崩溃,D 提示盲区集中在特定原子环境。C 是训练正常收敛的表现,不能说明迁移好坏。

Q10. 关于力场迁移性的说法正确的是

多选题 · easy

  • A.应按原子化学环境划分训练测试集← 正确答案
  • B.测试集应包含训练未见过的元素组合← 正确答案
  • C.随机划分误差可作为迁移性上界
  • D.集成模型不确定度可辅助判断外推← 正确答案

答案:ABD。A 和 B 是迁移性评估的基本要求;D 中集成方差能提示模型盲区。C 错误——随机划分误差往往过于乐观,是“背题成绩”,不能作为迁移性上界,只会误导开发者。