擴散語言模型總是均勻發力,華為諾亞教它「抓重點」

擴散語言模型總是均勻發力,華為諾亞教它「抓重點」

文章圖片

擴散語言模型總是均勻發力,華為諾亞教它「抓重點」

文章圖片

擴散語言模型總是均勻發力,華為諾亞教它「抓重點」

文章圖片

擴散語言模型總是均勻發力,華為諾亞教它「抓重點」


機器之心編輯部
這兩年 , 擴散語言模型(Diffusion LLM)一直是個很有討論度的方向 。
和傳統自回歸模型不同 , 擴散模型不是嚴格按從左到右一個 token 一個 token 往外吐 , 它在生成方式上更靈活 , 也天然更適合并行建模 。 可問題也一直擺在那里:這條路很有潛力 , 但真正把效果做上去并不容易 。
最近有一篇來自華為諾亞方舟實驗室的工作 , 探究了擴散模型訓練中的 “默認設置” 。 論文標題叫 Mask Is What DLLM Needs: A Masked Data Training Paradigm for Diffusion LLMs 。 作者沒有先去改模型結構 , 而是把目光放回了訓練過程里一個看起來很基礎、但其實一直被默認接受的設定:masking 到底該怎么做 。

論文鏈接:https://arxiv.org/abs/2603.15803 數據集鏈接:https://huggingface.co/datasets/malr07/opc-sft-stage2-dense-extracted這篇文章給出的判斷是 , 現有很多離散擴散語言模型在訓練時采用的均勻隨機 masking , 其實有點 “平均用力” 了 。
這個問題在一般文本里可能還沒那么明顯 , 但到了代碼和數學推理任務上 , 就會變得很突出 。 因為這類數據里 , 真正決定模型能不能做對的 , 往往只是少數幾個關鍵位置:在代碼任務里 , 可能是關鍵的分支條件、判斷邏輯;在數學里 , 可能是關鍵的化簡步驟、函數替換 , 這些東西顯然比連接詞或者格式內容更重要 。 事實上 , 真實序列里的信息密度本來就不是均勻分布的 , 而傳統隨機 masking 卻默認每個位置都差不多 , 這會被動地讓模型把不少優化資源花在不那么關鍵的地方 。
說白了 , 就是模型學的時候沒太分清主次 , 所有東西都一樣對待了 。
不是所有 token 都一樣重要
這篇工作的核心想法其實一句話就能概括:
既然不同 token 的信息量不一樣 , 那訓練時就不該對它們一視同仁 。
圍繞這個想法 , 作者提出了一個更加 Smart(Input Information Density Aware)的 Noise Scheduler 。 它做了一件很簡單且直觀的事情:先想辦法把樣本里那些 “信息密度高” 的位置找出來 , 然后在訓練時更優先地 mask 掉這些位置 , 逼著模型去學會恢復真正關鍵的部分 。
這套做法背后的直覺其實很自然 , 人做完形填空的時候 , 也不會覺得補一個逗號和補一句關鍵結論的難度是一樣的 。 真正能拉開差距的 , 通常就是那些牽一發而動全身的地方 。 論文里也提到 , 這種設計的直覺和人類的挖空練習很接近:更高效的學習 , 往往不是去恢復冗余內容 , 而是去恢復核心概念 。

先找 “重點” , 再決定怎么 mask
具體做法上 , 作者先做了一步高信息密度區域提?。 ⊿tep 1) 。

對于代碼數據和數學數據 , 作者設計了一些不同的 criteria 。 將數據中的關鍵信息區域提取出來之后 , 這些區域會在原始序列中被高亮標記出來 , 后面訓練時的噪聲調度就會參考這些特殊標記 。
接下來進入真正的 masking 階段(Step 2) 。 和傳統做法不同 , 這里不是所有位置都按同樣概率被 mask 。 作者把序列分成兩類:一類是優先區域 , 也就是那些信息密度高的 token;另一類是普通區域 。 前者會被賦予更高的 mask 概率 , 后者保持較低概率 。 與此同時 , 整體的 mask 比例仍然會被控制住 , 不會因為 “偏心” 了某些位置就把整個噪聲調度搞亂 。
這個設計最關鍵的一點在于 , 它不是單純 “多遮一點” , 而是把訓練難點往真正值得學的地方推 。 模型被反復要求補全的 , 不再只是隨機缺失的內容 , 而是那些決定代碼是否成立、推理是否走通的關鍵片段 。
另一個小巧思:一條數據 , 兩種學法
如果只是優先 mask 掉高信息區域 , 很容易讓人擔心另一個問題:模型會不會變得更會 “做題” , 但對語言結構本身?
所以這里引入了擴散模型訓練中常用的 Complementary Masking 。
思路是:對同一條樣本 , Trainer 不只根據前文的 token-level 優先標記構造一個 priority mask , 還會構造它的完全邏輯互補版本 。 也就是說 , 一份樣本會變成兩種互補的訓練視角:一種把重點放在邏輯骨架上 , 另一種則更多保留這些關鍵位置 , 轉而讓模型去處理結構、語法和上下文連貫性 。
這種將互補掩碼與優先級掩碼結合的設計得到了一種 1+12 的效果 , 因為它沒有把問題簡化成 “只要盯住重點就行” , 而是承認:語言模型最終還是既要會推理 , 也得會組織語言 。 前一種視角更像是在逼模型抓住關鍵邏輯 , 后一種視角則是在防止它把句子寫散、把上下文關系學丟 。 論文把這種效果稱為一種基于信息密度的 decoupling , 本質上是在把一條訓練樣本里的不同學習目標拆開 。
改改噪聲調度就能直接提點
實驗部分 , 作者使用 LLaDA-2.0-mini 作為基礎模型 , 在代碼和數學數據上進行訓練 , 最后在 HumanEval、MBPP、GSM8K、MATH500 四個 benchmark 上做評測 。 結果顯示 , 相比標準的隨機 masking baseline , 這套方法的平均成績提升了大約 4% 。

這個幅度不屬于那種一眼看上去特別炸裂的數字 , 但放在這里其實挺有說服力 。 原因在于 , 這項工作并沒有去改 backbone , 也沒有上特別重的額外模塊 , 它動的是訓練范式本身 , 兩個數字之間唯一的差異只有噪聲調度 。 換句話說 , 它不是靠 “再堆一點結構” 把結果抬上去 , 而是證明了只要訓練信號分配得更合理 , 擴散模型本身還有不少潛力沒被用出來 。
有個消融結果很值得注意:不是越狠越好
【擴散語言模型總是均勻發力,華為諾亞教它「抓重點」】論文里另一個有啟發性的部分 , 其實是關于 hard masking 和 soft masking 的比較 。
直覺上你可能會覺得 , 既然高信息區域重要 , 那就干脆把這些位置狠狠遮掉 , 讓模型專門練這個 , 不是更好嗎?但實驗結果并不是這樣 。 作者發現 , 確定性的 hard masking 反而容易把訓練搞壞 , 效果反而不如帶概率的 soft masking 。


他們給出的解釋也挺合理 。 代碼和數學里的高信息區域 , 很多時候在文本里是連續出現的 。 如果把這一整段連續內容都直接硬遮掉 , 那么在 block diffusion 的訓練過程中 , 就相當于突然挖掉了一大片局部錨點 , 出現了一大片連續的 “內容黑洞” 。 論文把這個現象叫做 contextual collapse:局部參照一旦沒了 , 訓練過程就容易失穩 , 梯度軌跡也會變得很難控制 。 相比之下 , soft mask 雖然也提高了這些位置被遮掉的概率 , 但畢竟還保留了隨機性 , 不至于每次都把關鍵部分整個掏空 , 因此優化會平滑得多 。
這一點其實挺像很多訓練技巧最后都會落到的那個結論:方向對了不代表力度越大越好 , 給模型留一點緩沖 , 往往更重要 。
只處理一小部分數據 , 就已經能看到收益
另一個比較實用的發現 , 是這套方法的數據效率 。
作者沒有要求對全部訓練數據都做離線的信息密度提取 , 而是做了不同比例的數據實驗 。 結果顯示 , 只對 10% 的代碼數據做這一步處理 , 就已經能把平均成績從 55.32 拉到 59.45 。 再繼續往上加到 30% , 甚至加到 100% , 性能提升會逐漸趨于飽和;到了 100% 時 , 雖然代碼類指標還能沖高 , 但數學推理表現反而會掉下來 。 論文把這種現象歸因于 domain shift:代碼側結構先驗加得太多 , 反而擠占了模型在其他推理任務上的泛化空間 。
這部分結果挺重要 , 因為它說明這件事并不一定是個 “高成本、重工程” 的方案 。 相反 , 作者給出的結論很明確:不需要全量標注 , 也不需要把整個訓練流水線推倒重來 , 只要在一小部分數據上引入這種結構化先驗 , 就能把基礎擴散模型往上推一截 。
擴散模型的訓練過程還有很多細節可供挖掘
從結果上看 , 這篇工作當然是在講一個 masked data training 的新做法 。 但如果再往后退一步看 , 它其實碰到了一個更根本的問題:擴散語言模型到底應該怎樣分配自己的學習注意力 。
過去很多工作習慣從模型結構、采樣策略或者推理機制上找突破 , 這篇文章反而提醒了一件很樸素的事:你讓模型學什么、在哪些位置上用力 , 本身就會決定它最后學成什么樣 。 對于 DLLM 這種本來就高度依賴 noising /denoising 過程的模型來說 , masking 不是配角 , 某種程度上它就是訓練邏輯本身的一部分 。
論文最后也提到 , 當前這套信息密度提取流程還是偏離線、偏啟發式的 。 后面可以繼續往幾個方向走 , 比如基于 AST 的規則提取、基于模型自身置信度的自適應提取 , 或者干脆引入 GAN 的思想做成端到端可學習的對抗式 mask 模塊 。
如果這些方向后面能繼續推進 , 那這篇工作的意義可能就不只是 “提出了一個有效的小改動” , 而是在給 Diffusion LLM 提供一種更像樣的訓練思路:
先別急著讓模型學會所有東西 , 先讓它學會什么東西值得優先學 。

    推薦閱讀