搜尋課程與筆記

搜尋筆記

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

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

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

    U5.4 相鄰點越來越近,訓練該怎麼繼續?

    本篇重用5 篇

    兩個回答幾乎一樣時,梯度還剩多少?

    U5.3 把 finite-gap 近似控制在小間隔裡。可是 hh 越小,兩個相鄰回答也越接近;不能只說近似變準,就當作訓練一定更容易。這一篇先讓我們看見更新裡究竟剩下哪個量,再討論如何算它。

    想像在車程中每隔一小段時間問一次總站。如果答案真的一致,沿車程的變化率應該是零。以位置與時間為輸入的 f(x,t)f(x,t) 有兩種變化來源:時間本身改變,以及車子移到新的位置。由 chain rule,

    ddtf(xt,t)=∂tf(xt,t)+Jxf(xt,t)vt(xt).\frac{\mathrm d}{\mathrm dt}f(x_t,t) =\partial_t f(x_t,t)+J_xf(x_t,t)v_t(x_t).

    第一項固定位置只改時間,第二項固定時間看位置沿 vtv_t 移動的影響。JxfJ_xf 是矩陣,乘 velocity 後得到與 ff 同維度的向量。兩項相消,才是沿 trajectory 的答案不變。

    從離散 loss 推出該用的更新

    固定 target 參數 θ−\theta^-,先用精確相鄰點 xt−hx_{t-h},並令

    Lh=E∥fθ(xt,t)−fθ−(xt−h,t−h)∥2.L_h=\mathbb E\|f_\theta(x_t,t)-f_{\theta^-}(x_{t-h},t-h)\|^2.

    這裡暫時省略與 hh 無關的時間權重。要看 h→0h\to0,先展開 target:

    fθ−(xt−h,t−h)=fθ−(xt,t)−hddtfθ−(xt,t)+O(h2).\begin{aligned} f_{\theta^-}(x_{t-h},t-h) ={}&f_{\theta^-}(x_t,t)\\ &-h\frac{\mathrm d}{\mathrm dt}f_{\theta^-}(x_t,t)+O(h^2). \end{aligned}

    只讓線上輸出接受參數梯度,然後在比較點將兩份參數數值設成相同,零階差距便消失。因此

    1h∇θLh∣θ−=θ⟶2E[(Jθfθ)⊤ddtfθ−(xt,t)].\left.\frac{1}{h}\nabla_\theta L_h\right|_{\theta^-=\theta} \longrightarrow 2\mathbb E\left[(J_\theta f_\theta)^\top \frac{\mathrm d}{\mathrm dt}f_{\theta^-}(x_t,t)\right].

    JθfJ_\theta f 把輸出空間的變化帶回參數空間。原始梯度會按 hh 縮小,所以要先除以 hh 才得到非零的比較極限;不能直接說「把間隔設為零」就有一個可用 loss。這個結果假設足夠光滑、可交換微分與期望,並在兩份參數數值相同的比較點成立。

    右邊可由 pseudo-objective 2E[fθ⊤sg⁡(dfθ−/dt)]2\mathbb E[f_\theta^\top\operatorname{sg}(\mathrm df_{\theta^-}/\mathrm dt)] 產生相同梯度。這裡關心的是更新方向,並沒有把這個內積當作非負誤差指標。

    課堂提問Q1

    既然正確條件是 ∂tf+Jxfvt=0\partial_tf+J_xfv_t=0,我們能否直接用單筆 ϵ\epsilon 代替 vtv_t,最小化 E∥∂tfθ+Jxfθϵ∥2\mathbb E\|\partial_tf_\theta+J_xf_\theta\epsilon\|^2?

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

    這個直接代換會改變目標。令 δ=ϵ−vt(xt)\delta=\epsilon-v_t(x_t),給定 xtx_t 時它是零均值。展開平方後交叉項消失,但仍多出 E∥Jxfθδ∥2\mathbb E\|J_xf_\theta\delta\|^2;它依賴線上網路的 Jacobian,不能當成與參數無關的常數。

    剛才的 stopped-gradient 更新不同:ϵ\epsilon 線性地出現在固定 target 的 ∂tfθ−+Jxfθ−ϵ\partial_tf_{\theta^-}+J_xf_{\theta^-}\epsilon 裡。取條件平均便恢復 vtv_t,而參數梯度只經過線上輸出。這才是 conditional trick 在連續時間更新裡可用的結構;「條件速度無偏」本身還不夠。

    用方向導數計算,而不是存整個矩陣

    我們需要的是 Jxf v+∂tfJ_xf\,v+\partial_tf,不是 JxfJ_xf 的每個元素。把 (x,t)(x,t) 的擾動方向設成 (v,1)(v,1),一次 Jacobian–vector product(JVP)就能得到所需向量:

    _, tangent = torch.func.jvp(
        f, (x, t), (velocity, torch.ones_like(t))
    )

    velocity 可以是 teacher 的 vϕv_\phi;從頭訓練時則用這筆配對的條件速度。後者的原始 stopped-gradient 更新在條件平均下精確相同,但單筆 tangent 仍有隨機性。JVP 省下完整 Jacobian 的儲存,不等於沒有額外計算成本。

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

    iCT 先修改有限間隔的訓練問題

    Song 與 Dhariwal 的 improved consistency training(iCT)[1] 仍使用相鄰點,但調整了 target、距離函數與抽時間的方法。它們各有具體作用,不必全塞進同一種「variance 技巧」裡。

    Target 使用當前參數的停止梯度副本。 原始 CM 可用 EMA target;iCT 指出滯後 target 會影響 CT 的小間隔分析,於是去掉訓練 target 的 EMA。這不等於「任何 EMA 都有害」;另存 EMA 參數作評估,與用 EMA 產生本次 target 是兩個用途。上面的推導也讓我們看到為什麼比較點 θ−=θ\theta^-=\theta 需要明寫。

    讓大殘差不必產生任意大的梯度。 對向量殘差 rr,pseudo-Huber discrepancy 是

    d(r)=∥r∥2+c2−c,∇rd(r)=r∥r∥2+c2.\begin{aligned} d(r)&=\sqrt{\|r\|^2+c^2}-c,\\ \nabla_r d(r)&=\frac{r}{\sqrt{\|r\|^2+c^2}}. \end{aligned}

    梯度 norm 不超過 11。小殘差時它近似平方,大殘差時增長接近線性;這是限制離群殘差影響的機制,不是讓 target noise 消失。

    重新配置時間與間隔。 iCT 使用隨間隔變化的 loss 權重、lognormal noise-level sampling,以及逐階增加網格點數的 curriculum。抽時間決定哪些區域常被看到,權重決定看見之後的貢獻;改變網格則改變相鄰 target 的距離。它們都會改變有效訓練分配,不能只由名稱判斷最終品質。

    sCM 再把有限差分換成 tangent

    Lu 與 Song 的 sCM [2] 使用連續時間 consistency,並重新安排座標與數值尺度。這裡需要更換加噪座標,當場對照:改用角度 t∈[0,π/2]t\in[0,\pi/2],

    xt=cos⁡t x0+sin⁡t z,z∼N(0,σd2I).x_t=\cos t\,x_0+\sin t\,z,\qquad z\sim\mathcal N(0,\sigma_d^2I).

    乾淨端仍是 00,噪聲端變成 π/2\pi/2;這裡的 tt 已不是 VE noise 標準差。將位置除以 cos⁡t\cos t 後,noise 標準差為 σdtan⁡t\sigma_d\tan t,因此能和 VE 座標對照。單筆條件速度是 −sin⁡t x0+cos⁡t z-\sin t\,x_0+\cos t\,z。

    對應的終點參數化可寫成

    fθ(x,t)=cos⁡t x−σdsin⁡t Fθ(x/σd,t).f_\theta(x,t)=\cos t\,x -\sigma_d\sin t\,F_\theta(x/\sigma_d,t).

    t=0t=0 時自動回傳 xx。沿一條路微分,用乘積法則得到

    dfθdt=−cos⁡t(σdFθ−x˙t)−sin⁡t(xt+σddFθdt).\begin{aligned} \frac{\mathrm df_\theta}{\mathrm dt} ={}&-\cos t\left(\sigma_dF_\theta-\dot x_t\right)\\ &-\sin t\left(x_t+\sigma_d\frac{\mathrm dF_\theta}{\mathrm dt}\right). \end{aligned}

    這把不穩定的來源展開了:不只係數的尺度,還有網路沿時間與位置的導數。sCM 因而使用 tangent normalization、warmup、合適的時間 embedding 與自適應權重。它們是實際訓練設計;消除 finite-gap 近似,不會同時消除模型與優化誤差。

    限制正規化 tangent 後,哪些等式要重新檢查?

    將每筆 tangent gg 換成 g/(∥g∥+c)g/(\|g\|+c),會限制它對更新的影響。但正規化是非線性的,通常 E[g/(∥g∥+c)]≠E[g]/(∥E[g]∥+c)\mathbb E[g/(\|g\|+c)]\ne\mathbb E[g]/(\|\mathbb E[g]\|+c)。因此原始更新的條件無偏性,不能直接用來保證正規化後的 expected gradient 或最終解完全相同。這是穩定化策略與原始理論之間需要保留的界線。

    EDM 與 TrigFlow 的係數、時間座標與邊界對照。

    圖:兩種參數化都有明確邊界;三角時間把 noise 尺度換成有限角度區間。它不保證 ODE trajectory 變成等速直線。

    消化一下

    想一想

    沿 trajectory 的 df/dt\mathrm df/\mathrm dt 包含什麼?

    想一想

    為什麼不能把條件速度直接塞進 squared residual 就宣稱無偏?

    想一想

    連續時間 consistency 去掉了什麼?

    參考文獻

    主要理論參考:The Principles of Diffusion Models,§11.3,特別是 Proposition 11.3.1、式 11.3.3–11.3.12;iCT 細節參照原始論文。正文的符號沿用本課程;方法實作細節再對照下列原始論文。

    1. Song & Dhariwal, Improved Techniques for Training Consistency Models (ICLR 2024)。
    2. Lu & Song, Simplifying, Stabilizing and Scaling Continuous-Time Consistency Models (2024)。
    3. Song, Dhariwal, Chen & Sutskever, Consistency Models (ICML 2023)。
    4. Karras, Aittala, Aila & Laine, Elucidating the Design Space of Diffusion-Based Generative Models (NeurIPS 2022)。