搜尋課程與筆記

搜尋筆記

輸入主題、關鍵字或單元編號,例如 Flow Matching、U4。

    按 Esc 關閉 · ⌘ / Ctrl K 開啟搜尋

    U2.3 12 分鐘閱讀 2026年10月

    U2.3 Gaussian 起點:DDIM 與 Flow Matching 的交集

    本篇重用2 篇

    在 U2.2 的最後,我們留下了一個問題:如果把 X0X_0 選成 U1 使用的 Gaussian noise,Flow Matching 學到的 velocity field,會不會和 DDIM 背後的 deterministic dynamics 有關?

    在 U1,denoiser 從 noisy xtx_t 預測 data 或 noise;到了 U2,Flow Matching 的 network 則要預測 velocity。它們的名字與輸出不同,但看到的都是同一個 xtx_t。所以我們真正要確認的是:這些量能不能互相換算?

    如果起點是 Gaussian,U1 的 denoiser
    能不能直接給出 Flow ODE 需要的 velocity?

    把 U1 中 forward process 決定的路徑,寫成 Flow Matching 的語言

    我們沿用這個單元的時間方向:t=0t=0 是 Gaussian、t=1t=1 是資料。這和 U1 的 forward process 相反;U1 是從資料一路加 noise,這裡則要從 noise 走回資料。

    為了分清兩邊的時間方向,這一段用 τ\tau 表示 U1 從資料走向 noise 的時間,用 tt 表示 Flow Matching 從 noise 走向資料的時間。U1.1 中的 noisy state 是

    xτ=αˉτ x0+στϵ.x_\tau=\sqrt{\bar\alpha_\tau}\,x_0+\sigma_\tau\epsilon.

    現在反過來讀,並令 Flow Matching 的兩個端點為

    X0=ϵ∼N(0,I),X1∼pdata,X_0=\epsilon\sim\mathcal N(0,I),\qquad X_1\sim p_{\mathrm{data}},

    用 Lipman 等人的 Flow Matching [3] 語言寫下來就是

    It=αtX1+σtX0=αtX1+σtϵ,α0=0,σ0=1,α1=1,σ1=0.I_t=\alpha_tX_1+\sigma_tX_0 =\alpha_tX_1+\sigma_t\epsilon,\qquad \alpha_0=0, \sigma_0=1, \alpha_1=1, \sigma_1=0.

    其中:

    • αt\alpha_t 是 data 的 signal amplitude,對應 U1.1 裡的 αˉ\sqrt{\bar\alpha}。注意,它不是 U1.1 中表示單一步保留率的 αs=1−βs\alpha_s=1-\beta_s;
    • σt\sigma_t 是 noise amplitude,對應 U1.1 裡的 1−αˉ\sqrt{1-\bar\alpha};
    • 因為 U1 使用的是 variance-preserving path,兩者滿足 αt2+σt2=1\alpha_t^2+\sigma_t^2=1。

    只是現在時間反過來讀:αt\alpha_t 從 00 增加到 11,σt\sigma_t 則從 11 降到 00。U1 的 noise schedule 決定的,就是 data 與 noise 在這條路上交接的速度。

    接下來,我們從這個由 DDPM 定義出來的 xτx_\tau 出發,看看反向讀取後的 ItI_t 所對應的 Flow Matching velocity 是什麼。

    給定一組 (X1,ϵ)(X_1,\epsilon),reference velocity 直接對 ItI_t 微分就可以得到:

    I˙t=α˙tX1+σ˙tϵ.\dot I_t=\dot\alpha_tX_1+\dot\sigma_t\epsilon.

    此時,依照 U2.1 的結論,optimal velocity field 會等於

    vt⋆(x)=E[I˙t∣It=x]=E[α˙tX1+σ˙tϵ∣It=x].v_t^\star(x) =\mathbb E[\dot I_t\mid I_t=x] =\mathbb E[\dot\alpha_tX_1+\dot\sigma_t\epsilon\mid I_t=x].

    連結到 DDPM、DDIM 的 denoiser

    接下來從條件 It=xI_t=x 出發:

    x=αtX1+σtϵ.x=\alpha_tX_1+\sigma_t\epsilon.

    當 αt>0\alpha_t>0 時,可以把 X1X_1 寫成 xx 與 ϵ\epsilon 的關係:

    X1=x−σtϵαt.X_1=\frac{x-\sigma_t\epsilon}{\alpha_t}.

    再代回 reference velocity:

    I˙t=α˙tX1+σ˙tϵ=α˙tαtx+(σ˙t−α˙tαtσt)ϵ.\begin{aligned} \dot I_t &=\dot\alpha_tX_1+\dot\sigma_t\epsilon\\ &=\frac{\dot\alpha_t}{\alpha_t}x +\left( \dot\sigma_t- \frac{\dot\alpha_t}{\alpha_t}\sigma_t \right)\epsilon. \end{aligned}

    現在才對所有滿足 It=xI_t=x 的可能來路取平均:

    vt⋆(x)=α˙tαtx+(σ˙t−α˙tαtσt)E[ϵ∣It=x].v_t^\star(x) =\frac{\dot\alpha_t}{\alpha_t}x +\left( \dot\sigma_t- \frac{\dot\alpha_t}{\alpha_t}\sigma_t \right) \mathbb E[\epsilon\mid I_t=x].

    所以只要知道「在這個 xx 裡平均含有多少 noise」,就能得到 optimal velocity。把 tt 對回 U1 中相同的 noise level,DDPM、DDIM 的 denoiser 估計的正是

    ϵθ(x,t)≈E[ϵ∣It=x]=−σt∇xlog⁡pt(x),\epsilon_\theta(x,t) \approx\mathbb E[\epsilon\mid I_t=x] =-\sigma_t\nabla_x\log p_t(x),

    其中最後一個等號就是 U1.3 的 Tweedie 公式。代回上式,就得到 denoiser 與 velocity 的轉換公式:

    用已學到的 noise 換出 velocity

    vθ(x,t)=α˙tαtx+αtσ˙t−α˙tσtαtϵθ(x,t). \begin{aligned} \reveal{4}{v_\theta(x,t)}&\reveal{4}{=} \reveal{2}{\frac{\dot\alpha_t}{\alpha_t}x}\\ &\reveal{4}{+}\reveal{3}{\frac{ \alpha_t\dot\sigma_t-\dot\alpha_t\sigma_t }{\alpha_t}}\reveal{1}{\epsilon_\theta(x,t)}\reveal{4}{.} \end{aligned}
    1. 在同一條 VP interpolation、同一個 noise level 上,ϵθ(x,t)\epsilon_\theta(x,t) 已經在預測這個位置的平均 noise。
    2. 前面的代入已把 reference velocity 拆成位置項與 noise 項。位置項是 (α˙t/αt)x(\dot\alpha_t/\alpha_t)x,不需要再學。
    3. Noise 項的係數由同一條 path 的 αt,σt\alpha_t,\sigma_t 與它們的變化率決定。換輸出表示時,這些係數也要一起帶入。
    4. 把位置項與換算後的 noise 項相加,就得到 vθ(x,t)v_\theta(x,t)。這一步沿用原來的 conditional mean,沒有另外訓練一個 velocity model。

    若改用 score 表示,同一條式子則是

    vt⋆(x)=α˙tαtx−σt(σ˙t−α˙tαtσt)∇xlog⁡pt(x).v_t^\star(x) =\frac{\dot\alpha_t}{\alpha_t}x -\sigma_t\left( \dot\sigma_t- \frac{\dot\alpha_t}{\alpha_t}\sigma_t \right)\nabla_x\log p_t(x).
    相同 noisy state 分別送入 noise regression 與 velocity regression,兩者的最佳解都是 conditional mean

    圖:固定同一個中間狀態,noise regression 平均的是 ϵ\epsilon,velocity regression 平均的是路徑速度。圖中的 XtX_t 對應本篇的 ItI_t;兩者的換算必須使用同一條 interpolation。

    Week 4 投影片 44 · 點圖查看原圖

    這不是重新訓練另一個模型,只是把同一個 conditional mean 改寫成不同的形式。

    Noise、score 與 velocity 不是三個互不相關的學習目標;在同一條由 DDPM forward process 定義的 VP interpolation 上,它們可以互相換算。

    把 DDIM 的一步縮小,會看到什麼?

    到這裡,我們只證明了 U1 的 denoiser 可以換算成 Flow Matching 的 velocity。但開頭問的問題還多了一步:這個 velocity 真的是 DDIM 背後的 deterministic dynamics 嗎?

    回到 U1.4。在 U1 的時間方向裡,τ=0\tau=0 是資料、τ=1\tau=1 是 noise。當 η=0\eta=0 時,Song、Meng 與 Ermon 的 DDIM [1] 不再加入新的 randomness,而是用同一組 x^0\widehat x_0 與 predicted noise,直接重建另一個 noise level:

    xs=αˉs x^0(xτ,τ)+σsϵθ(xτ,τ),s<τ.x_s =\sqrt{\bar\alpha_s}\,\widehat x_0(x_\tau,\tau) +\sigma_s\epsilon_\theta(x_\tau,\tau), \qquad s<\tau.

    其中

    x^0(xτ,τ)=xτ−στϵθ(xτ,τ)αˉτ.\widehat x_0(x_\tau,\tau) =\frac{x_\tau-\sigma_\tau\epsilon_\theta(x_\tau,\tau)} {\sqrt{\bar\alpha_\tau}}.

    所以目前的 xτx_\tau 也可以寫成

    xτ=αˉτ x^0(xτ,τ)+στϵθ(xτ,τ).x_\tau =\sqrt{\bar\alpha_\tau}\,\widehat x_0(x_\tau,\tau) +\sigma_\tau\epsilon_\theta(x_\tau,\tau).

    把兩個時刻相減,就得到

    xs−xτ=(αˉs−αˉτ)x^0(xτ,τ)+(σs−στ)ϵθ(xτ,τ).\begin{aligned} x_s-x_\tau &=\left(\sqrt{\bar\alpha_s}-\sqrt{\bar\alpha_\tau}\right) \widehat x_0(x_\tau,\tau)\\ &\quad+(\sigma_s-\sigma_\tau)\epsilon_\theta(x_\tau,\tau). \end{aligned}

    現在讓 ss 越來越靠近 τ\tau,再除以 s−τs-\tau:

    dxτdτ=dαˉτdτx^0(xτ,τ)+σ˙τϵθ(xτ,τ)=ddτlog⁡αˉτ xτ+(σ˙τ−ddτlog⁡αˉτ στ)ϵθ(xτ,τ).\begin{aligned} \frac{\mathrm dx_\tau}{\mathrm d\tau} &=\frac{\mathrm d\sqrt{\bar\alpha_\tau}}{\mathrm d\tau} \widehat x_0(x_\tau,\tau) +\dot\sigma_\tau\epsilon_\theta(x_\tau,\tau)\\ &=\frac{\mathrm d}{\mathrm d\tau} \log\sqrt{\bar\alpha_\tau}\,x_\tau +\left( \dot\sigma_\tau- \frac{\mathrm d}{\mathrm d\tau} \log\sqrt{\bar\alpha_\tau}\,\sigma_\tau \right) \epsilon_\theta(x_\tau,\tau). \end{aligned}

    這正是上一節得到的 velocity 轉換公式,只是現在沿用 U1 從 data 走向 noise 的時間方向。DDIM 的 deterministic update 一旦縮到連續時間,就會走向同一條 Flow ODE。

    代入 VP schedule,就會得到哪一條 ODE?

    接下來只差把 DDPM 的 schedule 代進去。由 αˉ˙τ=−β(τ)αˉτ\dot{\bar\alpha}_\tau=-\beta(\tau)\bar\alpha_\tau,data 係數的變化率是

    ddτlog⁡αˉτ=−12β(τ).\frac{\mathrm d}{\mathrm d\tau}\log\sqrt{\bar\alpha_\tau} =-\frac12\beta(\tau).

    而 στ2=1−αˉτ\sigma_\tau^2=1-\bar\alpha_\tau,所以

    2στσ˙τ=β(τ)αˉτ.2\sigma_\tau\dot\sigma_\tau =\beta(\tau)\bar\alpha_\tau.

    再用 ϵθ(xτ,τ)≈−στ∇log⁡pτ(xτ)\epsilon_\theta(x_\tau,\tau)\approx-\sigma_\tau\nabla\log p_\tau(x_\tau),score 前面的係數會變成

    −στ(σ˙τ+12β(τ)στ)=−12β(τ)(αˉτ+στ2)=−12β(τ).\begin{aligned} -\sigma_\tau\left( \dot\sigma_\tau+\frac12\beta(\tau)\sigma_\tau \right) &=-\frac12\beta(\tau) \left(\bar\alpha_\tau+\sigma_\tau^2\right)\\ &=-\frac12\beta(\tau). \end{aligned}

    因此,DDIM 縮到連續時間後得到

    dxτdτ=−12β(τ)xτ−12β(τ)∇log⁡pτ(xτ).\boxed{ \frac{\mathrm dx_\tau}{\mathrm d\tau} =-\frac12\beta(\tau)x_\tau -\frac12\beta(\tau)\nabla\log p_\tau(x_\tau). }

    這就是 Song 等人 [2] 寫下的 probability-flow ODE。生成時,DDIM 從 noise 端往回走,也就是沿著這條 ODE 把 τ\tau 從大積到小。

    所以這裡的關係是:DDPM 與 DDIM 用相同的 denoising objective 學 conditional mean;這個 conditional mean 可以換成 VP interpolation 上的 velocity;而 DDIM 的 η=0\eta=0 update,則是這條 continuous dynamics 的一種有限步走法。

    注意可以換座標,不代表可以偷換路徑

    上面的 (αt,σt)(\alpha_t,\sigma_t) 必須對應模型 training 時使用的 VP interpolation。把這條 interpolation 訓出的 ϵθ\epsilon_\theta,直接配上 It=tX1+(1−t)X0I_t=tX_1+(1-t)X_0 的係數,會把網路帶到它沒看過的 ptp_t 上。

    不用重訓能換的是 noise/score/velocity 的表示方式,不是中間的 probability path。

    Flow Matching 多給了什麼?

    到這裡,我們已經看到:DDIM 背後的 deterministic dynamics,其實和對應的 Flow Matching ODE 是同一件事。 兩者最後都可以寫成

    dXtdt=vt(Xt),\frac{\mathrm dX_t}{\mathrm dt}=v_t(X_t),

    只是從不同的角度得到 velocity field vtv_t。既然 DDIM 已經是一條 flow,Flow Matching 真正多給我們的就不是另一種 ODE,而是可以直接設計:

    • 起點 distribution p0p_0;
    • 中間的 reference path ItI_t;
    • 起點與終點如何配成 (X0,X1)(X_0,X_1)。

    最自然的第一個嘗試,就是把每一組端點直接連成直線:

    It=(1−t)X0+tX1,I˙t=X1−X0.I_t=(1-t)X_0+tX_1,\qquad \dot I_t=X_1-X_0.

    每個人的 reference velocity 都是常數;如果生成時真的沿著其中一條 reference path 前進,看起來只要一步 Euler 就能從起點走到終點。

    設計DDPM/DDIMFlow Matching
    起點Gaussian prior可以是任意 p0p_0
    Reference path由 noise schedule 決定可以自行選擇 ItI_t
    配對方式Gaussian noise 與資料獨立配對可以自行決定起點與終點如何配對
    網路輸出常用 noise/score直接預測 velocity,也可換其他 parametrization

    同一條 VP interpolation 上,noise、score 與 velocity 可以互換;一旦改了 reference path 或端點的配對方式,中間的 ptp_t 與 optimal velocity 就一起改變,不能只換公式而不重訓。

    補充Velocity MSE 換成 noise MSE 時,權重也會改變

    在線性 path It=tX1+(1−t)ϵI_t=tX_1+(1-t)\epsilon 上,

    ϵ=It−tI˙t,vθ(x,t)=x−ϵθ(x,t)t.\epsilon=I_t-t\dot I_t,\qquad v_\theta(x,t)=\frac{x-\epsilon_\theta(x,t)}{t}.

    因此

    ∥vθ−I˙t∥2=1t2∥ϵθ−ϵ∥2.\|v_\theta-\dot I_t\|^2 =\frac1{t^2}\|\epsilon_\theta-\epsilon\|^2.

    所以「同樣可以預測 noise」不代表 training objective 完全相同。線性 Flow Matching 若均勻抽 tt,換到 noise 座標後會自然帶出 1/t21/t^2;DDPM 常用的 Lsimple\mathcal L_{\mathrm{simple}} 則是均勻 noise MSE。

    快速回顧一下

    想一想

    在固定的 VP interpolation 上,已知 ϵθ≈E[ϵ∣It=x]\epsilon_\theta\approx\mathbb E[\epsilon\mid I_t=x] 後,還需要另一個網路預測 velocity 嗎?

    想一想

    DDIM 與 Flow ODE 的關係,哪一個說法最準確?

    參考文獻

    1. Song, J., Meng, C., Ermon, S. Denoising Diffusion Implicit Models. ICLR 2021. (Non-Markovian coupling、deterministic sampling 與 ODE form。)
    2. Song, Y., et al. Score-Based Generative Modeling through Stochastic Differential Equations. ICLR 2021. (Probability-flow ODE。)
    3. Lipman, Y., et al. Flow Matching for Generative Modeling. ICLR 2023. (Gaussian probability paths 與 velocity regression。)