← 返回筆記

研究領域 / Flow-Based Generative Models / From Noise to Data / 2026年6月

Score Function:資料分布的局部方向感

可閱讀 4 分鐘閱讀

上一篇的「預測噪聲」,這一篇要揭穿它其實是一個更幾何的東西。

翻開任何一篇 score-based 的論文,幾乎一定會撞到 xlogp(x)\nabla_x \log p(x) 這個符號,被稱作 score。第一次看到很容易心想:這到底在量什麼?跟我熟悉的「分數」有關係嗎?

換個說法:往哪走,密度會變高?

把 score 想成一個導航指針:站在空間任一點,它指向「資料密度上升最快」的方向。越靠近資料聚集的地方密度越高,score 就把你往那裡推。它不是評分、不是獎勵,就是 log 密度的梯度——一個純粹的幾何訊號。

先在最小例子裡看懂

對一維標準高斯 p(x)=N(0,1)p(x) = \mathcal{N}(0, 1)

xlogp(x)=x(x22+const)=x.\nabla_x \log p(x) = \nabla_x\Big(-\tfrac{x^2}{2} + \text{const}\Big) = -x.

讀法很直白:你在 x=3x = 3,score 是 3-3,把你往原點(高密度處)推;你在 x=2x = -2,score 是 +2+2,同樣往中心推。離中心越遠,推力越大。

下面的 demo 把這件事放到 2D:把滑鼠移到任一點,看那裡的 score 箭頭指向附近的資料聚集處;拉動噪聲程度 σ\sigma,看分布被抹平、score 變平滑。

揭穿:去噪和 score 是同一件事

這是這篇最值得帶走的一句。回到上一篇的加噪 xt=αtx0+σtϵx_t = \alpha_t x_0 + \sigma_t \epsilon。可以證明,最會去噪的模型(預測 ϵ\epsilon 的最佳解 ϵ\epsilon^\star)和那一層分布的 score,差的只是一個已知的比例:

xtlogpt(xt)=ϵ(xt,t)σt.\nabla_{x_t} \log p_t(x_t) = -\frac{\epsilon^\star(x_t, t)}{\sigma_t}.

換句話說,「猜噪聲」和「指向高密度」是同一個方向,只差一個 1/σt-1/\sigma_t 的比例。難怪 denoising 能拿來生成——它本來就在估計 score。(從同一條關係式還能反推「最乾淨的猜測」E[x0xt]\mathbb{E}[x_0\mid x_t],那條公式叫 Tweedie,屬於更技術的內容,留給 Diffusion & Flow Models 課程。)

如果上一篇你已經接受「去噪能生成」,那這篇等於告訴你:你早就在跟 score 打交道了。

幾個容易想歪的地方

想一想這裡的 score,和機器學習裡的「分類分數 / 信心分數 / reward」是同一類東西嗎?

想一想為什麼 diffusion 要在「很多不同噪聲程度」上學 score,而不是只學乾淨資料的 score?

這怎麼接到論文?

score-based generative models 學一個 sθ(x,t)xlogpt(x)s_\theta(x, t) \approx \nabla_x \log p_t(x),再用它把樣本從噪聲推回資料——可以走隨機的 Langevin / 反向 SDE,也可以走確定性的 ODE。它和 diffusion 的去噪觀點是一體兩面,這也是 Song 等人把兩者統一進「score-based SDE」框架的基礎。

下一步

我們已經有兩種局部訊號:去噪(猜噪聲)和 score(指向高密度)。flow matching 用的是第三種——velocity。它和這兩者有什麼不同?下一篇 Velocity 當成回歸目標 把生成寫成一個更直接的監督式回歸。

參考文獻

  1. Song, Y., Ermon, S. Generative Modeling by Estimating Gradients of the Data Distribution. NeurIPS 2019.
  2. Vincent, P. A Connection Between Score Matching and Denoising Autoencoders. Neural Computation, 2011.
  3. Song, Y., et al. Score-Based Generative Modeling through Stochastic Differential Equations. ICLR 2021.