U3.2 11 分鐘閱讀 2026年9月

U3.2 把「彎」寫成一個算得出來的數

本篇重用M0.2導航的三十秒:Taylor 展開與「假設直線」·M2.3導航每 30 秒更新一次:Euler 法與它的誤差·M6.1兩個城市的人口分佈差多少:W₂ 距離·M3.4每條路徑對,還是最後的分佈對:Weak 與 Strong Convergence

「彎」到目前為止還是一個形容詞

U2.3U2.5 都說軌跡越彎、少步數的誤差越大,而且 demo 量得出來。但「彎」到現在還是一個看圖說話的形容詞——沒有一個數,就沒辦法比較兩個模型、也沒辦法拿它當優化目標。

「彎」能不能寫成一個數?
而且那個數真的壓住誤差嗎?

Euler 走一步差多少

真實軌跡 xtx_t 滿足 x˙t=ut(xt)\dot x_t=u_t(x_t)。Euler 從 xtx_t 走一步得到 xt+hut(xt)x_t+h\,u_t(x_t),而真實解的 Taylor 展開是

xt+h=xt+hx˙t+h22x¨ξ(ξ[t,t+h]).x_{t+h}=x_t+h\,\dot x_t+\frac{h^2}{2}\ddot x_\xi\quad(\xi\in[t,t+h]).

前兩項就是 Euler 走的那一步,所以局部誤差h22x¨ξ\frac{h^2}{2}\|\ddot x_\xi\|——整個誤差來源就是那個二階項。把它寫開:

x¨t=ddtut(xt)=tut(xt)場自己在變+(ut)ut(xt)粒子換位置了.\ddot x_t=\frac{d}{dt}u_t(x_t)=\underbrace{\partial_t u_t(x_t)}_{\text{場自己在變}}+\underbrace{\big(u_t\cdot\nabla\big)u_t(x_t)}_{\text{粒子換位置了}} .

兩項各有意思。第一項是「站在原地不動,速度場隨時間變了多少」;第二項是「粒子跑到新位置之後,看到的速度和原來差多少」。軌跡是等速直線的時候,兩項都是零,Euler 一步就精確。

一步的誤差怎麼變成終點的誤差

一步的誤差不會乖乖留在原地——它會被後面的流放大或縮小。如果 utu_txxLL-Lipschitz,兩條相距 δ\delta 的軌跡經過時間 τ\tau 之後最多相距 δeLτ\delta e^{L\tau}(Grönwall)。把 N=1/hN=1/h 步的局部誤差各自放大再加起來:

x1Eulerx1  kh22x¨ξkeL(1tk)  eL2h01x¨tdt+o(h).\|x^{\text{Euler}}_1-x_1\|\ \le\ \sum_{k}\frac{h^2}{2}\|\ddot x_{\xi_k}\|\,e^{L(1-t_k)} \ \le\ \frac{e^L}{2}\,h\int_0^1\|\ddot x_t\|\,dt+o(h).

把每一步的局部誤差加起來、再把「被流放大」的因子收成一個常數 CLC_L,就得到這一篇要的那一行:

  Euler 全域誤差  CLh01tut+(ut)utx=xtdt  \boxed{\;\text{Euler 全域誤差}\ \lesssim\ C_L\,h\int_0^1\big\|\partial_t u_t+(u_t\cdot\nabla)u_t\big\|_{x=x_t}\,dt\;}

這個式子把 U2.5 那張 log-log 圖的兩個訊息分得很乾淨:

  • hh 給斜率。 一階,所以 log-log 上是 1-1
  • 積分給高度。 軌跡越彎,同樣步數誤差越大;積分為零時一步 Euler 就是精確解。
  • CLC_L 是速度場的正則性。它同時放大所有誤差,但不由「路徑直不直」控制——所以它不是我們這個單元要動的東西。

「彎」現在是一個數:01x¨tdt\int_0^1\|\ddot x_t\|\,dt。這也是 U3.3U3.4 真正在壓小的量。

展開細節從單條軌跡的誤差到分布層級的 W₂ 上界

上面的不等式是對一條軌跡說的。取樣關心的是終點分布,所以要把它升級。

把單條軌跡的誤差對起點 x0p0x_0\sim p_0 取平方期望開根號:

W2(Euler 的終點分布,p1)  (Ex0x1Eulerx12)1/2.W_2\big(\text{Euler 的終點分布},\,p_1\big)\ \le\ \Big(\mathbb E_{x_0}\big\|x_1^{\text{Euler}}-x_1\big\|^2\Big)^{1/2}.

理由是 W2W_2 是所有耦合裡距離的下確界,而「同一個 x0x_0 出發的那兩個終點」本身就是一個合法的耦合——任何一個耦合都給出上界。所以只要控制得住逐軌跡的誤差,就控制得住分布的距離。

反過來不成立:W2W_2 很小不代表逐軌跡誤差小(兩堆樣本可以分布相同、卻沒有一對彼此靠近——這正是 U1.0 Q2 的那個坑)。

互動 demo:曲率積分真的壓住誤差嗎。 上面是一個不等式,這裡是六個設定的實測散點:橫軸曲率積分、縱軸 Euler 的終點誤差,兩軸都取對數。六個點排在一條斜率約 1 的線上(rr 通常 0.95 以上),所以那個積分不只是上界裡的一個符號,它真的在預測誤差。最有效的一招是換配對——線性路徑從獨立換成依位置,積分從約 9 掉到 1.4。(「怎麼換配對」本篇不處理,U3.3U3.4 各給一個做法。這裡只要接受一件事:這個積分是可以被壓下去的,而且壓它就等於省步數。)

SDE 為什麼不能用同一個量

SDE 的軌跡是布朗運動加 drift,x¨t\ddot x_t 根本不存在,「這條軌跡直不直」在那裡沒有意義。控制 Euler–Maruyama 誤差的是另一組東西:drift b+εsb+\varepsilon sxxtt 的 Lipschitz 常數與導數界,以及噪聲強度 ε\varepsilon。而且它有兩種階數要分開講——弱收斂(邊際)是 O(h)O(h)、強收斂(單條軌跡)只有 O(h1/2)O(h^{1/2})。取樣只看終點分布,所以看弱誤差。

第一,拉直不會幫到 SDE。 曲率積分是 ODE 的量;SDE 那邊對應的是 drift 的正則性,兩者不是同一個東西。

第二,SDE 的誤差不會像 ODE 那樣線性累積。 U3.1 的 Langevin 項會把偏離拉回來,所以一部分離散誤差會被後面的步吃掉。但 U3.1 的 demo 也顯示這件事有條件:修正需要足夠大的 ε\varepsilon 和足夠的剩餘時間,不是自動發生的。

粗略的圖像是:ODE 每一步犯錯少但全部累積,SDE 每一步犯錯多但錯不會全留下。

直的軌跡和厚的中間分布,能不能都要?

課堂提問Q1

U3.3 會用 reflow 把軌跡拉直,讓 x¨dt\int\|\ddot x\|\,dt 往 0 靠。既然拉直之後誤差這麼小,那能不能再把 U3.1 的 Langevin 項加上去,同時享有直軌跡和自我修正?

先想一想,再展開看整理後的答案

不能,而且原因是結構性的,不是工程上還沒做到。

Reflow 的核心是把配對 π\pi 換成確定性的耦合(每個 x0x_0 對到唯一的 x1x_1),並且 γ0\gamma\equiv0U3.0 Q1 說過這時候發生什麼事:給定 xtx_t,端點就定死了,沒有後驗可以平均,所以沒有可回歸的 score——寫不出 SDE 取樣器。

要有 score 就得留 γt>0\gamma_t \gt 0。但 γtz\gamma_t z 把每一條條件路徑撐成一根有寬度的管子,管子互相重疊,於是邊際速度又變回一個平均,x¨dt\int\|\ddot x\|\,dt 就回不到 0 了。

這兩個要求要的是互斥的圖像:

「所有粒子沿確定的直線走」和「中間分布有厚度、偏了可以拉回來」不可能同時成立。

上面 demo 的數字剛好把這件事量出來,而且方向不是單一的:

  • 線性路徑、獨立配對:積分約 9
  • 換成依位置配對(近似不交叉):掉到約 1.4——換配對是最有效的一招。
  • 好配對上加 γ\gamma:積分回升到約 3.5。這就是上面說的那個代價。
  • 壞配對上加 γ\gamma:反而掉到約 6。因為這時候 γ\gamma 主要的作用是把速度場抹平,抹平帶來的好處大於管子重疊帶來的壞處。

所以「加 γ\gamma 會讓軌跡更彎」這句話只在配對已經很好的時候才對。真正沒有例外的是那句結構性的話:γ>0\gamma \gt 0 讓積分不可能等於 0。

實務上的折衷就是取小一點的 γ\gamma:路徑接近直線,同時留一點 score 可用。γt\gamma_t 該多大目前沒有定論。

消化一下

想一想

Euler 誤差上界裡,哪一個量是「路徑直不直」直接控制的?

想一想

(ut)ut(u_t\cdot\nabla)u_t 這一項在說什麼?

想一想

下列哪一句正確?

想一想

根據 demo 量到的數字,下列哪一句不對

參考文獻

  1. Hairer, E., Nørsett, S. P., Wanner, G. Solving Ordinary Differential Equations I: Nonstiff Problems. Springer. (Euler 的局部/全域誤差與 Grönwall 論證的標準參考。)
  2. Liu, X., Gong, C., Liu, Q. Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow. ICLR 2023. (把「軌跡有多直」當成要優化的量,下一篇的主線。)
  3. Kloeden, P. E., Platen, E. Numerical Solution of Stochastic Differential Equations. Springer. (Euler–Maruyama 的弱收斂 O(h)O(h) 與強收斂 O(h1/2)O(h^{1/2})。)