生成式視覺:擴散與文生圖

無分類器引導

無分類器引導(CFG)是讓文生圖模型真正聽從提示詞的單一最重要訣竅。一個原始的條件擴散模型技術上確實用到了文字,但往往只是鬆散地用——生成會偏移、忽略細節,或看起來很平庸。CFG 放大提示詞的影響力的方式是:在每一個去雜訊步驟,比較模型「依提示詞想畫的東西」與「完全沒有提示詞時會畫的東西」,然後誇大兩者的差異。這就像問「提到一台紅色腳踏車,會如何改變你的猜測?」然後朝那個方向更用力地傾斜。

機制上,你訓練單一個網路同時處理兩種情況:在大約 10% 的訓練樣本上隨機丟棄條件(把提示詞換成一個空的 null 嵌入)。取樣時,你每一步執行網路兩次——一次帶提示詞(條件預測 epsilon_c),一次帶 null 提示詞(無條件預測 epsilon_u)——並把它們結合:epsilon_guided = epsilon_u + w * (epsilon_c - epsilon_u)。向量 (epsilon_c - epsilon_u) 指向「條件把影像往哪推」的方向;引導權重 w 控制你推多遠。w = 0 等於忽略提示詞;w = 1 是普通的條件取樣;w > 1 則過度強調提示詞。

「無分類器」這個名字有其歷史淵源:它取代了一個較早的方法——分類器引導(classifier guidance),後者用一個獨立影像分類器的梯度來導引樣本。那需要額外訓練一個對雜訊穩健的分類器,相當繁瑣。CFG 只用生成器本身就達成了同樣強化提示詞的效果,做法是把條件/無條件這一對視為一個內建的隱式分類器。其代價是每步計算量加倍(兩次前向傳遞),近期有數種方法嘗試把這部分蒸餾掉,但其品質與可控性的提升,使 CFG 在 Stable Diffusion、DALL-E 等級系統、Imagen 乃至更廣的範圍內成為標配。

CFG 是一把雙面刃:把 w 推得太高會讓模型過衝,產生過飽和的色彩、過曝的亮部與不自然的對比——也就是那種一望即知的「AI 感」。實務上的修補是採用適中的 w(Stable Diffusion 常用 5 到 8),再搭配選用性的動態閾值(dynamic thresholding)以重新縮放超出範圍的像素值。CFG 也會放大條件訊號中本來就帶有的任何偏誤或瑕疵。

又称
CFGHo & Salimans 2022