返回博客

力误差很低,为什么分子动力学仍会漂移?从 eSEN 拆解保守力、平滑截断与时间步

用闭路做功、截断导数和 Verlet 谐振子的可验算反例,区分势能模型、计算图与积分器的责任;附实际运行的合成检查及真实模型验收协议。

一个原子间势模型在测试集上预测力更准,是否就更适合跑分子动力学?eSEN 的 ICML 2025 论文给出一个反例:表 1 中,直接预测力的变体在 MPTrj 上的力 MAE 为 43.62,基础 eSEN 为 43.96,单位均为 \(\mathrm{meV}/\text{Å}\);但前者在论文指定的 NVE 测试中出现明显能量漂移。这个对照没有说所有直接力模型都不可用,而是说明静态误差没有检验动力学所需的全部结构。

这是一篇基础报告解读:预印本最早发表于 2025 年 2 月 17 日,不是今天的新发布。本文从它提出的问题出发,用可手算的反例拆开三个层次:力是否与同一势能一致,实际计算图是否平滑,积分器是否在合适的时间步内工作。最后给出实际运行的合成检查和面向真实模型的验收协议。合成结果不代表复测了 eSEN 或 DFT。

1. 首先守恒的是什么:总能量,不是势能

令 \(R\in\mathbb R^{N\times3}\) 为原子坐标,\(Z\) 为固定元素种类,\(L\) 为固定晶胞;其他电子态条件也固定。模型输出标量势能 \(E_\theta(R;Z,L)\)。这里考虑无外部驱动、无恒温器、无约束力的经典动力学,质量 \(m_i\) 不变,且轨迹所在区域的势能足够光滑。动能可以不断转为势能,NVE 要保持的是两者之和:

\[\begin{aligned}F_i&=-\nabla_{R_i}E_\theta,\qquad m_i\dot v_i=F_i,\\H_\theta(R,v)&=\sum_i\frac{m_i}{2}\lVert v_i\rVert^2+E_\theta(R).\end{aligned}\]

把牛顿方程代入链式法则,就得到连续时间下的抵消:

\[\frac{\mathrm dH_\theta}{\mathrm dt}=\sum_i v_i\cdot\left(m_i\dot v_i+\nabla_{R_i}E_\theta\right)=0.\]

关键是两边用同一个能量函数。若界面返回一个能量头,却用另一个互不约束的力头推进坐标,打印出来的“总能量”未必对应正在求解的方程。另一方面,即使上述等式成立,它保持的也是模型自己的 \(H_\theta\):一个错误但光滑的势能,同样可以生成数值上很稳定的错误轨迹。守恒与接近参考物理,是两项不同的验收。

2. 很小的力误差,也可以在闭合路径上留下净功

下面构造一个无量纲、只有两个广义坐标的例子。它用来检查数学机制,不代表一个满足全部原子对称性的真实材料模型。基线势能为 \(E_0(x,y)=(x^2+y^2)/2\),对应力 \(F_0=(-x,-y)\)。给力增加一个很小的旋转分量:

\[F_\varepsilon(x,y)=(-x-\varepsilon y,\,-y+\varepsilon x).\]

在单位圆上,力误差的欧氏范数恰为 \(|\varepsilon|\),可以任意小。但沿逆时针单位圆 \(r(t)=(\cos t,\sin t)\) 走一圈:

\[\oint F_\varepsilon\cdot\mathrm dr=\int_0^{2\pi}\varepsilon\,\mathrm dt=2\pi\varepsilon.\]

保守的基线部分在闭路上不做净功;旋转误差却始终沿运动方向贡献功。同向重复这条规定路径,净功会逐圈累加。这里计算的是路径积分,未声称自由动力学轨迹必然沿单位圆运动。它足以说明:逐点误差小,不等于存在一个全局单值势能。

局部也能检查这一点。对光滑梯度力,Jacobian 必须对称;本例却满足:

\[\frac{\partial F_y}{\partial x}-\frac{\partial F_x}{\partial y}=2\varepsilon\ne0.\]

因此,中心差分的交叉导数与小闭环积分可以作为调试探针。有限数量的探针通过,并不能证明整个构型空间都保守;不连续边界和空间拓扑仍需另查。旋转等变性也不能替代这个条件:怎样随坐标旋转变换,与是否存在势能,是不同问题。

3. 写了负梯度,还要检查截断与邻居切换

自动微分只会对实际执行的计算求导。如果邻居选择突然换了一条分支,在每个分支内部得到正确梯度,也没有修复分支交界处的跳变。最近邻数量的硬上限尤其需要检查:第 \(K\) 与第 \(K+1\) 个邻居交换时,它们的元素、方向和消息可以不同,微小坐标变化便可能替换一个有限贡献。若上限从未触发,这个机制当然不会发生;不能仅凭配置里有一个数字就判定失败。

距离截断是另一个问题。把一项非零相互作用在 \(r_c\) 外直接置零,会产生边界不连续。为了具体看到修补需要什么,取 \(r_{\mathrm{on}}<r_c\),定义过渡坐标 \(s=(r-r_{\mathrm{on}})/(r_c-r_{\mathrm{on}})\),使用下面的教学用切换函数:

\[c(s)=\begin{cases}1,&s\le0,\\1-10s^3+15s^4-6s^5,&0<s<1,\\0,&s\ge1.\end{cases}\]

它在两端的一、二阶导数为零,连接常数分支后是 \(C^2\)。但多项式内侧的三阶导数在两端都是 \(-60\),外侧为零,所以不是 \(C^3\),更不是任意阶光滑。这是本文的可验证示例,不是 eSEN 官方 envelope 公式,也不能单独保证整个网络的平滑性。

若某个径向能量项为 \(E(r)=c(s)\phi(r)\),过渡区内的径向广义力为:

\[F_r=-\frac{\mathrm dE}{\mathrm dr}=-c(s)\phi'(r)-\frac{c'(s)\phi(r)}{r_c-r_{\mathrm{on}}}.\]

第二项不能漏掉。先算原始力再乘一个 cutoff,与对带 cutoff 的能量完整求导,一般不是同一件事。对消息传递模型,还须检查归一化、门控、邻居缓存及各条支路是否让边的贡献按预期消失;“乘了一个平滑函数”不是整图证明。

eSEN 的设计消融正是这类检查的实际例子:它比较了直接力、邻居上限与去掉 envelope 等变体。本文借此构建诊断顺序,不把特定变体在特定测试中的漂移,升级为所有图网络都必须遵循的架构定理。

原创四层检查框架:从势模型的平滑能量与一致梯度力,到邻居选择和截断实现、积分时间步与数值精度,再分别验证 NVE 总能量漂移和独立 DFT 或物性准确性;低测试误差和能量守恒均不单独保证物理可靠性。
原创分析框架,非测量数据或论文架构复刻。NVE 一致性与独立物性准确性分开验收;时间步和精度扫描是本文建议的诊断步骤。

4. 光滑保守力,也不意味着离散时间里能量完全不动

ASE 的 NVE 文档强调时间步选择;其 VelocityVerlet 实现采用半步动量、整步坐标、再半步动量的更新。对本文无约束设定,以 \(h\) 表示时间步,这可写成:

\[\begin{aligned}v_{n+1/2}&=v_n+\frac h2M^{-1}F(R_n),\\R_{n+1}&=R_n+h v_{n+1/2},\\v_{n+1}&=v_{n+1/2}+\frac h2M^{-1}F(R_{n+1}),\end{aligned}\]

其中 \(M\) 为坐标展开后的对角质量矩阵。保存上一时刻的力后,除初始化外每步只需一次新构型的力计算。约束、变晶胞和随机热浴不在这套简式中,不能无条件套用。

最简单的检验是一维谐振子,取无量纲 \(m=\omega=1\)、\(q_0=1\)、\(v_0=0\),于是 \(F(q)=-q\)。将上式合并为线性更新:

\[\begin{pmatrix}q_{n+1}\\v_{n+1}\end{pmatrix}=\begin{pmatrix}1-h^2/2&h\\-h(1-h^2/4)&1-h^2/2\end{pmatrix}\begin{pmatrix}q_n\\v_n\end{pmatrix}.\]

这个矩阵的行列式是 1。在 \(0<h<2\) 时,特征值在单位圆上;令 \(\vartheta=2\arcsin(h/2)\),由初值可直接验证:

\[\begin{aligned}q_n&=\cos(n\vartheta),\\v_n&=-\sqrt{1-h^2/4}\sin(n\vartheta),\\H_n-H_0&=-\frac{h^2}{8}\sin^2(n\vartheta).\end{aligned}\]

可见真实定义的总能量有幅度至多 \(h^2/8\) 的有界振荡,并非每一步精确恒定。对这个特例,离散更新还精确保留一个修正二次型;这不等于一般势能都存在同样简单的精确不变量。超过 \(h=2\) 的稳定边界,即使输入的是完全正确的保守力,也可能发散。

这给出两个重要区分:有界振荡与长期漂移不相同;缩小步长有效,也不自动证明原势面足够准确。真实体系的高频振动、短距离排斥、浮点舍入和非光滑操作都会改变可用步长,不能把此处的无量纲“2”转成某个普遍适用的飞秒数。

5. 从推导到模型实现:代价应按有效模拟时间计算

一个可审查的最小实现,应让坐标保留梯度,先产生每个结构的标量能量,再对同一能量求力。下面是接口伪代码,不是已经运行的神经网络训练:

from torch.autograd import grad

R.requires_grad_(True)
E = energy_model(R, Z, cell)          # one scalar per structure
F = -grad(E.sum(), R, create_graph=training)[0]
# During training, force loss must backpropagate through F.
# During MD, keep coordinate gradients enabled; detach between steps.

标量能量的一次反向传播可同时给出全部坐标梯度,不需要为每个坐标各运行一次反向传播。训练力损失时,参数梯度会经过能量对坐标的导数,涉及混合二阶导;只想“省显存”而提前 detach,会改变训练目标。推理不需要保留跨时间步训练图,但也不能把用于求力的那段计算整体放进禁用梯度的模式。

假设短程消息传递有 \(L_{\mathrm{msg}}\) 层、平均每原子 \(z\) 条边、固定特征维度,消息计算量随 \(L_{\mathrm{msg}}Nz\) 增长;建图、求力反向传播、激活存储与设备通信还需另计。在固定密度和 cutoff 下,\(z\) 可能近似固定;高密度、扩大 cutoff 或全连接图不满足这一简化。这里不给未经实测的速度倍数。

更直接的预算指标是每一单位有效模拟时间的成本。若每次力计算耗时为 \(C_F\),目标轨迹长 \(T\),主要开销约为 \(C_FT/h\)。在同一 \(T\) 下测试 \(h,h/2,h/4\),力调用总数约是基准单条轨迹的 \(1+2+4=7\) 倍,而不是三倍。某模型单次力计算更快,却必须把步长缩小很多,最终未必更省。应同时报告建图在内的耗时、峰值内存、原子数、硬件、精度和通过验收的步长。

6. 本文实际运行了什么

可下载标准库 Python 检查脚本,执行 python3 smooth_potential_checks.py。本次在 Python 3.12.14、macOS arm64 上运行,通过后又独立复核。脚本使用双精度浮点和精确分数运算,没有下载模型权重、使用 DFT 标签、运行真实材料 MD 或测量 GPU 吞吐。

闭环例取 \(\varepsilon=0.01\)。逆时针单位圆的解析净功为 \(0.0628318531\);512 边形逐边精确积分的实际结果为 \(0.0628302760\),加密折线趋近圆,反向路径变号,\(\varepsilon=0\) 的负对照净功为零。这里“逐边精确”指线性场在线段上用中点法的解析性质,不是浮点数没有舍入误差。

截断检查以精确分数验证端点及导数,确认常数延拓只有 \(C^2\)。谐振子使用相同总时长 \(T=100\),得到下列实跑结果;所有量都是无量纲。有限采样的最大误差接近理论包络,不强行写成与包络严格相等。

时间步 \(h\)步数实测 \(\max_n|H_n-H_0|\)
0.25000.004999908448
0.11,0000.001249995281
0.052,0000.0003124999937
0.0254,0000.00007812499989

步长减半后误差约降为四分之一,与此谐振子的二阶包络一致。另一个负对照使用 \(h=2.1\) 运行 100 步,触发预设的能量误差大于 1 的失败条件。这些检查只验算闭路功、截断正则性和积分机制,没有检验真实邻居列表,也没有证明任意神经势的长期稳定性。

7. 真实模型怎样验收,才能不被漂亮曲线误导

先固定目标物理问题:电子结构参考方法、元素与电荷/自旋条件、晶胞、单位、初始构型、质量和速度。不要把相邻轨迹帧随机分散到训练与测试两边;按材料、分子家族或完整轨迹隔离,并把选择 cutoff、步长和精度的开发集与最终验收集分开。

随后分层排查。第一层用有限差分对照自动微分的能量梯度,并对直接力接口做小闭环探针;差分间距也要扫描,过小会放大舍入,过大则混入截断误差。第二层让原子缓慢穿越 cutoff 和邻居排序交界,检查能量、力及所需阶数的导数是否跳变。第三层在无恒温器的 NVE 中,用相同初值和相同物理时长扫描步长,再比较数值精度;先排除实现错误,再决定是否要改模型。

建议同时报告每原子能量偏移曲线、最大绝对偏移、拟合漂移斜率和失败轨迹比例,并给出时间区间与单位。最大偏移的单位可为能量/原子,斜率则是能量/原子/时间,不能互换。这是本文建议的统计口径,未声称它就是 eSEN 图中误差的精确定义。只看首尾差可能恰好落在同一振荡相位;只看平均值则可能隐藏少数崩溃轨迹。

通过数值一致性后,再用独立参考检验力、能量差、声子或目标物性。温度控制可能掩盖能量注入,因此 NVT 温度稳定不能代替 NVE 诊断;反过来,NVE 中动能与势能交换导致的瞬时温度变化也不自动表示失败。对于声子等导数敏感任务,还要扫描位移尺度,区分模型误差与有限差分误差。

最终需要保留两张分开的成绩单:模型是否以可接受成本稳定求解自己的动力学,以及这种动力学是否足够接近要研究的体系。若保守且稳定却偏离参考物性,应检查训练覆盖、电子结构标签和模型表达;若静态误差很低而轨迹漂移,应检查梯度一致性、图的边界与积分设置。把失败定位到可检验的环节,比再增加一个平均误差指标更有用。

资料核对工具:使用 Kassis、Agarwal、He、Patel 与 Brueckner(2026),Scientific Agent Skills 中的 citation-management 流程核对出版元数据。该工具引用不作为本文物理结论的证据。

参考资料

  1. Fu et al. — Learning Smooth and Expressive Interatomic Potentials for Physical Property Prediction. ICML 2025, PMLR 267:17875–17893 (publication metadata date; conference July 13–19, 2025) · 2025-10-06 · 查阅 2026-10-07
  2. eSEN full-text preprint v2 (first submitted 2025-02-17) · 2025-04-23 · 查阅 2026-10-07
  3. ASE molecular dynamics documentation: time steps and the NVE ensemble · 查阅 2026-10-07
  4. ASE official VelocityVerlet source documentation · 查阅 2026-10-07
  5. Kassis, T.; Agarwal, V.; He, Y.; Patel, D.; Brueckner, A. M. — Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents (reference-checking tool) · 2026-08-30 · 查阅 2026-10-07
利友诚

关于作者

利友诚 · Youcheng Li

北京大学智能学院人工智能专业博士研究生,导师为王立威教授;Isoplex Intelligence(壹索智能)联合创始人兼 CTO。

研究关注医疗人工智能、生成式基础模型、诊断推理与科学智能体。以第一作者或共同第一作者身份在 Nature Biomedical Engineering、Scientific Data、KDD 和 PLOS Computational Biology 发表研究。