搜索,然后学习:两阶段的无监督文本生成
論文標題:
Unsupervised Text Generation by Learning from Search
論文作者:
Jingjing Li, Zichao Li, Lili Mou, Xin Jiang, Michael R. Lyu, Irwin King
論文鏈接:
https://arxiv.org/abs/2007.08557
文本生成是自然語言處理的核心任務之一,很多應用如機器翻譯、文本摘要都依賴于文本生成技術。一個高質量的文本生成模型往往需要大量的標注數據,這就從數據上限制了模型的發展。
本文提出TGLS——一種基于“先搜索后學習”的無監督文本生成方法,模型反復迭代,最終能生成較高質量的文本。
在復述生成和文本正規化兩個任務上,TGLS能顯著超越之前所有的無監督模型,甚至逼近有監督模型效果,體現出無監督學習的強大潛力!
無監督文本生成
機器翻譯是最為常見的文本生成任務,但是要得到一個高質量的機器翻譯系統,一定數量的平行語料是必不可少的。
盡管也有很多工作研究了不依賴平行語料的機器翻譯模型,但目前為止,它們和有監督相比仍然不能望其項背。
但是一個事實是,無論是什么任務,平行語料總歸是極少數,無標注語料卻隨處可見,如何充分利用這些語料訓練文本生成模型,從而生成高質量的文本,是未來一個非常具有發展潛力的研究方向。
在這里讀者需要注意區別無監督的預訓練和無監督的訓練。
預訓練一般是指在大規模通用語料上訓練,而無監督訓練一般是在特定領域數據上訓練;預訓練后往往還需要微調,而無監督訓練后可以直接用于測評。這里需要讀者甄別。
基于此,本文提出TGLS,一種完全無監督的文本生成方法。
TGLS的整體思想是“先搜索后學習”,搜索就用模擬退火等方法進行,把搜索出來的文本當成“偽平行語料”讓模型學習,然后反過來,模型生成的文本也可以指導搜索方向,如此反復進行,從而達到比較好的效果。
具體的做法我們將在下一節詳述,但總的來說,本文有如下貢獻:
提出TGLS,一種通用的無監督文本生成方法;
TGLS可以和預訓練模型結合,也即把整個訓練過程當做微調;
在文本復述和文本正規化兩個任務上,碾壓其他無監督模型,甚至接近有監督模型的效果。
TGLS:unsupervised Text Generation by Learning from Search
TGLS的總體思路比較簡單:首先用一個固定的搜索器根據輸入文本搜索目標文本(本文使用模擬退火搜索);然后把搜索得到的文本作為“偽標注文本”,用來訓練一個生成器;之后再把生成器生成的文本輸入到搜索器里面,再把這一次搜索得到的文本用來訓練生成器。
這其實有兩個階段,每個階段的目標有所區別,第一個階段用交叉熵訓練,第二個階段用最大間隔訓練,我們下面會進行介紹。
下圖是這個流程的示意圖,就是搜索時的打分:
模擬退火搜索
對于文本搜索,就是在搜索的每一步,選擇插入、刪除或替換其中的一個詞,我們記輸入文本為,替換后的文本為,那么這可以給出一個打分函數:
表示文本的流暢度,表示替換前后文本的關聯度,是和具體的任務相關。
對于,我們當然想要最大化這個得分,這就可以用模擬退火去做。注意到,該搜索器是不需要學習的。該搜索算法參見原文附錄中的算法二。
假設現在已經進行了輪,即當前的文本是,然后在此基礎上又進行一輪,就可以得到編輯后的句子,并且有它的一個得分。
接下來可以根據概率考慮接受(即令)或者拒絕它(即令)。這樣進行若干輪,就能得到最終搜索出來的句子。
現在的問題是,得分函數里的三項是什么。
文本流暢度:用一個微調的GPT2計算文本的概率得分,微調是在特定領域的非平行語料上完成的;
語義相關度:分為兩種,詞級別的和句子級別的。詞級別的得分首先用預訓練的RoBERTa得到每個詞的特征,然后計算它們的余弦相似度,即:
上式度量了兩個句子關鍵信息的相似度。相似地,句子級別的得分就可以是:
從而最終的語義相關度得分就是二者的加權乘積;
具體任務得分:這個得分和具體的任務相比。對復述而言,我們想要生成的文本在形式上和原文本盡可能不同,所以這個得分就是。
對于文本正規化來說,這個得分就可以用一個實現訓練的分類器實現:。
以上就是搜索的整個過程。總結一下,就是在每一輪,基于現在的句子搜索出一個新句子,計算它的得分,把當前得分和前一個得分作差得到一個概率,按照這個概率接受它或者拒絕它;重復上述過程即可。
一階段訓練
我們說搜索器是固定的不用學習,我們真正想要學習訓練的是文本生成器。既然我們已經搜索出來一個文本了,那么就可以把當做的標注數據,去訓練一個已經預訓練的GPT2就好了,這就可以采用標準的詞級別交叉熵損失。
如一開始的圖所示,首先用模擬退火SA得到句子,然后讓GPT2在上面訓練,實際上是在一定程度上去擬合上述打分函數,從這個角度講,打分函數的設計相當重要。
二階段訓練
但是上述過程有一個問題:搜索和生成是相互獨立的,搜索出來的默認作為訓練目標,那這樣和只用搜索有什么區別呢?
所以TGLS做的第二件事就是:讓GPT2生成的句子再送入搜索器,再在相應的搜索結果上訓練一波。這樣就可以增強搜索結果的多樣性。
具體來說,把輸入到GPT2中,用beam search得到個,記為;之后從中隨機選一個,輸入到搜索器中,得到搜索結果,這樣就有個樣本。
然后按照打分公式從中選擇分最大的那個作為正樣本,記為,其他的就是負樣本;最后就能用最大間隔去訓練GPT2:
那么為什么不用交叉熵呢?因為這些樣本都是由GPT2自己生成的,自己訓練自己沒有意義。
相反,用最大間隔去訓練,可以讓GPT2從整體上去更加細致地區別更好的那些文本,或者說“讓好的更好”,而交叉熵是“讓不好的變好”。
下圖是TGLS的訓練算法。注意到,第二階段訓練是在第一階段全部訓練完之后才開始的,而不是交替進行。
實驗
本文在文本復述數據集Quora和文本正規化數據集GYAFC上實驗,其他實驗設置詳見原文。
下表是主要結果。可以看到,TGLS在兩個數據集上吊打了其他無監督方法,甚至在復述任務上還接近監督學習的效果。
在文本正規化任務上,無監督模型也更加接近監督學習的表現。
最后再來看看TGLS各個部分的影響,如下表所示。SA表示模擬退火,CE是交叉熵損失,MM是最大間隔損失。
首先從推理速度來看,用GPT2生成顯然比用搜索的方法快,因為搜索需要經過很多次迭代;其次,注意到第二階段訓練用交叉熵和用最大間隔的區別非常大,這就驗證了最大間隔的作用其實是和交叉熵完全不同的。
小結
本文提出TGLS,一種無監督文本生成模型。TGLS的特點在于“搜索學習”和“兩階段訓練”。
基本操作是首先搜索出目標文本,然后在這之上訓練,只不過訓練分為兩個階段,一個是“讓不好的變好”,第二個是“讓好的更好”,二者的損失函數不同,需要特別注意。
從實驗結果來看,本文效果很好,可以在一定程度上說明文本生成方向的無監督學習還有很大的發展潛力。
當然,本文的方法還有一些明顯的可改進之處,比如:更好的搜索方法,可學習的搜索方法,更簡單的訓練方法等。這些都需要未來持續而深入的探索。
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的搜索,然后学习:两阶段的无监督文本生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小鹏 P7+ 官宣 10 月 10 日全
- 下一篇: 乐辉短剑二代弹匣长度多少?