本篇重用M1.0兩台體重計:Gaussian 的線性組合·M1.4去噪就是取 Posterior Mean(Tweedie)·M2.2站內人數變化 = 進 − 出:Continuity Equation
前面兩個單元留下三個問題
到目前為止有三件事還沒有交代,而且它們不是同一篇留下來的:
- 軌跡彎多少,怎麼變成一個數? U2.4 已經寫出 h∫01∥x¨t∥dt 這個量,但沒有證明它真的控制得住誤差。
- 怎麼把軌跡拉直? U2.3 把「彎」追到了「配對」,但沒有給任何具體做法。
- 取樣的時候該不該把噪聲加回去? 這一題其實是 U1.4 留下來的——那裡給了判準(模型誤差與離散化誤差誰佔上風),但沒有給一個可以連續調的旋鈕。
前兩題動的是 U2.0 的 forward 旋鈕裡的路徑與配對;第三題動的是取樣器,是一個新的旋鈕。這一節先給一個把前兩個寫在臉上的式子,取樣那一個留到 U3.1。
有沒有一個式子,
能把前面兩個單元的所有方法都裝進去?
一條式子,把路徑、配對、噪聲都寫在臉上
有的,而且短得有點意外:
xt=αtx0+βtx1+γtz,(x0,x1)∼π, z∼N(0,I) 獨立
邊界條件是 α0=β1=1、α1=β0=0、γ0=γ1=0——也就是「t=0 時人在 x0、t=1 時人在 x1,而額外的噪聲在兩端都要消失」。
這條式子上有三個可以轉的東西:
- 路徑:(αt,βt) 的形狀。
- 配對:π 是 p0 與 p1 的任意耦合,不必是獨立乘積。
- γt:一項與端點無關的額外 Gaussian,在兩端被掐掉。
注意這三個不等於 U2.0 的那三個旋鈕。 那裡的是「起點分布/路徑/配對」,講的是 forward process 的設計;這裡的起點被吸收進 π 的一個邊際,換上來的是 γt。而 γt 是訓練時的路徑寬度,和取樣時要注入多少噪聲又是兩回事——U3.1 會把後者獨立出來,那是第五個旋鈕。
x0 和 z 是兩個不同的東西,這點很容易看漏。x0 是起點分布的樣本,可以是任何分布;z 是硬加進來的標準 Gaussian,在兩端被 γt 掐掉。
符號這個單元的 alpha 和上一個單元的 alpha 不是同一個東西
U2 寫的是 xt=αtx1+σtx0,αt 是資料的係數。這個單元沿用 Albergo 等人的寫法,αt 變成起點的係數、資料的係數改叫 βt。
對照表:上一個單元的 (αt,σt) 等於這個單元的 (βt,αt)。讀論文時一定要先確認哪個字母配哪一端,不然每個式子都會反過來。
前面學過的東西全部是特例
| 模型 | αt | βt | γt | π |
|---|
| 線性 FM(U2.3) | 1−t | t | 0 | 獨立 |
| Rectified flow(U3.3) | 1−t | t | 0 | 上一輪 ODE 誘導的耦合 |
| Minibatch OT-CFM(U3.4) | 1−t | t | 0 | batch 內解 OT |
| VP diffusion(U1),p0=N(0,I) | cos2πt | sin2πt | 0 | 獨立 |
| Albergo 等人的預設 | 1−t | t | 2t(1−t) | 獨立 |
(中間兩列的 π 現在看不懂沒關係——rectified flow 與 minibatch OT 分別是 U3.3 與 U3.4 的主角。先注意一件事就好:它們和線性 FM 唯一的差別就在最後一欄。)
(VP 那一列寫的是 cosine schedule,而且時間方向已經照這個單元的慣例轉成「t=1 是資料」;U1 的 linear schedule 代進來只是換一對 (αt,βt) 的形狀,γ 仍然是 0。)
Diffusion 落在 γ=0 那一行,第一眼會覺得寫錯了——它明明整篇都在加噪聲。但 diffusion 的噪聲就是 x0 本身:起點分布恰好是 Gaussian,所以那個 Gaussian 成分本來就在式子裡了。一旦把 x0 換成別的分布,想保留「中間有 Gaussian 成分」這個性質,就得自己掏 γtz 來買。
γt 到底買到了什麼?
對一般式微分:x˙t=α˙tx0+β˙tx1+γ˙tz。這是給定 (x0,x1,z) 之後就算得出來的東西,所以照 U1.2 那個 conditional trick(條件目標好算,平均交給 L2 回歸自己做;U2.2 剛用過速度場的版本),可以定義兩個量:
bt(x)=E[x˙t∣xt=x](速度),ηt(x)=E[z∣xt=x](denoiser).
兩個都用 MSE 學,目標分別是 x˙t 和 z。訓練迴圈跟 U2.2 那五行幾乎一樣,只是多抽一個 z。
bt 生成邊際 pt。 證明和 U2.2 的定理 1 逐字相同,只是條件變數從 (x0,x1) 變成 (x0,x1,z),多一個積分變數而已。
ηt 給出 score。 這一步是 γt 的全部價值所在。給定 (x0,x1),xt 是一個均值 αtx0+βtx1、變異數 γt2 的 Gaussian——注意這裡沒有用到 p0 是什麼、也沒有用到配對獨不獨立。對這個條件 Gaussian 套 U1.3 的 Tweedie,再對 (x0,x1) 取後驗平均:
∇logpt(x)=−γtηt(x).
只要 γt>0,同一個框架就同時給你速度與 score——不管起點是什麼分布、配對是怎麼配的。
展開細節為什麼「對條件 Gaussian 套 Tweedie 再平均」就會得到邊際的 score
記 m=αtx0+βtx1。條件密度 pt(x∣x0,x1)=N(x;m,γt2I),所以
∇xlogpt(x∣x0,x1)=−γt2x−m=−γtz,因為 x−m=γtz。接著用一個很好用的恆等式:邊際的 score 是條件 score 的後驗平均,
∇logpt(x)=pt(x)∇pt(x)=pt(x)∫∇xpt(x∣x0,x1)p(x0,x1)d(x0,x1)=E[∇xlogpt(x∣x0,x1) xt=x].代進去就得到 −E[z∣xt=x]/γt=−ηt(x)/γt。□
這又是同一個 conditional trick:難算的邊際量、好算的條件量、一個 L2 回歸。U2.2 那張三欄的對照表可以直接再加一欄。
互動 demo:γt 這個旋鈕在做什麼。 起點和終點刻意設成同一個環,所以任何差別都只來自配對。選「對徑配對」(x1=−x0,這是一個合法的確定性耦合)、γ=0,把 t 拉到 0.5:整個環塌成一個點,兩個主方向的標準差都變成 0.000。把 γ 幅度推上去,同一個 t 就變成一團有厚度的雲。再按「同位配對」(x1=x0):一樣是確定性配對,卻從頭到尾都是那個環。
γt=0 的時候會失去什麼
先把話說準。γ≡0 且配對獨立、p0 是 Gaussian時,什麼都沒失去——那正是 U1 與 U2.3 的情況,score 由 E[x0∣xt] 給出,因為 x0 自己就是那個獨立的 Gaussian 成分。
問題出在把配對換掉之後。若 π 是確定性耦合——例如 U3.3 的 reflow 把每個 x0 對到唯一的 x1——那給定 xt,端點就被定死了,沒有任何「後驗平均」可以取。ηt 沒有 z 可以學,E[x0∣xt] 也退化成 x0 本身,Tweedie 的前提(給定條件變數之後 xt 是非退化 Gaussian)整個不成立。回歸拿不到 score。
更糟的情況是 pt 連密度都沒有。上面 demo 的對徑配對就是一個例子:xt=(1−2t)x0 在 t=21 塌成一個點。不是每個確定性配對都會這樣(U3.4 那種 OT 配對就不會——它有一個叫單調的性質,讓不同的起點不會被送到互相交錯的地方,那一篇會證),但只要有可能,靠密度的東西就不能無條件依賴。
課堂提問Q1
U2.3 的結論是:要把軌跡拉直,得動配對那一軸。而剛剛的結論是:配對一旦變成確定性的,score 就拿不到了。
這兩件事放在一起,是不是互相矛盾?
先想一想,再展開看整理後的答案
不矛盾,但它確實是一個要付代價的取捨。
先分清楚兩個東西各自需要什麼:
- 速度 bt 只需要條件期望。 條件期望對退化的分布一樣定義得好(極端情況下,「後驗」只有一個點,那平均就是它自己)。所以確定性配對之下 bt 照樣存在、照樣可以用回歸學。這就是為什麼 rectified flow 明明用確定性配對,訓練起來卻毫無障礙。
- score 需要密度。 而且要用回歸拿到它,還需要「給定條件變數之後 xt 是非退化 Gaussian」這個結構。這兩件事確定性配對都不保證。
所以取捨長這樣:
想要直的軌跡 → 動配對 → 失去 score → 只能用 ODE 取樣。
想要 score(也就是想用 SDE 取樣)→ 要嘛保留獨立配對,要嘛付 γtz 這筆錢。
而 γtz 這筆錢也不是白付的:它把中間分布撐開,讓每一組配對的路徑都變成一個有寬度的管子,管子互相重疊,於是 bt 又變回一個平均——軌跡會被弄彎回來一點。
三個旋鈕不是各轉各的。U3.2 會把「彎多少」寫成一個算得出來的量,U3.1 會說明有了 score 之後多出哪些取樣器可以選,然後 U3.3 與 U3.4 各自選一邊站。
消化一下
參考文獻
- Albergo, M. S., Boffi, N. M., Vanden-Eijnden, E. Stochastic Interpolants: A Unifying Framework for Flows and Diffusions. 2023. (這一篇的一般式、bt 與 ηt 兩個目標、以及 γt 的角色。)
- Albergo, M. S., Vanden-Eijnden, E. Building Normalizing Flows with Stochastic Interpolants. ICLR 2023. (較早的版本,γt=2t(1−t) 這個預設出自這裡。)
- Ma, N., et al. SiT: Exploring Flow and Diffusion-Based Generative Models with Scalable Interpolant Transformers. ICCV 2023. (把這個框架的三個旋鈕在影像上一個一個掃過去的實驗。)