學完這篇,你能
推出 CTMC 時間反轉的 rate R ˉ t ( x → y ) = R t ( y → x ) p t ( y ) / p t ( x ) \bar R_t(x\to y)=R_t(y\to x)\,p_t(y)/p_t(x) R ˉ t ( x → y ) = R t ( y → x ) p t ( y ) / p t ( x ) ,並用「把每根水管的流量倒過來」讀懂它。
回答「離散空間的 score 是什麼」:不是梯度,是鄰居之間的比值 p t ( y ) / p t ( x ) p_t(y)/p_t(x) p t ( y ) / p t ( x ) ;並驗證它等於條件比值的後驗平均——U1.2 那個 conditional trick 的比值版本。
寫出 SEDD 的 score entropy loss,說出它為什麼可以只用 ( x 0 , x t ) (x_0,x_t) ( x 0 , x t ) 配對訓練,以及在 absorbing 鏈上它和 U4.2 的 cross-entropy 是同一個物件。
本篇重用 M4.2 電話隨時會響:Continuous-Time Markov Chain 與 Rate Matrix· M4.3 影片倒著播看得出來嗎:Time Reversal 與比值· M1.3 快篩陽性:Bayes 與 Posterior· M1.1 從鞋子猜身高:Conditional Expectation
forward 的每一根管子上都標好了數字。
把時間倒過來,管子上該改標什麼?
把水管倒過來
上一篇的三個水桶裡,每根管子上的 rate 說的是 forward 方向:資料變噪聲時,機率怎麼流。生成要反著走——從噪聲回到資料。問題是:反向的鏈,每根管子上該標什麼數字?
先給畫面。在時刻 t t t ,從 y y y 流到 x x x 的流量 (不是 rate,是 rate 乘上來源的水位)是 p t ( y ) R t ( y → x ) p_t(y)\,R_t(y\to x) p t ( y ) R t ( y → x ) 。時間倒放,這股水應該原路流回去:從 x x x 回到 y y y 。反向鏈裡 x → y x\to y x → y 的流量 p t ( x ) R ˉ t ( x → y ) p_t(x)\,\bar R_t(x\to y) p t ( x ) R ˉ t ( x → y ) 得等於它:
p t ( x ) R ˉ t ( x → y ) = p t ( y ) R t ( y → x ) ⟹ R ˉ t ( x → y ) = R t ( y → x ) p t ( y ) p t ( x ) ( y ≠ x ) . p_t(x)\,\bar R_t(x\to y)=p_t(y)\,R_t(y\to x)
\quad\Longrightarrow\quad
\boxed{\;\bar R_t(x\to y)=R_t(y\to x)\,\frac{p_t(y)}{p_t(x)}\;}\qquad(y\ne x). p t ( x ) R ˉ t ( x → y ) = p t ( y ) R t ( y → x ) ⟹ R ˉ t ( x → y ) = R t ( y → x ) p t ( x ) p t ( y ) ( y = x ) .
這是「把每根水管的流量倒過來」。左邊的式子叫 flux balance——每一對狀態之間,反向的流量等於 forward 的流量反向;它和 Markov chain 裡的 detailed balance 長得一樣,只是這裡不需要鏈是 reversible,因為兩邊的 rate 是不同的 鏈(一條是 forward、一條是 reverse)。
用 Bayes 定理也能一行推出來,而且會看到「反向」與「posterior」的關係——U4.1 的 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}\mid x_t,x_0) q ( x t − 1 ∣ x t , x 0 ) 是多知道 x 0 x_0 x 0 的反向一步,這裡是不知道 x 0 x_0 x 0 的反向一小步:
q ( x t = y ∣ x t + Δ t = x ) = q ( x t + Δ t = x ∣ x t = y ) p t ( y ) p t + Δ t ( x ) ≈ R t ( y → x ) Δ t p t ( y ) p t ( x ) , q(x_t=y\mid x_{t+\Delta t}=x)=\frac{q(x_{t+\Delta t}=x\mid x_t=y)\,p_t(y)}{p_{t+\Delta t}(x)}
\approx\frac{R_t(y\to x)\,\Delta t\;p_t(y)}{p_t(x)}, q ( x t = y ∣ x t + Δ t = x ) = p t + Δ t ( x ) q ( x t + Δ t = x ∣ x t = y ) p t ( y ) ≈ p t ( x ) R t ( y → x ) Δ t p t ( y ) ,
除以 Δ t \Delta t Δ t 就是 R ˉ t \bar R_t R ˉ t 。
展開細節 兩狀態手算,以及一般情形的驗證 兩狀態。 狀態 a , b a,b a , b ,forward 只有 a → b a\to b a → b 的 rate r r r (b b b 是吸收態)。從 p 0 = ( 1 , 0 ) p_0=(1,0) p 0 = ( 1 , 0 ) 出發:p t ( a ) = e − r t p_t(a)=e^{-rt} p t ( a ) = e − r t ,p t ( b ) = 1 − e − r t p_t(b)=1-e^{-rt} p t ( b ) = 1 − e − r t 。
反向 rate:
R ˉ t ( b → a ) = R t ( a → b ) p t ( a ) p t ( b ) = r e − r t 1 − e − r t \bar R_t(b\to a)=R_t(a\to b)\,\dfrac{p_t(a)}{p_t(b)}=\dfrac{r\,e^{-rt}}{1-e^{-rt}} R ˉ t ( b → a ) = R t ( a → b ) p t ( b ) p t ( a ) = 1 − e − r t r e − r t 。
R ˉ t ( a → b ) = R t ( b → a ) p t ( b ) p t ( a ) = 0 \bar R_t(a\to b)=R_t(b\to a)\,\dfrac{p_t(b)}{p_t(a)}=0 R ˉ t ( a → b ) = R t ( b → a ) p t ( a ) p t ( b ) = 0 (forward 沒有 b → a b\to a b → a ,反向也就沒有 a → b a\to b a → b )。
檢查邊際:反向鏈在倒著走的時間裡,a a a 的水位增加率是 p t ( b ) R ˉ t ( b → a ) = r e − r t = − p ˙ t ( a ) p_t(b)\,\bar R_t(b\to a)=r\,e^{-rt}=-\dot p_t(a) p t ( b ) R ˉ t ( b → a ) = r e − r t = − p ˙ t ( a ) 。倒著走剛好把 forward 的下降還回來。✓
注意 R ˉ t ( b → a ) \bar R_t(b\to a) R ˉ t ( b → a ) 在 t → 0 t\to0 t → 0 時發散(1 − e − r t → 0 1-e^{-rt}\to0 1 − e − r t → 0 ):接近資料端時,還留在 [MASK] 的極少數質量要以極快的速度翻開。這與上一篇 β t \beta_t β t 在 t → 1 t\to1 t → 1 發散是鏡像。
一般情形。 令反向鏈的 generator 為 R ˉ t \bar R_t R ˉ t (非對角如上,對角取負列和)。計算 ( p t R ˉ t ) ( y ) (p_t\bar R_t)(y) ( p t R ˉ t ) ( y ) :
∑ x ≠ y p t ( x ) R ˉ t ( x → y ) − p t ( y ) ∑ x ≠ y R ˉ t ( y → x ) = ∑ x ≠ y p t ( y ) R t ( y → x ) − ∑ x ≠ y p t ( x ) R t ( x → y ) = − ( p t R t ) ( y ) = − p ˙ t ( y ) . \sum_{x\ne y}p_t(x)\bar R_t(x\to y)-p_t(y)\sum_{x\ne y}\bar R_t(y\to x)
=\sum_{x\ne y}p_t(y)R_t(y\to x)-\sum_{x\ne y}p_t(x)R_t(x\to y)=-(p_tR_t)(y)=-\dot p_t(y). x = y ∑ p t ( x ) R ˉ t ( x → y ) − p t ( y ) x = y ∑ R ˉ t ( y → x ) = x = y ∑ p t ( y ) R t ( y → x ) − x = y ∑ p t ( x ) R t ( x → y ) = − ( p t R t ) ( y ) = − p ˙ t ( y ) . 所以在倒轉的時間 s = 1 − t s=1-t s = 1 − t 裡 d d s p = p R ˉ \frac{d}{ds}p=p\bar R d s d p = p R ˉ ——反向鏈的邊際恰好沿著 forward 的邊際往回走。這是 U3.1 那個 Fokker–Planck 代入驗證的離散版;Anderson [5] 的 reverse-time SDE 是連續狀態的同一件事。
讀這條式子。R ˉ t ( x → y ) \bar R_t(x\to y) R ˉ t ( x → y ) 是兩個因子的乘積:
R t ( y → x ) R_t(y\to x) R t ( y → x ) :forward 的 rate 反向讀。完全已知 ,是我們自己定的鏈。
p t ( y ) p t ( x ) \dfrac{p_t(y)}{p_t(x)} p t ( x ) p t ( y ) :兩個鄰居的邊際機率比 。這是唯一不知道的東西,它依賴資料分佈。
離散空間的 score 是什麼?
反向 rate 已經寫出來了,但裡面那個要學的東西還沒有名字。先問清楚它是什麼,再去想怎麼把它訓出來。
課堂提問 Q1
U1.4 的 reverse SDE 裡,唯一要學的東西是 score ∇ x log p t ( x ) \nabla_x\log p_t(x) ∇ x log p t ( x ) 。U4.0 說離散空間沒有梯度,所以 score 壞了。現在有了反向 rate 的式子——離散空間裡扮演 score 角色的量是什麼? 它和連續的 score 是什麼關係?
先想一想,再展開看整理後的答案 常見的答案大致三類:「對 logits 取梯度」、「log p t ( y ) − log p t ( x ) \log p_t(y)-\log p_t(x) log p t ( y ) − log p t ( x ) 這種差」、「就是 p θ ( x 0 ∣ x t ) p_\theta(x_0\mid x_t) p θ ( x 0 ∣ x t ) ,上一個單元已經學過了」。第一類把網路輸出的連續量誤當成狀態空間上的梯度——狀態本身沒有連續座標,對 logits 微分不對應任何「往密度高的方向走」。第二、三類都對,而且是同一件事的兩面。
它就是比值 p t ( y ) / p t ( x ) p_t(y)/p_t(x) p t ( y ) / p t ( x ) ,對 x x x 的每個鄰居 y y y 各一個數。 反向 rate 的式子已經說了:反向過程需要的、且唯一不知道的量,就是它。
和連續 score 的關係是有限差分 。一維裡
∂ x log p ( x ) = lim h → 0 log p ( x + h ) − log p ( x ) h ≈ 1 h ( p ( x + h ) p ( x ) − 1 ) , \partial_x\log p(x)=\lim_{h\to0}\frac{\log p(x+h)-\log p(x)}{h}\approx\frac1h\Big(\frac{p(x+h)}{p(x)}-1\Big), ∂ x log p ( x ) = h → 0 lim h log p ( x + h ) − log p ( x ) ≈ h 1 ( p ( x ) p ( x + h ) − 1 ) , score 是「往旁邊挪一小步,密度比變成多少」的極限。離散空間沒有「一小步」可以無限縮小,鄰居就是最小的一步,所以極限拿掉、h h h 拿掉,剩下比值本身。Meng et al. [2] 把這個量叫 concrete score ,Lou–Meng–Ermon [1] 用它建出 SEDD。
它在反向過程裡的位置也和 score 完全對應。連續:reverse SDE 的 drift 是「已知的 forward drift 反向」加上「g 2 ∇ log p t g^2\nabla\log p_t g 2 ∇ log p t 」;離散:反向 rate 是「已知的 forward rate 反向」乘上 「p t ( y ) / p t ( x ) p_t(y)/p_t(x) p t ( y ) / p t ( x ) 」。一個是加、一個是乘,因為連續的 score 是 log \log log 的導數、離散的比值沒有取 log \log log ;把比值寫成 exp ( log p t ( y ) − log p t ( x ) ) \exp(\log p_t(y)-\log p_t(x)) exp ( log p t ( y ) − log p t ( x )) ,第二類答案的「差」就出現了。
第三類答案「就是 p θ ( x 0 ∣ x t ) p_\theta(x_0\mid x_t) p θ ( x 0 ∣ x t ) 」也對——〈這是 conditional trick 的比值版本〉會證明比值可以完全由 x 0 x_0 x 0 的 posterior 算出來。這是離散世界的 Tweedie 公式。
互動 demo:一個 x t x_t x t 的所有鄰居。 資料是「相鄰格以 0.9 相同」的長度 16 鏈,p t p_t p t 用前向演算法精確 算出來,不是網路。absorbing 下每個 [MASK] 有兩根柱子(填 0 或填 1),而把共同因子 α t / ( 1 − α t ) \alpha_t/(1-\alpha_t) α t / ( 1 − α t ) 除掉之後,同一格兩根的和永遠是 1.0000 ——那正是下面要證的 p t ( y ) / p t ( x ) = α t 1 − α t p ( x 0 ℓ = v ∣ x t ) p_t(y)/p_t(x)=\frac{\alpha_t}{1-\alpha_t}p(x_0^\ell=v\mid x_t) p t ( y ) / p t ( x ) = 1 − α t α t p ( x 0 ℓ = v ∣ x t ) :比值和 U4.2 那個網路只差一個已知的係數。比值本身隨 t t t 一路縮小(t = 0.15 t=0.15 t = 0.15 時最大 5.60、t = 0.5 t=0.5 t = 0.5 是 0.99、t = 0.9 t=0.9 t = 0.9 只剩 0.11),縮掉的就是那個係數(5.67 / 1.00 / 0.11)。沒被遮的位置畫成空槽 :forward 沒有「字換成字」這條管子,反向也就沒有,那些比值根本不用學。切到 uniform,每一格都有一根柱子、比值全部擠在 1 附近(實測 0.88~1.18),要學的數量從「被遮格數 × 2」變成 L L L ,而且沒有那個乾淨的化簡。
注意 比值不是機率,不必加起來等於 1 p t ( y ) / p t ( x ) p_t(y)/p_t(x) p t ( y ) / p t ( x ) 是兩個機率的比,它自己不是機率:它可以大於 1(往那邊改更像資料)、可以趨近 0,一個 x x x 的所有鄰居加起來也不等於任何固定的數。demo 裡「兩根的和 = 1」是先除掉 α t / ( 1 − α t ) \alpha_t/(1-\alpha_t) α t / ( 1 − α t ) 之後 才成立,而且只在 absorbing 鏈上成立——它是下面那條化簡的結果,不是比值的普遍性質。切到 uniform 就沒有這回事。
這也是為什麼比值不能用 softmax 輸出:softmax 強制加起來等於 1,會把要學的量限制在錯的集合裡。實作上的做法是讓網路輸出實數再取 exp 保證正值,或者走 absorbing 的化簡——輸出 x 0 x_0 x 0 的 posterior、再乘上那個已知係數。
這是 conditional trick 的比值版本
U1.2 的 conditional trick 是:邊際量難算、條件量好算,而邊際量等於條件量對 posterior 的平均,所以回歸條件量、網路自動收斂到邊際量。U1.3 (score)、U2.2 (速度)、U3.0 (b t b_t b t 與 η t \eta_t η t )走的都是這條路。現在看比值。
邊際 p t ( x ) = ∑ x 0 q t ( x ∣ x 0 ) p ( x 0 ) p_t(x)=\sum_{x_0}q_t(x\mid x_0)\,p(x_0) p t ( x ) = ∑ x 0 q t ( x ∣ x 0 ) p ( x 0 ) ,其中 q t ( ⋅ ∣ x 0 ) q_t(\cdot\mid x_0) q t ( ⋅ ∣ x 0 ) 是上一篇 Q ˉ t \bar Q_t Q ˉ t 給的 closed form。於是
p t ( y ) p t ( x ) = ∑ x 0 q t ( y ∣ x 0 ) p ( x 0 ) p t ( x ) = ∑ x 0 q t ( y ∣ x 0 ) q t ( x ∣ x 0 ) ⏟ 條件比值 q t ( x ∣ x 0 ) p ( x 0 ) p t ( x ) ⏟ p ( x 0 ∣ x t = x ) = E [ q t ( y ∣ x 0 ) q t ( x ∣ x 0 ) ∣ x t = x ] . \frac{p_t(y)}{p_t(x)}
=\sum_{x_0}\frac{q_t(y\mid x_0)\,p(x_0)}{p_t(x)}
=\sum_{x_0}\underbrace{\frac{q_t(y\mid x_0)}{q_t(x\mid x_0)}}_{\text{條件比值}}\;\underbrace{\frac{q_t(x\mid x_0)\,p(x_0)}{p_t(x)}}_{p(x_0\mid x_t=x)}
=\mathbb E\!\left[\frac{q_t(y\mid x_0)}{q_t(x\mid x_0)}\ \Big|\ x_t=x\right]. p t ( x ) p t ( y ) = x 0 ∑ p t ( x ) q t ( y ∣ x 0 ) p ( x 0 ) = x 0 ∑ 條件比值 q t ( x ∣ x 0 ) q t ( y ∣ x 0 ) p ( x 0 ∣ x t = x ) p t ( x ) q t ( x ∣ x 0 ) p ( x 0 ) = E [ q t ( x ∣ x 0 ) q t ( y ∣ x 0 ) x t = x ] .
中間那一步只是在分子分母同乘 q t ( x ∣ x 0 ) q_t(x\mid x_0) q t ( x ∣ x 0 ) (對 posterior 權重為零的 x 0 x_0 x 0 不用管)。三個角色到齊:
條件比值 q t ( y ∣ x 0 ) / q t ( x ∣ x 0 ) q_t(y\mid x_0)/q_t(x\mid x_0) q t ( y ∣ x 0 ) / q t ( x ∣ x 0 ) :給定 x 0 x_0 x 0 ,兩個鄰居的 forward 機率之比。好算——兩個 closed form 相除。
邊際比值 p t ( y ) / p t ( x ) p_t(y)/p_t(x) p t ( y ) / p t ( x ) :對整個資料分佈求和,難算。
posterior p ( x 0 ∣ x t = x ) p(x_0\mid x_t=x) p ( x 0 ∣ x t = x ) :把前者平均成後者的權重。
所以只要拿 ( x 0 , x t ) (x_0,x_t) ( x 0 , x t ) 配對、把條件比值當回歸目標,網路收斂到的就是邊際比值。到這裡整張表可以一次列出來:
版本 邊際量(要的) 條件量(訓練用) 出處 KL 反向一步 q ( x t − 1 ∣ x t ) q(x_{t-1}\mid x_t) q ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}\mid x_t,x_0) q ( x t − 1 ∣ x t , x 0 ) U1.2 MSE score ∇ log p t ( x ) \nabla\log p_t(x) ∇ log p t ( x ) − ϵ / σ t -\epsilon/\sigma_t − ϵ / σ t U1.3 速度 邊際速度 u t ( x ) u_t(x) u t ( x ) 條件速度 α ˙ t x 1 + σ ˙ t x 0 \dot\alpha_tx_1+\dot\sigma_tx_0 α ˙ t x 1 + σ ˙ t x 0 U2.2 通式 b t b_t b t 、η t \eta_t η t α ˙ t x 0 + β ˙ t x 1 + γ ˙ t z \dot\alpha_tx_0+\dot\beta_tx_1+\dot\gamma_tz α ˙ t x 0 + β ˙ t x 1 + γ ˙ t z 、z z z U3.0 比值 p t ( y ) / p t ( x ) p_t(y)/p_t(x) p t ( y ) / p t ( x ) 條件比值 q t ( y ∣ x 0 ) / q t ( x ∣ x 0 ) q_t(y\mid x_0)/q_t(x\mid x_0) q t ( y ∣ x 0 ) / q t ( x ∣ x 0 ) 本篇
這張表不是我們自己歸納出來的巧合。U1.2 的主要參考把同一件事寫成一整節([8] Section 6.1,標題就叫 Conditional Tricks: The Secret Sauce of Diffusion Models ):variational、score-based、flow-based 三個視角各自從不同動機出發,卻獨立地想到同一招 ——條件在 x 0 x_0 x 0 上,然後每一條都是「條件版 = = = 邊際版 + + + 一個與參數無關的常數」。
前面幾列的「回歸」不是 KL 就是 MSE;比值這一列的目標是正數 ,用 MSE 也行但不自然(比值可以是 0 也可以很大)。SEDD 換了一個 loss。
SEDD:直接回歸比值
網路 s θ ( x , t ) ∈ R > 0 L ( K − 1 ) s_\theta(x,t)\in\mathbb R_{>0}^{\,L(K-1)} s θ ( x , t ) ∈ R > 0 L ( K − 1 ) 對 x x x 的每個鄰居 y y y 輸出一個正數,目標是 p t ( y ) / p t ( x ) p_t(y)/p_t(x) p t ( y ) / p t ( x ) 。Lou–Meng–Ermon [1] 的 score entropy :
L SE = E x ∼ p t ∑ y ≠ x w x y [ s θ ( x ) y − p t ( y ) p t ( x ) log s θ ( x ) y + h ( p t ( y ) p t ( x ) ) ] , h ( a ) = a ( log a − 1 ) . \mathcal L_{\text{SE}}=\mathbb E_{x\sim p_t}\sum_{y\ne x}w_{xy}\Big[\,s_\theta(x)_y-\frac{p_t(y)}{p_t(x)}\log s_\theta(x)_y+h\!\Big(\frac{p_t(y)}{p_t(x)}\Big)\Big],\qquad h(a)=a(\log a-1). L SE = E x ∼ p t y = x ∑ w x y [ s θ ( x ) y − p t ( x ) p t ( y ) log s θ ( x ) y + h ( p t ( x ) p t ( y ) ) ] , h ( a ) = a ( log a − 1 ) .
w x y ≥ 0 w_{xy}\ge0 w x y ≥ 0 是權重(下面說)。中括號裡的東西對 s s s 是 convex 的、在 s = p t ( y ) / p t ( x ) s=p_t(y)/p_t(x) s = p t ( y ) / p t ( x ) 時取最小值 0——它是 s s s 與真比值之間的一個 Bregman divergence(見 Details)。這個形狀有兩個好處:s → 0 s\to0 s → 0 時 − a log s → ∞ -a\log s\to\infty − a log s → ∞ ,網路不會把任何比值壓到零;比值大時懲罰是線性的而不是平方的,不會被少數大比值主導。
真比值算不出來,但上面那張表說它是條件比值的後驗平均。中括號裡真比值只出現在 − a log s -a\log s − a log s 這一項,而且是線性 地出現;h ( a ) h(a) h ( a ) 不含 θ \theta θ 。所以把 a a a 換成條件比值、對 x 0 x_0 x 0 取期望,梯度不變:
L DSE = E x 0 ∼ p data , x ∼ q t ( ⋅ ∣ x 0 ) ∑ y ≠ x w x y [ s θ ( x ) y − q t ( y ∣ x 0 ) q t ( x ∣ x 0 ) log s θ ( x ) y + h ( q t ( y ∣ x 0 ) q t ( x ∣ x 0 ) ) ] . \mathcal L_{\text{DSE}}=\mathbb E_{x_0\sim p_{\text{data}},\ x\sim q_t(\cdot\mid x_0)}\sum_{y\ne x}w_{xy}\Big[\,s_\theta(x)_y-\frac{q_t(y\mid x_0)}{q_t(x\mid x_0)}\log s_\theta(x)_y+h\!\Big(\frac{q_t(y\mid x_0)}{q_t(x\mid x_0)}\Big)\Big]. L DSE = E x 0 ∼ p data , x ∼ q t ( ⋅ ∣ x 0 ) y = x ∑ w x y [ s θ ( x ) y − q t ( x ∣ x 0 ) q t ( y ∣ x 0 ) log s θ ( x ) y + h ( q t ( x ∣ x 0 ) q t ( y ∣ x 0 ) ) ] .
這叫 denoising score entropy 。它和 U2.2 定理 2 的證明結構相同:展開、找出目標線性出現的那一項、用 tower property 把 posterior 平均收進去。
展開細節 score entropy 是哪個 Bregman divergence;權重 wxy 該選什麼 Bregman divergence。 取 convex 函數 φ ( u ) = u log u − u \varphi(u)=u\log u-u φ ( u ) = u log u − u ,φ ′ ( u ) = log u \varphi'(u)=\log u φ ′ ( u ) = log u 。它生成的 Bregman divergence 是
D φ ( a ∥ s ) = φ ( a ) − φ ( s ) − φ ′ ( s ) ( a − s ) = a log a − a − s log s + s − ( a − s ) log s = s − a log s + a ( log a − 1 ) , D_\varphi(a\,\|\,s)=\varphi(a)-\varphi(s)-\varphi'(s)(a-s)=a\log a-a-s\log s+s-(a-s)\log s=s-a\log s+a(\log a-1), D φ ( a ∥ s ) = φ ( a ) − φ ( s ) − φ ′ ( s ) ( a − s ) = a log a − a − s log s + s − ( a − s ) log s = s − a log s + a ( log a − 1 ) , 正是 score entropy 中括號裡的東西(a a a 是真比值、s s s 是網路輸出)。φ \varphi φ 這個選擇讓 D φ D_\varphi D φ 成為「廣義 KL」:把兩個未正規化的正數當成質量來比。U1.3 的 MSE 是 φ ( u ) = u 2 \varphi(u)=u^2 φ ( u ) = u 2 生成的 Bregman divergence;所有 Bregman divergence 都有「最小值是條件期望」的性質,這是為什麼換了 loss、後驗平均的論證還是成立。
權重。 SEDD 取 w x y = R t ( y → x ) w_{xy}=R_t(y\to x) w x y = R t ( y → x ) ——把鄰居 y y y 連到 x x x 的 forward rate。這樣加權後的 denoising score entropy 對 t t t 積分,是 − log p θ ( x 0 ) -\log p_\theta(x_0) − log p θ ( x 0 ) 的一個上界(SEDD 論文的 likelihood bound,連續時間 ELBO 的形式;常數項與 t → 0 t\to0 t → 0 端點怎麼處理要照論文讀,這裡只用到「forward 上不存在的管子不必學」這一點)。直覺:forward 上根本不存在的管子(R t ( y → x ) = 0 R_t(y\to x)=0 R t ( y → x ) = 0 )反向也不需要,不必浪費容量去學它的比值;absorbing 鏈下這意味著只需要對「被遮位置翻成某個字」這 # masked × K \#\text{masked}\times K # masked × K 個鄰居輸出比值。
Absorbing 鏈上:比值就是上一個單元的網路
對 absorbing 鏈把條件比值實際算出來。設 x x x 在位置 ℓ \ell ℓ 是 [MASK]、y y y 在 ℓ \ell ℓ 是字 v v v 、其他位置相同。closed form q t ( x ∣ x 0 ) q_t(x\mid x_0) q t ( x ∣ x 0 ) 逐位置因子化,其他位置的因子上下相消,只剩位置 ℓ \ell ℓ :
q t ( y ∣ x 0 ) q t ( x ∣ x 0 ) = α t 1 [ x 0 ℓ = v ] 1 − α t ⟹ p t ( y ) p t ( x ) = α t 1 − α t p ( x 0 ℓ = v ∣ x t = x ) . \frac{q_t(y\mid x_0)}{q_t(x\mid x_0)}=\frac{\alpha_t\,\mathbb 1[x_0^\ell=v]}{1-\alpha_t}
\quad\Longrightarrow\quad
\frac{p_t(y)}{p_t(x)}=\frac{\alpha_t}{1-\alpha_t}\;p\big(x_0^\ell=v\ \big|\ x_t=x\big). q t ( x ∣ x 0 ) q t ( y ∣ x 0 ) = 1 − α t α t 1 [ x 0 ℓ = v ] ⟹ p t ( x ) p t ( y ) = 1 − α t α t p ( x 0 ℓ = v x t = x ) .
比值等於「x 0 x_0 x 0 -posterior 在位置 ℓ \ell ℓ 的 marginal」乘一個只跟 t t t 有關的常數。也就是說,U4.2 用 cross-entropy 訓出來的 p θ ( x 0 ℓ ∣ x t ) p_\theta(x_0^\ell\mid x_t) p θ ( x 0 ℓ ∣ x t ) ,乘上 α t / ( 1 − α t ) \alpha_t/(1-\alpha_t) α t / ( 1 − α t ) ,就是 concrete score。 兩條路——SEDD 的 score entropy 與 MDLM 的加權 cross-entropy——在 absorbing 鏈上學的是同一組數字,差別只在 parametrization 與 loss 的形狀 [6, 7]。這是 U5.6 要實際驗證的事。
代回反向 rate(forward rate 是 β t = − α ˙ t / α t \beta_t=-\dot\alpha_t/\alpha_t β t = − α ˙ t / α t ):
R ˉ t ( [MASK] → v at ℓ ) = β t ⋅ α t 1 − α t p θ ( x 0 ℓ = v ∣ x t ) = − α ˙ t 1 − α t p θ ( x 0 ℓ = v ∣ x t ) . \bar R_t\big(\texttt{[MASK]}\to v\ \text{at }\ell\big)=\beta_t\cdot\frac{\alpha_t}{1-\alpha_t}\,p_\theta(x_0^\ell=v\mid x_t)=\frac{-\dot\alpha_t}{1-\alpha_t}\;p_\theta(x_0^\ell=v\mid x_t). R ˉ t ( [MASK] → v at ℓ ) = β t ⋅ 1 − α t α t p θ ( x 0 ℓ = v ∣ x t ) = 1 − α t − α ˙ t p θ ( x 0 ℓ = v ∣ x t ) .
一個被遮的位置以總 rate − α ˙ t 1 − α t \frac{-\dot\alpha_t}{1-\alpha_t} 1 − α t − α ˙ t 翻開,翻成哪個字按 p θ p_\theta p θ 抽——這正是 U4.2 那枚硬幣的連續時間版,翻開的機率 α ˉ t − 1 − α ˉ t 1 − α ˉ t \frac{\bar\alpha_{t-1}-\bar\alpha_t}{1-\bar\alpha_t} 1 − α ˉ t α ˉ t − 1 − α ˉ t 變成 rate 乘 d t dt d t 。上一個單元的取樣器一直是這條 CTMC,只是我們當時沒有語言把它寫出來。
對 uniform 鏈,同樣的計算會給出一個由 p ( x 0 ℓ ∣ x t ) p(x_0^\ell\mid x_t) p ( x 0 ℓ ∣ x t ) 決定、但形狀更複雜的比值(見 U5.6 作業);forward 因子化時,「比值」和「x 0 x_0 x 0 的逐位置 posterior」永遠是同一份資訊的兩種座標。
先消化一下
參考文獻
Lou, A., Meng, C., Ermon, S. Discrete Diffusion Modeling by Estimating the Ratios of the Data Distribution. ICML 2024.(SEDD:score entropy、denoising score entropy、likelihood bound、反向 rate 取樣。)
Meng, C., Choi, K., Song, J., Ermon, S. Concrete Score Matching: Generalized Score Matching for Discrete Data. NeurIPS 2022.(「concrete score」一詞與有限差分的觀點。)
Campbell, A., Benton, J., De Bortoli, V., Rainforth, T., Deligiannidis, G., Doucet, A. A Continuous Time Framework for Discrete Denoising Models. NeurIPS 2022.(CTMC 時間反轉的 rate 用在離散擴散上。)
Sun, H., Yu, L., Dai, B., Schuurmans, D., Dai, H. Score-based Continuous-time Discrete Diffusion Models. ICLR 2023.(以比值為目標的另一條獨立路線。)
Anderson, B. D. O. Reverse-time Diffusion Equation Models. Stochastic Processes and their Applications 12(3), 1982.(連續狀態的時間反轉。)
Ou, J., Nie, S., Xue, K., Zhu, F., Sun, J., Li, Z., Li, C. Your Absorbing Discrete Diffusion Secretly Models the Conditional Distributions of Clean Data. ICLR 2025.(absorbing 鏈上比值與 x 0 x_0 x 0 -posterior 的關係。)
Sahoo, S. S. et al. Simple and Effective Masked Diffusion Language Models. NeurIPS 2024.(SEDD 與 masked cross-entropy 的對照。)
Lai, C.-H., Song, Y., Kim, D., Mitsufuji, Y., Ermon, S. The Principles of Diffusion Models. 2025, Section 6.1.(把 KL/score/速度三個版本的 conditional trick 並排,本篇那張表的出處。)