搜尋課程與筆記

搜尋筆記

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

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

    U5.1 8 分鐘閱讀 2026年10月

    U5.1 能不能先把兩小步,學成一大步?

    本篇重用2 篇

    不必第一天就學完整條路

    U5.0 的直接蒸餾要用完整 rollout 替每個起點標答案。若 teacher 原本需要 NN 步,做一筆標籤就可能要呼叫很多次網路。想像我們教人走一條長路,不一定要先要求他記住整條路;也可以先教他把相鄰兩段接起來。

    於是我們先要求:從同一個 noisy state 出發,學生一步的落點,要等於 teacher 兩步的落點。 學會之後,原本 NN 步的路就能在 N/2N/2 步內完成。再把學生升格成 teacher,繼續減半。這就是 Salimans 與 Ho 的 progressive distillation [1]。

    這個方法不是省掉訓練,而是把完整跳躍拆成多輪較短的監督問題。下面先固定其中一輪,確定「學生到底在學哪個標籤」。

    往更乾淨的時間走,一步會落在哪裡?

    沿用 xt=x0+tϵx_t=x_0+t\epsilon,本單元 tt 越小越乾淨。Teacher 的 denoiser 記成 Dϕ(x,t)D_\phi(x,t),由它得到速度 (x−Dϕ(x,t))/t(x-D_\phi(x,t))/t。固定輸入 xtx_t,從 tt 走到 s<ts<t 的 Euler update 是

    xs=xt+(s−t)xt−Dϕ(xt,t)t.x_s=x_t+(s-t)\frac{x_t-D_\phi(x_t,t)}{t}.

    這個分數是 teacher 在起點估計的瞬時速度。將 xtx_t 的係數合併後,得到

    xs=stxt+(1−st)Dϕ(xt,t).x_s=\frac{s}{t}x_t+\left(1-\frac{s}{t}\right)D_\phi(x_t,t).

    在這個 affine-in-time 的 VE schedule 下,它也正是 deterministic DDIM update。這個相等不宜直接搬到任意 schedule 的原始時間座標。

    選 t>u>st>u>s,teacher 先從 tt 到 uu,再從新位置到 ss,得到 x~s\tilde x_s。第二步要在新位置重新呼叫 teacher;不能把第一步的 prediction 重用兩次,假裝已經看過沿途的變化。

    學生該預測的,其實不是原始圖片

    學生仍輸出一個 denoiser 形式的 Dθ(xt,t)D_\theta(x_t,t),但我們希望它在較大的 t→st\to s update 中直接抵達 x~s\tilde x_s。先把這個要求寫下來:

    x~s=stxt+(1−st)x0target.\tilde x_s=\frac{s}{t}x_t+\left(1-\frac{s}{t}\right)x_0^{\mathrm{target}}.

    左邊已由 teacher 算好,右邊未知的只有學生應預測的 x0targetx_0^{\mathrm{target}}。先扣掉輸入保留項,再除以它的係數:

    x0target=x~s−(s/t)xt1−s/t.x_0^{\mathrm{target}} =\frac{\tilde x_s-(s/t)x_t}{1-s/t}.

    這是讓學生大步落點正確的 pseudo-clean target,通常不等於當初拿來合成 xtx_t 的資料 x0x_0。Teacher 第一輪的 prediction 可能近似 posterior mean;經過蒸餾後,學生輸出的同一個座標已被訓成「適合這個大步的 prediction」,不再有相同的 posterior-mean 解讀。

    例子用三個數字檢查反解

    令 t=2t=2、s=1s=1、xt=4x_t=4,teacher 兩步抵達 x~s=3\tilde x_s=3。Target 就是 (3−2)/(1/2)=2(3-2)/(1/2)=2。把它放回學生 update:(1/2)4+(1/2)2=3(1/2)4+(1/2)2=3,落點吻合。這裡只是在反解 affine update,沒有假設真實 ODE 是直線。

    取得 target 後,抽資料 x0x_0、獨立 noise ϵ\epsilon 與訓練網格上的三連點 (t,u,s)(t,u,s),合成 xtx_t,最小化

    LPD=Ex0,ϵ,(t,u,s)[w(t)⋅∥Dθ(xt,t)−sg⁡(x0target)∥2].\begin{aligned} \mathcal L_{\mathrm{PD}} &=\mathbb E_{x_0,\epsilon,(t,u,s)}\big[ w(t)\\ &\qquad\cdot\|D_\theta(x_t,t) -\operatorname{sg}(x_0^{\mathrm{target}})\|^2\big]. \end{aligned}

    w(t)w(t) 決定不同起始時間的權重,sg⁡\operatorname{sg} 表示目標不回傳參數梯度。給定 xtx_t 與本輪時間網格,teacher 的兩步結果是確定的;這是用 deterministic teacher 做逐點蒸餾的關鍵。

    課堂提問Q1

    若我們把 x0targetx_0^{\mathrm{target}} 換回真實資料 x0x_0,看起來更準確,為什麼反而沒有在做兩步合一?

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

    因為要對齊的是 teacher 的落點。給定 xtx_t,真實資料 x0x_0 通常有許多可能,MSE 回歸它會得到 posterior mean;剛才反解的 target 則是 teacher 兩步的確定函數。兩種標籤都能用來訓練網路,但它們要求不同的輸出。

    若 teacher 含有額外隨機性,而這些 random draws 又沒有交給學生,標籤會再次變成多值。這時要額外設計 noise coupling 或改成 distributional supervision,不能照搬 deterministic 的逐點說法。

    減半的是步數,並沒有消除前一輪誤差

    固定偶數 NN,學生使用 teacher 每隔一格的時間點;學好後,由 NN 步變成 N/2N/2 步。每輪完成後複製學生參數作為新 teacher,重新定義兩步標籤。第二輪以後的 teacher transition 是上一輪學生定義的 update,不再等於原始 diffusion PF-ODE 的 Euler 一步。

    即使只看一輪,局部擬合很好也要問誤差會怎麼累積。令 AkA_k 是 teacher 的兩步合成,BkB_k 是學生的大步;假設它們在比較區域滿足 ∥Bk(x)−Ak(x)∥≤δ\|B_k(x)-A_k(x)\|\le\delta,且 AkA_k 為 KK-Lipschitz。學生與 teacher 在第 kk 格的位置差記成 eke_k,加減 AkA_k 在學生位置的輸出,再用 triangle inequality:

    ek+1≤δ+Kek.e_{k+1}\le\delta+K e_k.

    第一項是本步擬合誤差,第二項是舊位置誤差經 reference map 傳遞。從相同起點開始,展開可得 em≤δ∑j=0m−1Kje_m\le\delta\sum_{j=0}^{m-1}K^j。這是對固定 reference 的一個條件式上界;新學生下一輪變成 reference 時,它原有的偏差也會進入監督。

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

    計算成本每個標籤兩次呼叫,不等於總訓練成本只有兩次

    本輪用單次網路求值的一步規則時,每個標籤需要兩次 teacher evaluation;總成本還要乘訓練樣本數與輪數,另加學生更新。若 coarse solver 本身含多個 stages,步數減半也不代表 NFE 同比減半。少步、大步通常更難擬合,但哪一輪品質下降最多仍是實驗結果,不是這條 recurrence 的結論。

    原文對照U1 的 v-prediction 為什麼會在少步蒸餾再出現?

    本篇用 VE 座標把兩步合一的代數寫簡單;原始 progressive distillation 使用的 VP 座標,也研究了 prediction 與時間加權的選擇。U1.2 的 v-prediction label 是 αˉtϵ−σtx0\sqrt{\bar\alpha_t}\epsilon-\sigma_tx_0,是 data 與 noise 的另一種線性組合;這個名稱裡的 v 不等於本篇的 ODE velocity vtv_t。

    少步時,模型必須跨過更大的 noise-level 範圍,prediction 座標在兩端的尺度與數值條件就更重要。這是原文引入該座標的背景;本篇的 target 反解則是在指定 VE update 下成立,不能把兩套係數直接混用。

    消化一下

    想一想

    Pseudo-clean target 是什麼?

    想一想

    第二輪 teacher 的兩步,是否仍是原始 diffusion ODE 的兩個 Euler steps?

    想一想

    ek+1≤δ+Keke_{k+1}\le\delta+Ke_k 中的 KekKe_k 控制什麼?

    參考文獻

    主要理論參考:The Principles of Diffusion Models,§10.3,特別是 pseudo-clean target 的式 10.3.2 與逐輪訓練流程。正文的符號沿用本課程;方法實作細節再對照下列原始論文。

    1. Salimans & Ho, Progressive Distillation for Fast Sampling of Diffusion Models (ICLR 2022)。
    2. Luhman & Luhman, Knowledge Distillation in Iterative Generative Models for Improved Sampling Speed (2021)。
    3. Liu, Gong & Liu, Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow (ICLR 2023)。