搜尋課程與筆記

搜尋筆記

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

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

    U5.2 7 分鐘閱讀 2026年10月

    U5.2 同一條路上的不同位置,能不能認出同一個終點?

    本篇重用3 篇

    沿路都會看到的共同答案

    U5.1 讓學生學指定網格上的大步。若我們不再要求「下一步走到哪裡」,而是每次都問「沿這條路最後到哪裡」,不同時間的任務就有了共同答案。

    想像同一班車在不同站點報出它的總站。車還在移動,總站名稱卻不會跟著變;換到另一班車,總站才可能改變。這裡的車程對應一條 PF-ODE trajectory,站點是 (xt,t)(x_t,t),我們要學的是它在乾淨端的實際位置。

    在 ODE 解存在且唯一的設定下,定義

    f(x,t):=ψt→0(x).f(x,t):=\psi_{t\to0}(x).

    這個函數接收目前位置與時間,回傳同一條 trajectory 在 00 的終點。Song 等人 [1] 將它稱為 consistency function。它不是猜「哪張訓練圖片最可能產生這個 noisy input」;U5.0 的 Gaussian 例子已算出,終點 map 與 denoiser 是不同函數。

    只要求兩個回答相同,會不會什麼也沒學到?

    若 xtx_t 與 xsx_s 在同一條 ODE trajectory 上,兩者去乾淨端會抵達同一個位置,因此

    f(xt,t)=f(xs,s).f(x_t,t)=f(x_s,s).

    這叫 self-consistency。但只看這條等式,令所有輸入都回傳常數 cc 也成立。我們還缺一個能把答案接到資料的位置:已經在乾淨端時,不必再移動,所以

    f(x,0)=x.f(x,0)=x.

    兩條要求合起來才決定正確答案。從 (xt,t)(x_t,t) 沿同一條路走到 (x0,0)(x_0,0),一致性讓值不變,邊界條件再把它定成 x0x_0。這是沿每條 trajectory 的論證;不是說整個函數都應該是同一個常數。

    課堂提問Q1

    如果我們把「同一個資料 x0x_0 加上不同強度的同一份 noise」當作同一條路,是否已經得到上面需要的 training pair?

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

    還沒有。x0+tϵx_0+t\epsilon 是固定配對的 reference 直線,真正的 PF-ODE 使用 E[ϵ∣xt]\mathbb E[\epsilon\mid x_t],兩條路通常不同。同一條 reference 直線上的兩點不保證有相同的 ODE 終點。

    這個區分不妨礙我們之後拿 reference pair 訓練,但必須再證明它如何近似所需的監督;不能用這裡的定義直接宣布兩點等價。U5.3 會把這個問題算出來。

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

    能不能讓邊界在訓練前就成立?

    我們可以加一項 boundary loss,也可以直接把它寫進網路。後者的好處很具體:不必靠有限資料與有限權重,去近似一條已經知道的恆等式。令 FθF_\theta 是一般網路,寫成

    fθ(x,t)=cskip(t)x+cout(t)Fθ(x,t).f_\theta(x,t)=c_{\mathrm{skip}}(t)x +c_{\mathrm{out}}(t)F_\theta(x,t).

    只要 cskip(0)=1c_{\mathrm{skip}}(0)=1、cout(0)=0c_{\mathrm{out}}(0)=0,代入就得到 fθ(x,0)=xf_\theta(x,0)=x,與參數值無關。例如資料尺度為 σd>0\sigma_d>0 時,可以用

    cskip(t)=σd2t2+σd2,cout(t)=σdtt2+σd2.\begin{aligned} c_{\mathrm{skip}}(t)&=\frac{\sigma_d^2}{t^2+\sigma_d^2},\\ c_{\mathrm{out}}(t)&=\frac{\sigma_dt}{\sqrt{t^2+\sigma_d^2}}. \end{aligned}

    第一項保留輸入,第二項讓網路補上需要的終點資訊。這只是表示函數的方式;借用 EDM denoiser 的外形,不會讓 fθf_\theta 的訓練目標自動變成 posterior mean。

    實作若乾淨端取 ε,而不是 0

    將邊界改成 fθ(x,ε)=xf_\theta(x,\varepsilon)=x,並選在 ε\varepsilon 處為 11、00 的兩個係數。例如原始 CM 以 t−εt-\varepsilon 調整 skip 與 output 係數的分子。這時網路學到 ψt→ε\psi_{t\to\varepsilon};輸出 law 是 pεp_\varepsilon,仍與 p0p_0 有一個小的終止差距。

    在乾淨端保留輸入,隨時間改變輸入與網路輸出的混合。

    圖:原圖以 ε\varepsilon 表示實作的乾淨端。邊界由係數保證,內部函數仍需訓練。

    找不到完整終點,先比較相鄰兩點可以嗎?

    完整 target ψt→0(xt)\psi_{t\to0}(x_t) 很貴。可是同一條 trajectory 上,較近的兩點也應認出同一個終點。取網格 0=t0<t1<⋯<tN=T0=t_0<t_1<\cdots<t_N=T,令 x^ti\hat x_{t_i} 近似從 xti+1x_{t_{i+1}} 沿 ODE 回到 tit_i 的位置,考慮

    L(θ;θ−)=E[λi ∥fθ(xti+1,ti+1)−sg⁡(fθ−(x^ti,ti))∥2].\begin{aligned} \mathcal L(\theta;\theta^-) &=\mathbb E\big[\lambda_i\, \|f_\theta(x_{t_{i+1}},t_{i+1})\\ &\qquad-\operatorname{sg}(f_{\theta^-}(\hat x_{t_i},t_i))\|^2\big]. \end{aligned}

    期望平均資料、noise 與相鄰時間對;λi\lambda_i 是正權重。現在完整終點不在標籤裡,取而代之的是 target network 在較乾淨位置的回答。尚未解決的部分是:x^ti\hat x_{t_i} 從哪裡來?

    先假設相鄰位置精確、同一個函數在所有相鄰對上都達到零差距。從邊界逐格使用等式,就能將 f(xtN,tN)f(x_{t_N},t_N) 一路等同到 x0x_0。這說明相鄰一致性在理想設定下為什麼足夠;實際 SGD 不會照時間格逐一完成這個歸納,也沒有「較乾淨一側早已正確」的保證。

    sg⁡\operatorname{sg} 只改變反向傳播:這次更新將 target 的數值視為固定。θ−\theta^- 可以是當前參數的停止梯度副本,也可以是另一份滯後參數;是否使用 EMA 是額外選擇。Boundary、stop-gradient 與 EMA 各自做不同的事,不能合起來當成必然收斂的保證。

    消化一下

    想一想

    Consistency function 在哪裡保持常數?

    想一想

    fθ(x,0)=xf_\theta(x,0)=x 由哪一項保證?

    想一想

    相鄰一致性沿網格傳遞的論證,說明了什麼?

    參考文獻

    主要理論參考:The Principles of Diffusion Models,§11.2,特別是式 11.2.1–11.2.6 與附錄 D.6 的邊界參數化。正文的符號沿用本課程;方法實作細節再對照下列原始論文。

    1. Song, Dhariwal, Chen & Sutskever, Consistency Models (ICML 2023)。
    2. Karras, Aittala, Aila & Laine, Elucidating the Design Space of Diffusion-Based Generative Models (NeurIPS 2022)。