U5.0 要把「改」說清楚,需要什麼語言?
本篇重用M4.0明天的天氣只看今天:Markov Chain 與 Transition Matrix·M3.2一千片葉子在亂流裡:Fokker–Planck 方程式
上一篇那個「加一點回到 [MASK] 的機會」,
為什麼用上一個單元的語言答起來很笨拙?
上一個單元留下的一句話
U4.4 結尾的問題是這樣的:absorbing 鏈把不確定性集中在 [MASK] 上、context 乾淨,但翻開的字永遠固定;uniform 鏈每一步都能改任何字,但模型分不清哪些字是噪聲。能不能兩個都要?
那一篇給了一個直覺的設計——在 absorbing 鏈上加「一點」回到 [MASK] 的機會——然後停住了,說這件事用上一個單元的語言「答起來很笨拙」。這一篇就把「笨拙」說清楚。不是為了抱怨,而是因為看清楚哪裡卡住,新語言該長什麼樣就會自己浮出來。
先把那個含糊的問題拆成三個具體的:
- 改多少? 「加一點回到
[MASK]的機會」——一點是多少?用什麼單位衡量? - 會不會動到邊際? 訓好的網路學的是 ,它的輸入 來自 。如果新的取樣程序讓 的分佈變了,網路面對的就是它沒見過的輸入。
- 能不能連續地調? 從「完全不改」(absorbing)到「每個字每步都可能改」(uniform)之間,有沒有一條可以連續調的路,而不是兩個孤立的選擇?
用 transition matrix 試一次
U4.1 的語言是:forward 每一步是一個 的 transition matrix , 步的邊際是連乘 。那就直接在 上動手。
absorbing 的 ,[MASK] 那一列是 ——進去就不出來。要讓字「有機會被改」,最直接的是把 [MASK] 列改掉,讓它以某個機率 回到某個字;或者反過來,在反向取樣時額外以某個機率把已翻開的字遮回去。兩種都試,會撞到三面牆。
第一面牆:closed form 消失。 有 closed form,靠的是 全部長成「(一個投影)」這個形狀、連乘後形狀不變(U4.1)。[MASK] 列一改,這個形狀就破了; 變成一般的矩陣連乘, 沒有好寫的式子,posterior 也跟著沒有。U1.1 說「forward 是我們自己定的,所以任何 的 可以一步抽出來」——這個便利沒了,訓練要一步一步模擬鏈。
第二面牆:「一點」沒有單位。 假設咬牙接受沒有 closed form,「改一點」的量寫成 。但 是一步的機率,而「一步」是多長取決於 : 的 和 的 是完全不同強度的修正。U4.2 的取樣器可以訓練時用 、取樣時只走 8 步——跳步的時候, 該怎麼跟著換?在 transition matrix 的語言裡,「每步改多少」和「走幾步」是綁在同一個數字上的,拆不開。
第三面牆:取樣器和 forward chain 綁死。 上一個單元的取樣程序是「反著走 posterior」:。這裡每一個因子都由 決定,取樣器沒有任何自己的自由度。想在取樣時多做一件事(把字遮回去),就只能改 ——也就是改 forward chain、改訓練分佈、重訓。第 2 個小問題(會不會動到邊際)在這個語言裡連問都問不出來,因為答案永遠是「會」。
這面牆我們撞過一次
停下來對照 U1。DDPM 也是離散時間: 步、每步一個 、取樣器是「反著走 posterior」。U1.4 遇到的問題和上面幾乎一樣——DDPM 與 DDIM 用同一個網路卻是兩種取樣器,「為什麼都對、差在哪」在 步的語言裡說不清楚。
解法是換成連續時間:forward 寫成 SDE ,邊際 的演化寫成 Fokker–Planck。有了這個語言之後,U3.1 才能寫出一整族取樣器
並用 Fokker–Planck 三行證明:對任何 ,邊際都是 。這正好把上面三面牆一次拆掉:
- 是單位時間的量,與步數無關(第二面牆)。
- 取樣器有了自己的旋鈕 ,forward 的 完全不動(第三面牆)。
- 「動不動到邊際」變成一個可以證明的命題,而且答案是「不動」(第二個小問題)。
而它之所以做得到,是因為 SDE 與 Fokker–Planck 描述的是每單位時間的變化率——drift 是單位時間的位移、噪聲項是單位時間增加的變異數——而不是「一步之後到哪」。步長 是事後由取樣器決定的、可以任意切的東西。
離散世界要做的,是同一個動作。
互動 demo:加一條「回到 [MASK]」的管子,會壞掉什麼。 兩件事量得出來。 時上圖那條線貼在 0 上——closed form 完全正確;把 推上去,誤差立刻長出來( 對應到中等強度時實測最大誤差 0.33), 再也不是「 倍的 identity + 剩下的全在 [MASK]」那個形狀。下圖是更麻煩的那件事:兩種模式的遮罩總量都固定,但把「在 校準好的每步機率」直接拿去 用,終點是 0.126 / 0.556 / 0.926——差了七倍;換成「每步取 」則是 0.335 / 0.340 / 0.341,三者幾乎相同。rate 有單位,每步的機率沒有。
本單元的新物件:rate
把 換掉,改問一個更基本的問題:在時刻 ,每單位時間有多少機率從狀態 流到狀態 ? 這個數叫 rate,記成 ,單位是 1/時間。一步的 transition matrix 只是它在一個很短的時間 裡的累積:
反過來說, 是「 減掉 identity 再除以 」——transition matrix 的導數。這就是 continuous-time Markov chain(CTMC)[1]。 從模型的定義裡消失了:forward chain 由 描述,「一步走多久」是取樣器的事。
有了這個物件,上面三個小問題會在接下來幾篇裡各得到一個短答案:
- 改多少? 是一個 rate ,單位 1/時間(U5.3)。
- 會不會動到邊際? 有一個和 U3.1 逐字對應的條件,滿足它就不動(U5.3)。
- 能不能連續地調? 從 0 連續調上去,absorbing 是 那一端(U5.3)。
順便,U4.0 說 U1 的框架在離散世界裡真的壞掉的兩塊是 score 與 ODE / SDE。rate 的語言會把這兩塊重建回來:反向過程的 rate 裡會冒出一個扮演 score 角色的量——不是梯度,是比值 (U5.2);而 flow matching 那套「條件路徑 → 邊際速度」的建構,把速度換成 rate 之後逐字成立(U5.4)。U4.0 那張 2×2 的表,右下角那格這個單元填滿。
展開細節為什麼不乾脆一直用離散時間、把 T 取很大?
可以,而且 U4.2 的 Details 已經這麼做過一次:讓 ,權重 變成 。那個極限其實已經是連續時間了—— 就是 absorbing 鏈的 rate(下一篇會算出來)。
問題不在「 大」,而在用 步的語言描述 的物件:每次要問一個新問題(改 schedule、加 remasking、換取樣步數)都得重做一次極限。直接在極限裡工作,每個問題只要算一次。DDPM 到 SDE 的過渡也是同一個理由:DDPM 的 在 下就是 SDE 的 ,但在 SDE 裡寫一族取樣器只要一行,在 DDPM 裡要重推 posterior。
展開細節這個單元不做的事
CTMC 是一個可以講一學期的主題。這個單元只用到四件事:rate matrix 的定義、forward equation、時間反轉的 rate、以及「rate 是條件 rate 的後驗平均」。不碰 generator 的 semigroup 理論、不碰 Kolmogorov backward equation、不碰 explosion 或無限狀態空間。狀態空間永遠是有限的( 個字、 個位置),所有 都是有限個數字。
課堂提問Q1
既然 rate 只是「 減掉 identity 再除以 」,那它看起來只是把同一件事換一種寫法。
換一種寫法,為什麼會讓問題變簡單?
先想一想,再展開看整理後的答案
因為它把一個混在一起的東西拆開了。離散時間的 同時編碼了兩件事:「這條鏈長什麼樣」和「我們打算走幾步」。上面 demo 的下半就是這件事的代價——同一個「每步機率」在不同的 之下描述的是不同的鏈。
換成 rate 之後, 從模型的定義裡消失: 描述鏈,「一步走多久」變成取樣器的事。於是三件事同時變便宜:
- 參數有單位。 的單位是 1/時間,寫下來就固定了一個物理量,不會因為換步數而改變意思。
- 可以連續地調。 absorbing 是 ,加 remasking 是把 從 0 往上推——之間沒有斷點。離散時間裡「加一點」得先決定加在哪一步、加多少,那不是一個連續的旋鈕。
- 同一個問題只要算一次。 「這樣改會不會動到邊際?」在 rate 的語言裡是一條式子(U5.3),在 的語言裡每換一次 都得重算一次矩陣連乘。
這和 U1 到 U3.1 的過渡是同一件事:DDPM 的 在 下就是 SDE 的 ,而「寫下一族邊際相同的取樣器」在 SDE 裡是一行、在 DDPM 裡要重推 posterior。
值得說清楚的是:換語言沒有換掉任何數學。同一條鏈在兩種語言裡是同一條鏈,離散時間也不是錯的。變的只是「問一個新問題要付多少力氣」。
先消化一下
參考文獻
- Campbell, A., Benton, J., De Bortoli, V., Rainforth, T., Deligiannidis, G., Doucet, A. A Continuous Time Framework for Discrete Denoising Models. NeurIPS 2022.(把 D3PM 搬到連續時間 CTMC 的第一篇。)
- Austin, J., Johnson, D. D., Ho, J., Tarlow, D., van den Berg, R. Structured Denoising Diffusion Models in Discrete State-Spaces. NeurIPS 2021.(離散時間的 transition matrix 語言。)
- Wang, G., Schiff, Y., Sahoo, S. S., Kuleshov, V. Remasking Discrete Diffusion Models with Inference-Time Scaling. 2025.(本篇三個小問題的答案之一,在 remasking 那一篇展開。)
- Anderson, B. D. O. Reverse-time Diffusion Equation Models. Stochastic Processes and their Applications 12(3), 1982.(連續世界的時間反轉;下下篇會寫出它的離散版。)