有望重新定義語言生成技術(shù)的擴(kuò)散模型——LLaDA? 原創(chuàng)
在本文中,我們將詳細(xì)闡述LLaDA的工作原理、它為何重要以及它如何有望塑造下一代LLM。
簡(jiǎn)介
如果我們能讓語言模型更像人類一樣思考,結(jié)果會(huì)怎樣?如果它們不是一次寫一個(gè)字,而是先勾勒出自己的想法,然后逐漸完善,結(jié)果又會(huì)怎樣?
這正是大型語言擴(kuò)散模型(LLaDA)所引入的:一種與大型語言模型(LLM)中當(dāng)前使用的文本生成不同的方法。與傳統(tǒng)的自回歸模型(ARM)不同,后者按順序(從左到右)預(yù)測(cè)文本,而LLaDA利用類似擴(kuò)散的過程來生成文本。它不是按順序生成標(biāo)記,而是逐步細(xì)化掩碼文本,直到形成連貫的響應(yīng)。
在本文中,我們將深入探討LLaDA的工作原理、它的重要性以及它如何有可能塑造下一代LLM。
LLM的現(xiàn)狀
要理解LLaDA所代表的創(chuàng)新,我們首先需要了解當(dāng)前大型語言模型(LLM)的運(yùn)作方式。現(xiàn)代LLM遵循已成為行業(yè)標(biāo)準(zhǔn)的兩步訓(xùn)練流程:
- 預(yù)訓(xùn)練:模型通過自監(jiān)督學(xué)習(xí),預(yù)測(cè)海量文本數(shù)據(jù)集中的下一個(gè)符號(hào),從而學(xué)習(xí)一般的語言模式和知識(shí)。?
- 監(jiān)督微調(diào)(SFT:Supervised Fine-Tuning):模型在精心策劃的數(shù)據(jù)上進(jìn)行改進(jìn),以提高其遵循指令和生成有用輸出的能力。?
請(qǐng)注意,當(dāng)前的LLM也經(jīng)常使用RLHF來進(jìn)一步優(yōu)化模型的權(quán)重,但LLaDA并未使用這種方法;因此,我們?cè)诖颂^有關(guān)RLHF的討論。
這些模型主要基于轉(zhuǎn)換器架構(gòu),使用下一個(gè)標(biāo)記預(yù)測(cè)一次生成一個(gè)標(biāo)記的文本。
用于文本生成的簡(jiǎn)化式轉(zhuǎn)換器架構(gòu)(圖片來自作者本人)
以下是數(shù)據(jù)如何通過此類模型的簡(jiǎn)化說明。每個(gè)標(biāo)記都嵌入到向量中,并通過連續(xù)的轉(zhuǎn)換器層進(jìn)行轉(zhuǎn)換。在當(dāng)前的LLM(LLaMA、ChatGPT、DeepSeek等)中,分類頭僅在最后一個(gè)標(biāo)記嵌入上使用,以預(yù)測(cè)序列中的下一個(gè)標(biāo)記。
這得益于掩碼自注意力機(jī)制的概念:每個(gè)標(biāo)記都會(huì)關(guān)注它之前的所有標(biāo)記。我們稍后會(huì)看到LLaDA如何在其注意力層中擺脫掩碼。
注意力過程:輸入嵌入與查詢、鍵和值矩陣相乘以生成新的嵌入(圖片由作者本人提供,靈感來自【參考文獻(xiàn)3】)
雖然這種方法取得了令人印象深刻的成果,但也存在明顯的局限性,其中一些局限性促進(jìn)了LLaDA的發(fā)展。
當(dāng)前LLM的局限性
當(dāng)前的LLM面臨幾個(gè)關(guān)鍵挑戰(zhàn):
計(jì)算效率低下
想象一下,如果你要寫一本小說,你一次只能思考一個(gè)單詞,而對(duì)于每個(gè)單詞,你都需要重讀到目前為止寫過的所有內(nèi)容。這基本上就是當(dāng)前LLM的運(yùn)作方式——它們一次預(yù)測(cè)一個(gè)標(biāo)記,需要對(duì)每個(gè)新標(biāo)記的前一個(gè)序列進(jìn)行完整的處理。即使使用KV緩存等優(yōu)化技術(shù),這個(gè)過程也相當(dāng)耗時(shí)且計(jì)算量巨大。
有限的雙向推理
傳統(tǒng)的自回歸模型(ARM)就像作家一樣,他們永遠(yuǎn)無法展望或修改迄今為止寫的內(nèi)容。他們只能根據(jù)過去的標(biāo)記來預(yù)測(cè)未來的標(biāo)記,這限制了他們推理文本不同部分之間關(guān)系的能力。作為人類,我們通常在寫下來之前對(duì)自己想要表達(dá)的內(nèi)容有一個(gè)大致的了解,而目前的LLM在某種程度上缺乏這種能力。
數(shù)據(jù)量
現(xiàn)有模型需要大量訓(xùn)練數(shù)據(jù)才能獲得良好的性能,這使得它們的開發(fā)是資源密集型的,并且潛在地限制了其在數(shù)據(jù)可用性有限的專業(yè)領(lǐng)域的適用性。
何謂LLaDA
LLaDA通過用“基于擴(kuò)散”的過程取代傳統(tǒng)的自回歸,引入了一種根本不同的語言生成方法(我們稍后將深入探討為什么這被稱為“擴(kuò)散”)。
讓我們從預(yù)訓(xùn)練開始,一步一步地了解這是如何運(yùn)作的。
LLaDA預(yù)訓(xùn)練
請(qǐng)記住,在預(yù)訓(xùn)練階段我們不需要任何“標(biāo)記”數(shù)據(jù)。我們的目標(biāo)就是將大量原始文本數(shù)據(jù)輸入到模型中。對(duì)于每個(gè)文本序列,我們執(zhí)行以下操作:
- 我們固定最大長(zhǎng)度(類似于ARM)。通常,這個(gè)值可能是4096個(gè)標(biāo)記。1%的時(shí)間,序列的長(zhǎng)度是在1到4096之間隨機(jī)采樣并填充的,以便模型也能接觸到較短的序列。?
- 我們隨機(jī)選擇一個(gè)“掩碼率”——例如,可以選擇40%。?
- 我們以0.4的概率掩碼每個(gè)標(biāo)記?!把诖a”到底是什么意思?我們只需用一個(gè)特殊的標(biāo)記替換標(biāo)記:<MASK>。與任何其他標(biāo)記一樣,此標(biāo)記與模型可以在訓(xùn)練期間處理和解釋的特定索引和嵌入向量相關(guān)聯(lián)。?
- 然后,我們將整個(gè)序列輸入到基于轉(zhuǎn)換器的模型中。此過程將所有輸入嵌入向量轉(zhuǎn)換為新嵌入。我們將分類頭應(yīng)用于每個(gè)掩碼標(biāo)記,以獲得每個(gè)標(biāo)記的預(yù)測(cè)。從數(shù)學(xué)上講,我們的損失函數(shù)對(duì)序列中所有掩碼標(biāo)記的交叉熵?fù)p失進(jìn)行平均,如下所示:
LLaDA使用的損失函數(shù)(圖片來自作者本人)
- 然后……我們對(duì)數(shù)十億或數(shù)萬億個(gè)文本序列重復(fù)此過程。?
請(qǐng)注意,與ARM不同,LLaDA可以充分利用文本中的雙向依賴關(guān)系:它不再需要在注意層中進(jìn)行掩碼。然而,這可能會(huì)增加計(jì)算成本。
希望你能看到訓(xùn)練階段本身(數(shù)據(jù)流入模型)與任何其他LLM非常相似。我們只是預(yù)測(cè)隨機(jī)掩碼的標(biāo)記,而不是預(yù)測(cè)接下來會(huì)發(fā)生什么。
LLaDA SFT(有監(jiān)督微調(diào))
對(duì)于自回歸模型來說,SFT(Supervised Fine-tuning:有監(jiān)督微調(diào))與預(yù)訓(xùn)練非常相似,只是我們使用的是成對(duì)的(提示,響應(yīng)),并且希望在給出提示作為輸入時(shí)生成響應(yīng)。
這與LlaDA的概念完全相同!模仿預(yù)訓(xùn)練過程:我們只需傳遞提示和響應(yīng),僅從響應(yīng)中掩碼隨機(jī)標(biāo)記,然后將完整序列輸入模型,該模型將預(yù)測(cè)響應(yīng)中缺失的標(biāo)記。
推理的創(chuàng)新
創(chuàng)新是LLaDA變得更加有趣的地方,并且真正利用了“擴(kuò)散”范式。
到目前為止,我們總是隨機(jī)掩碼一些文本作為輸入,并要求模型預(yù)測(cè)這些標(biāo)記。但在推理過程中,我們只能訪問提示,并且我們需要生成完整的響應(yīng)。你可能會(huì)認(rèn)為(這沒錯(cuò)),該模型已經(jīng)看到了SFT期間掩碼率非常高(可能為1)的示例,并且它必須以某種方式學(xué)習(xí)如何從提示生成完整的響應(yīng)。
然而,在推理過程中一次性生成完整響應(yīng)可能會(huì)產(chǎn)生非常糟糕的結(jié)果,因?yàn)槟P腿狈π畔?。相反,我們需要一種方法來逐步完善預(yù)測(cè),這就是“重新掩碼(Remasking)”的關(guān)鍵思想的用武之地。
文本生成過程的每個(gè)步驟的工作原理如下:
- 將當(dāng)前輸入提供給模型(這是提示,后跟<MASK>標(biāo)記)。?
- 模型為每個(gè)輸入標(biāo)記生成一個(gè)嵌入。我們僅獲得<MASK>標(biāo)記的預(yù)測(cè)。這是重要的一步:我們重新掩碼其中的一部分。具體來說:我們只保留“最佳”標(biāo)記,即具有最佳預(yù)測(cè)和最高置信度的標(biāo)記。?
- 我們可以使用這個(gè)部分未掩碼的序列作為下一步生成步驟的輸入并重復(fù),直到所有標(biāo)記都被掩碼。你可以看到,有趣的是,與ARM相比,我們對(duì)生成過程的控制力更強(qiáng):我們可以選擇重新掩碼0個(gè)標(biāo)記(僅一個(gè)生成步驟),或者我們可以決定每次只保留最佳標(biāo)記(步驟數(shù)與響應(yīng)中的標(biāo)記數(shù)相同)。顯然,這里需要在預(yù)測(cè)質(zhì)量和推理時(shí)間之間進(jìn)行權(quán)衡。
讓我們用一個(gè)簡(jiǎn)單的例子來說明這一點(diǎn)(在這種情況下,我選擇在每一步保留最好的2個(gè)標(biāo)記):
LLaDA生成過程示例(圖片來自作者本人)
請(qǐng)注意,在實(shí)踐中,重新掩碼步驟的工作方式如下。我們不會(huì)重新掩碼固定數(shù)量的標(biāo)記,而是會(huì)隨著時(shí)間的推移重新掩碼一定比例的s/t個(gè)標(biāo)記,從t=1直到降至0;其中,s在【0,t】范圍。具體而言,這意味著隨著生成步長(zhǎng)數(shù)量的增加,我們重新掩碼的標(biāo)記會(huì)越來越少。
舉例:如果我們想要N次采樣(因此進(jìn)行了N次離散的操作,從t=1直到t=1/N,步長(zhǎng)為1/N),那么取s=(t-1/N)是一個(gè)不錯(cuò)的選擇,并確保在過程結(jié)束時(shí)s=0。
下圖總結(jié)了上面描述的3個(gè)步驟。其中,“掩碼預(yù)測(cè)器(Mask predictor)”表示LLM(即LLaDA),負(fù)責(zé)預(yù)測(cè)掩碼標(biāo)記。
使用LLaDA進(jìn)行的三個(gè)步驟:預(yù)訓(xùn)練(a)、SFT(b)和推理(c)。(來源:【參考文獻(xiàn)1】)
自回歸和擴(kuò)散可以結(jié)合起來嗎?
LLaDA中開發(fā)的另一個(gè)巧妙的想法是將擴(kuò)散與傳統(tǒng)的自回歸生成相結(jié)合,以充分利用兩全其美的優(yōu)勢(shì)!這稱為半自回歸擴(kuò)散。
- 將生成過程分成多個(gè)塊(例如,每個(gè)塊有32個(gè)符號(hào))。?
- 目標(biāo)是一次生成一個(gè)塊(就像我們?cè)贏RM中一次生成一個(gè)令牌一樣)。?
- 對(duì)于每個(gè)區(qū)塊,我們應(yīng)用擴(kuò)散邏輯,逐步揭開標(biāo)記以顯示整個(gè)區(qū)塊。然后繼續(xù)預(yù)測(cè)下一個(gè)區(qū)塊。
半自回歸過程(來源:【參考文獻(xiàn)1】)
這是一種混合方法:我們可能會(huì)失去模型的一些“向后”生成和并行化能力,但我們可以更好地“引導(dǎo)”模型走向最終的輸出。
我認(rèn)為這是一個(gè)非常有趣的想法,因?yàn)樗艽蟪潭壬先Q于可以調(diào)整的超參數(shù)(塊數(shù))。我認(rèn)為不同的任務(wù)可能從反向生成過程中受益更多,而其他任務(wù)可能從從左到右的更“引導(dǎo)”的生成中受益更多(更多內(nèi)容見最后一段)。
為何要“擴(kuò)散”?
我認(rèn)為有必要簡(jiǎn)要解釋一下這個(gè)術(shù)語的真正來源。它反映了與圖像擴(kuò)散模型(如Dall-E)的相似性,這些模型在圖像生成任務(wù)中非常流行。
在圖像擴(kuò)散中,模型首先向圖像添加噪聲,直到無法識(shí)別,然后逐步學(xué)習(xí)重建圖像。LLaDA將這個(gè)想法應(yīng)用于文本,通過掩碼標(biāo)記而不是添加噪聲,然后逐步取消掩碼以生成連貫的語言。在圖像生成的上下文中,掩碼步驟通常稱為“噪聲調(diào)度”,而反向(重新掩碼)是“去噪”步驟。
擴(kuò)散模型發(fā)揮作用的方式(來源:【參考文獻(xiàn)2】)
你還可以將LLaDA視為某種離散(非連續(xù))擴(kuò)散模型:我們不會(huì)向標(biāo)記添加噪音,而是通過掩碼來“停用”某些標(biāo)記,然后模型學(xué)習(xí)如何揭示其中的一部分。
結(jié)果
讓我們來看看LLaDA的一些有趣的結(jié)果。
你可以在論文中找到所有結(jié)果。我選擇在這里重點(diǎn)介紹我認(rèn)為最有趣的內(nèi)容。
- 訓(xùn)練效率:LLaDA的性能與具有相同數(shù)量參數(shù)的ARM相似,但在訓(xùn)練期間使用的符號(hào)少得多(并且沒有RLHF)!例如,8B版本使用大約2.3T符號(hào),而LLaMa3則使用15T符號(hào)。?
- 針對(duì)不同的任務(wù)使用不同的塊和答案長(zhǎng)度:例如,對(duì)于數(shù)學(xué)數(shù)據(jù)集,塊長(zhǎng)度特別大,并且該模型在此領(lǐng)域表現(xiàn)出色。這可能表明數(shù)學(xué)推理可能更多地受益于基于擴(kuò)散和向后的過程。
來源:【參考文獻(xiàn)1】
- 有趣的是,LLaDA在“逆序詩(shī)歌完成任務(wù)”上表現(xiàn)更好。此任務(wù)要求模型以相反的順序完成一首詩(shī),從最后一行開始,然后向后完成。正如預(yù)期的那樣,ARM因其嚴(yán)格的從左到右的生成過程而陷入困境。
來源:【參考文獻(xiàn)1】
上述實(shí)驗(yàn)證明,LLaDA不僅僅是ARM的一個(gè)實(shí)驗(yàn)性替代品:它在效率、結(jié)構(gòu)化推理和雙向文本生成方面顯示出真正的優(yōu)勢(shì)。
結(jié)論
我認(rèn)為L(zhǎng)LaDA是一種很有前途的語言生成方法。它能夠并行生成多個(gè)標(biāo)記,同時(shí)保持全局一致性,這無疑可以帶來更高效的訓(xùn)練、更好的推理,以及用更少的計(jì)算資源實(shí)現(xiàn)更好的上下文理解。
除了效率之外,我認(rèn)為L(zhǎng)LaDA還帶來了很大的靈活性。通過調(diào)整生成的塊數(shù)和生成步長(zhǎng)數(shù)等參數(shù),它可以更好地適應(yīng)不同的任務(wù)和約束,使其成為滿足各種語言建模需求的多功能工具,并允許更多人為控制。擴(kuò)散模型還可以通過更全面的推理在主動(dòng)AI和代理系統(tǒng)中發(fā)揮重要作用。
隨著基于擴(kuò)散的語言模型研究的不斷推進(jìn),LLaDA有望成為邁向更自然、更高效的語言模型的重要一步。雖然現(xiàn)在還為時(shí)過早,但我相信從順序生成到并行生成的轉(zhuǎn)變是人工智能發(fā)展的一個(gè)有趣方向。
參考文獻(xiàn)
- 【1】Liu,C.,Wu,J.,Xu,Y.,Zhang,Y.,Zhu,X.,& Song,D.(2024)?!洞笮驼Z言擴(kuò)散模型》。arXiv預(yù)印本arXiv:2502.09992。?https://arxiv.org/pdf/2502.09992??。?
- 【2】Yang,Ling等人?!??擴(kuò)散模型:方法和應(yīng)用的綜合調(diào)查?》。ACM Computing Surveys 56.4(2023):1–39。?
- 【3】Alammar,J.(2018年6月27日)?!秷D解轉(zhuǎn)換器》。Jay Alammar的博客。?https://jalammar.github.io/illustrated-transformer/??。?
譯者介紹
朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。
原文標(biāo)題:??LLaDA: The Diffusion Model That Could Redefine Language Generation?,作者:Maxime Wolf
