U5.0 15 分鐘閱讀 2026年9月

U5.0 要把「改」說清楚,需要什麼語言?

本篇重用M4.0明天的天氣只看今天:Markov Chain 與 Transition Matrix·M3.2一千片葉子在亂流裡:Fokker–Planck 方程式

上一篇那個「加一點回到 [MASK] 的機會」,
為什麼用上一個單元的語言答起來很笨拙?

上一個單元留下的一句話

U4.4 結尾的問題是這樣的:absorbing 鏈把不確定性集中在 [MASK] 上、context 乾淨,但翻開的字永遠固定;uniform 鏈每一步都能改任何字,但模型分不清哪些字是噪聲。能不能兩個都要?

那一篇給了一個直覺的設計——在 absorbing 鏈上加「一點」回到 [MASK] 的機會——然後停住了,說這件事用上一個單元的語言「答起來很笨拙」。這一篇就把「笨拙」說清楚。不是為了抱怨,而是因為看清楚哪裡卡住,新語言該長什麼樣就會自己浮出來。

先把那個含糊的問題拆成三個具體的:

  1. 改多少? 「加一點回到 [MASK] 的機會」——一點是多少?用什麼單位衡量?
  2. 會不會動到邊際? 訓好的網路學的是 p(x0xt)p(x_0\mid x_t),它的輸入 xtx_t 來自 q(xtx0)q(x_t\mid x_0)。如果新的取樣程序讓 xtx_t 的分佈變了,網路面對的就是它沒見過的輸入。
  3. 能不能連續地調? 從「完全不改」(absorbing)到「每個字每步都可能改」(uniform)之間,有沒有一條可以連續調的路,而不是兩個孤立的選擇?

用 transition matrix 試一次

U4.1 的語言是:forward 每一步是一個 K×KK\times K 的 transition matrix QtQ_ttt 步的邊際是連乘 Qˉt=Q1Qt\bar Q_t=Q_1\cdots Q_t。那就直接在 QtQ_t 上動手。

absorbing 的 Qt=(1βt)I+βt1em ⁣Q_t=(1-\beta_t)I+\beta_t\mathbb 1e_m^{\!\top}[MASK] 那一列是 em ⁣e_m^{\!\top}——進去就不出來。要讓字「有機會被改」,最直接的是把 [MASK] 列改掉,讓它以某個機率 γt\gamma_t 回到某個字;或者反過來,在反向取樣時額外以某個機率把已翻開的字遮回去。兩種都試,會撞到三面牆。

第一面牆:closed form 消失。 Qˉt\bar Q_t 有 closed form,靠的是 QtQ_t 全部長成「aI+b×aI+b\times(一個投影)」這個形狀、連乘後形狀不變(U4.1)。[MASK] 列一改,這個形狀就破了;Qˉt\bar Q_t 變成一般的矩陣連乘,q(xtx0)q(x_t\mid x_0) 沒有好寫的式子,posterior q(xt1xt,x0)q(x_{t-1}\mid x_t,x_0) 也跟著沒有。U1.1 說「forward 是我們自己定的,所以任何 ttxtx_t 可以一步抽出來」——這個便利沒了,訓練要一步一步模擬鏈。

第二面牆:「一點」沒有單位。 假設咬牙接受沒有 closed form,「改一點」的量寫成 γt\gamma_t。但 γt\gamma_t一步的機率,而「一步」是多長取決於 TTT=1000T=1000γt=0.01\gamma_t=0.01T=10T=10γt=0.01\gamma_t=0.01 是完全不同強度的修正。U4.2 的取樣器可以訓練時用 T=1000T=1000、取樣時只走 8 步——跳步的時候,γ\gamma 該怎麼跟著換?在 transition matrix 的語言裡,「每步改多少」和「走幾步」是綁在同一個數字上的,拆不開。

第三面牆:取樣器和 forward chain 綁死。 上一個單元的取樣程序是「反著走 posterior」:pθ(xt1xt)=x~0q(xt1xt,x~0)pθ(x~0xt)p_\theta(x_{t-1}\mid x_t)=\sum_{\tilde x_0}q(x_{t-1}\mid x_t,\tilde x_0)\,p_\theta(\tilde x_0\mid x_t)。這裡每一個因子都由 QtQ_t 決定,取樣器沒有任何自己的自由度。想在取樣時多做一件事(把字遮回去),就只能改 QtQ_t——也就是改 forward chain、改訓練分佈、重訓。第 2 個小問題(會不會動到邊際)在這個語言裡連問都問不出來,因為答案永遠是「會」。

這面牆我們撞過一次

停下來對照 U1。DDPM 也是離散時間:T=1000T=1000 步、每步一個 βt\beta_t、取樣器是「反著走 posterior」。U1.4 遇到的問題和上面幾乎一樣——DDPM 與 DDIM 用同一個網路卻是兩種取樣器,「為什麼都對、差在哪」在 TT 步的語言裡說不清楚。

解法是換成連續時間:forward 寫成 SDE dx=fdt+gdWdx=f\,dt+g\,dW,邊際 ptp_t 的演化寫成 Fokker–Planck。有了這個語言之後,U3.1 才能寫出一整族取樣器

dXt=[bt+εtst]dt+2εtdWt,dX_t=\big[b_t+\varepsilon_t s_t\big]dt+\sqrt{2\varepsilon_t}\,dW_t ,

並用 Fokker–Planck 三行證明:對任何 εt0\varepsilon_t\ge0,邊際都是 ptp_t。這正好把上面三面牆一次拆掉:

  • εt\varepsilon_t單位時間的量,與步數無關(第二面牆)。
  • 取樣器有了自己的旋鈕 εt\varepsilon_t,forward 的 f,gf,g 完全不動(第三面牆)。
  • 「動不動到邊際」變成一個可以證明的命題,而且答案是「不動」(第二個小問題)。

而它之所以做得到,是因為 SDE 與 Fokker–Planck 描述的是每單位時間的變化率——drift 是單位時間的位移、噪聲項是單位時間增加的變異數——而不是「一步之後到哪」。步長 hh 是事後由取樣器決定的、可以任意切的東西。

離散世界要做的,是同一個動作。

互動 demo:加一條「回到 [MASK]」的管子,會壞掉什麼。 兩件事量得出來。γ=0\gamma=0 時上圖那條線貼在 0 上——closed form 完全正確;把 γ\gamma 推上去,誤差立刻長出來(γ\gamma 對應到中等強度時實測最大誤差 0.33),Qˉt\bar Q_t 再也不是「αˉt\bar\alpha_t 倍的 identity + 剩下的全在 [MASK]」那個形狀。下圖是更麻煩的那件事:兩種模式的遮罩總量都固定,但把「在 T=40T=40 校準好的每步機率」直接拿去 T=10/100/1000T=10/100/1000 用,終點是 0.126 / 0.556 / 0.926——差了七倍;換成「每步取 σ/T\sigma/T」則是 0.335 / 0.340 / 0.341,三者幾乎相同。rate 有單位,每步的機率沒有。

本單元的新物件:rate

QtQ_t 換掉,改問一個更基本的問題:在時刻 tt,每單位時間有多少機率從狀態 xx 流到狀態 yy 這個數叫 rate,記成 Rt(xy)R_t(x\to y),單位是 1/時間。一步的 transition matrix 只是它在一個很短的時間 Δt\Delta t 裡的累積:

Qtt+ΔtI+RtΔt.Q_{t\to t+\Delta t}\approx I+R_t\,\Delta t .

反過來說,RtR_t 是「QQ 減掉 identity 再除以 Δt\Delta t」——transition matrix 的導數。這就是 continuous-time Markov chain(CTMC)[1]。Δt\Delta t 從模型的定義裡消失了:forward chain 由 RtR_t 描述,「一步走多久」是取樣器的事。

有了這個物件,上面三個小問題會在接下來幾篇裡各得到一個短答案:

  • 改多少? 是一個 rate σt\sigma_t,單位 1/時間(U5.3)。
  • 會不會動到邊際? 有一個和 U3.1 逐字對應的條件,滿足它就不動(U5.3)。
  • 能不能連續地調? σt\sigma_t 從 0 連續調上去,absorbing 是 σ0\sigma\equiv0 那一端(U5.3)。

順便,U4.0U1 的框架在離散世界裡真的壞掉的兩塊是 scoreODE / SDE。rate 的語言會把這兩塊重建回來:反向過程的 rate 裡會冒出一個扮演 score 角色的量——不是梯度,是比值 pt(y)/pt(x)p_t(y)/p_t(x)U5.2);而 flow matching 那套「條件路徑 → 邊際速度」的建構,把速度換成 rate 之後逐字成立(U5.4)。U4.0 那張 2×2 的表,右下角那格這個單元填滿。

展開細節為什麼不乾脆一直用離散時間、把 T 取很大?

可以,而且 U4.2 的 Details 已經這麼做過一次:讓 TT\to\infty,權重 αˉt1αˉt1αˉt\frac{\bar\alpha_{t-1}-\bar\alpha_t}{1-\bar\alpha_t} 變成 α˙t1αtdt\frac{-\dot\alpha_t}{1-\alpha_t}dt。那個極限其實已經是連續時間了——α˙t/αt-\dot\alpha_t/\alpha_t 就是 absorbing 鏈的 rate(下一篇會算出來)。

問題不在「TT 大」,而在TT 步的語言描述 TT\to\infty 的物件:每次要問一個新問題(改 schedule、加 remasking、換取樣步數)都得重做一次極限。直接在極限裡工作,每個問題只要算一次。DDPM 到 SDE 的過渡也是同一個理由:DDPM 的 βt\beta_tTT\to\infty 下就是 SDE 的 gt2dtg_t^2\,dt,但在 SDE 裡寫一族取樣器只要一行,在 DDPM 裡要重推 posterior。

展開細節這個單元不做的事

CTMC 是一個可以講一學期的主題。這個單元只用到四件事:rate matrix 的定義、forward equation、時間反轉的 rate、以及「rate 是條件 rate 的後驗平均」。不碰 generator 的 semigroup 理論、不碰 Kolmogorov backward equation、不碰 explosion 或無限狀態空間。狀態空間永遠是有限的(KK 個字、LL 個位置),所有 ptp_t 都是有限個數字。

課堂提問Q1

既然 rate 只是「QQ 減掉 identity 再除以 Δt\Delta t」,那它看起來只是把同一件事換一種寫法。

換一種寫法,為什麼會讓問題變簡單?

先想一想,再展開看整理後的答案

因為它把一個混在一起的東西拆開了。離散時間的 QtQ_t 同時編碼了兩件事:「這條鏈長什麼樣」和「我們打算走幾步」。上面 demo 的下半就是這件事的代價——同一個「每步機率」在不同的 TT 之下描述的是不同的鏈

換成 rate 之後,Δt\Delta t 從模型的定義裡消失:RtR_t 描述鏈,「一步走多久」變成取樣器的事。於是三件事同時變便宜:

  1. 參數有單位。 σt\sigma_t 的單位是 1/時間,寫下來就固定了一個物理量,不會因為換步數而改變意思。
  2. 可以連續地調。 absorbing 是 σ0\sigma\equiv0,加 remasking 是把 σ\sigma 從 0 往上推——之間沒有斷點。離散時間裡「加一點」得先決定加在哪一步、加多少,那不是一個連續的旋鈕。
  3. 同一個問題只要算一次。 「這樣改會不會動到邊際?」在 rate 的語言裡是一條式子(U5.3),在 QQ 的語言裡每換一次 TT 都得重算一次矩陣連乘。

這和 U1U3.1 的過渡是同一件事:DDPM 的 βt\beta_tTT\to\infty 下就是 SDE 的 gt2dtg_t^2\,dt,而「寫下一族邊際相同的取樣器」在 SDE 裡是一行、在 DDPM 裡要重推 posterior。

值得說清楚的是:換語言沒有換掉任何數學。同一條鏈在兩種語言裡是同一條鏈,離散時間也不是錯的。變的只是「問一個新問題要付多少力氣」。

先消化一下

想一想

在 absorbing 鏈的 QtQ_t 裡把 [MASK] 那一列改成「以機率 γ\gamma 回到某個字」。下列哪一件事不會因此壞掉?

想一想

「每步以 γ=0.01\gamma=0.01 的機率把一個已翻開的字遮回去」——為什麼說這個量「沒有單位」?

想一想

U3.1 那一族取樣器裡,εt\varepsilon_t 可以任意選而邊際不變。這件事之所以能在連續世界裡證明,關鍵在於:

想一想

Qtt+ΔtI+RtΔtQ_{t\to t+\Delta t}\approx I+R_t\Delta t。這條式子說 rate matrix RtR_t 是:

參考文獻

  1. 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 的第一篇。)
  2. 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 語言。)
  3. Wang, G., Schiff, Y., Sahoo, S. S., Kuleshov, V. Remasking Discrete Diffusion Models with Inference-Time Scaling. 2025.(本篇三個小問題的答案之一,在 remasking 那一篇展開。)
  4. Anderson, B. D. O. Reverse-time Diffusion Equation Models. Stochastic Processes and their Applications 12(3), 1982.(連續世界的時間反轉;下下篇會寫出它的離散版。)