本期導(dǎo)讀:近年來(lái),序列到序列(seq2seq)方法成為許多文本生成任務(wù)的主流思路,在機(jī)器翻譯、文本摘要等絕大多數(shù)生成任務(wù)上都得到了廣泛的應(yīng)用。與此同時(shí),一些研究人員另辟蹊徑,跳脫出傳統(tǒng)的seq2seq方法,探索如何將 編輯方法(edit-based approach) 應(yīng)用于一些文本生成任務(wù),從而提升模型在生成任務(wù)上的表現(xiàn)。本期結(jié)合Google Research的三篇工作,對(duì)基于編輯方法的文本生成技術(shù)進(jìn)行介紹。
1. 引言
在文本生成任務(wù)中引入編輯方法的 motivation 主要有兩方面:
首先,基于Transformer結(jié)構(gòu)的seq2seq模型在當(dāng)前各項(xiàng)文本生成任務(wù)上得到了廣泛使用。而這類傳統(tǒng)seq2seq模型的不足主要有以下幾點(diǎn):
(1)數(shù)據(jù)效率: 為使模型在文本生成任務(wù)上獲得較好的表現(xiàn),傳統(tǒng)seq2seq模型通常需要在大量數(shù)據(jù)上進(jìn)行訓(xùn)練,時(shí)間長(zhǎng),計(jì)算量龐大。
(2)推理時(shí)間: 傳統(tǒng)seq2seq模型在解碼時(shí)主要采用自回歸的方式。這種方式按順序從左至右一個(gè)詞一個(gè)詞地預(yù)測(cè)輸出,雖然遵循了人類語(yǔ)言的單向順序性,但大大增加了模型的推理時(shí)間。
(3)可控性與可解釋性: 傳統(tǒng)seq2seq模型在輸出時(shí)會(huì)發(fā)生一些錯(cuò)誤。例如,產(chǎn)生輸入文本中并不支持的輸出(hallucination)。此外,模型在輸出時(shí)的可解釋性也較差。
其次,以句子融合、語(yǔ)法糾錯(cuò)等為代表的一些文本生成任務(wù)均具有 “重合”(overlap) 的特點(diǎn),即源文本和目標(biāo)文本在語(yǔ)言上重復(fù)性較大,只需要對(duì)源文本做微小的改動(dòng)就能生成目標(biāo)文本(圖1)。因此從頭訓(xùn)練一個(gè)seq2seq模型然后自回歸地預(yù)測(cè)輸出就顯得較為浪費(fèi)。基于此,復(fù)制機(jī)制(copy mechanism)的引入使得模型能夠?qū)Ξ?dāng)前輸出是復(fù)制原詞還是生成新詞進(jìn)行選擇。但即使模型使用了復(fù)制機(jī)制,仍需要較大規(guī)模的訓(xùn)練數(shù)據(jù)來(lái)滿足解碼時(shí)的詞匯量需求,從而保證模型性能。
綜上,在文本生成任務(wù)中引入文本編輯的方法,意在針對(duì)一些生成任務(wù)中的overlap特點(diǎn),合理利用源文本與目標(biāo)文本的相似部分,改善傳統(tǒng)seq2seq模型的不足。這種方法直觀上保留了從源文本到目標(biāo)文本的編輯過(guò)程(如哪些詞保留,哪些詞需要?jiǎng)h除等),與人類實(shí)際處理這類生成任務(wù)的思路不謀而合,從而也帶來(lái)了較好的可解釋性。
2. LaserTagger
LaserTagger是Google Research在 “Encode, Tag, Realize: High-Precision Text Editing” 一文中提出的文本生成模型,該論文發(fā)表于EMNLP 2019。
這篇工作的主要貢獻(xiàn)有:
(1)將序列標(biāo)注作為源文本到目標(biāo)文本的跳板,即首先對(duì)源文本標(biāo)注編輯操作標(biāo)簽,再根據(jù)標(biāo)注得到的標(biāo)簽序列將源文本并行轉(zhuǎn)化為目標(biāo)文本(圖2)。
(2)基于(1)的思路,設(shè)計(jì)了基于編輯操作的文本生成模型LaserTagger(包括LaserTaggerFF和LaserTaggerAR兩種模型變體),并且在四種文本生成任務(wù)上進(jìn)行了對(duì)比實(shí)驗(yàn),獲得了較好的效果。
2.1 主要方法
標(biāo)注操作定義
本文定義文本編輯操作標(biāo)簽由兩部分構(gòu)成:基本標(biāo)簽B和附加標(biāo)簽P,表示為。
基本標(biāo)簽分為兩種:保留()或刪除(),指對(duì)當(dāng)前位置的token進(jìn)行保留還是刪除操作。
附加標(biāo)簽指需要在當(dāng)前位置插入新短語(yǔ)(可以是單個(gè)詞、多個(gè)詞或標(biāo)點(diǎn)等,也可以為空)。
在構(gòu)造編輯標(biāo)簽序列時(shí),由匹配算法(見(jiàn)圖4)從訓(xùn)練語(yǔ)料構(gòu)造出的phrase vocabulary 中選出合適的短語(yǔ)插入。因此,若詞典的大小為,則編輯標(biāo)簽的總規(guī)模則約為。
此外,可以根據(jù)不同的下游任務(wù)定義一些特殊標(biāo)簽。例如在句子融合任務(wù)中有時(shí)需要交換輸入句子的語(yǔ)序,此時(shí)可以設(shè)置標(biāo)簽SWAP代表交換語(yǔ)序操作。
構(gòu)造phrase vocabulary
在構(gòu)造訓(xùn)練數(shù)據(jù)對(duì)應(yīng)的編輯標(biāo)簽序列時(shí),若詞典無(wú)法提供可插入的新短語(yǔ),則該條訓(xùn)練數(shù)據(jù)會(huì)被篩掉。因此理想的詞典應(yīng)滿足以下兩點(diǎn):一方面,詞典規(guī)模應(yīng)盡可能的小;另一方面,該詞典應(yīng)能夠盡可能的覆蓋更多的訓(xùn)練數(shù)據(jù)。
構(gòu)造詞典的步驟為:
(1) 將源文本和目標(biāo)文本對(duì)齊,計(jì)算出它們的最長(zhǎng)公共子序列(longest common subsequence, LCS)。
(2) 將目標(biāo)文本中不屬于LCS的n-grams加入詞典中。
(3) 最終保留出現(xiàn)頻率最高的個(gè)phrases。
在實(shí)驗(yàn)中發(fā)現(xiàn),詞典保留頻率最高的500個(gè)phrases已能覆蓋85%的訓(xùn)練樣本,且再繼續(xù)增大詞典規(guī)模對(duì)LaserTagger的性能幫助很小。因此,在本文的各主要實(shí)驗(yàn)中,詞典的大小均被設(shè)置為500。
構(gòu)造編輯標(biāo)簽序列
在定義好標(biāo)簽、構(gòu)造完詞典之后,就可以根據(jù)訓(xùn)練語(yǔ)料中的源文本和目標(biāo)文本構(gòu)造出對(duì)應(yīng)編輯標(biāo)簽序列,進(jìn)行有監(jiān)督學(xué)習(xí)。
構(gòu)造編輯標(biāo)簽序列的算法如圖4中偽代碼所示。該算法主要采用貪心匹配的思想,通過(guò)設(shè)置兩個(gè)指針(is與it)對(duì)源文本和目標(biāo)文本進(jìn)行遍歷,進(jìn)而構(gòu)造出標(biāo)簽序列。值得注意的是偽代碼中并未給出PDELETE標(biāo)簽如何生成。筆者猜測(cè)可能是由于PDELETE標(biāo)簽與PKEEP標(biāo)簽實(shí)際上可以相互替代(如圖5所示),在實(shí)驗(yàn)中二者使用一個(gè)即可。
2.2 模型概述
本文設(shè)計(jì)的LaserTagger有兩種變體:LaserTaggerFF與LaserTaggerAR。前者Decoder部分采用前饋網(wǎng)絡(luò)(feed forward network),推理速度更快;后者Decoder部分采用的是1層Transformer Decoder,推理效果更好。兩種變體Encoder部分均與BERT-base結(jié)構(gòu)相同,為12層Transformer Encoder。
3. Seq2Edits
Seq2Edits是Google Research在 “Seq2Edits: Sequence Transduction Using Span-level Edit Operations” 一文中提出的文本生成模型,該論文發(fā)表于EMNLP 2020。
本篇工作的主要改進(jìn)有:
(1)與LaserTagger不同,Seq2Edits是在span-level上進(jìn)行標(biāo)簽標(biāo)注。即,LaserTagger對(duì)每一個(gè)詞(token)標(biāo)注一個(gè)編輯標(biāo)簽,而Seq2Edits對(duì)一個(gè)或多個(gè)詞(span)標(biāo)注一個(gè)編輯標(biāo)簽。
論文作者認(rèn)為在span-level上進(jìn)行標(biāo)注操作能夠更好地對(duì)局部依賴(local dependencies)進(jìn)行建模,而對(duì)于語(yǔ)法糾錯(cuò)等生成任務(wù)而言,人類實(shí)際解決這類問(wèn)題時(shí)的主要根據(jù)也是span與span間的局部依賴,因此在span-level上進(jìn)行標(biāo)注操作也與人類實(shí)際解決問(wèn)題時(shí)的思路相吻合。
(2)Seq2Edits將標(biāo)注操作進(jìn)一步細(xì)化,每一個(gè)span對(duì)應(yīng)的編輯標(biāo)簽都由一個(gè)三元組組成,相比LaserTagger的標(biāo)簽定義方式粒度更細(xì),因此可解釋性也更好。
(3)推理時(shí)間不再取決于目標(biāo)文本的長(zhǎng)度,而是依賴于編輯操作的規(guī)模。推理速度相比傳統(tǒng)seq2seq模型仍得到大幅提升。
3.1 主要方法
標(biāo)注操作定義
Seq2Edits的標(biāo)注操作與LaserTagger主要有兩點(diǎn)不同:(1)Seq2Edits是在span-level上打標(biāo)簽;(2)Seq2Edits的編輯標(biāo)簽被定義為三元組的形式。
編輯標(biāo)簽被定義為一個(gè)三元組,其中代表編輯操作類型(例如修改標(biāo)點(diǎn),修改動(dòng)詞形式等),代表編輯操作的結(jié)束位置(默認(rèn)當(dāng)前操作的開(kāi)始位置為上一個(gè)標(biāo)簽的結(jié)束位置),為替換短語(yǔ)(保留原文為)。
生成任務(wù)表示
設(shè)源文本為序列,長(zhǎng)度為;目標(biāo)文本為序列,長(zhǎng)度為。
則傳統(tǒng)seq2seq思路下文本生成任務(wù)可表示為:
使用本文方法,則任務(wù)可表示為:
以圖7中句子為例,若源文本、目標(biāo)文本分別為:
則編輯標(biāo)簽序列為:
從源文本到目標(biāo)文本的過(guò)程則可表示為:
從本文對(duì)生成任務(wù)的概率表示中可以看出,在每一個(gè)上,標(biāo)簽三元組中相互并不是條件獨(dú)立的,而是有著一定的依賴關(guān)系,即:
因此,模型在預(yù)測(cè)標(biāo)簽三元組時(shí)存在著先后順序:在第個(gè)上,先預(yù)測(cè),然后預(yù)測(cè),最后預(yù)測(cè)。
3.2 模型概述
在理解Seq2Edits生成文本的概率表示后就不難理解其模型結(jié)構(gòu)。Seq2Edits沿用了標(biāo)準(zhǔn)的Transformer Encoder-Decoder結(jié)構(gòu),將Decoder分為A和B兩部分來(lái)分別預(yù)測(cè)標(biāo)簽、和。Decoder A和Decoder B之間使用殘差連接(residual connections)。
對(duì)于位置標(biāo)簽的預(yù)測(cè)基于pointer-network,使用了類似Transformer中attention的機(jī)制,即:其中(queries)來(lái)自歷史的decoder states,(keys)和(values)來(lái)自當(dāng)前的encoder states。
本期介紹了Google Research的LaserTagger和Seq2Edits兩篇工作,下一期將繼續(xù)介紹Google的第三篇工作FELIX以及三篇工作的實(shí)驗(yàn)評(píng)價(jià)部分和總結(jié),敬請(qǐng)關(guān)注。
編輯:jq
-
Google
+關(guān)注
關(guān)注
5文章
1762瀏覽量
57506
原文標(biāo)題:基于編輯方法的文本生成(上)
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論