U5.3 Remasking:取樣器多一條管子
本篇重用M4.2電話隨時會響:Continuous-Time Markov Chain 與 Rate Matrix·M4.3影片倒著播看得出來嗎:Time Reversal 與比值·M3.3山谷裡隨機走的人群:Langevin Dynamics 與 Stationary Distribution
「翻開就固定」在 rate 的語言裡,是一根流量為零的管子。
把那個閥門打開一點,會壞掉什麼?
先把反向鏈畫出來
上一篇算出 absorbing 鏈的反向 rate。固定一個位置 ,反向鏈(時間從 1 走回 0)只有一種管子:從 [MASK] 流向某個字 ,rate 是
是「一個被遮位置每單位時間翻開的比例」,翻成哪個字按 分配。從字回到 [MASK] 的管子不存在——forward 沒有 [MASK]→字的流量,反向就沒有字→[MASK] 的流量。這就是「翻開就固定」在 rate 語言裡的樣子:不是規定,是一根 rate 為零的管子。
U5.0 的提議是:把這根管子的閥門打開一點。 現在可以精確地說它是什麼——對每個已翻開的位置,加一條回到 [MASK] 的管子,rate 記成 ,單位 1/時間。這叫 remasking。
符號這一篇借走了兩個字母:u 與 sigma
只做這一件事會壞掉一樣東西。反向鏈的邊際本來沿著 forward 的 往回走(上一篇的驗證);多一條把質量倒回 [MASK] 的管子,[MASK] 的比例會比 高, 的分佈變了,網路面對的是它沒訓過的輸入。U5.0 的第 2 個小問題——會不會動到邊際——現在有了正面的答案:會。但也有補救。
課堂提問Q1
在 absorbing 的反向鏈上加一條「回到 [MASK]」的 rate 。這對應 U3.1 那一族取樣器裡的哪個旋鈕? 順著那個對應,能不能推出「加了 但邊際 不變」的條件?
先想一想,再展開看整理後的答案
常見的答案會先分成「訓練時的 」與「取樣時的 」兩種,也有一種說法是「這是把 absorbing 變成 uniform」。第三個答案值得先處理:uniform 的修正能力來自 forward chain——訓練時 裡就有被換掉的字,模型學的是「哪些字是噪聲」;remasking 沒有動 forward,訓練分佈裡從來沒有「被重遮的字」這種東西,所以它不是 uniform。
答案是 :取樣器的噪聲。 對照 U3.1 那一族
那兩項是一組: 把樣本往外推(加噪聲), 把它沿 score 拉回來;用 Fokker–Planck 驗證,兩項對邊際的淨效果為零。remasking 是同一個結構: 把已翻開的字推回 [MASK](加噪聲),要補一個把它再翻開的流量(拉回),兩者對邊際的淨效果為零。
推條件的方法也和那裡一樣:寫下邊際的方程式、要求它不變。固定位置 ,令 (它就是 forward 給的邊際,也是我們要守住的東西)。反向鏈往回走時(用 當往回走的時間),[MASK] 比例的變化率是流出減流入:
是(可能需要調整的)翻開 rate,第二項是已翻開的字(比例 )以 rate 回來。沒有 remasking 時 、,這條式子給的正是 ,也就是 forward 邊際倒著走。要邊際不變,右邊必須等於原來的 :
讀法:倒回 [MASK] 的流量 ,必須由多翻開的流量 一比一補回來。 兩條管子的流量相等、方向相反,邊際一格都不動。
還有一個條件藏在「翻開時填什麼字」裡:多翻開的那部分也要按 填。這樣才能保證不只 [MASK] 的比例不變,翻開的字在給定其他位置下的分佈也不變(Details 有論證)。而 正是訓好的網路——訓練端什麼都不用改。這就是 那個旋鈕的全部性質:只動取樣器、邊際不變、共用網路。
展開細節為什麼整句的 joint 邊際也不變,不只是每個位置的 [MASK] 比例
把整句的反向鏈寫成 CTMC,狀態是整個 。原本的反向 generator 滿足 (上一篇的驗證)。remasking 版本的 generator 是 ,其中 包含兩類非對角元素:(a) 對每個已翻開的位置 , 的 rate ;(b) 對每個被遮的位置 , 的額外 rate 。要證明 ,也就是 (a) 與 (b) 的流量在每個狀態上抵消。
看任一個「位置 被遮」的狀態 與它「位置 是字 」的鄰居 。(a) 從 流到 的流量是 ;(b) 從 流到 的流量是 。上一篇算過 ,所以兩股流量逐對相等。每一對鄰居之間的淨流量為零,,於是 。✓
這個論證要求 (a) 的 rate 不依賴被重遮的是哪個字(否則 端的流量會隨 變,無法與 (b) 逐對相等)。「按信心低的字優先重遮」這種 heuristic(MaskGIT [4] 式)就違反了這一點——它有用,但邊際會偏,不在這一族裡。ReMDM [1] 討論了幾種 的 schedule(依 變、依信心變),並指出哪些保持邊際、哪些不。
也注意 (b) 的形狀:它就是原本的翻開 rate 乘上一個常數 ,所以實作上只是把翻開的 rate 整體放大,不需要任何新的網路輸出。
這條管子要付什麼?
有了對應,U3.1 與 U3.2 對 說過的每一句話都可以直接搬過來。
修正的機制。 一個在早期翻錯的字,以 rate 有機會被遮回去;重新翻開時,網路看到的 context 比第一次完整, 更準。這正是 Langevin 項「偏離的樣本被 score 拉回 」的離散版——不同的是這裡沒有「偏離多遠」的度量,只有「對或錯」,修正是離散的。
每一步多出來的誤差。 的 SDE 每步注入 的噪聲,離散化後這本身是誤差來源。remasking 也一樣,而且有兩個來源:(1) 每次重翻開都要再呼叫一次網路,網路的誤差再進來一次;(2) 用有限的 走時,一步內同時重翻開的多個位置之間是獨立抽的——U4.3 的因子化誤差在每次重填時都會再付一次。 越大、 越大,這兩項越大。
划不划算,取決於現在最大的誤差是哪一種。 下面的 demo 量的是一個乾淨的 toy——網路是查表算出來的、沒有誤差,所以唯一的誤差來源是「一步翻開太多格」的因子化誤差(U4.3)。在那個設定下,步數少的時候 反而有用( 的切換率從 0.14–0.15 掉到 0.13 左右),因為 remasking 等於拿預算去換 context;步數多的時候一點空間也沒有(、 本來就已經貼在資料的 0.10)。
這和「連續世界步數多時 SDE 佔優」的圖像不一樣,差別在誤差的來源。ReMDM [1] 把他們看到的現象叫 inference-time scaling:同一個訓好的 masked diffusion 模型,多花取樣預算、開 ,品質會繼續上升。那是在真實語言模型上量的——純 absorbing 在步數超過序列長度之後就飽和了(每步翻開不到一個字,再多步也沒有東西可改),而剩下的誤差是網路在 context 不完整時猜錯,那正是 remasking 修得動的東西。乾淨 toy 上沒有那一項,所以看不到同一條曲線。
該怎麼隨 變是開放問題,和 一樣;常見做法是在中段較大——那裡翻開的字多、context 又還不完整,錯誤最多也最值得修。
互動 demo: 到底幫不幫得上忙。 資料是 Markov toy(、相鄰格以 0.9 相同,切換率真值 0.10), 用前向後向精確算;橫軸是常數 remasking 強度 、縱軸是樣本的切換率,三條線是三種步數。 那一端就是上一個單元的 masked diffusion: 約 0.14–0.15, 與 已經貼在 0.10。往右推 ,只有 明顯下降(到 0.13 左右,最佳 落在 0.25~1),另兩條沒有空間。每個點只有 300 條樣本,數字每次跑都會動一點,要看的是三條線的高低關係。另外兩個開關:「中段較大」的鐘形 與「有誤差的網路」——後者的結果寫在下面那則補充裡。邊際不變這件事 demo 沒有畫,U5.6 的第一題就是實際去量它。
補充remasking 修得動哪一種錯,修不動哪一種
demo 裡有一個「有誤差的網路」開關(把 往均勻分布拉 0.1)。打開它,三條線整體往上抬,而且 補不回來:最佳 常常就是 0。
理由是重填的時候用的還是同一個偏掉的網路。remasking 給的好處只有一個——第二次填的時候 context 比第一次完整。所以它修得動「因為旁邊還是 [MASK],所以猜錯」這一種錯(U4.3 的因子化誤差就屬於這一類),修不動「網路對這個 context 本來就估偏了」那一種。 在連續世界也是這樣:Langevin 項把樣本拉回 ,但那個 是網路認為的 。
兩個旋鈕,現在分開了
U4.4 把 absorbing / uniform 對到 ODE / SDE,並說這個對應「不完全」——uniform 的代價是每步都要重新判斷什麼是噪聲,而且這個代價不隨步數變小。現在可以說清楚為什麼不完全:uniform 的修正能力是訓練噪聲(forward chain 裡的隨機替換),remasking 的修正能力是取樣噪聲(反向鏈裡的 )。U3.1 的 Q1 說這是兩個獨立的旋鈕:訓練噪聲決定 長什麼樣、以及你能學到什麼;取樣噪聲決定你怎麼走。而取樣噪聲正是這門課數到現在的第五個旋鈕——U2.0 的起點、路徑、配對三個都在 forward process 裡,U2.4 的加權在訓練端, 是第一個完全不碰訓練的。remasking 就是它的離散版。
在連續世界裡 diffusion 的 Gaussian noise 同時扮演了兩個角色(起點分佈是 Gaussian、天然有 score),所以旋鈕分不分開不那麼顯眼。在離散世界裡兩者的差別很明顯:uniform 把噪聲放進訓練分佈,模型必須學會分辨噪聲字(context 不乾淨);remasking 把噪聲放進取樣器,訓練分佈裡只有 [MASK](context 乾淨),而修正能力照樣有。U4.4 的問題「能不能兩個都要」,答案是可以,而且理由就是兩個旋鈕本來就是分開的。
同樣的旋鈕在其他語言裡也出現:Campbell et al. [2] 在 discrete flow matching 的取樣器裡加一個「stochasticity」參數 ,做法是把 forward rate 與它的反向配對加進生成 rate(一對流量相反、淨效果為零的管子)——與這裡的 是同一個構造;Gat et al. [3] 的 corrector sampling 亦然。下一篇會看到這些名字之間的關係。
先消化一下
參考文獻
- Wang, G., Schiff, Y., Sahoo, S. S., Kuleshov, V. Remasking Discrete Diffusion Models with Inference-Time Scaling. 2025.(ReMDM:一族保持邊際的 remasking 取樣器、 的 schedule、inference-time scaling。)
- Campbell, A., Yim, J., Barzilay, R., Rainforth, T., Jaakkola, T. Generative Flows on Discrete State-Spaces: Enabling Multimodal Flows and Applications to Protein Co-Design. ICML 2024.(取樣器的 stochasticity 參數 :同一個構造。)
- Gat, I., Remez, T., Shaul, N., Kreuk, F., Chen, R. T. Q., Synnaeve, G., Adi, Y., Lipman, Y. Discrete Flow Matching. NeurIPS 2024.(corrector sampling。)
- Chang, H., Zhang, H., Jiang, L., Liu, C., Freeman, W. T. MaskGIT: Masked Generative Image Transformer. CVPR 2022.(依信心重遮的 heuristic;不保持邊際。)
- Campbell, A., Benton, J., De Bortoli, V., Rainforth, T., Deligiannidis, G., Doucet, A. A Continuous Time Framework for Discrete Denoising Models. NeurIPS 2022.(連續時間反向鏈與 predictor–corrector 取樣。)