論文領讀|文本生成模型退化怎么辦?SimCTG 告訴你答案

歡迎來到「瀾舟論文領讀」專欄!快樂研究,當然從研讀 paper 開始——瀾舟科技團隊注重歡樂的前沿技術探索,希望通過全新專欄和大家共同探索人工智能奧秘、交流 NLP「黑科技」,踩在「巨人」肩上觸碰星辰!
本期分享者:白承麟
瀾舟科技算法實習生,北京交通大學自然語言處理實驗室二年級碩士生,目前正在進行文本生成方向的研究。
Email: chenglin.bai09@gmail.com
寫在前面
開放式文本生成技術是各種自然語言應用(如故事生成、對話系統(tǒng))中不可或缺的組成部分,其目標是根據(jù)給定語境創(chuàng)作一段連貫的文本。然而,基于 MLE 訓練的語言模型往往面臨退化問題,即隨著生成文本長度的增加其質量會逐漸降低,容易出現(xiàn)多種層次(字、短語、句子級)的重復生成。
《A Contrastive Framework for Neural Text Generation》這篇論文中提出一種SimCTG 方法(a simple contrastive framework for neural text generation),通過抑制模型生成不自然且包含不必要重復的文本,從而緩解文本生成模型的退化問題。實驗結果顯示,SimCTG在所有對比基線模型中有著最好的文本生成性能,且在不同語言、不同的文本生成任務上具有通用性。
論文標題
A Contrastive Framework for Neural Text Generation
論文作者
Yixuan Su, Tian Lan, Yan Wang, Dani Yogatama, Lingpeng Kong, Nigel Collier
論文單位
劍橋大學語言技術實驗室等
論文鏈接
https://arxiv.org/abs/2202.06417
研究背景與動機
重復生成是長文本生成中很常見的現(xiàn)象,如果你熟悉 huggingface 的話,你應該了解 huggingface 提供了一些“土辦法”來解決重復生成問題,比如 no_repeat_ngram_size 和 repetition_penalty。它們并沒有改變模型,而是基于規(guī)則直接修改模型計算的置信度(這也是為什么稱之為“土辦法”),雖然能減少重復,但會對文本的流暢度和語義有比較大的影響。
學術界中緩解退化問題目前主要有兩種方法:一種方法是隨機采樣,從候選集合中按置信度順序隨機選取一些單詞。雖然能減少重復的生成,但采樣的方法引入了語義不一致問題,采樣的文本往往與人寫的前文語義關聯(lián)性弱,甚至矛盾。另一種方法是通過修改模型的輸出單詞分布與非似然訓練來解決退化問題,但非似然訓練往往會導致不流暢的生成。
在這項工作中,作者另辟蹊徑,認為神經(jīng)語言模型的退化源于單詞表示的各向異性分布,即它們的表示位于全體表示空間的一個狹窄子集中。

圖 1. 解碼中單詞表示余弦相似度矩陣(a)GPT2 模型(b)SimCTG 模型
圖 1 展示了單詞表示的余弦相似度矩陣,顯而易見,由 GPT-2 產(chǎn)生的單詞表示(取自 Transformer 的最后一層)高度相似,這是非常不可取的,意味著這些表示彼此接近,自然地導致模型在不同的步驟中容易生成重復的單詞。理想情況下,模型輸出的單詞表示應遵循各向同性分布,即單詞的相似度矩陣是稀疏的,如圖 1(b)所示。此外,在解碼過程中,應盡可能保持文本的標記相似度矩陣的稀疏性,從而避免模型退化。
基于上述動機,作者提出“對比訓練+對比搜索”的方法,鼓勵模型學習各向同性的單詞表示,避免模型退化。自動評測和人工評測結果表明,SimCTG 在兩種語言的三個基準測試集上,達到了最好的性能。
對比訓練
上面我們說到,單詞表示的各向異性是模型退化的一個重要原因,那么如何改善表示空間,使其具備各向同性的特征呢?一個自然的想法是將單詞之間的距離作為優(yōu)化目標,這樣就可以將表示空間中原本稠密分布的單詞表示疏解開來,形成一個稀疏的、各向同性的表示空間。
具體來說,作者引入“對比學習”的思想,對于文本中的每一個單詞,選取該單詞作為錨點和正例,其他單詞作為負例,以余弦相似度為距離度量,構建對比學習的三元損失。對比學習的目標在于拉近錨點和正例的表示距離(由于錨點和正例為同一個單詞,具有相同的表示,它們的余弦相似度恒等于 1),拉遠錨點和負例的表示距離,這樣就可以構造一個具有稀疏分布特性的良好表示空間啦!
對比學習的損失函數(shù)如下:

其中,??表示文本長度,??為超參數(shù)。??為余弦相似度函數(shù),有??。通過這種損失進行學習,會增大不同單詞表示向量在語義空間中的距離。結合 MLE 損失,總體訓練目標定義如下:

對比搜索
光有對比訓練還不足以保證解碼過程中單詞表示的稀疏性,那么可不可以強制模型在解碼中生成稀疏的單詞表示呢?作者在這里設計了一個非常巧妙的方法,核心目標是生成的文本既要流暢性好,又要有信息量(不能車轱轆話反復說)。
如何保證流暢性呢?這就是語言模型的拿手領域了,通常來說,選擇模型置信度越高的單詞就越流暢。那么怎么才能有信息量呢?生成的每一個單詞和前面的單詞有足夠的區(qū)分度就好了。按優(yōu)先級來講,肯定是先要保證模型生成流暢,再盡可能地減少重復。于是作者設計了這么一套解碼方案:在每個解碼步驟中,從模型置信度最高的候選單詞集合中進行選擇,從而確保生成文本是流暢、可靠的;同時,計算得到的新單詞表示要和前文相似度越低越好,從而相對于先前的語境有足夠的區(qū)分度。這樣,生成的文本可以更好地保持與前文的語義一致性,同時避免模型退化。對比搜索解碼策略可以通過如下公式表示:

其中??為當前步驟模型置信度最高的 ??個候選詞,?θ?為模型置信度,??為懲罰項,通過計算候選詞 ??與前文單詞的余弦相似度得到。這一項表明,算法傾向于選擇和前文區(qū)分度高的單詞。
此外,對比搜索是一種貪婪搜索,其生成的文本具有確定性。但在實際應用中,我們肯定不希望模型每次都生成一樣的結果,完全沒有多樣性吧?為此,作者還給出一種對比搜索與核采樣相結合的策略,先核采樣若干步驟,引入多樣性,再通過對比搜索獲得一個流暢性和信息量俱佳的生成結果!
解碼速度方面,由于懲罰項可以通過簡單的矩陣乘法實現(xiàn),并沒有引入過多額外計算量,解碼效率可以與其他廣泛使用的解碼算法(beam search 等)相媲美。
實驗設置
論文提出的“SimCTG+對比搜索”方法,可以應用于任何文本生成模型,為了測試“SimCTG+對比搜索”在不同任務和語言之間的通用性,作者基于 GPT-2 模型,在文檔生成和開放域對話生成任務上進行了評估。
文檔生成方面,基于 GPT2-small(12 層,12 個注意力頭,117M 參數(shù))模型和 Wikitext-103 數(shù)據(jù)集進行試驗。Wikitext-103 是一個文檔級數(shù)據(jù)集,該數(shù)據(jù)集包含了大量的維基百科文章,目前已被廣泛用于評估大規(guī)模語言模型。
評測指標上,采用困惑度、重復度、多樣性和語義一致性等自動評測指標和人工評測來評價生成文本質量。開放域對話生成方面,實驗采用中文 LCCC 數(shù)據(jù)集和英文 DailyDialog 數(shù)據(jù)集,通過人工評測來評價模型的性能。
實驗結果與分析
文檔生成

表 1. Wikitext103 測試集評測結果
表 1 展示了在 Wikitext103 上的文檔生成實驗結果。首先,在 rep-n 和多樣性指標上,SimCTG+對比搜索獲得了最好的性能,表明它最好地解決了模型退化問題。其次,“SimCTG+對比搜索”在 MAUVE 上取得了最好的性能,表明其生成的文本在單詞分布上最接近人類創(chuàng)作的文本。此外,在所有方法中,只有“SimCTG+對比搜索”的一致性得分超過 0.6,表明它產(chǎn)生了高質量和語義一致的文本。最后,gen-ppl 也驗證了“SimCTG+對比搜索”的優(yōu)越性,它比其他方法獲得了明顯更好的生成困惑度。
人工評測
文檔生成方面,作者從 Wikitext-103 的測試集中隨機選擇了 200 個長度為 32 的前綴,采用不同的模型 (MLE、非似然和 SimCTG),以及兩種解碼方法(核采樣和對比搜索)來生成長度為 128 的連續(xù)文本序列。所有生成結果和參考文本由 5 位評分員評估,共得到 9000 個樣本。

表 2 展示了文檔生成的人類評測結果,首先我們可以看到,將對比搜索直接應用于 MLE 或非似然模型并不能產(chǎn)生令人滿意的結果,這歸咎于上文討論的表示各向異性問題。其次,非似然方法的一致性得分明顯低于 MLE 和 SimCTG,這表明其產(chǎn)生的結果最不可靠(表 1 中的 gen-ppl 得分也證實了這一點)。此外,“SimCTG+對比搜索”在一致性和流暢性方面明顯優(yōu)于其他模型+核采樣的方法。最后,“SimCTG-large(基于 GPT-large,36 層,20 個注意力頭,774M 參數(shù)量)+對比搜索”在所有指標上取得了最佳性能,甚至在流暢性指標上與人類書寫的文本表現(xiàn)相當,這也表明“SimCTG+對比搜索”對大尺寸模型也具有通用性。

表 3 顯示了開放域對話生成的人工評估結果,“SimCTG+對比搜索”在各種指標上都明顯優(yōu)于其他方法,表明其可以推廣到不同的語言和任務。在 LCCC 基準測試中,“SimCTG+對比搜索”在一致性和信息量上表現(xiàn)地很好,尤其是在流暢性指標上,甚至超過了人類基準!
總結
本文帶領大家閱讀了論文《A Contrastive Framework for Neural Text Generation》,在這項工作中,作者證明神經(jīng)語言模型的退化源于單詞表示的各向異性性質,并提出了一種新的方法 SimCTG,鼓勵模型學習各向同性的表示空間。此外,該論文還提出了一種新的解碼方法—對比搜索,確保在解碼過程中生成可靠和有區(qū)分度的單詞表示。自動評測和人工評測的結果均表明,“SimCTG+對比搜索”的方法大大減少了模型退化現(xiàn)象,明顯優(yōu)于當前最先進的文本生成方法。且“SimCTG+對比搜索”是模型結構無關的,可以應用于任何生成式模型;在兩種語言,兩個任務上的大量實驗也表明,其在不同語言和任務上具有通用性??傊撐耐ㄟ^一種簡單有效的方法有效提升了文本生成質量,很推薦大家讀一讀。