搜尋課程與筆記

搜尋筆記

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

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

    U6.3 7 分鐘閱讀 2026年10月

    U6.3 不算導數,能不能用兩個小跳教一個大跳?

    本篇重用2 篇

    長跳的答案,能不能由短跳湊出來?

    U6.2 用導數關係學整段平均速度。但計算 JVP 需要自動微分支援,也要處理 tangent 的數值尺度。若我們只想用網路求值,最自然的動作就是:先走兩小段,把兩段位移加起來,教模型一次跳到同一個地方。

    這延續 U5.1 的兩步合一。不過這次我們不另外訓一輪輪新模型,而是把「想跳多長」直接交給同一個網路。Frans 等人的 Shortcut model [1] 就使用這種步長條件化的輸出。

    先加位移,再除以總時間

    沿用 t=0t=0 噪聲、t=1t=1 資料。令 sθ(x,t,d)s_\theta(x,t,d) 輸出從 tt 往前 dd 的平均速度,落點是 x+d sθ(x,t,d)x+d\,s_\theta(x,t,d)。這裡 sθs_\theta 是 Shortcut 的函數名,不是 score;本篇的 d≥0d\ge0 是時間間隔。

    先走兩段相同長度 dd,精確 maps 的第一段落點記成 x′x'。總位移應滿足

    2d s(x,t,2d)=d s(x,t,d)+d s(x′,t+d,d).2d\,s(x,t,2d) =d\,s(x,t,d)+d\,s(x',t+d,d).

    左邊是一次長跳,右邊是兩段位移相加。當 d>0d>0,兩邊除以 2d2d:

    s(x,t,2d)=12[s(x,t,d)+s(x′,t+d,d)].s(x,t,2d)=\frac12\left[ s(x,t,d)+s(x',t+d,d)\right].

    1/21/2 來自兩段時間相同。若兩段時間不同,就要按各自時間比例加權,不能仍直接取算術平均。

    訓練時沒有精確短跳,改用停止梯度的模型算出 x′x' 與右側,監督線上的長跳:

    x′=x+d sθ−(x,t,d),y−=12[sθ−(x,t,d)+sθ−(x′,t+d,d)],Llong=E∥sθ(x,t,2d)−sg⁡(y−)∥2.\begin{aligned} x'&=x+d\,s_{\theta^-}(x,t,d),\\ y^-&=\tfrac12\big[s_{\theta^-}(x,t,d) +s_{\theta^-}(x',t+d,d)\big],\\ \mathcal L_{\mathrm{long}} &=\mathbb E\|s_\theta(x,t,2d)-\operatorname{sg}(y^-)\|^2. \end{aligned}

    抽取時間時須確保 t+2d≤1t+2d\le1。兩次短跳的輸入位置不同,第二次必須用 x′x',不能只把時間改成 t+dt+d、位置仍留在 xx。

    若短跳還沒學好,長跳在跟誰學?

    這個 self-target 仍需要資料的方向。令步長縮到零,平均速度應回到 instantaneous velocity,因此以 It=(1−t)X0+tX1I_t=(1-t)X_0+tX_1 訓練

    Llocal=E∥sθ(It,t,0)−(X1−X0)∥2.\mathcal L_{\mathrm{local}} =\mathbb E\|s_\theta(I_t,t,0)-(X_1-X_0)\|^2.

    它就是 ordinary flow matching。d=0d=0 時 sampling 位移為零,但輸出的極限 velocity 不為零;這個 local label 指定我們要學的動力學。訓練混合 local 與有限 dd 的合成樣本,讓同一網路把小尺度規則延伸到較大的跳躍。

    課堂提問Q1

    如果只用長跳 self-consistency,資料不用進來,是否也能把 loss 訓到很小?

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

    可以。令所有 sθs_\theta 都輸出零,兩個小跳與一個大跳都原地不動,長跳 loss 就是零。但它沒有把 noise 送向資料。局部 FM supervision 的作用是排除這種與資料動力學無關的解,不只是「幫訓練加速」。

    另一方面,使用 local label 也不保證長跳一定精確。短跳的位置偏差會進入第二次求值,target network 本身又在更新;這些都需要訓練與評估來檢查。

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

    與 MeanFlow 比較的,是訓練訊號

    兩者都能用平均速度表示 flow map,也都可以從資料提供局部動力學。但 MeanFlow 用導數 identity 建立自我 target;Shortcut 用兩個短段的實際模型輸出建立 target。

    問題MeanFlowShortcut
    長段 target 怎麼來?當下 velocity 與平均速度的導數模型的兩個短跳合成
    額外操作JVP 與 stopped-gradient tangent短跳網路求值與位置合成
    資料從哪裡進來?Target 的條件 velocity,另可混合對角線 FMd=0d=0 的 FM supervision
    要檢查什麼?derivative target 的穩定性與近似短跳誤差、self-target 與步長泛化

    兩者都有 bootstrapping,不能說 MeanFlow 已經完全換掉自我目標。Shortcut 常選二進位步長訓練;實際取樣要檢查所用步長是否在訓練範圍。也不能僅由有多少級,就宣稱總誤差一定按 log⁡2\log_2 倍率放大;那還需要各級近似與 map 穩定性的假設。

    若有 teacher,還能直接約束兩種時間變化

    書 §11.6 把精確 flow 的 Lagrangian、Eulerian 與合成三種關係並排。若有固定 velocity teacher,就能在輸入點與模型輸出點都查方向,建立連續時間的 flow-map distillation。Sabour 等人的 Align Your Flow(AYF) [2] 是這條路的代表,討論 Eulerian 與 Lagrangian matching。

    它與從頭訓練的主要差別在訊號來源:teacher 可以在模型移動到的位置提供 velocity,不需要把原輸入的 reference label 誤用到輸出位置。實際訓練仍要安排參數化、梯度停止與 tangent 尺度;這裡不把單一 residual 當成完整重現 AYF 的 recipe。

    展開細節CTM、PD 與 Shortcut,哪些地方相似?

    三者都會用較短 transition 監督較長 transition。PD 的 teacher 是前一輪模型,對指定網格逐輪減半;CTM 把起訖時間放進模型,用短 solver 段加上 target map;Shortcut 在同一網路裡以步長條件化短跳與長跳。它們共享合成的想法,但 training distribution、target 來源與參數更新不同,不是同一個演算法換名字。

    以時間微分或兩段合成建立 flow-map 監督,並區分 teacher 與資料的訊號來源。

    圖:方法的輸出形式與監督來源要分開比較;圖中「不需 teacher」指相應的從頭訓練構造。

    消化一下

    想一想

    兩個等長短跳的 1/21/2 係數來自哪裡?

    想一想

    第二個短跳應在哪個位置求值?

    想一想

    MeanFlow 與 Shortcut 是否都使用 self-target?

    參考文獻

    主要理論參考:The Principles of Diffusion Models,§10.3、§11.4 與 §11.6 的合成觀點;Shortcut 與 AYF 的方法細節參照原始論文。正文的符號沿用本課程;方法實作細節再對照下列原始論文。

    1. Frans, Hafner, Levine & Abbeel, One Step Diffusion via Shortcut Models (ICLR 2025)。
    2. Sabour, Fidler & Kreis, Align Your Flow: Scaling Continuous-Time Flow Map Distillation (2025)。
    3. Kim et al., Consistency Trajectory Models (ICLR 2024)。
    4. Geng, Deng, Bai, Kolter & He, Mean Flows for One-step Generative Modeling (2025)。
    5. Boffi, Albergo & Vanden-Eijnden, Flow Map Matching (2024)。