非自回归也能预训练:基于插入的硬约束生成模型预训练方法
論文標題:
POINTER: Constrained Text Generation via Insertion-based Generative Pre-training
論文作者:
Yizhe Zhang (MSR), Guoyin Wang (Duke), Chunyuan Li (MSR), Zhe Gan (MSR), Chris Brockett (MSR), Bill Dolan (MSR)
論文鏈接:
arxiv.org/pdf/2005.00558
非自回歸生成有著更高的效率,但是,當前鮮有研究針對非自回歸生成模型的預訓練方法。
本文提出一種新的基于插入的非自回歸預訓練方法,用動態規劃構造訓練數據,并使用新的beam search方法,實現log級別的非自回歸生成。在兩個硬約束數據集上的實驗表明,該方法比起基線模型有大幅提高。
硬約束文本生成與非自回歸預訓練
約束性文本生成(Constrained Text Generation)是文本生成中非常重要的部分,可以分為兩類:軟約束生成(Soft-Constrained)和硬約束生成(Hard-Constrained)。
軟約束生成就是給定一些關鍵詞(或關鍵信息),生成的文本要包含給定的關鍵內容,但不一定要完全包括。
硬約束生成就是要完全包含給定的詞匯,不允許刪除。
結合這兩年得到廣泛研究的基于插入的非自回歸生成,我們可以很容易把這種方法應用到硬約束文本生成上,因為基于插入的非自回歸方法有兩個優點:
它不刪除給定的詞匯,而是不斷增加新詞,符合硬約束的要求;
它可以有log級別的生成效率。
下圖是硬約束插入式非自回歸生成的一個例子。給定的關鍵信息是,經過4次迭代,每次迭代新插入的詞為藍色,模型最終生成了期望的句子。
此外,由于這種插入的方法非常類似BERT的掩碼預訓練方法,所以,我們完全有可能像BERT那樣,為插入式非自回歸模型進行類似的預訓練,從而利用大規模無監督語料,提高硬約束生成的效果。這就是本文的主要創新點。
總的來說,本文有以下貢獻:
提出POINTER——一種插入式非自回歸預訓練模型,并能用BERT初始化;
基于POINTER使用一種簡單但有效的Beam Search方法,進一步提高效果;
在兩個硬約束生成數據集上,POINTER實現了顯著的效果,并且有著最高的生成效率。
非自回歸預訓練
本節介紹POINTER的模型、訓練及推理方法。首先介紹符號。記原始輸入的硬約束為,第輪模型生成的句子是,最后生成的句子是。由于模型是以插入的方法生成的,從而前一輪的句子是下一輪生成句子的子序列。
模型建模最終句子的概率可以表示為:
所以,在每一輪,模型就是要根據前一輪生成的句子去選擇要在哪里插入哪些詞。在介紹生成步驟之前,首先來介紹一下如何構造訓練數據。
訓練數據構造
對于一個完整的句子,我們想要構造一個生成序列,相鄰每一對就是一個訓練實例。
由于我們想要讓動詞、名詞等實詞首先生成,而形容詞、副詞、助詞等詞最后生成,我們首先就要構造出符合這個模式的訓練實例。
為此,我們對句子的每個詞給一個重要性得分(importance score),它通過如下方式計算:
其中,是詞的TF-IDF得分,是詞的Part-of-Speech得分,是詞的YAKE得分。YAKE是一種無監督關鍵詞抽取方法。
在這個得分公式中,越高,表示詞就越重要,它就要首先生成。注意到每個得分都歸一化到[0,1]之間。
在得到句子中每個詞的重要性得分之后,我們就可以逆序構造訓練實例了。
具體來說,首先對源句子,從中抹去得分較低的一部分詞,得到。
然后再對中剩下的詞,再抹去一部分得分較低的詞,得到,以此類推,得到初始句子。這里停止的標準是只剩不到個詞。
那么,現在的問題是,怎么決定每次要抹去哪些詞。換句話說,要選擇保留哪些詞,它們要滿足某些條件,要達到怎樣的優化目標。本文使用下面的公式計算:
這里是當前句子的長度,表示第個詞被抹去,表示這個詞被保留,并且約束是,不能有連續兩個詞被抹去。
為了求解上述公式,本文使用了一種動態規劃算法。
注意到,原文上述公式中的max是min,筆者認為是筆誤,否則上述公式就有一組平凡解。這個公式既鼓勵重要的詞首先生成,又鼓勵盡可能多地生成詞(越多越好)。
然而,根據文本描述,筆者在此處有一個疑問:對于約束“不能有連續兩個詞被抹去”。
原文給出的解釋是“The reason for this constraint is that the insertion-based generation only allows maximally one new token to be generated between two existing tokens”。
也就是說,由于插入式模型一次只能在相鄰詞之間插入一個字符,所以在這里我們也不能一次抹去相鄰兩個字符。
但是實際上,即使抹去連續的詞,這些詞仍然可以在對數時間內以插入的方式生成。
訓練
在得到訓練實例后,就作為模型的輸入,讓模型去生成。回憶插入式生成,首先選擇一個槽(slot,即相鄰詞之間的那個空位),然后生成該槽的詞。
重新組織一下,就可以統一為:對當前輸入的每個詞,去預測“緊跟在”它后面是否要插入一個詞,要插入哪個詞。
這又可以進一步統一為:去預測詞典中的一個詞,這里是一個特殊詞,表示實際上不插入。
為了表示就是最后的句子,額外構造一個訓練實例,其中的長度和相同,而且每個詞都是[NOI]。
也就是說,當作為輸入的時候,模型需要為每個詞輸出[NOI],也就表示在每個詞后面我們不再插入新詞了,也就表示生成結束。
下圖是模型生成的一個例子。
由于這個插入的過程和BERT預訓練的方式一樣,我們可以首先用BERT去初始化POINTER,然后再使用其他語料去預訓練POINTER。
訓練目標就是對每個訓練實例,優化它的對數似然。
推理
在推理的時候,如果一個詞后面生成了[NOI]且生成過程沒有結束,那么在下一輪,這個[NOI]就不必再插入進去,因為它實際上表示的是沒有插入。
在解碼的時候,對每個位置,可以選擇用Greedy Decoding或者Beam Decoding。本文提出Inner-Layer Beam Search (ILBS),進一步提高生成的效果。
具體來說,從左到右,對每個詞,首先得到它預測的top-B個詞,然后rank當前B個候選句子的得分,取其中最大的一大作為當前插入的詞,然后繼續往右走到下一個位置,直到最后一個位置,保留B個候選句子。
實驗
本文在數據集EMNLP2017 WMT News和Yelp English Review上實驗,預訓練數據集為12.6G的Wikipedia,實驗細節詳見原文。
實驗過程大致是首先按照預訓練數據集的構造方法構造訓練、驗證和測試集,以此評估模型的硬約束生成能力。
下面兩個表分別是在News和Yelp上的實驗結果,可以看到,在NIST、BLEU、METEOR、PPL得分上,POINTER相比基線模型取得了顯著的提升,而Dist評估的是模型生成的多樣性,且基線模型CGMH和NMSTG是基于采樣的方法,自然在Dist得分上也就比POINTER高。
另外一個值得關注的點是,POINTER生成的生成的句子長度更加接近人類。最后,使用POINTER預訓練可以顯著提高生成文本的流暢度。
下表是人工測評的結果。在語義度、流暢度和信息度上,POINTER都顯著好于基線模型,但仍然和人工寫作的文本有所差異。
下圖是數據集Yelp上的兩個具體例子。和基線模型相比,POINTER生成的句子不但考慮了所有的硬約束,并且句子更加通順流暢,也更加符合硬約束的原義。
在推理時間方面,在1000個句子上,CGMH需要33小時,NMSTG需要487秒,而POINTER只需要67秒,具體顯著的速度優勢。
小結
本文提出POINTER——一種用于硬約束生成的插入式非自回歸生成的預訓練方法。使用BERT初始化、POINTER預訓練和Inner-Layer Beam Search,POINTER在兩個數據集上取得了顯著的效果提升,而且具有效率優勢。
未來關于非自回歸模型預訓練的研究可以有以下方向:
更加通用的預訓練:不僅僅是插入式的預訓練,而且是適用于各種任務的預訓練方法,還可以探索適用在NMT上的預訓練方法;
更加高效的預訓練:POINTER是對數級別的預訓練,未來可以像BERT那樣將其降低到常數級;
更加簡單的預訓練:POINTER的預訓練需要人工構造訓練數據,本質也是用規則指定了訓練的方向,如何設計像BERT一樣簡單有效的自動預訓練方法,是今后非自回歸預訓練研究的一大重點。
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的非自回归也能预训练:基于插入的硬约束生成模型预训练方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 若新西兰通过《公平数字新闻议价法案》,谷
- 下一篇: 做过这个NLP项目的面试通过率高达 90