跳轉到

2025:科學基礎模型現況——通用原子模擬與不確定性的新案卷#

卷宗編號:SFM-2025。報案人:材料、化學、大氣三科聯合報案。案情:AlphaFold 與 GraphCast 各自破案之後,有人想把手法提煉成通用鑑識學——一個模型,橫跨元素週期表與行星大氣。

案發現場#

2025 年的計算模擬學現場,呈現「三案併查」:

  • 材料現場:MACE、MatterSim、Alea 等通用機器學習勢能(MLIP)宣稱一個模型覆蓋近全元素,可做分子動力學、聲子、相圖,精度逼近 DFT,速度快上數個量級。
  • 天氣現場:GenCast 把 GraphCast 的確定性單值升級為機率系綜,用擴散生成 50 個成員,直接挑戰 ECMWF ENS 系綜,極端事件的 CRPS 分數反超。
  • 方法論現場:共識逐漸成形——等變圖神經+大規模 DFT/再分析資料+不確定性量化=科學基礎模型。但質疑聲亦高:外推到高壓、缺陷、稀有事件時,模型會自信地胡說嗎?

本案的偵查問題只有一個:通用性與可信度,能否兼得?

偵查過程(含數學式/表格/理論)#

線索一:MACE,等變訊息傳遞的原子通則#

MACE(Atomic Cluster Expansion 訊息傳遞)把原子環境展開為多體基,並以 \(E(3)\) 等變訊息傳遞保證旋轉平移反射下的物理對稱。節點特徵為不可約表示 \(h_i^{(l)}\) ,訊息聚合為:

\[ m_i = \sum_{j \in \mathcal{N}(i)} R(r_{ij}) Y(\hat{r}_{ij}) \otimes h_j \]

其中 \(r_{ij}\) 為原子對距離, \(\hat{r}_{ij}\) 為方向單位向量, \(R\) 為徑向基函數, \(Y\) 為球諧函數, \(\otimes\) 為等變張量積。兩層訊息傳遞即隱含高階多體作用,MACE-MP-0 以 Materials Project 逾百萬 DFT 結構訓練,一個權重橫掃無機、有機、介面。

MatterSim 與 Alea 則是資料與蒸餾路線:百萬級 DFT+主動學習挖稀有構型,搭配不確定性頭,MD 跑到哪、資料補到哪。

線索二:GenCast,機率天氣的擴散系綜#

GenCast 把 2023 年的確定性預報升級為條件擴散:在給定初值 \(X_t\) 下,對未來狀態 \(X_{t+1}\) 採樣:

\[ X_{t+1}^{(k)} \sim p_{\theta}(X_{t+1} | X_t, X_{t-1}), \quad k = 1,\dots,50 \]

以 \(CRPS\) 與 spread-skill 比評估:

\[ CRPS = \int (F(y) - H(y - o))^2 dy \]

其中 \(F\) 為預報累積分布, \(o\) 為觀測值, \(H\) 為階梯函數。GenCast 在 2025 年評估中,99% 以上的變數—lead time 組合擊敗 ECMWF ENS,颱風路徑系綜亦更集中——機率案卷正式被 AI 接管。

線索三:主動學習,可信度的巡邏隊#

通用模型最怕「自信的幻覺」。標準解法是主動學習迴圈:用系綜方差或能量—力不一致度標記高不確定構型,送回 DFT 計算再蒸餾。數學上即貝葉斯實驗設計的貪心近似——永遠先查最可疑的證人。沒有這支巡邏隊,百萬原子 MD 跑到一半炸開都無人知曉。

通用原子模擬+不確定性:新鑑識手冊#

模型家族 代表 通用範圍 不確定性做法 強項
等變 MLIP MACE-MP-0 近全元素無機+分子 系綜方差、dropout 聲子、缺陷能、MD 穩定長
大規模勢能 MatterSim、Alea 固液氣+高溫高壓外推 主動學習+校準頭 相圖、離子擴散、大體系 MD
機率天氣 GenCast 全球多變數系綜 擴散採樣 50 成員 CRPS、極端事件覆蓋率
分子對接系綜 AF3 擴散頭 蛋白+核酸+配體 多次採樣排名 結合姿態多樣性

共同公式是「對稱性+規模+校準」:等變架構保證物理,十億級訓練力場覆蓋化學空間,pLDDT/系綜離散度/能量方差提供「不知為不知」的自白機制。沒有不確定性的基礎模型,只是更快的算命師。

結案報告#

2025 年的結案是階段性的「併案偵查中」:

  • 已證實:單一 MLIP 跑百萬原子 MD、單一權重算聲子譜與離子電導,已從 demo 變成日常;天氣機率預報被 AI 系綜超越,AIFS-ENS 跟進,NWP 全面 AI 化。
  • 未證實:反應能壘(催化)、強關聯電子結構、氣候百年外推,仍是通用模型的滑鐵盧;幻覺以更自信的面孔出現,審查比以往更難。
  • 展望數位孿生:材料孿生(從成分直達壽命)、地球孿生(Destination Earth)、細胞孿生(虛擬細胞)三線收斂。下一代案卷的標題或許是:當孿生體與本體分歧時,我們該相信哪一個?

從阿基米德的窮竭法到通用原子模擬,三百年的探案繞了一圈:人類終於把世界寫成了可學習的函數,下一步是學會為自己的無知定價。

卷末附記:給下一任偵探的三條誡律#

  • 誡律一:凡無不確定性標註的預測,皆視為供詞而非證據——先看誤差棒,再看數字。
  • 誡律二:凡離開訓練分布的外推,皆須物理守恆複驗——能量、質量、對稱性,一項都不能少。
  • 誡律三:凡孿生體與實驗分歧之處,皆為新案發現場——分歧不是失敗,是下一份卷宗的封面。

證據與工具#

  • 關鍵公式:等變訊息 \(m_i\) 、擴散系綜採樣 \(X_{t+1}^{(k)}\) 、CRPS 評分、力—能量聯合損失與應力 virial 項。
  • 核心工具:MACE / MatterSim / Alea 權重與 ASE 介面、GenCast 開源系綜碼、Materials Project+Alexandria DFT 資料集、WeatherBench-prob 評測。
  • 動手線索:用 MACE-MP-0 跑一個矽晶體的 NVT 分子動力學,對比 Stillinger-Weber 經驗勢的徑向分布;再取 GenCast 一個颱風個案,畫出 50 成員路徑 spread,體會確定性 vs 機率預報之差。
基準考場 考題 及格線示意
Matbench/MD 穩定性 能量、力、聲子、NVT 長 MD 力誤差 meV/埃級、ns 級不散架
WeatherBench-prob CRPS、spread-skill、極端覆蓋率 系綜離散與誤差匹配
PoseBusters/DockQ 對接有效性 鍵長手性全檢通過
  • 術語對照:MLIP(機器學習原子間勢能)、 \(E(3)\) (三維歐氏群)、CRPS(連續分級機率分數)、Alea(通用勢能新秀)。
  • 全書收束:窮竭法(前230)→ 牛頓方程(1687)→ 薛丁格(1926)→ Monte Carlo(1946)→ DFT(1965)→ AF2(2020)→ 基礎模型(2025),見 README 因果鏈。

補充:程式實作#

對應程式:2025-equivariant_filter_toy.py

本節以三維點雲濾波玩具重演本文核心理論:徑向函數 \(R(r)\) 乘上向量型球諧 \(Y\) ,構成等變訊息的最小骨架。

濾波形式為 \(F\) 加權求和徑向與座標貢獻,其中 \(phi\) 為高斯徑向函數, \(x\) 為相對座標, \(h\) 為不變標量特徵,旋轉下滿足 \(F(Rx)=RF(x)\) 。

此式正是 MACE 與 NequIP 兩層訊息傳遞的單層雛形:對稱性由構造保證,而非由資料學會,這是基礎模型可信度的第一根支柱。

執行方式:

python3 _code/2025-equivariant_filter_toy.py

實測關鍵輸出(本次真實執行結果抄錄):

點數=8, 濾波 F=Σ φ(r) x h(徑向×l=1 球諧向量)
F(x)   = [-0.04826929 -0.07248006  0.78204395]
F(Rx)  = [ 0.19205858 -0.65229993  0.39597263]
等變誤差 ||F(Rx)-R F(x)|| = 1.241e-16 (要求 < 1e-10)
VERIFICATION: equiv_err=1.241e-16 PASS

數字解讀:8 點隨機點雲經隨機旋轉後,先旋轉再濾波與先濾波再旋轉之差僅 1.241e-16 ,壓在 1e-10 門檻下六個量級,實為浮點舍入水準。

輸出向量本身量級約 0.78 ,而誤差小至 1e-16 ,證明等變性是數學恆等式,而非訓練擬合的近似,這正是 \(E(3)\) 等變架構的承諾。

不在場證明成立:無論把點雲怎麼轉,濾波器的證詞永遠跟著轉,通用鑑識學的第一課過關。

讀者可改點數 \(NPTS\) (如 16 或 32 )或徑向寬度 0.5 做實驗,觀察誤差是否恆在 1e-10 之下。

完整程式如下:

# -*- coding: utf-8 -*-
"""2025 3D 點雲等變濾波演示 (對應 wiki:計算模擬學 / 等變神經網路・NequIP/MACE)。

核心思想:MACE / NequIP 的等變訊息 = 徑向函數 R(|x|) × 球諧 Y_l^m(x̂),
l=1 時 Y ∝ x/r(向量),旋轉下按向量變換。線性濾波
F({x}) = Σ_j φ(r_j) x_j h_j(φ 為徑向函數,h_j 為不變標量特徵)
滿足 F(Rx) = R F(x)。本玩具以隨機旋轉 R 驗證等變性誤差 < 1e-10。

只用 numpy,固定種子。
"""
import numpy as np

np.random.seed(2025)

NPTS = 8


def radial(r):
    return np.exp(-0.5 * (r / 0.5) ** 2)  # 高斯徑向函數


def cloud_filter(X, h):
    """X: (N,3), h: (N,) -> (3,) 向量輸出。"""
    r = np.linalg.norm(X, axis=1, keepdims=True)  # (N,1)
    return (radial(r) * X * h[:, None]).sum(axis=0)


def random_rotation():
    A = np.random.randn(3, 3)
    Q, R = np.linalg.qr(A)
    if np.linalg.det(Q) < 0:
        Q[:, 0] = -Q[:, 0]
    return Q


def main():
    X = np.random.uniform(-1, 1, size=(NPTS, 3))
    h = np.random.randn(NPTS)
    R = random_rotation()
    Xr = X @ R.T  # 旋轉點雲

    F = cloud_filter(X, h)
    Fr = cloud_filter(Xr, h)
    expect = R @ F
    err = float(np.linalg.norm(Fr - expect))

    print(f"點數={NPTS}, 濾波 F=Σ φ(r) x h(徑向×l=1 球諧向量)")
    print(f"F(x)   = {F}")
    print(f"F(Rx)  = {Fr}")
    print(f"R F(x) = {expect}")
    print(f"等變誤差 ||F(Rx)-R F(x)|| = {err:.3e} (要求 < 1e-10)")
    assert err < 1e-10, "等變性失敗"
    print(f"VERIFICATION: equiv_err={err:.3e} PASS")
    print("說明: MACE/NequIP 即以此類 R(r)×Y_l^m 為基底堆疊高階張量積,保證旋轉等變。")


if __name__ == "__main__":
    main()