跟著一顆粒子走:Lagrangian 視角
導論已經把「一個樣本=空間裡一顆會動的 particle」講清楚了。這一篇只多做一件事:把鏡頭收到其中一顆粒子身上,看它怎麼隨時間移動。
再看一次那段 diffusion 動畫:一團雜訊慢慢浮現出圖案。把畫面放慢、再放慢,會發現它不是「啪」一下換好的,而是每一幀都在小幅移動。這正是理解 diffusion、score、flow matching 的共同入口。
跟著一顆點走:Lagrangian 視角
我們已經知道,每個樣本都是空間裡一顆會動的 particle,生成就是讓一整群粒子從「noise 的位置」移動到「data 的位置」。現在把鏡頭收到單獨一顆身上:盯著它、一路記錄它從哪走到哪。這個「站在粒子身上、隨它一起移動」的視角,叫 Lagrangian。
這一篇只談 Lagrangian。下一篇 Vector Field 才談「在每個位置擺一支箭頭」的場視角(Eulerian)。先把這兩件事分開,後面就不會混。
最重要的圖像
生成,就像讓一團 noise 粒子各自移動,直到整群排成資料分布的形狀。
用一個小例子看見它
一開始,平面上是一團圓形高斯粒子雲。目標分布是兩叢(雙峰)。
現在做一件事:在每一顆點上貼一個小標籤。我們不只看最後整團長什麼樣,而是一路盯著同一顆點——它原本在左下角,中途往上彎,最後停進右邊那一叢。這條被標籤記錄下來的路,就是這顆粒子的軌跡。
只要每顆粒子都照著自己的軌跡走,整團的「外形」就會從圓形慢慢變成雙峰。關鍵在於:Lagrangian 視角追蹤的是一顆粒子的旅程,而整群的分布變化,是這些個別旅程疊加出來的結果。「跟著其中一顆走」——這就是 Lagrangian。
把圖像翻成數學
把一顆粒子的位置寫成時間的函數 (或 )。它的移動由一個常微分方程(ODE)決定:
這裡 是一個時間相依的速度場:它告訴位在 、時間為 的粒子,下一瞬間往哪走、走多快。給定起點 ,沿這條 ODE 積分到 ,就得到生成的樣本
當每顆粒子都這樣移動,整群的分布也隨時間演化:
注意這裡有兩個層次:個別粒子的軌跡 (微觀),和整群的分布 (宏觀)。兩者由同一個 串起來。先記住一句話就好:移動粒子,就是在移動分布。它們之間的精確關係,留到 continuity equation 那篇。
讀到這裡,先別急著這樣想
最常見的兩個直覺需要稍微修一下。先用一題暖身:
另一個要修的是:生成不一定要「一步完成」。很多強大的方法恰恰相反——它們把轉換拆成許多小步,讓粒子一點一點挪過去,因為這樣每一步要學的「局部問題」會變得簡單、穩定。最後一個小提醒:這裡的「粒子」不是物理粒子,而是樣本在資料空間 裡的位置;對圖片來說,一顆粒子就是一整張圖(一個高維向量),我們用 2D 畫只是為了看得見。
還有另一副鏡頭(之後會用到)
剛說的「拆成許多小步」還藏著另一個看法。這一篇用的是搬運的鏡頭:盯著粒子在空間裡的位置怎麼移動。之後的 Denoising 會換上另一副鏡頭看同一段過程——不盯位置,而盯資料被破壞與修復的程度:先把乾淨資料加一點噪聲弄髒,再讓模型一步步去噪修回來(diffusion 的去噪觀)。
兩副鏡頭描述的是同一個動態,只是各自方便:搬運讓你看清「往哪流、流多快」(vector field、ODE);加噪/減噪讓你看清「每一步要修掉多少、為什麼小步比一步容易」。剛才那句「每一步的局部問題更簡單」,在去噪鏡頭下會變得很具體——一張稍微加噪的狗照片仍看得出是狗、所以好修,純噪聲卻太曖昧、難一步還原。這正是 Denoising:生成可以被看成局部修復 要展開的。
為什麼研究者在乎這個視角
「樣本即粒子、生成即移動」這個視角之所以重要,是因為它把 diffusion、score-based models、flow matching 全收進同一個畫面:不管它們的公式長得多不一樣,骨子裡都是「讓一群點,沿著某種規則,從 noise 的位置移動到 data 的位置」。一旦你習慣用「粒子怎麼動」來想,這些方法的差別就只剩下「用什麼規則移動」——而那正是後面幾篇要拆解的。
下一步
我們一直說粒子「沿著某種規則移動」,但那個規則到底長什麼樣、又是誰提供的?下一篇 Vector Field 把規則畫成「空間裡每個位置的一支箭頭」——這就是模型真正要學的對象。
參考文獻
- Chen, R. T. Q., et al. Neural Ordinary Differential Equations. NeurIPS 2018.
- Song, Y., et al. Score-Based Generative Modeling through Stochastic Differential Equations. ICLR 2021.