搜尋課程與筆記

搜尋筆記

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

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

    U6.4 9 分鐘閱讀 2026年10月

    U6.4 一定要對準同一個終點,才算學會生成嗎?

    本篇重用3 篇

    換一份起點對應,圖片分布仍可能相同

    U6.0 到 U6.3 都在學指定 dynamics 的 flow map。給定一個輸入,精確 ODE 已選好它的目的位置;我們要求學生保留這份逐點對應。

    但若任務只是生成合理圖片,使用者通常不要求「這一顆 latent 必須對應這張圖」。想像兩個人各發出一疊照片,只要照片類型與比例相同,我們可能不在意各張照片原本配給哪個信封。要求整疊照片的分布相同,比要求每個信封的內容相同更弱。

    例如 z∼N(0,1)z\sim\mathcal N(0,1),G(z)=zG(z)=z 與 G(z)=−zG(z)=-z 的輸出分布相同,逐點輸出卻相反。這表示放開逐點對應後,解可以更多;它不是在聲稱原本的 ODE 回歸一定會模糊。

    課堂提問Q1

    若 ODE teacher 的每個起點都有確定終點,改用分布匹配,是為了解決一個必然發生的 MSE 平均錯誤嗎?

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

    不是。確定的 teacher map 本來就可以用 MSE 回歸。當同一輸入的監督標籤真有多個可能、而我們只輸出一個 deterministic prediction 時,MSE 才會取條件平均;其中有些平均是刻意的 conditional trick,不是錯誤。

    分布匹配是在放鬆監督要求:不必重現特定 latent 到終點的 coupling,也不一定要逐筆取得完整 teacher rollout。它換來的是另一個難題——要如何從有限樣本取得可靠的分布差異訊號?

    先替兩疊照片加同樣的 noise

    令一步生成器 Gθ(z)G_\theta(z) 產生資料端樣本,zz 來自簡單 latent prior。沿用本單元 t=0t=0 為噪聲、t=1t=1 為資料的 convention,合成

    xtθ=(1−t)ϵ+tGθ(z),ϵ∼N(0,I).x_t^\theta=(1-t)\epsilon+tG_\theta(z), \qquad\epsilon\sim\mathcal N(0,I).

    令 pθ,tp_{\theta,t} 是它的分布,ptp_t 是真實資料使用相同 kernel 後的分布。當 0<t<10<t<1,Gaussian smoothing 讓兩側更適合比較密度與 score。高 noise 有助比較粗結構,低 noise 更接近資料細節;只在 t=0t=0 比較則兩側本來都是同一份 noise,無法監督生成器。

    考慮一個固定非負時間權重 w(t)w(t),定義

    L(θ)=Et[w(t)KL⁡(pθ,t∥pt)].\mathcal L(\theta) =\mathbb E_t\left[w(t)\operatorname{KL}(p_{\theta,t}\|p_t)\right].

    這是書 §10.2 用 VSD 說明的 distribution-matching 原則,也是理解 DMD 的核心入口。實作使用 pretrained diffusion score 近似資料端 score;它不自動等於某個有限步 teacher sampler 的精確 output-law score。這個區分決定我們實際在近似哪個 target。

    密度算不到,先問需要它的哪個量

    固定 tt,利用 xtθx_t^\theta 的 reparameterization,可將 KL 寫成

    KL⁡(pθ,t∥pt)=Ez,ϵ[log⁡pθ,t(xtθ)−log⁡pt(xtθ)].\operatorname{KL}(p_{\theta,t}\|p_t) =\mathbb E_{z,\epsilon} \left[\log p_{\theta,t}(x_t^\theta)-\log p_t(x_t^\theta)\right].

    直接計算仍需要密度,通常做不到。但我們更新生成器要的是對 θ\theta 的梯度。θ\theta 有兩條作用路徑:密度下標本身會變,以及輸入位置 xtθx_t^\theta 會變。

    先看顯式的密度下標。固定位置再微分,然後對該密度平均,

    Ex∼pθ,t[∂θlog⁡pθ,t(x)]=∫∂θpθ,t(x) dx=∂θ∫pθ,t(x) dx=0.\begin{aligned} \mathbb E_{x\sim p_{\theta,t}} [\partial_\theta\log p_{\theta,t}(x)] &=\int\partial_\theta p_{\theta,t}(x)\,\mathrm dx\\ &=\partial_\theta\int p_{\theta,t}(x)\,\mathrm dx=0. \end{aligned}

    最後等號使用 normalized density 的積分等於 11;這裡假設微分與積分可交換。這不是說整個 KL 梯度為零,因為位置那條路還沒算。

    位置的 chain rule 會帶出兩個 score。記 sθ,t=∇xlog⁡pθ,ts_{\theta,t}=\nabla_x\log p_{\theta,t}、st=∇xlog⁡pts_t=\nabla_x\log p_t,並使用 ∂θxtθ=tJθGθ(z)\partial_\theta x_t^\theta=tJ_\theta G_\theta(z),得到

    ∇θL=Et,z,ϵ[w(t)t(JθGθ(z))⊤⋅(sθ,t(xtθ)−st(xtθ))].\begin{aligned} \nabla_\theta\mathcal L =\mathbb E_{t,z,\epsilon}\big[&w(t)t(J_\theta G_\theta(z))^\top\\ &\cdot\big(s_{\theta,t}(x_t^\theta)-s_t(x_t^\theta)\big)\big]. \end{aligned}

    密度數值不在結果裡,改成兩個 input scores 的差。梯度下降使用負號,因此輸出空間訊號是 target score 減 student score,再由 generator Jacobian 帶回共享參數;並不是每顆樣本都能獨立沿那個向量任意移動。

    檢查用 Gaussian 平移確認梯度的正負號

    若 clean generator 是 Gθ(z)=z+θG_\theta(z)=z+\theta,target 為 N(0,1)\mathcal N(0,1),加噪後兩側共同 variance 為 qt=(1−t)2+t2q_t=(1-t)^2+t^2,但學生 mean 是 tθt\theta。KL 是 t2θ2/(2qt)t^2\theta^2/(2q_t),導數為 t2θ/qtt^2\theta/q_t。兩個 scores 的差是 tθ/qtt\theta/q_t,再乘位置對參數的導數 tt,正好吻合;下降會把 θ\theta 拉回 00。

    Student score 不是生成器自己就會給的

    固定 teacher sϕs_\phi 可近似 sts_t。另一支 auxiliary score model sψs_\psi 則用學生目前生成的資料訓練。在固定 θ\theta 下,xtθx_t^\theta 的 conditional score label 是 −ϵ/(1−t)-\epsilon/(1-t),因此可最小化

    Laux(ψ;θ)=E[∥sψ(xtθ,t)+ϵ1−t∥2].\mathcal L_{\mathrm{aux}}(\psi;\theta) =\mathbb E\left[ \left\|s_\psi(x_t^\theta,t)+\frac{\epsilon}{1-t}\right\|^2 \right].

    這又是 denoising score matching:乾淨資料換成 Gθ(z)G_\theta(z),kernel label 仍可計算。要避開 t=1t=1 的除零端點,並安排適當權重。固定學生時,理想 auxiliary optimum 才是其 marginal score;學生持續更新,auxiliary model 就必須跟著追。

    訓練交替做兩件事:先固定生成器,更新 sψs_\psi;再固定兩支 score networks 的參數,用 score 差更新生成器。生成器階段可將 score 差算成停止梯度的向量 gg,使用內積 surrogate E[(xtθ)⊤sg⁡(g)]\mathbb E[(x_t^\theta)^\top\operatorname{sg}(g)] 產生需要的 pathwise gradient。這個 surrogate 的數值不是 KL 本身。

    Yin 等人的 DMD [1] 將 distribution matching 用在少步蒸餾,DMD2 [2] 進一步調整追蹤學生的更新方式。這裡已推得共同的 score-difference 機制;完整 recipe 中的額外 regularization、discriminator 與 weighting,需要按原始實作分開比較。

    互動 demo:解析 Gaussian 檢查。 調整起始時間、區間與位置,直接計算本篇的關係;偏差控制是明示的 surrogate,沒有使用預設的品質曲線。

    放開配對,也沒有放開評估責任

    Distribution matching 不需要逐點 coupling,卻需要估計正確的目標與學生 scores。Auxiliary model 追不上、teacher 在相關區域估偏、或有限生成器與優化限制,都會讓實際更新偏離剛才的理想公式。

    Reverse KL 的方向也影響偏好,但不能說「漏掉一個 mode 完全不受罰」。例如 target 有兩個互不重疊、等機率的 modes,學生只保留其中一個並重新正規化,KL 為 log⁡2\log2,並不是零。它相較反向 KL 對漏 mode 的處理不同;有限模型可能呈現 mode-seeking,仍要實際檢查 diversity。

    展開細節分布匹配不等於永遠需要 teacher

    本篇的 VSD/DMD 蒸餾設定用 teacher 提供 target score。更廣泛的 distribution matching 可以直接使用真實資料、adversarial discrepancy 或樣本間的 kernel discrepancy;它不在定義上要求 pretrained diffusion model。反過來,若只匹配 output law,也不自動學到特定 ODE 的逐點 flow map。要比較方法,必須把「學什麼」與「用什麼訊號」分開。

    消化一下

    想一想

    兩個生成器的 output law 相同,是否必須對每個 zz 輸出相同結果?

    想一想

    KL 梯度中顯式 density-parameter 項為何平均成零?

    想一想

    Auxiliary score model 的資料應來自哪裡?

    參考文獻

    主要理論參考:The Principles of Diffusion Models,§10.2,特別是 Proposition 10.2.1 的 score-difference 梯度與交替訓練。正文的符號沿用本課程;方法實作細節再對照下列原始論文。

    1. Yin et al., One-step Diffusion with Distribution Matching Distillation (CVPR 2024)。
    2. Yin et al., Improved Distribution Matching Distillation for Fast Image Synthesis (NeurIPS 2024)。
    3. Wang et al., ProlificDreamer: High-Fidelity and Diverse Text-to-3D Generation with Variational Score Distillation (NeurIPS 2023)。
    4. Sauer et al., Adversarial Diffusion Distillation (2023)。
    5. Zhou et al., Inductive Moment Matching (2025)。