CS236 補充課 E · 布朗運動與 SDE
CS236 補充課 E · 布朗運動與 SDE

布朗運動與隨機微分方程:在 ODE 上加一點抖動

隨機微分方程(SDE)就是「ODE 的速度,加上每一小段時間的隨機抖動」。這一頁從最簡單的隨機漫步開始,說明抖動為什麼是 \(\sqrt{dt}\),再一步一步學會模擬 SDE、推導 OU 過程的解和 Itô 公式,最後看懂 diffusion model 的兩種前向 SDE。

先修:補充課 A(Taylor、變異數、√n、高斯)、B(ODE、Euler 法、積分因子) 服務:第 14、16、17 講;補充課 F 預計閱讀 2–3 小時,可以分次讀

讀完這頁你應該能夠

  1. 說出布朗運動的定義性質,並解釋為什麼它處處連續、卻處處不可微。
  2. 解釋 \((dW)^2 = dt\) 的意思,並說明為什麼 \(dt^2\) 和 \(dt\,dW\) 可以丟掉。
  3. 說明 \(dx = f\,dt + g\,dW\) 到底是什麼意思,用 Euler–Maruyama 模擬它,並解釋雜訊為什麼是 \(g\sqrt h\,\epsilon\)。
  4. 推導 OU 過程的平均和變異數,求出穩態,並算出 Euler–Maruyama 把穩態變異數算錯多少。
  5. 說明 strong 與 weak 誤差的差別。
  6. 從 \(W^2\) 的例子推導 Itô 公式,並用它算一個例子。
  7. 寫出 VE 與 VP SDE,推導它們的 \(q(\mathbf x_t\mid\mathbf x_0)\),以及 VP 和 DDPM 的關係。

00為什麼需要 SDE

Diffusion model 的前向過程是:每一步都把資料縮小一點、再加一點高斯雜訊。第 16 講的 DDPM 用 1000 個離散的步驟來做。如果把步驟切得無限細,就得到一個連續時間的隨機過程,寫成 SDE。這樣做的好處是可以用微積分的工具(補充課 F 的反向 SDE、probability flow ODE)來分析和設計模型。

但把雜訊切細有個陷阱。如果一步的雜訊和步長成正比,切細後雜訊會消失;如果不隨步長縮小,切細後又會爆炸。第 1–2 節先弄清楚正確的縮放是什麼,第 3–5 節用它模擬 SDE,第 6 節處理它帶來的新微積分規則,第 7 節回到 diffusion。

01從隨機漫步到布朗運動

把隨機漫步切細

回憶補充課 A 第 8 節:在時間 1 內走 \(n\) 步,每步 \(\pm s\),獨立的步數相加,加的是變異數,所以終點的變異數是 \(ns^2\)。要讓它固定是 1,每步必須是 \(s = 1/\sqrt n\)。步長 \(\Delta t = 1/n\),所以 \(s = \sqrt{\Delta t}\)。

\(n\to\infty\) 的極限叫布朗運動(或 Wiener process)\(W_t\),它由三個性質定義:

  • \(W_0 = 0\),路徑連續(沒有跳躍)。
  • 增量獨立:不重疊的時間區間上,\(W\) 的變化彼此獨立。
  • 增量是高斯:\(W_t - W_s\sim\mathcal N(0,\ t - s)\)。變異數等於經過的時間。
手算
  • \(W_4\sim\mathcal N(0, 4)\),標準差是 2。
  • \(W_4 - W_1\sim\mathcal N(0, 3)\),而且它和 \(W_1\) 獨立。
  • \(\mathbb E[W_4\mid W_1 = 2] = 2\):未來的增量平均是 0,所以最佳猜測就是現在的位置。

為什麼處處不可微

導數是 \(\Delta W/\Delta t\) 在 \(\Delta t\to0\) 時的極限。但 \(\Delta W\) 的典型大小是 \(\sqrt{\Delta t}\),所以

\(\Delta t\)典型的 \(|\Delta W|\)斜率 \(|\Delta W|/\Delta t\)
0.010.110
0.00010.01100
0.0000010.0011000

區間越短,斜率越大,沒有極限。所以布朗運動處處連續、處處不可微。平滑曲線放大後會變成直線,布朗路徑放大後還是一樣粗糙。

Demo E1 · 放大一條布朗路徑:永遠不會變平滑

怎麼看:右圖是左圖橙色視窗的放大。勾選「按 √ 縮放」時,不論放大多少倍,右圖看起來都差不多:時間放大 \(c\) 倍、空間放大 \(\sqrt c\) 倍之後,統計性質不變,這叫自相似。取消勾選,放大後路徑看起來變平了,但這只是因為小區間的變化本來就小(\(\sqrt{\Delta t}\)),不代表它變平滑。
布朗路徑(65,536 個點)左圖:放大的視窗
一句話帶走:布朗運動的增量是 \(\mathcal N(0, \Delta t)\),典型大小是 \(\sqrt{\Delta t}\),比 \(\Delta t\) 大得多,所以它沒有導數。
小練習:\(W_{0.5}\) 和 \(W_2 - W_1\) 的分佈各是什麼?它們獨立嗎?
\(\mathcal N(0, 0.5)\) 與 \(\mathcal N(0, 1)\);區間 \([0, 0.5]\) 和 \([1, 2]\) 不重疊,所以獨立。

02為什麼是 √dt:(dW)² = dt

普通微積分的基礎是:\(dt\) 極小,\(dt^2\) 更小,可以丟掉。但布朗運動的增量是 \(\sqrt{dt}\) 大小,它的平方就和 \(dt\) 一樣大了,不能丟。這是隨機微積分和普通微積分唯一的差別,其他都由此而來。

dt = 0.01√dt = 0.1(√dt)² = dtdt · √dt = 0.001
\(dt = 0.01\) 時各項的大小。\(\sqrt{dt}\) 比 \(dt\) 大 10 倍,它的平方則剛好回到 \(dt\);\(dt\cdot\sqrt{dt}\) 比 \(dt\) 小,可以丟。

把平方加起來

把 \([0, 1]\) 切成 \(n\) 段,每段的增量 \(\Delta W_i\sim\mathcal N(0, 1/n)\)。計算 \(S = \sum_i(\Delta W_i)^2\)。

  1. 期望值:變異數就是平方的期望值,所以 \(\mathbb E[(\Delta W_i)^2] = 1/n\)。加 \(n\) 項:\(\mathbb E[S] = 1\)。
  2. 變異數:高斯的四次方期望值是 \(\mathbb E[x^4] = 3\sigma^4\),所以每一項的變異數是 \(3\sigma^4 - \sigma^4 = 2/n^2\)。獨立的 \(n\) 項相加:\(\operatorname{Var}(S) = 2/n\)。
  3. \(n\to\infty\) 時變異數趨近 0。也就是說,\(S\) 不再隨機,就等於 1,也就是區間的長度。
手算

\(n = 100\):\(S\) 的平均是 1,標準差 \(\sqrt{2/100} = 0.14\)。\(n = 10000\):標準差 \(0.014\)。雖然每個 \(\Delta W_i\) 都是隨機的,加起來卻幾乎確定。

這就是 \((dW)^2 = dt\) 的意思:很多小段的平方加起來,等於經過的時間。單獨一段的平方仍是隨機的,但累加之後就可以當成 \(dt\)。

對照平滑函數:\((\Delta f)^2\approx f'^2\Delta t^2\),\(n\) 項相加是 \(f'^2\cdot n\cdot\frac{1}{n^2}\to0\),消失了。另一方面,\(\sum|\Delta W_i|\) 每項約 \(\sqrt{1/n}\),\(n\) 項是 \(\sqrt n\) 量級,趨近無窮大:布朗路徑的長度是無限的。

乘法規則

把各種小量相乘時,只留下和 \(dt\) 同量級的:

乘積大小規則
\((dW)^2\)\(dt\)\(= dt\)
\(dt\cdot dW\)\(dt^{3/2}\)\(= 0\)
\((dt)^2\)\(dt^2\)\(= 0\)

第 6 節的 Itô 公式就是用這張表推導的。

Demo E2 · 切越細:|ΔW| 的和發散,(ΔW)² 的和趨近 1

怎麼看:拖動切割數 \(n\)。橙色的 \(\sum|\Delta W|\) 一直往上;藍色的 \(\sum(\Delta W)^2\) 越來越貼近 1,抖動越來越小;綠色的平滑函數對照組趨近 0。
Σ|ΔW|(右軸,log 刻度)Σ(ΔW)²對照:平滑函數 sin(2πt) 的 Σ(Δf)²
一句話帶走:\(dW\) 大小是 \(\sqrt{dt}\),所以 \((dW)^2\) 和 \(dt\) 同量級,累加後就等於時間,不能像普通微積分那樣丟掉。

03SDE = drift + 雜訊,用 Euler–Maruyama 模擬

從 Euler 法開始

ODE 的 Euler 法是 \(x_{n+1} = x_n + f(x_n)\,h\)(補充課 B 第 8 節)。現在每一步再加一個獨立的抖動。布朗運動在 \(h\) 時間內的變化是 \(\mathcal N(0, h)\),可以寫成 \(\sqrt h\,\epsilon\),其中 \(\epsilon\sim\mathcal N(0, 1)\)。再乘上強度 \(g\):

Euler–Maruyama(EM) $$\begin{aligned}x_{n+1} ={}&x_n + f(x_n, t_n)\,h\\&+ g(t_n)\,\sqrt h\,\epsilon_n\end{aligned}$$
tt + hf · h(確定的)g√h·ε(隨機的)xₙxₙ₊₁
一步分成兩段:先照速度 \(f\) 走(藍色,和 Euler 一樣),再隨機抖一下(橙色)。
手算

\(f = -x,\ g = 0.5,\ h = 0.04\)(所以 \(\sqrt h = 0.2\)),從 \(x_0 = 1.5\) 出發。抽到的亂數依序是 \(0.8, -1.2, 0.3\)。

\(x_n\)\(\epsilon\)\(f\,h\)\(g\sqrt h\,\epsilon\)\(x_{n+1}\)
1.50.8−0.06+0.081.52
1.52−1.2−0.061−0.121.339
1.3390.3−0.054+0.031.316

每次亂數不同,所以每次走出的路徑都不同。

dx = f dt + g dW 是什麼意思

步長 \(h\to0\) 的極限就是 SDE,習慣上寫成:

SDE $$dx = \underbrace{f(x, t)\,dt}_{\text{drift:確定的速度}} + \underbrace{g(t)\,dW}_{\text{擴散:隨機抖動}}$$

注意:不能除以 \(dt\)。第 1 節說過 \(dW/dt\) 不存在。所以這條式子不是微分方程,只是一種記法,意思就是「\(h\to0\) 時,上面那個 EM 的更新」。

從 EM 也能看出 \(f\) 和 \(g\) 的意義。給定 \(x_n\),一步的平均和變異數是:

$$\begin{aligned}\mathbb E[x_{n+1} - x_n\mid x_n] &= f\,h\\\operatorname{Var}[x_{n+1}\mid x_n] &= g^2h\end{aligned}$$

所以 \(f\) 是平均的速度,\(g^2\) 是變異數增加的速率。

為什麼是 √h

走完時間 1 要 \(1/h\) 步。獨立的抖動相加,加的是變異數。試試三種縮放:

一步的抖動每步變異數總變異數(\(\times1/h\))\(h\to0\)
\(g\,h\,\epsilon\)\(g^2h^2\)\(g^2h\)消失
\(g\sqrt h\,\epsilon\)\(g^2h\)\(g^2\)和步長無關
\(g\,\epsilon\)\(g^2\)\(g^2/h\)爆炸

Demo E3 · 雜訊要怎麼隨步長縮放

怎麼看:沒有 drift,只有雜訊,走完時間 1。選一種縮放,把步數拉大。只有 \(\sqrt h\) 的情況,不論切多細,路徑的範圍和讀數裡的標準差都不變。
30 條路徑(g = 1)

Demo E4 · 各種 drift 加上雜訊

怎麼看:先把 \(g\) 拉到 0:所有路徑都是同一條 ODE 的解(灰線)。再慢慢加大 \(g\)。
  • 往 0 拉:drift 把粒子拉回 0、雜訊把它們推散,兩者平衡在一個固定寬度的高斯(下一節會算出來)。
  • 雙井:\(g\) 小時粒子留在出發的那口井;\(g\) 夠大才會偶爾跳到另一口井。和補充課 D 的「多峰困住 MCMC」是同一件事。
左:30 條路徑(h = 0.01,從 x = 1.5 出發)g = 0 時的 ODE 解右:3,000 條路徑在 t = 5 的分佈

出處:Lai et al. (2026) 附錄 A.2「From ODEs to SDEs」(\(\sqrt{\Delta t}\) 的縮放與 Euler–Maruyama)。

一句話帶走:SDE 是 EM 在步長趨近 0 的極限;\(f\) 是平均速度,\(g^2\) 是變異數增加的速率,只有 \(\sqrt h\) 的縮放能讓雜訊不消失也不爆炸。

04OU 過程:有閉式解、會忘記起點的 SDE

為什麼重要

Ornstein–Uhlenbeck(OU)過程是 drift 為線性的 SDE:

$$dx = -\theta x\,dt + \sigma\,dW$$

它是 diffusion model 前向過程的原型:不論資料長什麼樣,都會被推成同一個高斯。

0drift雜訊兩者平衡:寬度固定
drift 把粒子往 0 拉,離得越遠拉得越大(藍)。雜訊不分方向地把粒子推散(橙)。兩者平衡時,分佈維持固定的寬度。

平均怎麼變

對 EM 的更新 \(x_{n+1} = (1 - \theta h)x_n + \sigma\sqrt h\,\epsilon\) 取期望。\(\epsilon\) 的平均是 0,所以平均 \(m_n\) 滿足 \(m_{n+1} = (1 - \theta h)m_n\),也就是

$$\frac{dm}{dt} = -\theta m\quad\Rightarrow\quad m(t) = x_0e^{-\theta t}$$

和沒有雜訊時完全一樣:雜訊不改變平均,平均以 \(e^{-\theta t}\) 忘記起點。

變異數怎麼變

對同一個更新取變異數。\(x_n\) 和 \(\epsilon\) 獨立,所以變異數相加,常數要平方:

$$V_{n+1} = (1 - \theta h)^2V_n + \sigma^2h$$

展開 \((1 - \theta h)^2 = 1 - 2\theta h + O(h^2)\),移項、除以 \(h\),取 \(h\to0\):

$$\frac{dV}{dt} = -2\theta V + \sigma^2$$

兩項正好對應上面的圖:drift 以 \(2\theta V\) 的速率縮小變異數,雜訊以 \(\sigma^2\) 的速率增加變異數。這是一個半線性 ODE,用補充課 B 第 11 節的積分因子,從 \(V(0) = 0\) 解出:

$$V(t) = \frac{\sigma^2}{2\theta}\big(1 - e^{-2\theta t}\big)$$

驗算:\(V' = \sigma^2e^{-2\theta t}\);而 \(-2\theta V + \sigma^2\) 把 \(V\) 代入後也是 \(\sigma^2e^{-2\theta t}\) ✓。

完整的答案

EM 的每一步都是高斯的線性組合,所以 \(x_t\) 一直是高斯(補充課 A 第 10 節)。平均和變異數都有了:

OU 的閉式解 $$x_t\sim\mathcal N\Big(x_0e^{-\theta t},\ \frac{\sigma^2}{2\theta}\big(1 - e^{-2\theta t}\big)\Big)$$

\(t\to\infty\) 時,起點完全被忘記,分佈變成穩態 \(\mathcal N(0, \sigma^2/2\theta)\)。也可以直接從 \(dV/dt = 0\) 得到:\(V = \sigma^2/2\theta\)。

手算

\(dx = -2x\,dt + dW\),\(x_0 = 5\)。\(t = 1\) 時平均 \(5e^{-2} = 0.677\);穩態變異數 \(1/4\)。\(t = 0.5\) 時變異數 \(\tfrac14(1 - e^{-2}) = 0.216\)。

精確的一步,和 EM 的偏差

閉式解的 \(t\) 可以取任意值,所以可以精確地走一步,步長多大都對:

$$x_{n+1} = e^{-\theta h}x_n + \sigma\sqrt{\frac{1 - e^{-2\theta h}}{2\theta}}\,\epsilon$$

EM 就不一樣了。穩態時 \(V_{n+1} = V_n = V\),由上面的遞迴式:

$$\begin{aligned}V &= (1 - \theta h)^2V + \sigma^2h\\V &= \frac{\sigma^2}{\theta(2 - \theta h)}\end{aligned}$$

\(h\to0\) 才等於正確的 \(\sigma^2/2\theta\)。\(\theta = \sigma = 1,\ h = 0.3\) 時是 \(1/1.7 = 0.588\),精確值 \(0.5\),偏大 18%。

Demo E5 · OU 過程:EM vs. 精確的一步

怎麼看:黑線是精確的平均與 \(\pm2\) 標準差,橙線是 4,000 條路徑實測的範圍。用 EM 把 \(h\) 拉大,橙線會超出黑線,比對讀數的變異數。切到「精確的一步」:不論步長多大,橙線都貼著黑線。第 16 講的 DDPM 能一步跳到任何 \(t\),用的就是這種閉式。
20 條路徑(σ = 1,從 x = 3 出發)精確的平均與 ±2 標準差4,000 條路徑實測的 ±2 標準差

出處:線性 SDE 的閉式解見 Lai et al. (2026) 附錄 C.1.5「Closed-Form Solution of a Linear SDE」。

一句話帶走:OU 過程的平均以 \(e^{-\theta t}\) 忘記起點,變異數長到 \(\sigma^2/2\theta\);大步長的 EM 會高估穩態變異數。
小練習:\(\theta = 1,\ \sigma = 1\),\(h = 0.1\)。EM 的穩態變異數偏大多少?
\(1/(2 - 0.1) = 0.526\),比 \(0.5\) 大約 5%。

05Euler–Maruyama 有多準:strong 與 weak 兩種誤差

ODE 的誤差只有一種。SDE 的解是隨機的,所以「誤差」有兩種量法:

Strong(路徑)誤差Weak(分佈)誤差
定義\(\mathbb E|X_T - X_T^h|\),用同一條布朗路徑比較只比較統計量,例如 \(|\mathbb E[X_T] - \mathbb E[X_T^h]|\)
問的是單一路徑準不準分佈對不對
EM 的階數\(O(h^{1/2})\)\(O(h)\)

生成模型只在乎生成的分佈,所以 weak 誤差才是重點。下面用幾何布朗運動 \(dX = \mu X\,dt + \sigma X\,dW\) 來量,因為它有精確解:\(X_T = X_0\exp\big((\mu - \tfrac12\sigma^2)T + \sigma W_T\big)\)(第 6 節會推導)。

EM 的期望值也能算:一步是 \(X_{n+1} = X_n(1 + \mu h + \sigma\sqrt h\,\epsilon)\),\(\epsilon\) 和 \(X_n\) 獨立,所以 \(\mathbb E[X_{n+1}] = (1 + \mu h)\mathbb E[X_n]\),走完得 \(X_0(1 + \mu h)^{T/h}\)。而精確值是 \(X_0e^{\mu T}\),所以 weak 誤差可以直接算出來。

Demo E6 · 幾何布朗運動上的 EM:兩種誤差的斜率

怎麼看:兩軸都取 log,所以斜率就是階數。藍線(strong)比較平,斜率約 \(\tfrac12\);橙線(weak)比較陡,斜率約 1。
strong:E|X_T − X_T^h|(2,000 條路徑的平均)weak:|E X_T − E X_T^h|(精確計算)參考斜率 1/2 與 1

附註:如果雜訊是加性的(\(g\) 不依賴 \(x\),例如 OU、VE、VP SDE),EM 的 strong 誤差會提升到 \(O(h)\)。strong 誤差只有 1/2 階,是「雜訊大小隨 \(x\) 變」的乘性雜訊造成的。

一句話帶走:strong 問單一路徑,weak 問分佈;EM 的 weak 誤差是一階,而生成模型在乎的是 weak。

06Itô:為什麼連鎖律要多一項

一個矛盾

普通的連鎖律說 \(d(W^2) = 2W\,dW\)。如果真是這樣,積分得到 \(W_t^2 = \int_0^t2W\,dW\)。兩邊取期望:

  • 左邊:\(\mathbb E[W_t^2] = t\)(變異數)。
  • 右邊:積分是每一小段 \(2W_{t_i}\,\Delta W_i\) 的和。\(W_{t_i}\) 和未來的增量 \(\Delta W_i\) 獨立,而 \(\Delta W_i\) 的平均是 0,所以每一項期望值都是 0。

左邊是 \(t\),右邊是 0,矛盾。少了什麼?

直接算

不要用連鎖律,直接展開:

$$\begin{aligned}&(W + \Delta W)^2 - W^2\\={}&2W\,\Delta W + (\Delta W)^2\end{aligned}$$
W²WΔWWΔW(ΔW)²平滑函數:這塊可以丟布朗運動:不能丟
邊長 \(W + \Delta W\) 的正方形。變化量是兩條 \(W\Delta W\) 加上角落的 \((\Delta W)^2\)。

這是完全精確的代數。平滑函數的 \((\Delta f)^2\) 會被丟掉,但第 2 節說過,\((\Delta W)^2\) 加起來等於經過的時間。把所有小段加起來(中間項互相抵銷):

$$\begin{aligned}W_t^2 &= \sum_i2W_{t_i}\Delta W_i + \sum_i(\Delta W_i)^2\\&\to\int_0^t2W\,dW + t\end{aligned}$$

所以正確的是 \(d(W^2) = 2W\,dW + dt\),期望值也對了:\(t = 0 + t\) ✓。

一般的 Itô 公式

設 \(dX = f\,dt + g\,dW\),\(\phi\) 是平滑函數。用二階 Taylor 展開:

$$d\phi(X) = \phi'(X)\,dX + \tfrac12\phi''(X)\,(dX)^2$$

用第 2 節的乘法規則算 \((dX)^2\):

$$\begin{aligned}(dX)^2 &= f^2\underbrace{dt^2}_{0} + 2fg\underbrace{dt\,dW}_{0} + g^2\underbrace{(dW)^2}_{dt}\\&= g^2\,dt\end{aligned}$$

代回去:

Itô 公式 $$d\phi(X) = \phi'(X)\,dX + \tfrac12\phi''(X)\,g^2\,dt$$

多出來的 \(\tfrac12\phi''g^2\,dt\) 就是和普通連鎖律唯一的差別。它是補充課 F 推導 Fokker–Planck 方程的關鍵:Fokker–Planck 裡的 \(\tfrac12g^2\,\partial_x^2p\) 擴散項,就是從這裡來的。

手算一

\(X = W\)(\(f = 0,\ g = 1\)),\(\phi = x^2\):\(\phi' = 2x\)、\(\phi'' = 2\),得 \(d(W^2) = 2W\,dW + dt\),和上面相同。

\(\phi = x^3\):\(\phi' = 3x^2\)、\(\phi'' = 6x\),得 \(d(W^3) = 3W^2\,dW + 3W\,dt\)。

手算二:幾何布朗運動的解(第 5 節用到的)

\(dX = \mu X\,dt + \sigma X\,dW\),也就是 \(f = \mu X,\ g = \sigma X\)。取 \(\phi = \ln x\),\(\phi' = 1/x\)、\(\phi'' = -1/x^2\):

$$\begin{aligned}d\ln X ={}&\frac1X(\mu X\,dt + \sigma X\,dW)\\&- \frac12\cdot\frac{1}{X^2}\sigma^2X^2\,dt\end{aligned}$$

\(X\) 全部消掉:\(d\ln X = (\mu - \tfrac12\sigma^2)\,dt + \sigma\,dW\)。右邊不含 \(X\),直接積分:

$$X_T = X_0\exp\big((\mu - \tfrac12\sigma^2)T + \sigma W_T\big)$$

那個 \(-\tfrac12\sigma^2\) 就是 Itô 的修正項。

Demo E7 · W²、Itô 積分 ∫2W dW,以及兩者的差

怎麼看:黑線 \(W_t^2\) 和藍線(Itô 和)的差是橙線,也就是 \(\sum(\Delta W)^2\)。把 \(n\) 拉大,橙線會貼上灰色的直線 \(t\)。普通的連鎖律說這個差應該是 0。
W_t²Itô 和 Σ 2W_{tᵢ}ΔWᵢ(用左端點)兩者的差 = Σ(ΔWᵢ)²直線 t

Itô 積分規定用每一小段的左端點 \(W_{t_i}\)(只用到「現在」的資訊,不偷看未來),這是它的期望值為 0 的原因。如果改用中點,差的那一項會消失,得到的是另一種積分(Stratonovich),連鎖律就和一般微積分一樣。diffusion 的文獻一律用 Itô。

出處:Lai et al. (2026) 附錄 A.2「Intuition for Itô Integration」與附錄 C.1「Itô's Formula: The Chain Rule for Random Processes」(從 Taylor 展開推導一維 Itô 公式)。

一句話帶走:Taylor 展開的二階項因為 \((dW)^2 = dt\) 而留下來,這就是 Itô 公式多出來的 \(\tfrac12\phi''g^2\,dt\)。
小練習:\(dX = dW\),\(\phi = e^{x}\)。寫出 \(d\phi\)。
\(\phi' = \phi'' = e^{x}\),所以 \(d(e^{W}) = e^{W}\,dW + \tfrac12e^{W}\,dt\)。

07diffusion 的前向 SDE:VE 與 VP

第 14、16 講的兩種加雜訊過程都是線性的 SDE,所以和第 4 節一樣,\(q(\mathbf x_t\mid\mathbf x_0)\) 都有閉式。每個維度獨立,所以只要看一維。

VE峰不動,越來越寬VP往 0 縮,趨近標準常態
灰色是資料,藍色、橙色依序是時間越來越晚的分佈。

VE:只加雜訊

沒有 drift,\(dx = g(t)\,dW\)。每一小段的變異數是 \(g^2\,dt\),累加得 \(\int_0^tg^2\,ds\)。如果選 \(g^2 = \frac{d\sigma^2}{dt}\),積分正好是 \(\sigma^2(t) - \sigma^2(0)\)。平均不變,所以

$$x_t\mid x_0\sim\mathcal N\big(x_0,\ \sigma^2(t) - \sigma^2(0)\big)$$

VP:一邊縮小一邊加雜訊

\(dx = -\tfrac12\beta(t)x\,dt + \sqrt{\beta(t)}\,dW\),就是第 4 節的 OU 過程,只是強度隨時間變。照第 4 節的做法:

  1. 平均:\(\frac{dm}{dt} = -\tfrac12\beta m\),分離變數得 \(m(t) = x_0\exp\big(-\tfrac12\int_0^t\beta\big)\)。定義 \(\bar\alpha_t = \exp\big(-\int_0^t\beta\big)\),就是 \(m = \sqrt{\bar\alpha_t}\,x_0\)。
  2. 變異數:\(\frac{dV}{dt} = -\beta V + \beta\)(drift 的 \(2\theta = \beta\),雜訊的 \(\sigma^2 = \beta\))。解是 \(V = 1 - \bar\alpha_t\)。驗算:\(\bar\alpha_t' = -\beta\bar\alpha_t\),所以 \(V' = \beta\bar\alpha_t\);而 \(-\beta(1 - \bar\alpha_t) + \beta = \beta\bar\alpha_t\) ✓。

結果就是 DDPM 的公式。如果資料的變異數是 1,總變異數 \(\bar\alpha_t\cdot1 + (1 - \bar\alpha_t) = 1\),維持不變,所以叫 variance preserving。

VE(variance exploding)VP(variance preserving)
SDE\(d\mathbf x = \sqrt{\frac{d\sigma^2(t)}{dt}}\,d\mathbf W\)\(d\mathbf x = -\tfrac12\beta(t)\mathbf x\,dt + \sqrt{\beta(t)}\,d\mathbf W\)
\(q(\mathbf x_t\mid\mathbf x_0)\)\(\mathcal N\big(\mathbf x_0,\ (\sigma^2(t) - \sigma^2(0))I\big)\)\(\mathcal N\big(\sqrt{\bar\alpha_t}\,\mathbf x_0,\ (1 - \bar\alpha_t)I\big)\)
終點變異數變得非常大變異數保持在 1 附近,趨近 \(\mathcal N(0, I)\)
對應NCSN(第 13–14 講)DDPM(第 16 講)

VP 和 DDPM 的關係

DDPM 的一步是 \(x_t = \sqrt{1 - \beta_t}\,x_{t-1} + \sqrt{\beta_t}\,\epsilon\)。\(\beta_t\) 很小時,由 Taylor 展開 \(\sqrt{1 - \beta}\approx1 - \tfrac12\beta\)(例如 \(\beta = 0.01\):\(0.99499\) 對 \(0.995\)):

$$x_t\approx x_{t-1} - \tfrac12\beta_tx_{t-1} + \sqrt{\beta_t}\,\epsilon$$

這正是 VP SDE 步長為 1 的 EM(\(\beta_t\) 對應 \(\beta(t)h\))。所以 DDPM 的前向過程就是 VP SDE 的離散化。

Demo E8 · 同一份資料,兩種前向 SDE

怎麼看:資料是兩個高斯的混合(峰在 −1.4 和 0.9)。拖動 \(t\)。VE 的峰不動,整體越來越寬(注意兩張圖的縱軸範圍不同);VP 一邊把資料往 0 縮、一邊加雜訊,總變異數維持在 1 附近,最後變成標準常態。
VE:σ(t) 從 0.01 指數成長到 5
VP:β(t) = 0.1 + 19.9t
25 條 EM 路徑3,000 條路徑在時間 t 的直方圖閉式的 q_t
一句話帶走:VE 只加雜訊,VP 一邊縮小一邊加雜訊;兩者都是線性 SDE,所以能一步算出任意時刻的分佈。
下一步:前向 SDE 把資料推成雜訊;要生成,就要把它倒過來。倒過來的 SDE 需要每個時刻的 score \(\nabla\log p_t\),而「同樣的邊際分佈」也可以用一個 ODE 達成(補充課 C §8)。這些在補充課 F 用 Fokker–Planck 方程一次推出來。

08在 CS236 哪裡用到

本頁的概念出現的地方
布朗運動、\(\sqrt{dt}\)第 14 講投影片 27–33「無限多個雜訊尺度」、第 17 講 §1「drift 是速度場」
Euler–Maruyama第 14 講的 predictor、第 16 講「DDPM 的一步就是反向 SDE 的一步 EM」、第 18 講的 τ-leaping 類比
OU 過程、閉式的一步第 16 講 \(q(\mathbf x_t\mid\mathbf x_0)\):訓練時一步跳到任何 \(t\)
VE / VP SDE第 14 講的 score SDE、第 16 講 DDPM = VP 的離散化
Itô 公式補充課 F 推導 Fokker–Planck;Lai 書附錄 C 的反向 SDE 推導

常見誤解

誤解:「SDE 的雜訊項是 \(g\,\epsilon\,dt\)」。是 \(g\sqrt{dt}\,\epsilon\)。用 \(dt\) 的話,雜訊在步長趨近 0 時會完全消失(Demo E3)。
誤解:「\(dx/dt = f + g\,dW/dt\) 是一條普通的微分方程」。\(dW/dt\) 不存在。\(dx = f\,dt + g\,dW\) 只是 EM 取極限的記法。
誤解:「布朗運動放大夠多倍就會變平滑」。它是自相似的,放大之後永遠一樣粗糙;它的長度是無限的(Demo E1、E2)。
誤解:「\(\mathbb E\int_0^t2W\,dW = \mathbb E[W_t^2] = t\)」。Itô 積分的期望值是 0;差的 \(t\) 來自 \((dW)^2 = dt\)(Demo E7)。
誤解:「EM 的步長只影響路徑的細節,不影響分佈」。大步長會讓分佈有偏差,例如 OU 的穩態變異數被高估(Demo E5)。
誤解:「VE 和 VP 是兩種不同的模型」。它們只是不同的加雜訊方式,訓練(denoising score matching)和取樣(反向 SDE / ODE)的框架完全一樣(第 14 講)。

自我測驗

1. 為什麼 EM 的雜訊是 \(g\sqrt h\,\epsilon\)?用總變異數說明。
走完時間 1 要 \(1/h\) 步,每步變異數 \(g^2h\),總和 \(g^2\),和步長無關。用 \(h\) 會趨近 0,不乘任何東西會發散。
2. OU 過程 \(dx = -2x\,dt + dW\) 的穩態分佈是什麼?從 \(x_0 = 5\) 出發,\(t = 1\) 時的平均是多少?
穩態 \(\mathcal N(0, 1/4)\);平均 \(5e^{-2}\approx0.68\)。
3. 用 Itô 公式算 \(d(W_t^3)\)。
\(\phi = x^3\),\(\phi' = 3x^2\),\(\phi'' = 6x\),\(g = 1\):\(d(W^3) = 3W^2\,dW + 3W\,dt\)。
4. VP SDE 的 \(q(\mathbf x_t\mid\mathbf x_0)\) 是什麼?為什麼總變異數維持在 1 附近?
\(\mathcal N(\sqrt{\bar\alpha_t}\mathbf x_0, (1 - \bar\alpha_t)I)\)。若資料變異數為 1,總變異數 \(\bar\alpha_t\cdot1 + (1 - \bar\alpha_t) = 1\)。
5. strong 與 weak 誤差差在哪?生成模型比較在乎哪一個?
strong 比較同一條布朗路徑下的單一路徑,weak 只比較分佈的統計量。生成模型只在乎生成的分佈,所以是 weak。

延伸閱讀