基於分數的生成模型
基於分數的生成模型從一個看似不同、最終卻是同一座山的角度切入生成。它不直接建模影像的機率(那需要一個難以計算的正規化常數),而是建模分數(score):對數機率對影像的梯度。直觀上,分數是影像空間中每一點上的一支箭頭,指向「上坡」、指向更合理的影像。如果你在每個地方都知道哪邊是上坡,就能從一張隨機影像出發,持續往上坡方向推進(並帶一點隨機抖動),直到抵達一個逼真的樣本。
分數是向量場 s_theta(x) = grad_x log p(x)。它之所以吸引人,是因為它繞開了機率密度的正規化常數 Z——log p 的梯度並不依賴 Z。網路透過分數匹配(score matching)來訓練,取樣規則則是朗之萬動力學(Langevin dynamics):反覆沿估計分數的方向走一步,並加入經校準量的高斯雜訊。難處在於,在資料稀疏的區域(在高維中幾乎處處如此),分數定義不良且難以估計。Song 與 Ermon 的關鍵修補是同時在多個雜訊水準下估計分數(雜訊條件分數網路 NCSN),取樣從分數容易估計的高雜訊開始,逐步退火到分數尖銳的低雜訊。
這套「在各雜訊水準估計分數並退火」的配方,一步一步看,正是擴散模型在做的事——而隨機微分方程(SDE)框架讓這個連結變得精確,它把兩者都表述為連續時間的過程。DDPM 對應到變異數保持型(variance-preserving)SDE;分數模型對應到變異數爆炸型(variance-exploding)SDE。這項統一的回報極為可觀:它讓你能借用數值的 ODE/SDE 求解器作為快速取樣器,給出一個有原則的機率流 ODE(probability-flow ODE)以計算精確似然,並解釋了為何「預測雜訊」與「預測分數」是同一個網路、僅相差一個已知的縮放。
別把分數 grad_x log p(x)(對輸入影像的梯度)與對網路參數的梯度搞混。分數是像素/潛在空間中的一支箭頭,告訴你該如何編輯影像才能讓它更可能出現;它正是一個 epsilon 預測網路所計算的東西,只差一個 -1/sqrt(1 - alpha_bar_t) 的係數。