U5.0 一步去噪,為什麼還不是一步生成?
本篇重用3 篇
模型已經會去噪,為什麼還要呼叫很多次?
U1.3 已經告訴我們,denoiser 可以從 noisy image 猜乾淨圖片。如果最後只想得到一張圖片,最自然的想法就是:從一團噪聲開始,請它直接去噪一次,不就好了?
想像一張模糊到看不清楚的照片,同時可能來自幾張不同的原圖。若訓練要求平方誤差最小,最好的回答是這些原圖的條件平均。這是很好的「平均猜測」,卻未必像其中任何一張照片。生成時,我們想抽出一個合理結果;這和估計原圖的平均,是兩個不同的要求。
先把本單元的座標固定下來。沿用資料在 的方向,從乾淨資料與獨立 Gaussian noise 合成
就是 noise 的標準差, 是這個合成結果的 marginal density。這裡的 先表示 reference process 的 snapshot;我們還沒有說,一組固定的 畫出的直線就是生成時會走的軌跡。
先用一個能算到底的例子比較
假設資料只有一維,而且 。加噪後 。Gaussian 的條件平均給出 denoiser
動手這個條件平均怎麼算?
固定 後,Bayes rule 讓 posterior 與 prior 乘 likelihood 成正比:
把指數裡與 有關的平方項配方,得到 Gaussian 的中心 ,variance 為 。Gaussian 的中心也是平均,所以得到正文的 。這裡固定的是 noisy input,平均的是與它相容的乾淨資料。
它把輸入往中心縮。如果真的從 抽樣,再輸出 ,輸出的變異數是多少?縮放一個隨機變數時,變異數要乘上係數的平方,因此
原本想要的是變異數 的資料,結果卻越縮越集中。denoiser 即使完全正確,一次去噪也不等於從資料分布抽樣。 問題在它被要求估計什麼,不是網路還沒訓好。
那原本多步生成做的事情,
能不能整個變成另一個網路的學習目標?
從一支方向,走到一個確定的終點
在這條加噪路徑下,U1.4 的 probability-flow ODE 可以寫成
描述 增加時的位置變化;生成時由 往 解同一條 ODE。Tweedie 公式還給出 :reference 直線的速度是單筆 ,ODE 使用的是經過當下位置的條件平均。兩者的 snapshots 可以有相同分布,單條路徑不必相同。
推導VE 座標的速度為什麼是 −t 乘 score?
這個加噪 kernel 的變異數是 ,其變化率是 ;相同 marginals 可由 forward SDE 產生。將 drift 、diffusion coefficient 的平方 代入 PF-ODE 的 drift ,便得到 。
另一方面,對 Gaussian kernel 微分再取條件平均,得到 。因此兩個速度表示一致;這不是把固定 noise 的直線當成 ODE trajectory。
給定目前的 與時間 ,在 ODE 解存在且唯一的區域,走到 的位置是確定的。我們把這個對應記成 ,也就是 flow map。以剛才的 Gaussian 為例,score 是 ,所以 ;沿解微分可檢查 不變,於是
現在輸出變異數是 ,正好回到資料分布。它與 的分母不同。ODE 的終點映射不是 posterior mean。 這個差別會一路決定後面的訓練目標。
能不能用慢模型替快模型出題?
想像導航已經知道怎麼沿路開到目的地。我們可以讓它先走完,把「起點、最後到哪裡」記下來,再訓另一個網路直接回答終點。Luhman 與 Luhman 的直接蒸餾 [1] 就使用這種逐點監督。
令固定的 teacher 速度網路與指定 solver 合起來產生 。從起點分布抽 ,學生用
學會 teacher 的數值終點。固定 teacher 與 deterministic solver 後,每個 都有一個確定標籤;MSE 的條件平均就是那個標籤,不會因為資料本身有多個 modes 就自動把它們平均在一起。實作可先存配對,也可以在訓練時即時計算;兩種都要付出完整 teacher rollout 的成本。
課堂提問Q1
既然學生不用積分,是否代表一步輸出已經沒有誤差?
先想一想,再展開看整理後的答案
沒有學生自己的逐步積分誤差,不代表沒有其他誤差。Teacher 的 learned field 可能已偏離理想 ;solver 只是近似 teacher ODE;學生又只是近似 solver 的輸出。將學生輸出與理想終點之間加上、減去這兩個中間量,再用 triangle inequality,就得到三者誤差之和的上界。
因此,一步學生可能很準,也可能把 teacher 的偏差完整學下來。「省掉生成時的積分」說的是計算方式,沒有宣告終點必然正確。
同一份配對,也可以拿去重訓速度
U3.2 的 reflow 也會用舊 ODE 收集起點與終點。但拿到同一份配對後,兩種做法學的東西不同:
| 拿到配對後做什麼? | 網路輸出 | 生成時怎麼用? |
|---|---|---|
| Reflow:重新插值、回歸 reference velocity | 新的速度場 | 仍須積分 |
| 直接蒸餾:從起點回歸 teacher 終點 | 終點位置 | 一次求值 |
Reflow 改變 coupling 後得到的新 ODE,也不必保留舊 teacher 每個起點的終點對應;保留 marginal 與保留逐點 map 是不同要求。U3 的誤差上界說 velocity 變化較小有助控制積分誤差,不能反過來說只要 acceleration 不為零,一步誤差就一定非零;積分中的誤差也可能抵消。
圖:配對來源可以相同,學習物件仍然不同。
符號本單元的乾淨端與實作上的小正數
本單元統一用 表示資料、 表示高 noise; 是理想速度, 會用來表示終點映射。這與 U2–U3 的生成時間方向相反。數學上先寫到 ;實作若停在 ,真正的 target 是 與 ,不能直接當成已精確到達 。同樣地, 通常只是 的近似。
互動 demo:先用解析答案對照。 每個數字由目前參數重新計算;實際訓練結果另見實作程式。
消化一下
參考文獻
主要理論參考:The Principles of Diffusion Models,§10.1、§11.1;VE 座標另參照 §4.4 與附錄 D.6。正文的符號沿用本課程;方法實作細節再對照下列原始論文。
- Luhman & Luhman, Knowledge Distillation in Iterative Generative Models for Improved Sampling Speed (2021)。
- Liu, Gong & Liu, Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow (ICLR 2023)。
- Salimans & Ho, Progressive Distillation for Fast Sampling of Diffusion Models (ICLR 2022)。
- Song, Dhariwal, Chen & Sutskever, Consistency Models (ICML 2023)。
- Karras, Aittala, Aila & Laine, Elucidating the Design Space of Diffusion-Based Generative Models (NeurIPS 2022)。