VE、VP,以及「直接寫下 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\boldsymbol\epsilon\)」
這一頁收尾第 4 章。先看 Score SDE 最常用的兩個實例:VE SDE(NCSN 的連續版本)和 VP SDE(DDPM 的連續版本),以及它們的擾動核怎麼從平均、變異數的 ODE 解出來。接著換一個更直接的觀點:不從局部的加雜訊規則出發,而是直接寫下每個時刻相對於資料的擾動 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\boldsymbol\epsilon\),再反推對應的 SDE,順便看到不是每一組 \(\alpha_t,\sigma_t\) 都合法。最後是兩個選讀的啟發式推導:用邊際化推出 Fokker–Planck 方程,用貝氏定理推出反向 SDE。
讀完這頁你應該能夠
- 寫出 VE 和 VP SDE 的漂移、擴散係數、擾動核與先驗,並說出它們分別是 NCSN 和 DDPM 的連續版本。
- 解出線性 SDE 的平均與變異數 ODE,推導 VE、VP 的擾動核。
- 給定 \(\alpha_t,\sigma_t\),反推 \(f(t)\)、\(g^2(t)\),並用「SNR 不能隨時間增加」判斷時程是否合法;說明為什麼在有限時間完全忘掉 \(\mathbf x_0\) 需要奇異的係數。
- 寫出一般 \(\alpha_t,\sigma_t\) 下的反向條件核,以及 diffusion 損失化成 \(\tfrac12(\mathrm{SNR}(t)-\mathrm{SNR}(s))\Vert\mathbf x_0-\mathbf x_{\bm\phi}\Vert^2\) 的推導。
- (選讀)用 Chapman–Kolmogorov 與 Taylor 展開說明 Fokker–Planck 方程的來源,用貝氏定理說明反向 SDE 為什麼長那樣。
前置知識
- B08:前向 SDE、仿射漂移下的擾動核(本頁第 2 節是它的完整版)、反向 SDE、PF-ODE;本章 \(\beta\) 是變異數。
- B09:Fokker–Planck 方程、高斯例子裡的反向一步。
- B04:DDPM 的反向條件核(Lemma)、ELBO、\(\mathbf x\)-prediction;B07:NCSN 的等比雜訊等級。
- 積分因子、Taylor 展開、多維變數變換的 Jacobian:CS236 補充課 B、補充課 A。
「書 §」標出原文位置。灰框「轉述者補充」是書裡沒有的內容;藍框「推導」展開書中省略的步驟。書把 §4.4.3 和 §4.6 標為選讀,本頁照樣標示。
01SDE 的實例:VE 與 VP書 §4.4
Song et al. (2020) 依照變異數在演化中的行為,把前向 SDE 的漂移 \(\mathbf f(\mathbf x,t)\) 和擴散項 \(g(t)\) 分成三類。這裡專注兩種常用的:Variance Explosion(VE,變異數爆炸)SDE 和 Variance Preserving(VP,變異數保持)SDE。也可以設計自己的雜訊時程,但時程的設計會大幅影響實際表現。下表整理這兩個實例。
轉述者注:第三類是 sub-VP SDE(Song et al. 2020),變異數始終不超過 VP 的對應值;書沒有介紹,這裡也不展開。
| VE SDE | VP SDE | |
|---|---|---|
| \(\mathbf f(\mathbf x,t)\) | \(\mathbf 0\) | \(-\tfrac12\beta(t)\mathbf x\) |
| \(g(t)\) | \(\sqrt{\frac{d\sigma^2(t)}{dt}}\) | \(\sqrt{\beta(t)}\) |
| SDE | \(d\mathbf x(t)=g(t)\,d\mathbf w(t)\) | \(d\mathbf x(t)=-\tfrac12\beta(t)\mathbf x(t)\,dt+\sqrt{\beta(t)}\,d\mathbf w(t)\) |
| \(p_t(\mathbf x_t\mid\mathbf x_0)\) | \(\mathcal N\big(\mathbf x_t;\mathbf x_0,(\sigma^2(t)-\sigma^2(0))\mathbf I\big)\) | \(\mathcal N\big(\mathbf x_t;\mathbf x_0e^{-\frac12\int_0^t\beta(\tau)d\tau},\ \mathbf I-\mathbf Ie^{-\int_0^t\beta(\tau)d\tau}\big)\) |
| \(p_{\text{prior}}\) | \(\mathcal N(\mathbf 0,\sigma^2(T)\mathbf I)\) | \(\mathcal N(\mathbf 0,\mathbf I)\) |
VE SDE
VE SDE 的組成:
- 漂移項:零漂移 \(\mathbf f=\mathbf 0\)。
- 擴散項:\(g(t)=\sqrt{\frac{d\sigma^2(t)}{dt}}\),\(\sigma(t)\) 是某個函數。
前向 SDE 於是是
$$d\mathbf x(t)=\sqrt{\frac{d\sigma^2(t)}{dt}}\,d\mathbf w(t).$$由第 2 節的結果,可以得到 VE SDE 的擾動核,也知道該選什麼先驗:
- 擾動核:\(p_t(\mathbf x_t\mid\mathbf x_0)=\mathcal N\big(\mathbf x_t;\mathbf x_0,(\sigma^2(t)-\sigma^2(0))\mathbf I\big)\)。
- 先驗分佈:假設 \(\sigma(t)\) 在 \([0,T]\) 上遞增,而且 \(\sigma^2(T)\gg\sigma^2(0)\),先驗取 \(p_{\text{prior}}:=\mathcal N(\mathbf 0,\sigma^2(T)\mathbf I)\)。
VE SDE 的典型實例是 NCSN,設計成
$$\sigma(t):=\sigma_{\min}\Big(\frac{\sigma_{\max}}{\sigma_{\min}}\Big)^t,\qquad t\in(0,1],$$\(\sigma_{\min}\)、\(\sigma_{\max}\) 是事先指定的常數。也就是說,雜訊尺度設計成等比數列(B07 的 Demo 就是這樣取的)。如此一來,NCSN 可以看成 VE SDE 的離散化(B08 第 3 節)。
這個 \(\sigma(t)\) 的 \(g(t)\) 長什麼樣
\(\sigma^2(t)=\sigma_{\min}^2(\sigma_{\max}/\sigma_{\min})^{2t}\),所以 \(\frac{d\sigma^2}{dt}=2\log\frac{\sigma_{\max}}{\sigma_{\min}}\,\sigma^2(t)\),\(g(t)=\sigma(t)\sqrt{2\log(\sigma_{\max}/\sigma_{\min})}\):擴散係數本身也是指數成長。B08 的 Demo B 用 \(\sigma_{\min}=0.01\)、\(\sigma_{\max}=50\),\(g\) 從 0.04 長到 206。注意「\(\sigma(t)\) 從 \(\sigma_{\min}\) 開始」所以擾動核的變異數是 \(\sigma^2(t)-\sigma_{\min}^2\),\(t=0\) 時恰好是 0。
VP SDE
令 \(\beta:[0,T]\to\mathbb R_{\ge0}\) 是 \(t\) 的非負函數。VP SDE 的組成:
- 漂移項:線性漂移 \(\mathbf f(\mathbf x,t)=-\tfrac12\beta(t)\mathbf x\)。
- 擴散項:\(g(t)=\sqrt{\beta(t)}\)。
前向 SDE 於是是
$$d\mathbf x(t)=-\frac12\beta(t)\,\mathbf x(t)\,dt+\sqrt{\beta(t)}\,d\mathbf w(t).$$由第 2 節的結果,可以推出 VP SDE 的擾動核並選擇先驗:
- 擾動核:\(p_t(\mathbf x_t\mid\mathbf x_0)=\mathcal N\big(\mathbf x_t;\mathbf x_0e^{-\frac12\int_0^t\beta(\tau)d\tau},\ \mathbf I-\mathbf Ie^{-\int_0^t\beta(\tau)d\tau}\big)\)。
- 先驗分佈:\(p_{\text{prior}}:=\mathcal N(\mathbf 0,\mathbf I)\)。
書提醒:因為擾動核是平均和共變異數都已知的高斯,可以直接套用高斯的 score 公式(\(\nabla\log\mathcal N(\mathbf x;\mathbf m,P\mathbf I)=-(\mathbf x-\mathbf m)/P\),B09 第 4 節的補充)算出它的 score。
VP SDE 的經典例子是 DDPM,雜訊時程 \(\beta(t)\) 定義為
$$\beta(t):=\beta_{\min}+t(\beta_{\max}-\beta_{\min}),\qquad t\in[0,1],$$\(\beta_{\min}\)、\(\beta_{\max}\) 是事先定義的常數。如此,DDPM 可以解讀成 VP SDE 的離散化(B08 第 3 節)。
常用的數字從哪裡來,以及「VP」是什麼意思
Song et al. (2020) 取 \(\beta_{\min}=0.1\)、\(\beta_{\max}=20\),正是 B04、B08、B09 的 demo 一直在用的 \(\int_0^t\beta=0.1t+9.95t^2\)。它和 Ho et al. 的離散時程(\(L=1000\) 步、每步變異數從 \(10^{-4}\) 線性增加到 0.02)對應:\(\beta(t)\approx L\cdot\beta_i\),\(1000\times10^{-4}=0.1\)、\(1000\times0.02=20\)。
「變異數保持」:若 \(\mathbf x_0\) 的變異數是 1,\(\operatorname{Var}(\mathbf x_t)=e^{-B}\cdot1+(1-e^{-B})=1\) 對所有 \(t\) 都成立(\(B=\int_0^t\beta\))。VE 則是 \(\operatorname{Var}(\mathbf x_t)=\operatorname{Var}(\mathbf x_0)+\sigma^2(t)-\sigma^2(0)\) 一直長大。
02(選讀)擾動核怎麼推出來書 §4.4.3
如果前向 SDE 的漂移對 \(\mathbf x\) 是線性的,\(\mathbf f(\mathbf x,t)=f(t)\mathbf x\)(\(f(t)\in\mathbb R\) 是隨時間變的純量函數),前向 SDE 就成為線性 SDE:
$$d\mathbf x(t)=f(t)\mathbf x(t)\,dt+g(t)\,d\mathbf w(t).$$就算初始分佈 \(p_{\text{data}}\) 不是高斯,漂移的線性也保證條件過程維持高斯。具體地,對 \(t>0\),轉移核的形式是
$$p_t(\mathbf x_t\mid\mathbf x_0)=\mathcal N\big(\mathbf x_t;\mathbf m(t),P(t)\mathbf I_D\big),\qquad\mathbf m(t)=\mathbb E[\mathbf x_t\mid\mathbf x(0)=\mathbf x_0],\quad P(t)\mathbf I_D=\operatorname{Cov}[\mathbf x_t\mid\mathbf x(0)=\mathbf x_0],$$\(\mathbf x_0\sim p_{\text{data}}\),\(\mathbf m(t)\in\mathbb R^D\)、\(P(t)\in\mathbb R_{\ge0}\) 是給定 \(\mathbf x_0\) 的條件平均與(純量)變異數。這兩個動差依下面的 ODE 演化(Särkkä & Solin 2019),前提是初始的平均 \(\mathbf m(0)\) 和變異數 \(P(0)\) 有限:
兩條 ODE 都是線性的,用積分因子法就有封閉解。給定初始條件 \(\mathbf x_0\),平均和變異數演化成
$$\mathbf m(t)=\mathcal E(0\to t)\,\mathbf x_0,\qquad P(t)=\int_0^t\mathcal E^2(s\to t)\,g(s)^2\,ds,$$\(\mathbf m(0)=\mathbf x_0\)、\(P(0)=0\)。這裡 \(\mathcal E(s\to t)\) 是指數積分因子
$$\mathcal E(s\to t):=\exp\Big(\int_s^tf(u)\,du\Big),$$它記錄從時間 \(s\) 到 \(t\) 漂移累積的效果。因此轉移核 \(p_t(\mathbf x_t\mid\mathbf x_0)\) 也有封閉形式。
書把兩件事的嚴格證明留到附錄 C(B35),因為要用到 Itô 微積分:一是 \(D\) 維 Wiener process 各座標獨立、擴散係數是 \(g(t)\mathbf I_D\) 時,條件共變異數是各向同性的 \(P(t)\mathbf I_D\);二是動差 ODE 本身的推導。B08 第 4 節的推導框用離散的一步給了直覺版本。
平均:\(\frac{d\mathbf m}{dt}=0\),\(\mathbf m(0)=\mathbf x_0\) ⟹ \(\mathbf m(t)=\mathbf x_0\)。
變異數:\(\frac{dP}{dt}=\frac{d\sigma^2(t)}{dt}\),\(P(0)=0\) ⟹ \(P(t)=\sigma^2(t)-\sigma^2(0)\)。
因此 \(p_t(\mathbf x_t\mid\mathbf x_0)=\mathcal N\big(\mathbf x_t;\mathbf x_0,(\sigma^2(t)-\sigma^2(0))\mathbf I_D\big)\)。
平均:\(\frac{d\mathbf m}{dt}=-\tfrac12\beta(t)\mathbf m(t)\),令 \(B(t):=\int_0^t\beta(s)\,ds\),得 \(\mathbf m(t)=e^{-\frac12B(t)}\mathbf x_0\)。
變異數:\(\frac{dP}{dt}=-\beta(t)P(t)+\beta(t)\)。乘上積分因子 \(e^{B(t)}\):\(\frac{d}{dt}\big[P(t)e^{B(t)}\big]=\beta(t)e^{B(t)}\)。兩邊積分得 \(P(t)=1-e^{-B(t)}\),所以共變異數是各向同性的 \(\big(1-e^{-B(t)}\big)\mathbf I_D\)。
最終的封閉轉移核: $$p_t(\mathbf x_t\mid\mathbf x_0)=\mathcal N\Big(\mathbf x_t;\ \underbrace{e^{-\frac12B(t)}\mathbf x_0}_{\mathbf m(t)},\ \underbrace{\big(1-e^{-B(t)}\big)\mathbf I_D}_{P(t)\mathbf I_D}\Big),\qquad B(t)=\int_0^t\beta(s)\,ds.$$
VP 變異數那一步積分
\(\frac{d}{dt}[Pe^B]=P'e^B+P\beta e^B=e^B(P'+\beta P)=e^B\beta\)(用 \(P'=-\beta P+\beta\))。右邊是 \(\frac{d}{dt}e^{B}\),所以 \(Pe^B=e^B+C\);\(P(0)=0\)、\(B(0)=0\) 給 \(C=-1\),\(P=1-e^{-B}\)。
03另一個觀點:直接指定累積擾動核書 §4.5
DDPM 和 Score SDE 通常從「雜訊怎麼在時間上局部地加進去」開始介紹:DDPM 用離散的前向轉移 \(p(\mathbf x_t\mid\mathbf x_{t-\Delta t})\),Score SDE 用連續時間的 SDE。但對訓練來說,特別有用的是累積擾動核 \(p_t(\mathbf x_t\mid\mathbf x_0)\):它直接描述以原始資料樣本為條件、時間 \(t\) 的分佈。DDPM 和連續時間的去雜訊目標(B04、B09)裡自然出現的正是這個形式。
這啟發了一個互補的觀點:與其從局部的雜訊注入出發再推出 \(p_t(\mathbf x_t\mid\mathbf x_0)\),不如直接指定累積擾動核。對下面考慮的線性高斯過程,一個合法的累積核決定了對應的線性 SDE,反之亦然。這個觀點讓每個時刻的訊號量和雜訊量一目了然,直接連到實際的訓練目標,也會成為通往第 5 章 Flow Matching 的「機率路徑」觀點的橋樑。
一般的仿射前向過程 \(p_t(\mathbf x_t\mid\mathbf x_0)\)
從定義累積的前向擾動核開始:
\(\mathbf x_0\sim p_{\text{data}}\),\(\alpha_t\)、\(\sigma_t\) 是 \(t\in[0,T]\) 的非負純量函數。在標準的前向 diffusion 設定裡,取 \(\alpha_0=1\)、\(\sigma_0=0\),讓過程恰好從資料開始;並在用到對應的比值時,假設 \(t\in(0,T]\) 上 \(\alpha_t>0\)、\(\sigma_t>0\)。等價地,這個核的一個樣本可以寫成
$$\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\boldsymbol\epsilon,\qquad\boldsymbol\epsilon\sim\mathcal N(\mathbf 0,\mathbf I).$$這個簡單的形式包含幾種熟悉的機率路徑:
- VE(NCSN):\(\alpha_t\equiv1\),雜訊尺度 \(\sigma_t\) 隨時間增加;
- VP(DDPM):\(\alpha_t^2+\sigma_t^2=1\);
- 線性高斯插值:\(t\in[0,1]\) 上 \(\alpha_t=1-t\)、\(\sigma_t=t\)。寫成「資料到雜訊」的時間方向時,這就是 Flow Matching 和 Rectified Flow 常用的線性路徑(第 5 章)。
和 Score SDE 的連結
對 Score SDE,先指定累積擾動核 \(p_t(\mathbf x_t\mid\mathbf x_0)\)、再反推對應的 SDE 係數,往往比「先指定漂移和擴散項、再解動差的 ODE」(第 2 節)更直覺。對合法的仿射時程,對應的前向 SDE 是對 \(\mathbf x\) 線性的形式:
$$d\mathbf x(t)=\underbrace{f(t)\mathbf x(t)}_{\mathbf f(\mathbf x(t),t)}dt+g(t)\,d\mathbf w(t),$$\(f,g:[0,T]\to\mathbb R\) 是時間的實值函數。係數 \(f(t)\)、\(g(t)\) 可以從 \(\alpha_t\)、\(\sigma_t\) 解析地還原。重要的是,不是每一組 \(\alpha_t\)、\(\sigma_t\) 都定義一個合法的 diffusion:推出來的擴散變異數 \(g^2(t)\) 必須保持非負。等價地,在這個線性高斯設定下,訊號雜訊比 \(\alpha_t^2/\sigma_t^2\) 不能隨時間增加。下面的 Lemma 把這個關係說清楚。
證明(書的想法:匹配動差 ODE)
由第 2 節,線性 SDE 的條件平均和變異數滿足 \(\mathbf m'=f\mathbf m\)、\(P'=2fP+g^2\)。要讓它們等於 \(\mathbf m(t)=\alpha_t\mathbf x_0\)、\(P(t)=\sigma_t^2\)(對所有 \(\mathbf x_0\)):
平均:\(\alpha_t'\mathbf x_0=f\alpha_t\mathbf x_0\) ⟹ \(f=\alpha_t'/\alpha_t=\frac{d}{dt}\log\alpha_t\)。
變異數:\((\sigma_t^2)'=2f\sigma_t^2+g^2\) ⟹ \(g^2=(\sigma_t^2)'-2\frac{\alpha_t'}{\alpha_t}\sigma_t^2\)。
第二種寫法:\(\lambda_t'=\frac{\alpha_t'}{\alpha_t}-\frac{\sigma_t'}{\sigma_t}\),所以 \(-2\sigma_t^2\lambda_t'=-2\frac{\alpha_t'}{\alpha_t}\sigma_t^2+2\sigma_t\sigma_t'=(\sigma_t^2)'-2\frac{\alpha_t'}{\alpha_t}\sigma_t^2\)。
\(g^2\) 是變異數(實數 \(g\) 的平方),必須 \(\ge0\);因為 \(\sigma_t^2>0\),這等於 \(\lambda_t'\le0\)。反方向:若 \(g^2\ge0\),令 \(g=\sqrt{g^2}\),這條 SDE 的動差 ODE 和初始條件都和 \((\alpha_t\mathbf x_0,\sigma_t^2)\) 相同,解唯一,所以條件核相同;又因為是線性高斯,條件核就是這個高斯。
為什麼 SNR 不能增加:直覺
\(\lambda_t=\log(\alpha_t/\sigma_t)=\tfrac12\log\mathrm{SNR}(t)\)。前向過程只會加雜訊、縮放,不會從雜訊裡「變出」關於 \(\mathbf x_0\) 的資訊,所以訊號雜訊比只能下降(或持平)。如果有人指定一個 SNR 先降後升的時程,要實現它,雜訊的變異數得在某段時間「減少」,也就是 \(g^2\lt0\),沒有任何實數雜訊做得到。Demo A 可以畫一個這樣的例子。
擴散係數和指定的變異數的關係是 \(g^2(t)=(\sigma_t^2)'-2\frac{\alpha_t'}{\alpha_t}\sigma_t^2\)。對常見的正則時程,\(\sigma_t^2\) 趨近一個有限非零的終點變異數,\((\sigma_t^2)'\) 保持有界,而 \(\alpha_t'/\alpha_t\to-\infty\),所以也得到 \(g^2(t)\to\infty\)(\(t\to T\))。更一般地,\(g(t)\) 的精確行為取決於所選的時程。
若 \(f\) 和 \(g\) 在有限區間 \([0,T]\) 上保持有界,則 \(\alpha_T>0\),在有限的 \(T\) 不可能完全遺忘。所以實務上會選一個終點時間,讓剩下對 \(\mathbf x_0\) 的依賴可以忽略、\(p_T\approx p_{\text{prior}}\);或考慮 \(\alpha_t\) 只在無窮遠漸近趨於 0 的無窮時間寫法。
轉述者注:線性插值 \(\alpha_t=1-t\)、\(\sigma_t=t\) 就是這個 Remark 的例子:\(f=-\frac1{1-t}\)、\(g^2=2t+\frac{2t^2}{1-t}=\frac{2t}{1-t}\),兩者在 \(t\to1\) 時都發散,而 \(\alpha_1=0\) 恰好在 \(T=1\) 完全遺忘。VP 用 \(\beta(t)=0.1+19.9t\) 時 \(f\)、\(g\) 有界,所以 \(\alpha_1=e^{-5.025}\approx0.0066\gt0\),只是小到可以忽略。
由上面的 Lemma,用係數 \(f(t)\)、\(g(t)\) 的線性 SDE 指定逐步的雜訊注入,在數學上等價於用參數 \(\alpha_t\)、\(\sigma_t\) 定義擾動核。在 diffusion 文獻裡這兩個觀點交替使用。因此:
Demo A從雜訊時程推出 SDE 係數:合不合法轉述者補充
選一個 \((\alpha_t,\sigma_t)\),用 Lemma 的公式算出 \(f(t)\)、\(g^2(t)\) 和 \(\lambda_t=\log(\alpha_t/\sigma_t)\)。前四個是合法的時程;最後一個是故意構造的反例:\(\alpha_t\equiv1\),\(\sigma_t\) 先升後降(雜訊先加後減)。
瀏覽器實測(\(t=0.5\) 與 \(t=0.9\)):
| 時程 | \(f(0.5)\)、\(g^2(0.5)\) | \(f(0.9)\)、\(g^2(0.9)\) | \(\alpha_T\) |
|---|---|---|---|
| VP | \(-5.025\)、10.05 | \(-9.005\)、18.01 | 0.00657 |
| VE | 0、8.517 | 0、7753 | 1 |
| 線性插值 | \(-2\)、2 | \(-10\)、18 | 0 |
| 三角函數 VP | \(-1.571\)、3.142 | \(-9.918\)、19.84 | 0 |
| 反例 | 0、1.477 | 0、\(-2.469\) | 1 |
- VP 的係數有界,所以只能「幾乎」遺忘:\(f=-\tfrac12\beta\)、\(g^2=\beta\) 都在 \([0.1,20]\) 之內,\(\alpha_1=0.00657\),不是 0。
- 恰好在 \(t=1\) 遺忘的兩個時程,係數都在終點發散:線性插值的 \(f=-1/(1-t)\)、\(g^2=2t/(1-t)\)(\(t=0.9\) 時 \(-10\)、18;\(t=0.99\) 時 \(-100\)、198);三角函數 VP 的 \(g^2=\pi\tan(\pi t/2)\)。這就是書中 Remark 的情況。
- VE 的 \(g^2\) 長得極快:\(\sigma\) 是等比的,\(g^2=2\log(5000)\,\sigma^2\),\(t=0.9\) 時已經到 7753。它的 \(\alpha\equiv1\),從不遺忘 \(\mathbf x_0\),靠的是 \(\sigma_T=50\) 遠大於資料的範圍。
- 反例:\(\sigma_t=\sin(0.8\pi t)\) 在 \(t=0.625\) 之後開始變小,\(\lambda_t\) 回升,\(g^2\lt0\) 的時間占 37%。這種「先加雜訊、後減雜訊」的路徑沒有對應的前向 SDE。
04和變分 diffusion model 的連結書 §4.5.2
回顧 DDPM 裡由貝氏定理推出的核心恆等式(B04 第 3 節):
$$p(\mathbf x_{t-\Delta t}\mid\mathbf x_t,\mathbf x)=p(\mathbf x_t\mid\mathbf x_{t-\Delta t})\cdot\frac{p_{t-\Delta t}(\mathbf x_{t-\Delta t}\mid\mathbf x)}{p_t(\mathbf x_t\mid\mathbf x)},$$對任何 \(\mathbf x\)(通常 \(\mathbf x\sim p_{\text{data}}\))。這個反向條件 \(p(\mathbf x_{t-\Delta t}\mid\mathbf x_t,\mathbf x)\) 是建模的核心,既提供好處理的訓練目標,也讓取樣有效率。雖然 DDPM 通常先定義逐步的核 \(p(\mathbf x_t\mid\mathbf x_{t-\Delta t})\),累積的轉移 \(p_t(\mathbf x_t\mid\mathbf x_0)\) 往往是更好解讀、更實用的寫法,特別是在設計先驗和損失時。
推導轉移核
現在把它推廣到連續時間。令 \(0\le t\lt s\le T\) 是兩個(連續的)時間點。給定擾動核 \(p_t(\mathbf x_t\mid\mathbf x_0)\),可以把上面的恆等式(書的註腳:把 \(s\) 當成一般的較晚時間,這個恆等式自然地推廣到連續時間)套用在前向核 \(p(\mathbf x_s\mid\mathbf x_t)\) 上,對任何 \(\mathbf x\) 算出反向條件 \(p(\mathbf x_t\mid\mathbf x_s,\mathbf x)\)。下面的 Lemma 總結這個推導;它推廣了 B04 的 Lemma,不假設 \(\alpha_t^2+\sigma_t^2=1\)。
證明(書:先算前向核,再用貝氏;細節見 Kingma et al. 2021 附錄 A)
前向核。由 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\boldsymbol\epsilon\)、\(\mathbf x_s=\alpha_s\mathbf x_0+\sigma_s\boldsymbol\epsilon'\),要找 \(\mathbf x_s\mid\mathbf x_t\) 的形式 \(\mathbf x_s=a\,\mathbf x_t+b\,\mathbf z\) 使兩邊相符:訊號係數 \(a\alpha_t=\alpha_s\) ⟹ \(a=\alpha_{s|t}\);雜訊變異數 \(a^2\sigma_t^2+b^2=\sigma_s^2\) ⟹ \(b^2=\sigma_s^2-\alpha_{s|t}^2\sigma_t^2=\sigma_{s|t}^2\)。所以
$$p(\mathbf x_s\mid\mathbf x_t)=\mathcal N\big(\mathbf x_s;\alpha_{s|t}\mathbf x_t,\sigma_{s|t}^2\mathbf I\big).$$(\(\sigma_{s|t}^2\ge0\) 正是 \(\mathrm{SNR}(s)\le\mathrm{SNR}(t)\),又是第 3 節的合法條件。)
貝氏。\(p(\mathbf x_t\mid\mathbf x_s,\mathbf x)\propto p(\mathbf x_s\mid\mathbf x_t)\,p_t(\mathbf x_t\mid\mathbf x)\),兩個高斯相乘(和 B04 Lemma 的推導相同)。精確度:
$$\frac1{\sigma^2(s,t)}=\frac{\alpha_{s|t}^2}{\sigma_{s|t}^2}+\frac1{\sigma_t^2}=\frac{\alpha_{s|t}^2\sigma_t^2+\sigma_{s|t}^2}{\sigma_{s|t}^2\sigma_t^2}=\frac{\sigma_s^2}{\sigma_{s|t}^2\sigma_t^2}.$$平均:\(\bm\mu=\sigma^2(s,t)\Big(\frac{\alpha_{s|t}}{\sigma_{s|t}^2}\mathbf x_s+\frac{\alpha_t}{\sigma_t^2}\mathbf x\Big)=\frac{\alpha_{s|t}\sigma_t^2}{\sigma_s^2}\mathbf x_s+\frac{\alpha_t\sigma_{s|t}^2}{\sigma_s^2}\mathbf x\)。
檢查:VP 且 \(t,s\) 是相鄰兩步時(\(\alpha=\bar\alpha\)、\(\sigma^2=1-\bar\alpha^2\)),這正好退化成 B04 的 Lemma。
雖然 \(p(\mathbf x_{t+\Delta t}\mid\mathbf x_t)\) 和 \(p_t(\mathbf x_t\mid\mathbf x_0)\) 在理論上等價,\(p_t(\mathbf x_t\mid\mathbf x_0)\) 常常扮演更核心的角色;上面逐步的前向核主要是用來得到封閉的反向核。所以近來的研究(Kingma et al. 2021)偏好直接指定 \(p_t(\mathbf x_t\mid\mathbf x_0)\),因為它清楚、好解讀。
反向過程的建模、訓練與取樣
DDPM 的訓練目標(B04 的 ELBO)和建模框架,在這個一般化的設定下仍然適用。為了清楚,書沿用 Kingma et al. (2021),採用 \(\mathbf x\)-prediction,記作 \(\mathbf x_{\bm\phi}(\mathbf x_s,s)\)。等價的 \(\boldsymbol\epsilon\)-prediction \(\boldsymbol\epsilon_{\bm\phi}(\mathbf x_s,s)\) 也同樣成立,因為兩者有關係(如 B04)
$$\mathbf x_s=\alpha_s\mathbf x_{\bm\phi}(\mathbf x_s,s)+\sigma_s\boldsymbol\epsilon_{\bm\phi}(\mathbf x_s,s),\qquad\text{對任何給定的 }\mathbf x_s\sim q_s.$$建模與 diffusion 損失 \(\mathcal L_{\text{diffusion}}\)。和 DDPM 一樣,條件分佈 \(p(\mathbf x_t\mid\mathbf x_s,\mathbf x)\) 啟發我們把乾淨訊號 \(\mathbf x\) 換成可學的預測器 \(\mathbf x_{\bm\phi}(\mathbf x_s,s)\),得到參數化的反向模型
$$p_{\bm\phi}(\mathbf x_t\mid\mathbf x_s):=\mathcal N\big(\mathbf x_t;\bm\mu_{\bm\phi}(\mathbf x_s,s,t),\sigma^2(s,t)\mathbf I\big),\qquad\bm\mu_{\bm\phi}(\mathbf x_s,s,t)=\frac{\alpha_{s|t}\sigma_t^2}{\sigma_s^2}\mathbf x_s+\frac{\alpha_t\sigma_{s|t}^2}{\sigma_s^2}\mathbf x_{\bm\phi}(\mathbf x_s,s).$$給定上面的前向核,\(\mathcal L_{\text{diffusion}}(\mathbf x;\bm\phi)\) 裡的 KL 化簡成一個加權的回歸損失:
其中 \(\mathbf x_s=\alpha_s\mathbf x_0+\sigma_s\boldsymbol\epsilon\),\(\mathbf x_0\sim p_{\text{data}}\)、\(\boldsymbol\epsilon\sim\mathcal N(\mathbf 0,\mathbf I)\),\(\mathrm{SNR}(s):=\alpha_s^2/\sigma_s^2\) 是時間 \(s\) 的訊號雜訊比。
第二個等號:權重怎麼變成 SNR 的差
兩個平均只差在 \(\mathbf x\) 那一項:\(\bm\mu-\bm\mu_{\bm\phi}=\frac{\alpha_t\sigma_{s|t}^2}{\sigma_s^2}(\mathbf x_0-\mathbf x_{\bm\phi})\)。所以權重是
$$\frac1{2\sigma^2(s,t)}\cdot\frac{\alpha_t^2\sigma_{s|t}^4}{\sigma_s^4}=\frac{\sigma_s^2}{2\sigma_{s|t}^2\sigma_t^2}\cdot\frac{\alpha_t^2\sigma_{s|t}^4}{\sigma_s^4}=\frac{\alpha_t^2\sigma_{s|t}^2}{2\sigma_t^2\sigma_s^2}.$$用 \(\alpha_t^2\sigma_{s|t}^2=\alpha_t^2\sigma_s^2-\alpha_s^2\sigma_t^2\):
$$\frac{\alpha_t^2\sigma_s^2-\alpha_s^2\sigma_t^2}{2\sigma_t^2\sigma_s^2}=\frac12\Big(\frac{\alpha_t^2}{\sigma_t^2}-\frac{\alpha_s^2}{\sigma_s^2}\Big)=\frac12\big(\mathrm{SNR}(t)-\mathrm{SNR}(s)\big).$$因為 \(t\lt s\) 且 SNR 非遞增,權重 \(\ge0\)。
為什麼是 \(-\mathrm{SNR}'(s)\),以及它告訴我們什麼
把 \([0,T]\) 切成很多小段,每段 \(t=s-\Delta s\):\(\mathrm{SNR}(t)-\mathrm{SNR}(s)\approx-\mathrm{SNR}'(s)\Delta s\)。把所有段的 KL 加起來就是對 \(s\) 的積分(再寫成 \(s\) 均勻抽樣的期望,差一個常數倍 \(T\))。因為 SNR 遞減,\(-\mathrm{SNR}'\ge0\)。
一個值得注意的推論(Kingma et al. 2021):換變數 \(v=\mathrm{SNR}(s)\),\(-\mathrm{SNR}'(s)ds=-dv\),連續時間的 ELBO 只依賴 SNR 兩端的值 \(\mathrm{SNR}(0)\)、\(\mathrm{SNR}(T)\),和中間怎麼走無關(只要網路寫成 SNR 的函數)。時程的形狀只影響訓練時蒙地卡羅估計的變異數。
取樣。和 DDPM 類似,用上面的參數化核取樣:
Demo B一般化的 DDPM 取樣:同一個公式,三種路徑轉述者補充
資料和 B08、B09 相同:\(0.6\,\mathcal N(1.2,0.25^2)+0.4\,\mathcal N(-1,0.2^2)\)。用上面的取樣公式,從 \(s=T\) 到 \(t=0\) 均勻切 \(N\) 段,\(\mathbf x_{\bm\phi^\times}\) 換成這個資料可以精確算出的 \(\mathbb E[\mathbf x_0\mid\mathbf x_s]\)(最佳的 \(\mathbf x\)-prediction),所以看到的是取樣公式本身。2,000 個樣本從各自的先驗出發(VE 的先驗是 \(\mathcal N(0,50^2)\))。
瀏覽器實測(\(W_1\) 是和 \(p_{\text{data}}\) 的 Wasserstein-1 距離;直接從 \(p_{\text{data}}\) 抽同樣多的樣本約 0.02,這是抽樣誤差的底):
| 路徑 | \(N=5\) | \(N=20\) | \(N=100\) | \(N=1000\) |
|---|---|---|---|---|
| VP | 64.5%,0.290 | 60.5%,0.054 | 60.2%,0.024 | 59.7%,0.014 |
| VE | 66.9%,0.290 | 61.2%,0.059 | 61.2%,0.032 | 59.9%,0.008 |
| 線性插值 | 64.3%,0.161 | 59.8%,0.034 | 61.1%,0.031 | 59.0%,0.025 |
- 同一個公式、三種路徑都對:步數夠多時,三種路徑的結果都落在抽樣誤差附近。取樣公式只用到 \(\alpha_t,\sigma_t\),完全不需要知道 \(f\)、\(g\)。
- 步數很少時,三種路徑差很多:\(N=5\) 時線性插值的距離是 0.161,VP、VE 都是 0.290。這裡的時間是均勻切的,同樣的 5 步在不同路徑上對應很不一樣的 SNR 區間(下圖是 VP 的每段權重,跨了好幾個數量級)。路徑和時間點怎麼選才適合少步數取樣,是第 9 章(B24 起)的主題;這裡只是一個觀察,不代表線性插值在一般情況下一定比較好。
- 最後一段直接輸出 \(\hat{\mathbf x}\):\(t=0\) 時 \(\sigma_0=0\),公式的第一項和雜訊項都是 0,第二項的係數是 1,所以最後一步就是 \(\mathbf x_0=\mathbf x_{\bm\phi^\times}(\mathbf x_s,s)\)。
05(選讀)用邊際化與貝氏定理看 Fokker–Planck 與反向 SDE書 §4.6
這一節從機率的角度看 Fokker–Planck 方程和反向 SDE 的結構:用邊際化技巧和貝氏定理這些基本工具,說明隨機過程的統計寫法和對應的微分方程之間的連結。書強調:這裡的「推導」不是數學上嚴格的證明,而是啟發式的論證,用來傳達背後的連結。
從轉移核的邊際化得到 Fokker–Planck 方程
給定前向轉移機率(B08)\(p(\mathbf x_{t+\Delta t}\mid\mathbf x_t)=\mathcal N\big(\mathbf x_{t+\Delta t};\mathbf x_t+\mathbf f(\mathbf x_t,t)\Delta t,\,g^2(t)\Delta t\,\mathbf I\big)\),以及邊際分佈 \(p_t(\mathbf x_t)\)、\(p_{t+\Delta t}(\mathbf x_{t+\Delta t})\),目標是推出支配 \(p_t\) 時間演化的 Fokker–Planck 方程。
變數變換。由 Markov 性,時間 \(t+\Delta t\) 的邊際可以寫成對前一個狀態 \(\mathbf x_t\) 的積分(Chapman–Kolmogorov 方程):
$$p_{t+\Delta t}(\mathbf x)=\int\mathcal N\big(\mathbf x;\mathbf y+\mathbf f(\mathbf y,t)\Delta t,\,g^2(t)\Delta t\,\mathbf I\big)\,p_t(\mathbf y)\,d\mathbf y.$$引入新變數 \(\mathbf u:=\mathbf y+\mathbf f(\mathbf y,t)\Delta t\),讓高斯以 \(\mathbf u\) 為中心。\(\Delta t\) 小時這個映射可逆,而且
$$\mathbf y=\mathbf u-\mathbf f(\mathbf u,t)\Delta t+\mathcal O(\Delta t^2),\qquad\Big|\det\frac{\partial\mathbf y}{\partial\mathbf u}\Big|=1-(\nabla_{\mathbf u}\cdot\mathbf f)(\mathbf u,t)\,\Delta t+\mathcal O(\Delta t^2).$$因此變數變換公式給出
$$p_{t+\Delta t}(\mathbf x)=\int\mathcal N\big(\mathbf x;\mathbf u,g^2(t)\Delta t\,\mathbf I\big)\Big[p_t(\mathbf u)-\Delta t\,\mathbf f(\mathbf u,t)\cdot\nabla_{\mathbf u}p_t(\mathbf u)-\Delta t\,(\nabla_{\mathbf u}\cdot\mathbf f)(\mathbf u,t)\,p_t(\mathbf u)\Big]d\mathbf u+\mathcal O(\Delta t^2).$$中括號是怎麼來的
\(d\mathbf y=|\det\partial\mathbf y/\partial\mathbf u|\,d\mathbf u\),而 \(p_t(\mathbf y)=p_t(\mathbf u-\mathbf f\Delta t)=p_t(\mathbf u)-\Delta t\,\mathbf f\cdot\nabla p_t(\mathbf u)+\mathcal O(\Delta t^2)\)(一階 Taylor)。兩者相乘,再乘上 \(1-(\nabla\cdot\mathbf f)\Delta t\),保留到 \(\Delta t\) 一階就是中括號。行列式那一步:\(\det(\mathbf I-\Delta t\,\nabla\mathbf f)=1-\Delta t\operatorname{Tr}(\nabla\mathbf f)+\mathcal O(\Delta t^2)\),trace 就是散度。
Taylor 展開。對任何平滑函數 \(\phi:\mathbb R^D\to\mathbb R\) 和尺度 \(\sigma>0\),若 \(\mathbf z\sim\mathcal N(\mathbf 0,\mathbf I)\),下面的近似成立(叫做 Taylor–Gaussian 平滑公式):
$$\int\mathcal N(\mathbf x;\mathbf u,\sigma^2\mathbf I)\,\phi(\mathbf u)\,d\mathbf u=\mathbb E\big[\phi(\mathbf x+\sigma\mathbf z)\big]=\phi(\mathbf x)+\frac{\sigma^2}2\Delta_{\mathbf x}\phi(\mathbf x)+\mathcal O(\sigma^4).$$這是因為 Taylor 展開 \(\phi(\mathbf x+\sigma\mathbf z)=\phi(\mathbf x)+\sigma\nabla\phi(\mathbf x)\cdot\mathbf z+\frac{\sigma^2}2\mathbf z^\top\nabla^2\phi(\mathbf x)\mathbf z+\mathcal O(\sigma^3)\),而 \(\mathbb E[\mathbf z]=\mathbf 0\)、\(\mathbb E[\mathbf z\mathbf z^\top]=\mathbf I\)(\(\mathbb E[\mathbf z^\top\mathbf A\mathbf z]=\operatorname{Tr}\mathbf A\),B06 的 Hutchinson 恆等式)。
把它套用在 \(\phi=p_t\)、\(\phi=\mathbf f\cdot\nabla p_t\)、\(\phi=(\nabla\cdot\mathbf f)p_t\) 上,取 \(\sigma^2=g^2(t)\Delta t\),得到
$$p_{t+\Delta t}(\mathbf x)-p_t(\mathbf x)=-\Delta t\,\mathbf f\cdot\nabla p_t-\Delta t\,(\nabla\cdot\mathbf f)\,p_t+\frac{g^2(t)}2\Delta t\,\Delta p_t+\mathcal O(\Delta t^2)=-\Delta t\,\nabla\cdot\big(\mathbf f\,p_t\big)+\frac{g^2(t)}2\Delta t\,\Delta p_t+\mathcal O(\Delta t^2).$$除以 \(\Delta t\)、令 \(\Delta t\to0\),就是 Fokker–Planck 方程。書在附錄 C(B35)給出基於 Itô 的推導,補足這個離散時間的觀點。
轉述者注:後兩個 \(\phi\) 前面已經有 \(\Delta t\),平滑只會多出 \(\mathcal O(\Delta t^2)\) 的項,所以只有 \(\phi=p_t\) 那一項的 \(\tfrac{\sigma^2}2\Delta p_t\) 留下來,這就是擴散項。另外 \(\mathbf f\cdot\nabla p+(\nabla\cdot\mathbf f)p=\nabla\cdot(\mathbf fp)\) 是乘積法則。
反向 SDE 為什麼長這個樣子?
反向 SDE 的嚴格推導很技術性,需要深入 Fokker–Planck 方程的性質。但它的形式可以透過貝氏定理直覺地理解。這裡給一個啟發式推導,說明反向 SDE 為什麼是那個形式、score 為什麼會出現(書的註腳:這個推導受 Alexandre Thiéry 的一篇網路筆記啟發)。
用貝氏定理反轉。目標是先求離散時間的反向轉移核 \(p(\mathbf x_t\mid\mathbf x_{t+\Delta t})\),再取 \(\Delta t\to0\)。由貝氏定理:
$$p(\mathbf x_t\mid\mathbf x_{t+\Delta t})=p(\mathbf x_{t+\Delta t}\mid\mathbf x_t)\,\frac{p_t(\mathbf x_t)}{p_{t+\Delta t}(\mathbf x_{t+\Delta t})}=p(\mathbf x_{t+\Delta t}\mid\mathbf x_t)\exp\big(\log p_t(\mathbf x_t)-\log p_{t+\Delta t}(\mathbf x_{t+\Delta t})\big).$$前向轉移核同上。
Taylor 展開。為了處理指數項,做一階 Taylor 展開。關鍵是在 \((\mathbf x_t,t)\) 附近同時對空間和時間展開:
$$\log p_{t+\Delta t}(\mathbf x_{t+\Delta t})=\log p_t(\mathbf x_t)+\nabla_{\mathbf x}\log p_t(\mathbf x_t)\cdot(\mathbf x_{t+\Delta t}-\mathbf x_t)+\frac{\partial\log p_t(\mathbf x_t)}{\partial t}\Delta t+\mathcal O(\Vert\mathbf h\Vert_2^2),$$其中 \(\mathbf h:=(\mathbf x_{t+\Delta t}-\mathbf x_t,\Delta t)\)。因此
$$\log p_t(\mathbf x_t)-\log p_{t+\Delta t}(\mathbf x_{t+\Delta t})=-\nabla_{\mathbf x}\log p_t(\mathbf x_t)\cdot(\mathbf x_{t+\Delta t}-\mathbf x_t)-\frac{\partial\log p_t(\mathbf x_t)}{\partial t}\Delta t+\mathcal O(\Vert\mathbf h\Vert_2^2).$$對擴散過程,\(\mathbf x_{t+\Delta t}-\mathbf x_t=\mathcal O_p(\sqrt{\Delta t})\),所以空間的二階 Taylor 項一般是 \(\mathcal O_p(\Delta t)\) 的量級。書強調:下面的計算應該理解成「最低階的」啟發式。
代入反向轉移。
$$p(\mathbf x_t\mid\mathbf x_{t+\Delta t})=\frac1{(2\pi g^2(t)\Delta t)^{D/2}}\exp\Big(-\frac{\Vert\mathbf x_{t+\Delta t}-\mathbf x_t-\mathbf f(\mathbf x_t,t)\Delta t\Vert_2^2}{2g^2(t)\Delta t}\Big)\cdot\exp\Big(-\nabla_{\mathbf x}\log p_t(\mathbf x_t)\cdot(\mathbf x_{t+\Delta t}-\mathbf x_t)-\frac{\partial\log p_t(\mathbf x_t)}{\partial t}\Delta t+\mathcal O(\Delta t)\Big).$$代數整理。關鍵是在指數裡配方。令 \(\bm\delta:=\mathbf x_{t+\Delta t}-\mathbf x_t\)、\(\bm\mu:=\mathbf f(\mathbf x_t,t)\Delta t\),則(同乘 \(2g^2\Delta t\) 之後的分子)
$$\Vert\bm\delta-\bm\mu\Vert_2^2+2g^2(t)\Delta t\,\nabla_{\mathbf x}\log p_t(\mathbf x_t)\cdot\bm\delta=\big\Vert\bm\delta-\big[\bm\mu-g^2(t)\Delta t\,\nabla_{\mathbf x}\log p_t(\mathbf x_t)\big]\big\Vert_2^2-\big\Vert g^2(t)\Delta t\,\nabla_{\mathbf x}\log p_t(\mathbf x_t)\big\Vert_2^2+\mathcal O(\Delta t^2).$$配方的每一步
其中 \(c=g^2\Delta t\)、\(\mathbf s=\nabla\log p_t\)。再補成平方:\(\Vert\bm\delta-(\bm\mu-c\mathbf s)\Vert^2=\Vert\bm\delta\Vert^2-2\bm\delta\cdot(\bm\mu-c\mathbf s)+\Vert\bm\mu-c\mathbf s\Vert^2\),差的是 \(\Vert\bm\mu\Vert^2-\Vert\bm\mu-c\mathbf s\Vert^2=2c\,\bm\mu\cdot\mathbf s-c^2\Vert\mathbf s\Vert^2\)。因為 \(\bm\mu\)、\(c\) 都是 \(\mathcal O(\Delta t)\),這個差是 \(\mathcal O(\Delta t^2)\)。書把它寫成 \(-\Vert c\mathbf s\Vert^2\),另一項 \(2c\,\bm\mu\cdot\mathbf s\) 同樣是 \(\mathcal O(\Delta t^2)\),一起被吸收進誤差項。
代回去:
$$p(\mathbf x_t\mid\mathbf x_{t+\Delta t})=\frac1{(2\pi g^2(t)\Delta t)^{D/2}}\exp\Big(-\frac{\big\Vert\mathbf x_{t+\Delta t}-\mathbf x_t-\big[\mathbf f(\mathbf x_t,t)-g^2(t)\nabla_{\mathbf x}\log p_t(\mathbf x_t)\big]\Delta t\big\Vert_2^2}{2g^2(t)\Delta t}\Big)\cdot\exp(\mathcal O(\Delta t))=\mathcal N\big(\mathbf x_t;\,\mathbf x_{t+\Delta t}-\big[\mathbf f(\mathbf x_t,t)-g^2(t)\nabla_{\mathbf x}\log p_t(\mathbf x_t)\big]\Delta t,\,g^2(t)\Delta t\,\mathbf I\big)\cdot(1+\mathcal O(\Delta t)).$$配方多出來的 \(\Vert g^2(t)\Delta t\,\nabla\log p_t\Vert^2\) 是 \(\mathcal O(\Delta t^2)\),可以吸收進誤差項。同樣地,時間導數項 \(\frac{\partial\log p_t}{\partial t}\Delta t\) 是 \(\mathcal O(\Delta t)\),在連續極限會消失。
取 \(\Delta t\to0\) 的極限。當 \(\Delta t\approx0\),在平滑性的假設下有下面的近似:
$$\mathbf f(\mathbf x_t,t)\approx\mathbf f(\mathbf x_{t+\Delta t},t+\Delta t),\qquad g(t)\approx g(t+\Delta t),\qquad\nabla_{\mathbf x}\log p_t(\mathbf x_t)\approx\nabla_{\mathbf x}\log p_{t+\Delta t}(\mathbf x_{t+\Delta t})=\mathbf s(\mathbf x_{t+\Delta t},t+\Delta t).$$用這些近似再整理,得到 \(p(\mathbf x_t\mid\mathbf x_{t+\Delta t})\) 大約是常態分佈:
$$\textbf{平均:}\ \mathbf x_{t+\Delta t}-\big[\mathbf f(\mathbf x_{t+\Delta t},t+\Delta t)-g^2(t+\Delta t)\,\mathbf s(\mathbf x_{t+\Delta t},t+\Delta t)\big]\Delta t,\qquad\textbf{共變異數:}\ g^2(t+\Delta t)\,\Delta t\,\mathbf I.$$取 \(\Delta t\to0\) 的極限,就「推導」出了 B08 的反向 SDE。
這個推導和 B09 的高斯推導、B08 的 Langevin 類比怎麼對上
B09 在高斯資料下把同一件事做得精確:先驗是高斯,貝氏後驗可以完全算出,再展開。這裡則是對任意 \(p_t\) 把 \(\log p\) 做一階展開,相當於「在每個點附近把 \(p_t\) 當成局部的指數傾斜」,所以只是啟發式。兩者都看得出 score 從哪裡來:它是貝氏定理裡 \(p_t(\mathbf x_t)/p_{t+\Delta t}(\mathbf x_{t+\Delta t})\) 這個比值的一階項,告訴反向的一步該往密度高的方向偏多少。
Demo C數值檢查 Fokker–Planck 方程轉述者補充
還是同一個兩高斯混合、VP SDE。\(p_t\) 有封閉形式,所以可以直接比較兩條曲線:左邊 \(\partial_tp_t(x)\)(對 \(t\) 的數值微分),和右邊 \(-\partial_x(fp_t)+\tfrac12g^2\partial_x^2p_t\)(對 \(x\) 的解析微分)。也畫出把擴散項改寫成漂移後的 \(-\partial_x(v\,p_t)\),\(v=f-\tfrac12g^2\partial_x\log p_t\)。
瀏覽器實測:在 \(t=0.01,0.1,0.5,0.9\),\(\partial_tp_t\) 和 Fokker–Planck 右邊的最大差距分別是 \(8.6\times10^{-8}\)、\(1.3\times10^{-8}\)、\(1.5\times10^{-10}\)、\(1.4\times10^{-11}\)(\(\partial_tp_t\) 本身的大小是 2.7、3.4、0.13、0.012),只剩數值微分的誤差;速度場寫法 \(-\partial_x(vp)\) 和右邊的差距也在 \(3.2\times10^{-7}\) 以下。所以三條曲線完全重疊。也可以從圖上讀出 Fokker–Planck 在說什麼:\(t\) 小時,兩個峰的頂端 \(\partial_tp\lt0\)(峰在變矮)、峰的兩側 \(\partial_tp\gt0\)(往外攤開);\(t\) 大時整條曲線都很小,分佈已經接近穩定的 \(\mathcal N(0,1)\)。
06本章結語書 §4.7
這一章是旅程中的關鍵時刻:把變分觀點和 score 觀點的離散時間 diffusion 過程,統一到單一、優雅的連續時間框架裡。我們看到 DDPM 和 NCSN 都可以理解成隨機微分方程(SDE)的離散化,只是漂移和波動係數不同。
這個框架的基石是對應的反向 SDE 的存在:它正式定義了一個把雜訊破壞倒回去的生成過程。關鍵是,這個反向過程的漂移只依賴一個未知量:每個時間點邊際資料分佈的 score function \(\nabla_{\mathbf x}\log p_t(\mathbf x)\)。這個洞見鞏固了 score function 在生成建模裡的核心地位。
此外,我們引入了一個純粹確定性的對應物:probability flow ODE(PF-ODE),它的解軌跡沿著和 SDE 相同的邊際密度 \(\{p_t\}\) 演化。這個了不起的一致性由背後的 Fokker–Planck 方程保證。深遠的意涵是:複雜的生成任務根本上等價於求解一條微分方程。訓練化約成學習定義這條方程向量場的 score function,取樣則變成數值積分的問題。
PF-ODE 這個純粹確定性的流,為 diffusion model 的第三個、也是最後一個觀點搭起了強大的橋。「學一個由速度場支配的確定性變換」這個概念,正是近來一大類生成模型的核心原理。下一章將:
- 從 Normalizing Flow 和 Neural ODE 的源頭出發,探索這個 flow 的觀點(B11)。
- 說明這個觀點怎麼導向現代的 Flow Matching 框架:直接學一個速度場,在分佈之間運送樣本(B12–B14)。
最終我們會看到,從隨機原理推出來的確定性 PF-ODE,也可以從一個完全不同的、flow 的源頭建構和推廣出來,完成 diffusion 建模的統一圖像。