一文详解DeepMind最新模型SUNDAE,了解迭代去噪模型的前世今生
?作者 | 中森
單位 | 粵港澳大灣區數字經濟研究院
研究方向 | 條件受控下的文本生成
近期筆者在做些去噪語言模型的預訓練和迭代生成語言模型的實驗和探索,在讀到谷歌 DeepMind 實驗室的新作圣代 SUNDAE 模型后,便決定寫篇迭代生成語言模型的整理和對比。
導言:自回歸式語言模型建模的缺陷
在 NLP 的文本生成(序列建模)領域,無論是開放域文本生成、主題生成、還是翻譯任務,最主流的方式還是自回歸式的語言建模。即給定一個序列 我們使用一個神經網絡來對序列里的每一個變量進行條件概率建模。而每一個變量的條件概率依賴于當前變量在序列里的所有前置變量,即 << 。無疑,自回歸式的語言模型符合人類單向閱讀的直覺與思維方式,并在一系列任務里展現出了良好的效果;但它同樣有其阿克琉斯之踵。首先,其對序列的單向依賴導致其無法并行,解碼速度慢。
其次,當我們試圖在解碼過程中試圖搜索最大似然序列 時,自回歸的語言建模要求我們在序列長度為 T,每個變量有|V|種可能的情況下搜索最大可能,其中 V 代表詞表大小,一共有 種可能。由于我們顯然無法處理天文數字般的計算復雜度,我們只能依賴于貪心搜索,柱搜索等策略近似求解這個解碼過程。那么,我們是否有其他方式對語言模型建模,來規避以上兩個問題?
迭代去噪模型的數學假設
如果我們以類似于樸素貝葉斯的方法,假設序列里的每一個變量 都是依賴于某個序列 而互相間條件獨立的話,我們可以將 基于序列 的條件概率因式分解為:
顯然,將語言模型以該種方式建模的好處在于:首先,生成序列里的所有詞之間條件獨立,無需再按次序逐個生成,可以平行解碼,極大加速解碼過程。其次,因為規避了聯合概率的建模,我們不再需要在一個極大的搜索空間里尋找最大似然序列,對于每一個變量,我們只需簡單地對其進行 argmax 操作即可。這兩個特性完美對應了以上提到的自回歸式生成的缺陷。
但是,該方法最大的問題在于建模一個只依賴于輸入序列的條件獨立的語言模型難度遠大于建模一個自回歸式的語言模型!
為了緩解這個難題的同時,依然保留條件獨立所帶來的速度和解碼優勢,近幾年的 NLP 學界的主流做法是引入一系列隱變量且讓該隱變量的形式與輸出 Y 保持一致。這樣子,我們的條件概率建模便等同于在一個模型架構上進行多輪迭代生成。每一次迭代我們所獲得的中間過程輸出 即為我們所依賴的隱變量。每一步的修正可表示為 ,其中 是我們當前所迭代的步數。
筆者認為,將隱變量和輸出Y的形式保持一致的做法實質上將樸素貝葉斯的條件獨立假設打破,使得輸出 Y 不僅依賴于輸入 X,且依賴于生成詞間的相互聯系。但這種巧妙的建模方式,使我們依然可以保留平行解碼的速度優勢!
將多輪迭代合并起來討論的話,我們建模的是以下式子。其中序列 包含 T 個獨立變量, 迭代次數 。且如上文所假設,輸出序列 Y 里的所有獨立變量,互相對輸入序列 X 條件獨立,即 。所以我們有
其中,如果我們引入時齊馬爾可夫假設,認為每輪迭代只與上一輪的隱變量相關的話,上面式子的第一行可以改寫為
這樣,每一輪的迭代我們只依賴于輸入和上一輪的隱狀態表達。如果熟悉 transformer 的讀者會發現,這種建模方式天然適合于 transformer 里的 encoder+decoder 架構, 并且非常適用于翻譯任務。
對中間過程隱變量的不同條件依賴建模
在有了上面提綱挈領的條件概率建模公式后,以下四篇論文的理解就顯得水到渠成了。以下四篇論文的核心思想并沒有太大差別,只是在具體的中間過程隱變量的依賴上做了不同程度的假設與變換。下面我將逐一介紹其核心思想與互相間的差異。
3.1 CMLM
論文標題:
Mask-Predict: Parallel Decoding of Conditional Masked Language Models
收錄會議:
EMNLP 2019
論文鏈接:
https://arxiv.org/abs/1904.09324
代碼鏈接:
https://github.com/facebookresearch/Mask-Predict
CMLM 的全稱是條件掩碼語言模型(conditional masked language model)。CMLM 的模型預測的是一系列掩碼詞 在給定輸入 和部分已生成且未被掩碼的中間輸出 的概率分布,即 。在這個條件概率下,序列 里所有的獨立變量都互相對輸入和未掩碼詞條件獨立。并且因為每一輪迭代不改變輸出 的長度,模型也隱式地條件于生成序列的長度 。
CMLM 的模型架構是 transformer 里的 encoder+decoder 架構。對輸入 的條件依賴由編碼器負責建模,對 的條件依賴由解碼器負責建模。但因為對 的條件依賴不像自回歸式的建模有時序要求,CMLM 里的解碼器并沒有我們常見的自回歸式的解碼器里的因果注意力掩碼(causal attention mask,即使得每個詞的自注意力機制只能看到當前位置之前的掩碼)。并且,由于平行解碼的特點,模型必須事先得知解碼的長度以進行多輪迭代(迭代過程只替換詞但不增刪詞)。所以作者在 encoder 里加入了一個類似于 BERT 里 的額外的特殊 字符,來進行生成目標的長度預測。
CMLM 在訓練時的每一輪迭代,都會隨機選取部分詞進行 BERT 式的掩碼進行更新。并對每一個掩碼詞計算交叉熵的損失。值得注意的是,這個步驟是可以并行處理的,因為所有的字符都是條件獨立的。而交叉熵的和會與長度預測的損失放在一起進行梯度回傳。
CMLM 在預測和解碼的具體過程如下:迭代的次數T是個常數或是與輸入序列 的長度 N 相關的函數。對于第一輪生成,我們對所有詞進行掩碼,即第一輪我們建模 。在之后的每一輪里,我們會選取 n 個概率分數最低的詞進行掩碼預測。n 是一個隨著迭代輪次 t 不斷減小的數值,作者使用的是一個簡單方程 。對于每個掩碼詞,我們使用 argmax 選取其預測詞。對于未掩碼詞我們保留其不變。
值得一提的是,輸出序列里的每一個獨立變量互相間關于輸入序列條件獨立這個假設,會使得模型在預測掩碼詞時極容易出現重復的詞。因為條件概率分布里可能同時存在多個模態(modal),模型在生成時會同時考慮多個可能的輸出序列,而獨立預測的做法使得每個預測互不干涉,從而使得不同模態的預測會疊加,導致重復詞的出現。但作者經過具體實驗發現,迭代預測的做法極大緩解了多模態的問題。如下圖所示,我們可以看到,翻譯的 BLEU 分數和重復率在第二輪迭代后有了極為顯著的改善!這可能說明引入隱變量的做法的確極大降低了建模條件獨立分布的難度。
3.2?DisCo
論文標題:
Non-autoregressive Machine Translation with Disentangled Context Transformer
收錄會議:
ICML 2020
論文鏈接:
https://arxiv.org/abs/2001.05136
代碼鏈接:
https://github.com/facebookresearch/DisCo
Disco 的全稱是 Disentangled Context transformer。這篇文章可以看做是對 CMLM 的部分改進。相較于 CMLM 每輪迭代只更新部分掩碼詞的做法,Disco 每輪迭代會對所有的解碼詞進行更新。每個解碼詞的更新條件依賴于輸入與部分高置信度的上一輪預測詞,即 ,其中
在 CMLM 的算法里, 可觀測詞和掩碼詞涇渭分明。可在 Disco 里,因為更新的是所有詞且仍需要依賴部分上一輪預測詞,所以解碼器的輸入里并沒有掩碼詞的存在。這就會帶來一個很直接的問題:信息泄漏。如果使用和 CMLM 一致的雙向無因果推斷的注意力掩碼,那么在解碼器的第一層,我們只需要在每個詞的注意力掩碼里對不可觀測的部分詞進行掩碼即可。如下圖所示:
但一旦我們開始堆疊 transformer 的解碼器結構時,信息泄漏就隨著自注意力機制出現了。回顧一下在 transformer 里注意力機制的表達:對于第 層第 個位置的注意力 qkv,我們有以下式子 ,其中代表 詞嵌入向量。那么,理所當然的,從第二層開始,每個位置的隱層表示 開始包含了上一層的部分位置的詞義信息,并且這些位置很有可能對于其他詞來說是正是其所期望預測或不應該看到的詞義信息!為了解決這個問題,作者更改了解碼器的 qkv 表達式,使其成為 ,其中 代表位置向量嵌入。這樣修改后,結合第一層里我們對注意力掩碼的修改,每一層的解碼器的注意力只對其所依賴的詞的位置和詞嵌入進行查詢,便成功避免了信息泄漏的問題。
使用了經典 encoder(含有特殊 length 字符)和修改過的 decoder 架構的 Disco 在預測時的算法簡短描述如下:在第一輪的預測時,如 CMLM 一樣只基于輸入預測所有的位置詞,即 。從第二輪開始,我們對所有詞開始預測。對于上一輪預測詞的依賴是根據其詞概率進行倒排,每個詞只依賴于輸入和上一輪置信度比其高的詞,即:
值得一提的是,作者在剝離實驗時提到,哪怕是在自回歸式的語言模型里對于解碼器的魔改實際上也并沒有造成太多性能損失。這點其實特別值得做所有做 transformer 生成的研究者深思,如圖所示:
3.3 NARSM
論文標題:
Deterministic Non-Autoregressive Neural Sequence Modeling by Iterative Refinement
收錄會議:
EMNLP?2018
論文鏈接:
https://arxiv.org/abs/1802.06901
代碼鏈接:
https://github.com/nyu-dl/dl4mt-nonauto/tree/multigpu
在我們正式介紹本文的主角 SUNDAE 模型前,還要最后介紹一篇筆者認為在形式上和思想上 SUNDAE 最為接近的論文。因為作者并沒有起一個縮寫,所以為了指代方便,筆者便將其強行縮寫為 NARSM。
這篇論文的架構依然是經典的 encoder+ 雙向注意力掩碼的 decoder(這篇文章在四篇文章里其實是第一個發表在 arXiv 上的)。但其條件建模是基于輸入 X 和上一輪迭代的整個預測序列 Y 對序列里每一個詞進行更新。所以其訓練的目標函數是:
其中 是迭代的輪次。同時,作者以去噪自編碼器 DAE 的角度來理解這個迭代過程,即:
其中函數 C 代表的是加噪方程, 是任務的真實輸出。最后的訓練損失函數是這兩者的加權結合(加權比例是用戶指定的超參),即每一輪我們訓練兩個函數的迭代,一個依賴于上一輪的輸出,一個依賴于真實輸出的加噪結果:
在實際預測中,作者的做法和前文介紹的幾篇迭代過程類似,但值得一提的是,作者提供了幾個可選的迭代終止條件。分別是以每輪更新后序列里詞的不同個數,或者更新后序列的條件概率的差別作為終止條件。
3.4 SUNDAE
論文標題:
Step-unrolled Denoising Autoencoders for Text Generation
論文鏈接:
https://arxiv.org/abs/2112.06749
介紹完前面一系列的論文后,我們就可以比較輕易地理解這篇論文的創新點了。筆者認為主要在以下幾個方面:首先,SUNDAE 把多輪迭代過程當成一個純粹的去噪過程(即上一篇的去噪自編碼器的角度)。其次,SUNDAE 在幾個翻譯領域里無需蒸餾便可超越同類型的非自回歸式模型。再次,作者使用 SUNDAE 在無條件文本生成和文本填充幾個任務里也展現了比較好的效果(前面幾篇論文主要集中在條件生成任務上)。
SUNDAE 的全稱是 Step-unrolled Denosing Autoencoder。作者從 DAE 和時齊馬爾可夫鏈的角度出發來理解我們上面所提及的多輪迭代的條件概率建模這個過程。即對于一個序列空間 我們考慮一個隨機過程,這個過程里每個序列服從 ,其中 指的是一個參數轉移方程,代表一個序列迭代到下一個序列的轉移概率。如果我們依舊按照上文提到的序列里每一個獨立變量基于上一輪的輸出互相條件獨立的話,我們可以得到下面這個式子。其中上標表示的序列里的位置。
作者對迭代生成的任務的理解其實沒有太多新意,可謂前人之述備矣。但筆者認為 SUNDAE 和之前的一系列論文最大的區別在于對損失函數的設計上。我們之前討論的三篇論文里,訓練過程中每一輪迭代的生成詞都會與我們的真實任務輸出做交叉熵,沒有建模過中間過程。但 SUNDAE 引入了一個作者稱為兩步訓練的展開去噪過程。如圖所示(綠色為原文,紅色為噪音):
大部分的非自回歸模型只建模了從原始噪音到最終輸出間的聯系(第二行到第一行),但 SUNDAE 引入了個中間過程的交叉熵訓練(第二行到第三行再到第一行)。而中間過程與原文間的配對則是模型在做真正推理的時候更常遇到的狀態!
所以模型的損失函數可以用下列式子表示:其中上標 t 表示將第幾輪迭代輸出作為交叉熵的真實標簽。
作者在實驗中發現,多引入幾輪中間過程增益不大,但極大的降低了訓練速度,所以僅僅選擇了兩步訓練的方式。
在真正進行多輪迭代解碼推理的時候,作者提供了幾種解碼思路。文章里沒有顯式地提及過作者所宣稱的所謂加速收斂的算子是什么。但根據上下文,最合理的猜測是算子指代的是以下幾種接碼策略:第一種是低溫采樣。首先第一輪生成時按模型所預測的長度進行隨機平均采樣,得到一個初始輸出 。之后的每一輪里,作者采用的不是前幾篇論文里的確定性的 argmax 解碼,而是用溫度平滑了詞概率分布后再進行采樣得到每個詞,并迭代 T 輪。
第二種解碼方式是 argmax-unrolled,收斂速度比低溫采樣更快。具體的做法是前兩輪采用常規的計算和采樣操作得到輸出序列 和詞概率 logits 。之后的每一輪解碼輸出詞時,部分高概率詞(由 排序所得)用來自上一輪的詞概率 做 argmax,部分詞來自當前迭代輪次的詞概率 取 argmax 所得。每一輪都將當前的輸出詞 和詞概率 傳至下一輪。值得一提的是,因為 的詞來自于 ,所以在第 t 輪迭代時,對 的某個位置取 argmax 時所得到的詞很有可能與 序列里對應位置的詞不同。
對于開放性文本生成,這個非自回歸式模型通常難以很好建模的問題,SUNDAE 也做了一番探索。因為是無條件生成,架構上只用了沒有因果注意力掩碼的 decoder 架構。為了加速收斂和多樣性,每輪迭代時只更新隨機的部分詞。為了收斂到較好的效果,作者顯式地設置了一千步的迭代次數為收斂條件。筆者認為,雖然 SUNDAE 使得非自回歸式生成方式在無條件生成的情況下取得了不錯的效果,但其過高的迭代步數,使得其完全喪失了生成速度的優勢和實際落地的可能。
總結
本文梳理了一種非傳統自回歸式的文本生成方式的演進路程。從假設輸出序列里的每一個詞關于輸入條件獨立開始,本文逐步討論了引入中間過程作為隱變量的必要性,并對不同論文對隱變量的不同條件依賴方式進行了講解。沿著這根主線展開,不同論文的異同點就顯得一目了然了。
特別鳴謝
感謝 TCCI 天橋腦科學研究院對于 PaperWeekly 的支持。TCCI 關注大腦探知、大腦功能和大腦健康。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的一文详解DeepMind最新模型SUNDAE,了解迭代去噪模型的前世今生的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 延时转账怎么设置
- 下一篇: 信用卡积分能够兑换话费 有这种信用卡的有