離散資料的 diffusion:concrete score 與 score entropy
文字、DNA、蛋白質、分子都是離散的。GAN、flow、continuous diffusion 都依賴微積分,搬不過來,所以離散資料幾乎只剩 autoregressive model 可用。這講是老師實驗室的博士生 Aaron Lou 的客座演講,介紹他的 SEDD(Score Entropy Discrete Diffusion):把 score \(\nabla\log p\) 換成機率的比值 \(p(y)/p(x)\)(concrete score),用新的 score entropy loss 學它;把加雜訊換成連續時間 Markov 鏈(隨機換 token 或蓋成 MASK),倒轉時只需要這些比值。結果在 GPT-2 規模上,生成品質勝過 GPT-2、能從任意位置填空,perplexity 的上界也和 GPT-2 不相上下。
讀完這頁你應該能夠
- 說明為什麼 flow、GAN、「嵌入連續空間再 diffusion」對離散資料都不好用,以及 autoregressive model 的優缺點。
- 從有限差分推出 concrete score \([p(y)/p(x)]_y\),說明為什麼只取「只差一個位置」的鄰居,以及網路怎麼輸出它。
- 寫出 score entropy loss,證明它的最小值在 \(s = p(y)/p(x)\);推出 denoising score entropy,說明為什麼它可以計算。
- 用 \(\frac{dp_t}{dt} = Q_tp_t\) 描述離散的 diffusion,寫出 uniform 與 absorbing(MASK)兩種 \(Q\),以及反向的 \(\bar Q_t\) 只需要 concrete score。
- 說明 τ-leaping 為什麼能加速、代價是什麼;說明 SEDD 的 likelihood 上界與 perplexity 的結果。
前置知識檢查
- 第 3 講:autoregressive model 與鏈式法則。
- 第 13 講:score matching、implicit / denoising score matching(這講的每一步都有對應)。
- 第 14 講、第 16 講:前向 / 反向 diffusion、ELBO 形式的 likelihood 上界。
- 第 15 講:perplexity 與 likelihood。
投影片轉成圖片後逐頁看過。標「出處」的補充來自 Lou, Meng & Ermon,「Discrete Diffusion Modeling by Estimating the Ratios of the Data Distribution」(SEDD,arXiv 2310.16834,ICML 2024)的 TeX 原文;注意論文最終版的部分數字和上課時(2023 年 12 月)的投影片不同,本頁以投影片為主、另外註明。
01為什麼要處理離散資料(投影片 2–6)
生成模型的框架:資料 \(\{x_1,\dots,x_n\}\sim p_{\text{data}}\),學 \(p_\theta\approx p_{\text{data}}\),再用 \(p_\theta\) 生成。課程中 GAN、VAE、diffusion 的示意圖幾乎都是影像,這不是巧合:它們都建立在連續空間 \(\mathcal X = \mathbb R^d\) 上,任兩個樣本之間可以內插、中間的點也都是合法的影像。01:37
離散空間 \(\mathcal X = \{1,\dots,N\}^d\):\(\mathbf x = x^1\cdots x^d\) 是 token 序列(\(N\) 是字彙大小、\(d\) 是長度)。它是一個格子,只有格點是合法的樣本,格點之間、之外的點都沒有意義。02:41
- 語言:ChatGPT、Gemini、Llama 等大型語言模型;所謂 language model「pretraining」就是對網路規模的資料擬合一個離散的機率模型。04:13
- 自然科學:DNA、分子、蛋白質都是離散的,生成新的序列可能有很大的影響。05:17
- 連影像都回到離散:VQ-VAE / VQGAN(Stable Diffusion 的組件之一)中間是離散的潛在向量;Google 和 CMU 的 MAGVIT-v2 發現完全拋棄連續的潛在表示、只用離散的部分,結果反而更好。05:47
投影片 6 的圖:上面是 VQGAN 的架構:CNN Encoder 輸出 \(\hat z\),經過「\(\arg\min_{z_k\in\mathcal Z}\Vert\hat z - z_k\Vert\)」量化成一格一格的編號 \(z_q\),再由 CNN Decoder 重建,旁邊有 CNN Discriminator。下面是 MAGVIT-v2 的圖:橫軸是字彙大小 \(2^{10}\) 到 \(2^{16}\),「More Continuous」的 VQ(橘色)生成 FID 隨字彙變大反而變差,「More Discrete」的 LFQ(藍色)則持續變好。
02為什麼難:我們的模型太依賴微積分(投影片 7–11)
為什麼不直接把連續的模型改成輸出離散值?06:48
- Flow:連續時,可逆變換可以拉伸、壓縮空間,用變數變換公式 \(p_{\text{data}}(x) = p_{\text{base}}(f_\theta^{-1}(x))\,|\det J_{f_\theta^{-1}}(x)|\) 從簡單的基礎分佈得到複雜的分佈。離散時,雙射只是把格點重新排列,沒有 Jacobian 可以改變密度:\(p_{\text{data}}(x) = p_{\text{base}}(f_\theta^{-1}(x))\)。所以基礎分佈必須和資料分佈一樣複雜,等於沒有幫助。07:18
- GAN:生成器輸出離散值,判別器的梯度無法反向傳播穿過離散的輸出(第 17 講第二部分的問題)。08:24
- 嵌入連續空間:影像其實也是離散的(像素 0–255),做法是先用連續模型生成、再四捨五入到最近的整數。這行得通,因為 0–255 可以自然地嵌入數線,任何生成值都很容易捨入。但 token 沒有這種一維順序,嵌入通常是高維的;高維空間幾乎全是空的,生成點落在 token 之間時,捨入到最近的 token 就很沒道理。這是一種不好的歸納偏誤,難學。實際上把 token 嵌入連續空間再做 diffusion 的語言模型,比不上 autoregressive,而且非常慢:任何誤差都會讓你迷路。10:31
投影片 10–11 的圖:(10) 小人說「Let's just embed the tokens into a continuous space.」;影像的流程是雜訊 → \(f_\theta\) → 連續影像 → Discretize → 離散影像(一格格的像素值)。(11) 上面是 \([0,1,\dots,255]\) 和一條 0 到 10 的數線,三個綠色叉叉都落在整數附近,捨入很簡單;下面是 [The, times, worst, of, …]:二維平面上散布著幾個黑點(The、times、of、worst),綠色叉叉落在 token 旁邊,紅色叉叉落在空白處,不知道該捨入到哪個 token。
03目前唯一的好方法:autoregressive(投影片 12–15)
對語言來說就是「上文」(綠色)預測「下一個詞」(紫色)。13:34
- 可擴展:每一步只是 \(N\) 個值上的機率。
- 網路夠強,理論上能表示任何機率分佈。
- 對語言是合理的歸納偏誤(由左到右說話、書寫)。
- 取樣會漂移:誤差累積讓生成偏離軌道(Yann LeCun 的著名論點)。
- 對非語言任務(DNA)由左到右沒有道理。
- 架構受限(attention mask 必須是 causal)。
- 逐 token 生成,取樣慢。
換個角度:score matching(投影片 15)。直接建模 \(p_\theta(\mathbf x)\) 很難,因為要對指數多個序列加總為 1;為了避開這個限制才用 autoregressive 的分解。連續情形下,score matching 建模 \(\nabla_x\log p\),完全不必歸一化,和 diffusion 結合得很好。問題:能不能把 score matching 推廣到離散空間?17:38
大綱:(1) 離散空間上的 score matching;(2) 用「concrete score」取樣;(3) 評估生成過程的 likelihood(才能用 perplexity 和 autoregressive model 公平比較)。18:38
04Concrete score:離散空間的 score(投影片 18–20)
梯度在離散空間的自然推廣是有限差分:\(\nabla f(x)\equiv[f(y) - f(x)]_{y\text{ 是 }x\text{ 的鄰居}}\)。代入 score:19:38
- 和連續的 score 一樣,比值裡的歸一化常數抵消了,不需要知道 \(Z\)。
- 鄰居要選得夠局部:若 \(y\) 是任意其他序列,要建模 \(O(N^{2d})\) 個比值,不可能。只取「只差一個位置」的序列,\(\frac{p(x^1\cdots\hat x^i\cdots x^d)}{p(x^1\cdots x^i\cdots x^d)}\),只有 \(O(Nd)\) 個。(底下的推導都寫成一維,推廣很直接。)20:38
- 網路:輸入序列 \(x^1\cdots x^d\),經過一個 sequence-to-sequence 網路,每個位置輸出 \(N\) 個值:第 \(i\) 個位置的第 \(v\) 個值是「把第 \(i\) 個 token 換成 \(v\)」的比值。一次前向傳播就得到所有比值,就像非 causal 的 BERT 式 transformer。22:10
投影片 20 的圖:上方一排格子 \(x^1, x^2,\dots,x^d\),經過「Seq-to-Seq Neural Network」箭頭,下方是一個 \(N\times d\) 的格子矩陣;第 \(i\) 欄第 \(v\) 列寫著 \(\frac{p(x^1,\dots,v,\dots,x^d)}{p(x^1,\dots,x^d)}\)。
05Score entropy:學 concrete score 的 loss(投影片 21–27)
目標:學 \(s_\theta(x)_y\approx\frac{p(y)}{p(x)}\)。要有原則:不允許負值(比值一定是正的)、資料和容量足夠時要能還原真值。23:11
為什麼最小值在真值(投影片 22):對單一一對 \((x,y)\),令 \(r = p(y)/p(x)\),最小化 \(s - r\log s\):微分 \(1 - r/s = 0\Rightarrow s = r\)。二次微分 \(r/s^2>0\),是凸函數;\(s\to0\) 時 \(-r\log s\to\infty\),自然地把 \(s\) 擋在正數。每一對 \((x,y)\) 獨立地被最小化,所以全部學對就還原所有比值。24:12
和論文版本的差別:常數項 \(K\)、Bregman divergence、與 L2 的比較
論文的定義多了權重 \(w_{xy}\) 和一個常數 \(K(a) = a(\log a - 1)\):\(\mathbb E_{x\sim p}\sum_{y\ne x}w_{xy}\big(s_\theta(x)_y - \frac{p(y)}{p(x)}\log s_\theta(x)_y + K(\frac{p(y)}{p(x)})\big)\)。\(K\) 和 \(\theta\) 無關,只是讓 loss 在最佳解時等於 0、永遠非負。它其實是凸函數 \(F = -\log\) 的 Bregman divergence \(D_F(s, r)\),所以非負、凸,也是 cross entropy 推廣到任意正數(不只是機率單形)的版本,因此叫 score entropy。
直接推廣 score matching 的「concrete score matching」用 L2:\(\sum_y(s_\theta(x)_y - p(y)/p(x))^2\)。問題是 L2 允許 \(s<0\),而且對每一對的梯度尺度不對。論文指出 \(\nabla_s\mathcal L_{\text{SE}} = \frac1s\nabla_s\mathcal L_{\text{CSM}}\):score entropy 等於把 L2 的梯度除以 \(s\),形成一個自然的 log-barrier。Demo A 畫了兩者的比較。
出處:Lou, Meng & Ermon (2024) §3 Definition 3.1、Remark、Proposition 3.2 與其後的「Second」。
問題:loss 裡有未知的 \(p(y)/p(x)\)。兩種解法,對應連續情形的兩種 score matching:25:44
- Implicit score entropy(對應 implicit score matching):交換 \(x\) 和 \(y\) 的角色,\(\mathbb E_{x\sim p}\sum_{y\ne x}\frac{p(y)}{p(x)}\log s_\theta(x)_y = \sum_x\sum_{y\ne x}p(y)\log s_\theta(x)_y = \mathbb E_{y\sim p}\sum_{x\ne y}\log s_\theta(x)_y\),比值消失了。得到 \(\mathbb E_{x\sim p}\sum_{y\ne x}[s_\theta(x)_y - \log s_\theta(y)_x]\)。缺點:要對每個鄰居 \(y\) 都算一次 \(s_\theta(y)\),不可擴展(投影片 25)。課堂上沒有細講。
- Denoising score entropy(對應 denoising score matching):假設 \(p(x) = \sum_{x_0}p(x\mid x_0)p_0(x_0)\),是乾淨資料 \(p_0\) 經過一個加雜訊的轉移核 \(p(x\mid x_0)\) 得到的。
06離散的 diffusion:連續時間 Markov 鏈(投影片 29–35)
Diffusion 就是機率分佈的演化 \(p_0\to p_t\)。離散時 \(p_t\in\mathbb R^{|\mathcal X|}\) 是一個大向量(非負、加總為 1),用一個線性 ODE 演化:29:54
- \(Q_t\) 的每一行(column)加總為 0(總機率守恆),非對角元素 \(\ge0\)。\(Q_t(j,i)\) 是從狀態 \(i\) 跳到 \(j\) 的速率。上式的一階近似就是 Euler–Maruyama 的離散類比。30:24
- 例子(投影片 31):\(Q = \begin{bmatrix}-2&1&1\\1&-2&1\\1&1&-2\end{bmatrix}\),\(p = [0.5, 0.3, 0.2]^\top\) 時 \(Qp = [-0.5, 0.1, 0.4]^\top\):第一個狀態以 0.5 的速率失去質量,另外兩個得到 0.1 和 0.4,總和不變。(投影片 31 上半寫成 \(p = [0.5, 0.2, 0.3]\),那樣乘出來是 \([-0.5, 0.4, 0.1]\);應為 \([0.5, 0.3, 0.2]\),和同頁下半、投影片 38 一致。)31:26
- Noise schedule:\(Q_t = \sigma(t)Q\),線性 ODE 的解是 \(p_t = \exp(\bar\sigma(t)Q)\,p_0\),\(\bar\sigma(t) = \int_0^t\sigma(s)ds\);長時間的轉移機率就是這個矩陣指數的元素:\(p(x_t = j\mid x_0 = i) = \exp(\bar\sigma(t)Q)(j,i)\)。\(t\to\infty\) 時 \(p_t\to p_{\text{base}}\)。33:03
序列(投影片 34):讓整個序列直接跳到任何其他序列,\(Q\) 是 \(N^d\times N^d\),不可能。改成每個 token 用同一個 \(N\times N\) 矩陣獨立地擴散,轉移就分解成 \(p(y^1\cdots y^d\mid x^1\cdots x^d) = \prod_ip(y^i\mid x^i)\);任一瞬間只有一個 token 在變,正好對應「只差一個位置」的 concrete score。35:03
與 score entropy 結合(投影片 35):加上時間,學 \(s_\theta(x,t)_y\approx\frac{p_t(y)}{p_t(x)}\),用 denoising score entropy,其中 \(\frac{p_t(y\mid x_0)}{p_t(x\mid x_0)}\) 由 \(Q_t\) 決定(矩陣指數的元素)。36:05
Demo A連續時間 Markov 鏈,以及 score entropy 長什麼樣子
左:三個 token(加上 absorbing 時的 MASK),初始分佈 \(p_0 = [0.5, 0.3, 0.2]\)(投影片 31、38 的例子)。拖動 \(\bar\sigma\) 看 \(p_t = \exp(\bar\sigma Q)p_0\);讀數同時檢查前向速率 \(Qp_t\)、反向矩陣 \(\bar Q\)(§7)乘上 \(p_t\) 是否剛好是 \(-Qp_t\),以及 concrete score。右:對一個真實比值 \(r\),比較 score entropy \(s - r\log s + K(r)\) 和 L2 的 \((s - r)^2\)。
- Uniform:\(\bar\sigma\) 增加,三個 token 趨向各 1/3;absorbing:所有質量流向 MASK,各 token 之間的相對比例 \(0.5 : 0.3 : 0.2\) 保持不變(每個 token 以同樣速率被蓋掉)。
- \(\bar\sigma = 0\) 時讀數重現投影片 38:\(Qp = [-0.5, 0.1, 0.4]\)、\(\bar Qp = [0.5, -0.1, -0.4]\)。在任何 \(\bar\sigma\),\(\bar Qp_t = -Qp_t\):反向過程正好把前向的變化倒回去。
- 右圖:\(r = 0.2\) 對應投影片 22 的圖。兩條曲線都在 \(s = r\) 取到最小值 0,但 L2 在 \(s<0\) 也有定義(允許負的比值),score entropy 在 \(s\to0\) 時趨於無窮,自然地把 \(s\) 擋在正數。
07倒轉 Markov 鏈與取樣(投影片 36–41)
從 \(p_0\approx p_{\text{data}}\) 擴散到 \(p_T\approx p_{\text{base}}\),能不能倒回去?可以:反向過程也是一個 CTMC,36:35
對角元素取成讓每一行加總為 0。反向速率裡出現的正是 concrete score \(p_t(j)/p_t(i)\),和連續情形反向 SDE 裡出現 \(\nabla\log p_t\) 完全對應。用學到的網路代入:\(\bar Q_t(j,i)\approx s_\theta(i,t)_j\,Q_t(i,j)\)。在狀態 \(i\) 時,一次前向傳播 \(s_\theta(i,t)\) 就得到跳到所有 \(j\) 的速率,可以平行地決定要跳到哪裡。(投影片 37 第一行寫成 \(\bar Q_t(i,j) = \frac{p_t(j)}{p_t(i)}Q_t(j,i)\),兩個 \(Q\) 的下標都寫反了;應為 \(\bar Q_t(j,i) = \frac{p_t(j)}{p_t(i)}Q_t(i,j)\),和投影片 36、同頁第二行一致。)38:36
投影片 38–39:(38) 投影片 31 的 \(Q\) 和 \(p = [0.5, 0.3, 0.2]\),以及對應的反向矩陣 \(\begin{bmatrix}-1&5/3&5/2\\3/5&-7/3&3/2\\2/5&2/3&-4\end{bmatrix}\),乘上 \(p\) 得 \([0.5, -0.1, -0.4]\),正好是前向速率的相反。(39) 兩個動畫:uniform 時一串隨機的詞「study ants bear burrito Stanford song」逐漸變成句子;absorbing 時「MASK MASK MASK MASK MASK MASK」逐個被填上。
加速:一次跳很多步(投影片 40)
問題:反向過程裡,一次只能改一個 token(只能跳到只差一個位置的序列),要一個位置一個位置地慢慢改,很慢。解法是「作弊」:一個取樣步裡允許多個位置同時跳,例如「It was the MASK of MASK」一步變成「It was the best of times」。40:40 課後問答裡補充:這在化學動力學的文獻裡叫 τ-leaping,步長夠小時,各位置的變化近似條件獨立(前提是比值在這一步內變化不大)。55:10
τ-leaping 的具體形式與「Tweedie τ-leaping」
給定 \(\mathbf x_t\),對每個位置 \(i\) 獨立地從 \(\delta_{x_t^i}(\cdot) + \Delta t\,Q_t^{\text{tok}}(x_t^i,\cdot)\,s_\theta(\mathbf x_t,t)_{i,\cdot}\) 抽 \(x_{t-\Delta t}^i\)。它不知道 \(s_\theta\) 近似的是真正的比值。論文另外提出 Tweedie τ-leaping:利用「知道所有比值就能做最佳去雜訊」(離散版的 Tweedie 定理),把每個位置的轉移機率換成 \(\big(\exp(-\Delta\bar\sigma\,Q)\,s_\theta(\mathbf x_t,t)_i\big)_v\exp(\Delta\bar\sigma\,Q)(x_t^i,v)\)。若 \(s_\theta\) 完美,它在所有「各位置獨立、同時更新」的策略中,和真正的反向一步 KL 最小。實驗中比 Euler 好 1–4 個 perplexity 點。
對 absorbing 擴散,它的意思很直觀:每個仍是 MASK 的位置,以「這一步該被揭開的機率」揭開,揭開成哪個 token 則依比 \(s_\theta(\mathbf x_t,t)_{i,v}\) 正規化後的分佈。Demo B 就是這樣取樣的。
出處:Lou, Meng & Ermon (2024) §4.1 式 (17)–(19)、Theorem 4.1–4.2、附錄 B(取樣演算法)、附錄 C.7(比 Euler 好 1–4 個 perplexity 點)。
- 從資料分佈取得樣本。
- 定義前向擴散過程(uniform、mask,或更特別的)。
- 用 score entropy 學比值。
- 用比值倒轉擴散過程(可能加上離散化以加速)。41:42
08結果:品質、速度、從任意位置填空(投影片 42–44)
模型叫 SEDD(Score Entropy Discrete Diffusion),兩個版本:SEDD Absorb(擴散到 MASK)和 SEDD Uniform(換成隨機 token)。在 GPT-2 等級的資料集(OpenWebText)和模型大小(small 約 1 億、medium 約 4 億參數)上比較;用 GPT-2 是因為 GPT-3/4 太大、資料集也不公開。42:42
- 樣本(投影片 42):一段 GPT-2 等級的無條件生成,關於 Secret Service 的軟體授權,語句通順,整體算連貫。
- 生成品質 vs 步數(投影片 43):用更大的 GPT-2 large 評估生成序列的 perplexity(generative perplexity,越低越好)。GPT-2 生成 1,024 個 token 要 1,024 次網路計算,品質不怎麼好。SEDD 只用 64 步(大量同時跳)就和 GPT-2 相當;把步數加到 1,024 或 2,048,品質以 log-log 線性的方式持續變好。論文的說法:用 32 倍少的網路計算就能匹敵 GPT-2,用滿 2,048 步時好 6–8 倍;比較時兩者都不做 temperature 等「退火」。43:15
- 從任意位置 prompt(投影片 44):給定散落在任何位置的提示文字(藍色),只生成其他位置、不動提示。這在數學上是有原則的條件取樣,autoregressive model 做不到(它只能從左邊接下去)。45:48
投影片 43 的圖:左邊三段樣本(GPT-2、SEDD-A、SEDD-U);右邊「Generative Perplexity vs Iterations」的 log-log 圖:藍色 SEDD-A Small、橘色 SEDD-A Medium 兩條線從左上往右下降,星號是 GPT-2 Small / Medium(在 1,024 步的位置,高得多)。投影片 44:四段文字,藍色的提示片段分別在開頭、中間(兩段)、結尾,模型把其餘部分填滿。
09Likelihood 與 perplexity(投影片 46–48)
語言模型的標準指標是 perplexity:\(\mathrm{PPL}(\mathbf x) = e^{-\frac1d\log p_\theta(x^1\cdots x^d)}\)。它是衡量模型能力的有原則的方法(測試集上低 perplexity 代表泛化、壓縮得好),autoregressive model 可以直接算,而且訓練目標(cross entropy)就是在最佳化它。47:21
SEDD 不能直接算 \(p_\theta\),但在溫和的條件下(基礎分佈、擴散時間夠長)有上界:48:23
右邊正是加權的 denoising score entropy(權重 \(Q_t(x_t,y)\),常數 \(C\) 事先已知),也就是 VAE 的 ELBO(前向擴散是編碼器、學到的反向擴散是解碼器)。所以可以直接用這個 likelihood 上界訓練,也得到 perplexity 的上界 \(\mathrm{PPL}(\mathbf x)\le\exp\big(\frac1d(\mathrm{DSE}(\mathbf x) + C)\big)\)。(投影片 47 寫成 \(e^{-\frac1d\mathrm{DSE}}\),負號應是筆誤:DSE 是 \(-\log p\) 的上界,指數應為正。)49:27
| Zero-shot perplexity ↓(投影片 48) | LAMBADA | WikiText2 | PTB | WikiText103 | 1BW |
|---|---|---|---|---|---|
| GPT-2 small | 45.04 | 42.43 | 138.43 | 41.60 | 75.20* |
| SEDD-small Absorb | ≤52.21 | ≤44.75 | ≤130.49 | ≤43.14 | ≤80.70 |
| SEDD-small Uniform | ≤66.94 | ≤55.88 | ≤144.88 | ≤53.90 | ≤100.86 |
| GPT-2 medium | 35.66 | 31.80 | 123.14 | 31.39 | 55.72* |
| SEDD-medium Absorb | ≤44.60 | ≤34.85 | ≤93.26 | ≤32.97 | ≤67.91 |
| SEDD-medium Uniform | ≤51.14 | ≤39.79 | ≤100.58 | ≤37.69 | ≤79.26 |
- 粗體是最好的;底線表示在最好值的 +10% 以內(因為 SEDD 只報告上界,真正的值更低)。GPT-2 通常最好,但 SEDD Absorb 非常接近;在 PTB 上更明顯勝出。50:00
- SEDD Uniform 一致地比 Absorb 差:隨機換詞會產生不通順的序列,蓋成 MASK 的序列仍然「合理」,只要能把 MASK 填回來。57:47
- 結論:第一次在 GPT-2 這種夠大的規模上,非 autoregressive 的模型在生成品質和 perplexity 上都挑戰了 autoregressive model 的主導地位。
論文最終版(ICML 2024,Table 1)的數字有更新,例如 SEDD-small Absorb:LAMBADA ≤50.92、WikiText2 ≤41.84、PTB ≤114.24、WikiText103 ≤40.62、1BW ≤79.29,在 WikiText2、PTB、WikiText103 上都勝過 GPT-2 small;同表也列出 D3PM(≤77.28 等)和連續 diffusion 的 PLAID,SEDD 比既有的語言 diffusion model 好 25–75%。
Masked(absorbing)擴散的 score entropy,其實是加權的 cross entropy
考慮 absorbing 擴散、log-linear schedule:時間 \(t\in[0,1]\) 時每個 token 被蓋掉的機率是 \(t\)(略去小的 \(\epsilon\))。對仍是 MASK 的位置 \(i\),把 MASK 換成 token \(v\) 的比值,若模型完美,可以算出等於「揭開機率比」乘上「給定可見 token 時 \(v\) 的條件機率」:
若照這個形式參數化 \(s_\theta = \frac{1-t}{t}q_\theta(v\mid\mathbf x_t)\)(\(q_\theta\) 是 softmax),代入加權的 denoising score entropy 化簡,與 \(\theta\) 有關的部分只剩
也就是「隨機蓋掉一部分 token、預測被蓋掉的 token」的 cross entropy,以 \(1/t\) 加權,很像 BERT 的 masked language modeling。若 \(q_\theta\) 是真正的條件分佈,這個上界恰好等於 \(-\log p(\mathbf x_0)\):它等於對所有生成順序平均的 autoregressive 負 log-likelihood(any-order autoregressive)。SEDD 論文在 absorbing 情形就用了這個縮放技巧;後續的 MDLM(Sahoo et al. 2024)和 RADD(Ou et al. 2024)把這個關係寫得更明白。Demo B 用的正是這個 loss。
出處:Sahoo et al. (2024), "Simple and Effective Masked Diffusion Language Models", arXiv 2406.07524;Ou et al. (2024), "Your Absorbing Discrete Diffusion Secretly Models the Conditional Distributions of Clean Data", arXiv 2406.03736。推導為本頁整理。
Demo B在瀏覽器裡訓練一個 masked SEDD
資料:長度 8、字母只有 a–f 的「hexspeak」單字,6 個,各有機率:deadbeef 0.30、facefeed 0.20、baddecaf 0.15、cafebabe 0.15、beefcafe 0.10、acedfade 0.10。資料的熵是 1.713 nats。模型:非 causal 的 MLP(輸入是 8 個位置的 one-hot,含 MASK,再加上 \(t\);輸出每個位置 6 個字母的 logits),用上面的 \(1/t\) 加權 cross entropy(= absorbing 的 denoising score entropy)訓練 2,500 步。取樣:從全 MASK 開始,用 \(S\) 個 Tweedie τ-leaping 步把 MASK 揭開。
- 步數:1 步時 8 個位置同時、獨立地揭開,得到的是各位置邊際分佈的乘積,幾乎都是不存在的組合(例如 faadbeef、deadfeef),合法比例只有 0.2%。步數增加,同一步揭開的位置變少,合法比例上升:瀏覽器實測 2 步 14%、4 步 44%、8 步 65%、16 步 82%、64 步 93%。這就是投影片 40 的「一次跳很多步」的代價,也是投影片 43 的品質–步數取捨。
- 機率:64 步時 deadbeef 31%、facefeed 19%、cafebabe 13%、baddecaf 12%、beefcafe 10%、acedfade 9%,接近資料的比例:模型學到的是分佈,不只是單字列表。
- 上界:訓練後估計的 \(-\log p\) 上界約 1.72 nats,比真正的熵 1.713 稍高,符合「上界」。
- 填空:「cafe____」200 次全是 cafebabe,「____feed」全是 facefeed,「__ad____」全是 deadbeef。「_a______」有三個單字符合(facefeed、cafebabe、baddecaf),實測約 69 : 53 : 37,大致依它們的機率 0.20 : 0.15 : 0.15 分配,也有少數不存在的組合。這就是 autoregressive model 做不到的任意位置 prompt。
10課後問答
- 離散空間很難建立機率模型,基本上只有 autoregressive 這一條路。
- Score-based model 可以推廣到離散空間:建模資料分佈的比值(concrete score),最佳化 score entropy(及其 denoising / implicit 版本)。
- 用離散的擴散過程取樣:和 denoising score entropy 天然契合;快、可控制;生成品質勝過 autoregressive。
- Score entropy 構成 likelihood 上界,在 perplexity 上挑戰 autoregressive 的主導地位。51:35
整門課的地圖
這是最後一講。把 18 講串起來:每種模型家族怎麼表示分佈、用什麼距離訓練、怎麼取樣、能不能算 likelihood。
| 家族(講次) | 表示什麼 | 訓練目標 | 取樣 | Likelihood |
|---|---|---|---|---|
| Autoregressive(3) | 條件機率鏈 | MLE(KL) | 逐 token,慢 | 精確 |
| VAE(5–6) | 潛在變數 + 解碼器 | ELBO | 一次前向 | 下界(AIS 估計,第 15 講) |
| Normalizing flow(7–8) | 可逆變換 | MLE(變數變換) | 一次前向 | 精確 |
| GAN(9–10) | 取樣程序 | two-sample test:JS、f-divergence、Wasserstein | 一次前向 | 無 |
| EBM(11–12) | 未歸一化的能量 | contrastive divergence、score matching、NCE | MCMC,慢 | 需要 \(Z\) |
| Score / diffusion(13–17) | score \(\nabla\log p_t\) | DSM(= ELBO 的加權版) | SDE / ODE,可加速、可蒸餾 | ODE 精確 / ELBO 上界 |
| Discrete diffusion(18) | concrete score \(p(y)/p(x)\) | score entropy(= ELBO) | 反向 CTMC,τ-leaping | 上界 |
完整的 18 講目錄:CS236 複習目錄。
常見誤解
自我測驗
1. 為什麼離散的 normalizing flow 沒有用?
2. 影像為什麼可以「先連續生成再捨入」,token 卻不行?
3. 從有限差分推出 concrete score。
4. 為什麼只取只差一個位置的鄰居?有幾個比值?
5. 證明 \(s - r\log s\) 的最小值在 \(s = r\),並說明為什麼它比 L2 好。
6. 寫出 denoising score entropy。為什麼它能算?
7. CTMC 的 \(Q\) 要滿足哪兩個條件?\(Q(j,i)\) 是什麼意思?
8. Uniform 和 absorbing 的 \(Q\) 各會擴散到什麼分佈?
9. 寫出反向 CTMC 的速率。它和連續的反向 SDE 有什麼對應?
10. 對 \(Q\) 和 \(p = [0.5,0.3,0.2]\) 驗證 \(\bar Qp = -Qp\)。
11. τ-leaping 是什麼?代價是什麼?
12. SEDD 的 perplexity 為什麼是上界?Absorb 為什麼比 Uniform 好?
延伸閱讀
- Lou, Meng & Ermon (2024), Discrete Diffusion Modeling by Estimating the Ratios of the Data Distribution (SEDD)(本頁參考,ICML 2024)。
- Austin et al. (2021), Structured Denoising Diffusion Models in Discrete State-Spaces (D3PM):離散時間的離散 diffusion。
- Campbell et al. (2022), A Continuous Time Framework for Discrete Denoising Models:CTMC 與 τ-leaping。
- Sahoo et al. (2024), MDLM;Ou et al. (2024), RADD:masked diffusion 的簡化與 cross-entropy 形式。
- Aaron Lou 的部落格:Language Modeling by Estimating the Ratios of the Data Distribution。