No date
CFDG | Classifier-Free Diffusion Guidance
PaperDiffusion
快速解釋
Classifier-Free Diffusion Guidance 的核心是:把有條件與無條件兩種 denoiser 合併到同一個模型裡。訓練時偶爾拿掉條件,推論時再把 conditional score 和 unconditional score 線性組合,就能像 classifier guidance 一樣提高 fidelity,同時不需要額外分類器。
問題設定
- 傳統 classifier guidance 會在 diffusion sampling 時額外加上一個 noisy classifier 的梯度。
- 這雖然能提升 sample quality,但訓練流程更複雜,因為分類器必須能處理噪聲影像,不能直接拿現成 classifier 來用。
- 此外,guidance 效果會混入 classifier 本身的 bias,很難分辨品質提升到底來自生成模型還是來自 classifier gradient。
核心想法
- 用同一個 diffusion model 同時學 p(z_lambda | c) 與 p(z_lambda);做法是在訓練時以機率 p_uncond 把 condition c 隨機丟掉,改成空條件。
- 如此一來,模型既會輸出 conditional score,也會輸出 unconditional score。
- 推論時對同一個 noisy sample 各跑一次 conditional 與 unconditional 前向,然後用 guidance strength w 做線性組合。
- 差值 epsilon_theta(z,c) - epsilon_theta(z) 可以理解成把樣本往條件專屬高密度區域推的方向;w 越大,樣本越符合條件,但多樣性通常越低。
關鍵公式
連續時間 diffusion 的基本訓練目標為
其中 noisy sample 由
產生。
classifier-free guidance 的採樣公式是
若用隱式 classifier 的角度看,條件與無條件 score 的差滿足
- 第二式表示 guidance 其實是在放大 conditional score,並扣掉 unconditional score。
- 當 w = 0 時就是一般 conditional sampling;w 增大時,條件一致性提高,但 mode coverage 會下降。
模型結構
- 單一 diffusion network:輸入 noisy sample z_lambda、噪聲等級與 condition c,輸出 denoising score。
- 訓練階段:以機率 p_uncond 把 c 替換成空條件,讓同一個模型同時學到 conditional 與 unconditional 兩種模式。
- 推論階段:每個 diffusion step 都做兩次前向,一次帶 c,一次帶空條件。
- Guidance 組合:用上式合成 tilde{epsilon},再送入標準 reverse diffusion sampler。
- 方法本質:CFDG 並不是新增一個外部模組,而是把 guidance 完全內化進生成模型本身,因此訓練與部署都比 classifier guidance 更乾淨。