日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

前言

文本生成,旨在利用NLP技術(shù),根據(jù)給定信息產(chǎn)生特定目標(biāo)的文本序列,應(yīng)用場(chǎng)景眾多,并可以通過調(diào)整語料讓相似的模型框架適應(yīng)不同應(yīng)用場(chǎng)景。本文重點(diǎn)圍繞Encoder-Decoder結(jié)構(gòu),列舉一些以文本摘要生成或QA系統(tǒng)文本生成為實(shí)驗(yàn)場(chǎng)景的技術(shù)進(jìn)展。

Seq2seq框架

2014年NLP界有兩份重要的成果,Learning Phrase Representations using RNN Encoder–Decoder for Statistical machine Translation和Sequence to Sequence Learning with Neural Networks。雖然在Decoder的輸入上有差別,但結(jié)構(gòu)上兩者都將Encoder-Decoder結(jié)構(gòu)應(yīng)用在翻譯場(chǎng)景中,并由此開始,seq2seq框架在機(jī)器翻譯,對(duì)話生成等領(lǐng)域中占據(jù)重要位置。另外,前者首次提出GRU結(jié)構(gòu),后者采用Beam Search改善預(yù)測(cè)結(jié)果,這些都成為如今seq2seq框架的基礎(chǔ)技術(shù)元素。

隨后,Bahdanau在Neural Machine Translation by Jointly Learning to Align and Translate中提出了融合attention和seq2seq結(jié)構(gòu)的NMT模型結(jié)構(gòu),至此,由Encoder-Attention-Decoder組成的seq2seq框架正式形成。

Seq2seq框架下的文本生成

 

atention-seq2seq如上圖所示,紅色部分為Encoder模塊,用于編碼輸入文本,計(jì)算狀態(tài)值作為黃色的Decoder模塊的初始狀態(tài);藍(lán)色部分是Attention機(jī)制,結(jié)合Encoder模塊和Decoder輸入計(jì)算Context向量;最終Decoder部分結(jié)合Encoder的輸入狀態(tài),Context向量,以及Decoder的歷史輸入,預(yù)測(cè)當(dāng)前輸出對(duì)應(yīng)于詞典的概率分布。

融合關(guān)鍵輸入信息

了解機(jī)器翻譯或生成任務(wù)的朋友都知道,無論Seq2seq模型多么復(fù)雜,最后都是用類似softmax的結(jié)構(gòu)輸出概率向量,然后映射到詞典中某個(gè)詞的的index,所以詞表中沒有的oov是無法被預(yù)測(cè)的。不同于機(jī)器翻譯的是,摘要生成這類任務(wù)產(chǎn)生的摘要中很可能需要輸入文本的信息,且通常會(huì)是某些關(guān)鍵詞句,我們當(dāng)然不希望因?yàn)樵~典中沒有就丟失這些關(guān)鍵信息,因此需要想辦法利用到輸入文本中的信息。

  • Pointer Networks

本文并沒有解決上面提到的OOV問題,而是試圖利用seq2seq處理特定的序列問題。我們已經(jīng)提到,傳統(tǒng)seq2seq結(jié)構(gòu)的輸出由類似詞匯表的某個(gè)元素映射表確定,這樣就無法應(yīng)對(duì)詞匯表隨輸入變動(dòng)的情況,例如凸包問題,給定包含一組坐標(biāo)點(diǎn)的序列,預(yù)測(cè)構(gòu)成凸包的點(diǎn)集,此時(shí)詞匯表的元素應(yīng)該完全由輸入構(gòu)成,顯然傳統(tǒng)seq2seq無法處理。本文作者提出了一種精巧的,比傳統(tǒng)attention-seq2seq更簡單的pointer-net

作者的思路很簡單,輸出完全由輸入決定,其實(shí)就是讓輸出指向某個(gè)輸入,或者說就是預(yù)測(cè)輸入的位置,這樣最后預(yù)測(cè)概率向量的維數(shù)就是輸入序列的長度,你再看attention的計(jì)算過程:

Seq2seq框架下的文本生成

 

第一行結(jié)合了輸入和輸出的編碼信息,第二行計(jì)算了輸入序列的權(quán)重,這個(gè)權(quán)重不就是輸入序列的概率向量么?沒錯(cuò)就這么簡單!對(duì)于找凸包,Delaunay三角剖分,旅行商問題等這類輸出序列完全依賴輸入序列的問題,pointer-net可以給出很精巧的解決方案。

此外,可以看到,雖然pointer-net沒有直接解決OOV問題,但針對(duì)輸出依賴輸入的問題給出了一個(gè)很好的思路,下面的模型在考慮依賴輸入OOV問題時(shí)多少都受到了pointer-net的啟發(fā)。

  • Incorporating Copying Mechanism in Sequence-to-Sequence Learning

本文提出的copy-net目標(biāo)非常明確,就是構(gòu)造一種copy機(jī)制解決上面提到的與輸入相關(guān)的OOV問題。特別是摘要、對(duì)話生成這類問題,輸入文本中一些詞可以通過傳統(tǒng)方式預(yù)測(cè),另一部分詞則可以直接復(fù)制在輸出文本中,所以copy-net最終的詞概率預(yù)測(cè)由兩部分組成,generate-mode和copy-mode,分別用于傳統(tǒng)的預(yù)測(cè)和copy詞的預(yù)測(cè)。

Seq2seq框架下的文本生成

 

上圖展示了copy-net,左邊是傳統(tǒng)的attention-seq2seq結(jié)構(gòu),右邊包含了copy-net全部改進(jìn)思路。紅框中展示了結(jié)合generate-mode和copy-mode的輸出詞預(yù)測(cè),下面的藍(lán)框包含了針對(duì)Decoder編碼狀態(tài)值的改進(jìn)。

首先,generate-mode和copy-mode的輸出概率如下:

Seq2seq框架下的文本生成

 

V就是傳統(tǒng)seq2seq的詞匯表,X在這里是用于預(yù)測(cè)copy詞的詞典,可以看到無論P(yáng)_c還是P_g,和傳統(tǒng)seq2seq的形式都是一樣的。區(qū)別在于詞典,X上針對(duì)輸入文本構(gòu)造的,因此其中可能包含V中沒有的詞,所以copy-net解決上面提到的OOV問題的關(guān)鍵就是用這個(gè)詞典預(yù)測(cè)copy詞。

此外,藍(lán)框中包含了復(fù)雜的狀態(tài)更新機(jī)制??梢钥吹?,S4的輸入不僅包含Tony的詞向量,還有一個(gè)Selective Read向量,這個(gè)是State Update機(jī)制計(jì)算得到的,這個(gè)狀態(tài)更新機(jī)制對(duì)encoder后的輸入矩陣M進(jìn)行加權(quán)求和,意圖是定位M中的某個(gè)位置,即輸入序列中某個(gè)位置的元素,如下圖公式所示。

Seq2seq框架下的文本生成

 

完成狀態(tài)更新后輸入給generate-mode和copy-mode分別計(jì)算兩個(gè)打分函數(shù)。

Seq2seq框架下的文本生成

 

簡單來說,copy-net的核心思路就是根據(jù)輸入語料擴(kuò)展原有詞匯表,這樣也就擴(kuò)展了輸出的概率向量的維數(shù)。不過要特別注意結(jié)合預(yù)測(cè)mode的實(shí)現(xiàn),本質(zhì)上最后仍然是預(yù)測(cè)一個(gè)維數(shù)更高的概率向量,所以最后需要合并兩個(gè)維數(shù)不同的概率向量,即針對(duì)詞典重合的部分的對(duì)齊處理,還是有點(diǎn)麻煩的,相比之下,下面介紹的pointer-generator模型就要簡明許多。

  • Get To The Point-Summarization with Pointer-Generator Networks

本文與copy-net的思路有諸多重合,但設(shè)計(jì)上比copy-net簡單許多。核心同樣是想辦法讓最終預(yù)測(cè)的概率向量涵蓋輸入文本中出現(xiàn)的OOV。

Seq2seq框架下的文本生成

 

上圖簡單明了,以傳統(tǒng)生成的綠色概率分布占P_gen的權(quán)重,與輸入有關(guān)的藍(lán)色概率分布占(1-P_gen)。與copy-net不同,這里直接用了pointer-net的思路,與輸入有關(guān)的概率分布由attention直接生成。實(shí)現(xiàn)上,由于這個(gè)概率分布與輸入序列直接相關(guān),需要對(duì)每次feed的batch都擴(kuò)展詞匯表,其實(shí)就是在原有詞匯表之后追加OOV對(duì)應(yīng)的index,追加的部分,用于在最終合并概率分布時(shí)提供index,具體可參照作者提供的源碼。

此外,本文還提出了一個(gè)特殊的coverage機(jī)制,用來處理生成詞重復(fù)問題。

Seq2seq框架下的文本生成

 

基本思路是,用之前attention矩陣的疊加作為覆蓋向量c_t,參與當(dāng)前attention的計(jì)算,從而讓當(dāng)前的attention盡量避免出現(xiàn)重復(fù)的位置。此外可以在計(jì)算損失函數(shù)時(shí)也加入覆蓋向量c_t緩解重復(fù)問題。

Seq2seq框架下的文本生成

 

融合知識(shí)特征

關(guān)于融合輸入元素的嘗試進(jìn)一步啟發(fā)了NLPer,對(duì)于這類學(xué)習(xí)文本向量表示的模型,利用實(shí)體特征和外部知識(shí)圖譜直覺上就有點(diǎn)靠譜,既然輸入序列中的詞可以利用,那么充分利用實(shí)體信息知識(shí)圖譜等,為文本添加額外的知識(shí)特征自然也是可能的。

  • Generating Natural Answers by Incorporating Copying and Retrieving Mechanisms in Sequence-to-Sequence Learning

本文來自阿里團(tuán)隊(duì),以問答系統(tǒng)為實(shí)驗(yàn)場(chǎng)景,在copynet的基礎(chǔ)上加入知識(shí)檢索模塊共同配合回復(fù)生成。模型結(jié)構(gòu)圖如下:

Seq2seq框架下的文本生成

 

其實(shí)無論模型結(jié)構(gòu)還是文章結(jié)構(gòu),本文和那篇copynet都非常相近,相當(dāng)于增加了預(yù)測(cè)知識(shí)的copy-mode機(jī)制,因此這里不再介紹本文的細(xì)節(jié)。不過從文中與copynet對(duì)比的實(shí)驗(yàn)結(jié)果來看,引入知識(shí)檢索帶來的提升非??捎^,雖然實(shí)驗(yàn)僅用在對(duì)話生成領(lǐng)域,不過在其他文本生成領(lǐng)域引入知識(shí)特征也同樣值得嘗試,下一篇同樣來自阿里團(tuán)隊(duì)的工作,將融合了知識(shí)特征的seq2seq結(jié)構(gòu)用于網(wǎng)購商品的摘要生成。

  • Multi-Source Pointer Network for Product Title Summarization

網(wǎng)購商品的摘要生成需要更大程度保留關(guān)鍵信息,同時(shí)避免無關(guān)內(nèi)容。本文的結(jié)構(gòu)很像引入知識(shí)特征的pointer-generator,利用pointer的思想從輸入文本中提取關(guān)鍵詞,這里的輸入文本是商品的標(biāo)題,確保信息相關(guān);引入知識(shí)特征則是為了更大程度的產(chǎn)生關(guān)鍵信息。

Seq2seq框架下的文本生成

 

從上圖的結(jié)構(gòu)中可以看到,文中提出的MS-Pointer結(jié)構(gòu)有兩個(gè)輸入,商品標(biāo)題作為傳統(tǒng)Encoder輸入,背景知識(shí)作為額外的輸入文本,兩種輸入的處理方式相同,encoding后與Decoder的輸入分別計(jì)算出兩個(gè)attention,然后按照pointer-generator的思路結(jié)合兩種分布,只不過這里結(jié)合的是傳統(tǒng)詞表的概率分布與背景知識(shí)特征的概率分布。

  • Learning to Select Knowledge for Response Generation in Dialog Systems

上面兩篇文章分別對(duì)copy-net和pointer-generator做知識(shí)特征融合,結(jié)構(gòu)上沒有很大的改變,基于前者實(shí)現(xiàn)也是相對(duì)方便的。本文則更側(cè)重于知識(shí)特征,強(qiáng)調(diào)利用后驗(yàn)知識(shí)分布優(yōu)化對(duì)話生成。

Seq2seq框架下的文本生成

 

乍一看比上面的結(jié)構(gòu)都復(fù)雜,但其實(shí)每個(gè)部分都有明確的目標(biāo),最上面sourceX到decode的部分就是傳統(tǒng)的attention-seq2seq,這里重點(diǎn)介紹下面關(guān)于知識(shí)特征的融合利用。

首先,用單獨(dú)的Encoder模塊編碼知識(shí)和目標(biāo)輸出(訓(xùn)練時(shí)),然后通過X,Y計(jì)算知識(shí)K的先驗(yàn)和后驗(yàn)概率分布,并通過KL散度度量兩個(gè)概率分布的距離,這里不難理解,先驗(yàn)分布和后驗(yàn)分布相差極小就意味著可以用先驗(yàn)分布采樣知識(shí)(預(yù)測(cè)時(shí)后驗(yàn)分布未知),并用于生成目標(biāo)回復(fù)Y。第二部分中,通過后驗(yàn)(預(yù)測(cè)時(shí)先驗(yàn)代替)分布采樣出與對(duì)話相關(guān)的知識(shí)作為額外的知識(shí)特征,與Decoder模塊的輸入一起編碼,再和被encoding的sourceX一起預(yù)測(cè)下一個(gè)詞。此外,訓(xùn)練的損失函數(shù)包含KL散度,NLL損失和BOW損失,第三部分就是用BOW損失考量被采樣出的知識(shí)(圖中的k2)與目標(biāo)輸出文本相關(guān)的概率。

總結(jié)一下,本文仍然是seq2seq框架,關(guān)鍵就是用兩個(gè)計(jì)算損失優(yōu)化模型采樣知識(shí)的能力,然后將知識(shí)作為額外特征參與Encoder-Decoder編碼。相比于模型結(jié)構(gòu),筆者更關(guān)注數(shù)據(jù)中的知識(shí)形式,本文的源碼和數(shù)據(jù)會(huì)在發(fā)表后開放,項(xiàng)目地址就在文中,各位感興趣可以持續(xù)關(guān)注。

卷積結(jié)構(gòu)上的新嘗試

2017年有兩篇基于機(jī)器翻譯任務(wù)的工作擺脫了RNN結(jié)構(gòu),采用了CNN和Transformer,一定程度上證明了非RNN結(jié)構(gòu)在NLP任務(wù)上的可行性。Facebook的這篇Convolutional Sequence to Sequence Learning提出了基于Attention-Seq2seq框架的Convs2s結(jié)構(gòu),用CNN做編解碼單元,通過學(xué)習(xí)位置向量彌補(bǔ)CNN不具備的序列特征捕捉特性,并借助殘差結(jié)構(gòu),GLU等技巧讓網(wǎng)絡(luò)可以堆疊的足夠深,從而讓CNN也能捕捉長距離文本特征,另外CNN的并行能力遠(yuǎn)超RNN,因此該結(jié)構(gòu)理論上似乎可以更節(jié)省時(shí)間,本節(jié)將介紹兩篇基于Convs2s結(jié)構(gòu)的工作,第一篇融合了主題模型作為額外的特征,第二篇結(jié)合了強(qiáng)化學(xué)習(xí)的方式,兩者雖基于Convs2s結(jié)構(gòu),但對(duì)其他結(jié)構(gòu)同樣有啟發(fā)性。

  • Don’t Give Me the Details, Just the Summary! Topic-Aware Convolutional Neural Networks for Extreme Summarization

本文的結(jié)構(gòu)和Convs2s幾乎完全一致,其創(chuàng)新點(diǎn)就在于網(wǎng)絡(luò)輸入融合了傳統(tǒng)的文本embedding和主題向量,如下圖所示:

Seq2seq框架下的文本生成

 

個(gè)人認(rèn)為,融合主題模型的思路很適合文本摘要類任務(wù),筆者用pointer-generator實(shí)驗(yàn)時(shí)就發(fā)現(xiàn),即便模型可以輸出貼近自然語言的結(jié)果,也可以包含一些特殊詞,但丟失原文關(guān)鍵信息的現(xiàn)象仍然非常明顯,特別是訓(xùn)練語料不充分的情況下。結(jié)合知識(shí)特征自然是一種合理的思路,但構(gòu)建知識(shí)圖譜或類似的結(jié)構(gòu)化知識(shí)數(shù)據(jù)并不是一件簡單的事,相比之下主題模型就更為容易應(yīng)用了。此外本文融合主題的方式非常直接,并不依賴網(wǎng)絡(luò)結(jié)構(gòu),很容易應(yīng)用于其他模型結(jié)構(gòu)。

  • A Reinforced Topic-Aware Convolutional Sequence-to-Sequence Model for Abstractive Text Summarization

本文結(jié)構(gòu)與上文相近,不過在融合主題信息的方式上有很大變化,此外引入RL方式來解決傳統(tǒng)損失函數(shù)帶來的問題,思路也非常值得借鑒。

Seq2seq框架下的文本生成

 

由上圖可以看出,本文的主題信息不再和輸入文本的embedding求和,而是先單獨(dú)通過卷積編碼,再和decoder的輸入部分共同參與attention計(jì)算,通過兩邊的attention相加來融合文本embedding和主題信息;此外,還有一個(gè)概率生成模塊(biased probability generation)負(fù)責(zé)進(jìn)一步控制融合。

損失函數(shù)部分用到了強(qiáng)化學(xué)習(xí)中的SCST(self-critical sequence training)。作者提到,傳統(tǒng)teacher forcing算法目標(biāo)是最小化每一步的極大似然損失,然而考慮到ROUGE這樣衡量句子級(jí)準(zhǔn)確度的驗(yàn)證算法,由于exposure bias的問題,該目標(biāo)往往會(huì)得到次優(yōu)解(訓(xùn)練時(shí)每次都通過ground-true預(yù)測(cè)當(dāng)前步,預(yù)測(cè)時(shí)沒有g(shù)round-true);此外,摘要具有靈活性,而最小化極大似然損失的優(yōu)化目標(biāo)會(huì)迫使模型僅把參考的摘要作為正確答案,其他語意上相似的答案會(huì)被認(rèn)為是錯(cuò)誤答案。為了解決原有優(yōu)化目標(biāo)帶來的問題,作者提出用SCST直接最大化不可微的ROUGE,訓(xùn)練時(shí)根據(jù)輸入產(chǎn)生兩個(gè)輸出,一個(gè)用傳統(tǒng)概率最大化生成,另一個(gè)從分布中采樣得到,計(jì)算兩個(gè)輸出序列的rouge分?jǐn)?shù)作為reward,這樣在訓(xùn)練階段,SCST會(huì)讓模型參考實(shí)際的分布,并迫使模型生成rouge分?jǐn)?shù)更高的序列。

Transformer時(shí)代

承接上一節(jié),Transformer完全拋棄了CNN與RNN,設(shè)計(jì)了并行能力同樣強(qiáng)的self-attention,與FFN,殘差結(jié)構(gòu)等共同組成一個(gè)Transformer模塊,類似CNN可以堆疊多層且較RNN更節(jié)省時(shí)間。不過,Transformer和Convs2s在機(jī)器翻譯任務(wù)上的表現(xiàn)差異并不大,加之Attention is all you need這樣的文章標(biāo)題,不少人在當(dāng)時(shí)一度認(rèn)為這又是一個(gè)拼模型刷分的水文,直到2018年GPT和BERT的誕生,深層Transformer堆疊+海量無監(jiān)督語料預(yù)訓(xùn)練的模式受到幾乎所有從業(yè)者的關(guān)注。本節(jié)介紹的是MSRA近期發(fā)表的MASS,作者通過修改BERT的mask方式實(shí)現(xiàn)Seq2seq框架下BERT預(yù)訓(xùn)練的文本生成模型。

  • MASS: Masked Sequence to Sequence Pre-training for Language Generation
Seq2seq框架下的文本生成

 

BERT本身是以學(xué)習(xí)表示為目標(biāo),或者說是NLU方面的探索,隨機(jī)MASK作為預(yù)訓(xùn)練任務(wù)被證明效果突出,然而會(huì)存在pretraining和fine-tuning數(shù)據(jù)不一致的問題,如果你想把BERT拼在Encoder端和Decoder端,就要考慮改變BERT的預(yù)訓(xùn)練方式。MASS略微修改了BERT的mask方式,在Encoder端連續(xù)mask一個(gè)子序列,讓Decoder用前i-1個(gè)詞預(yù)測(cè)第i個(gè),就這樣把BERT套進(jìn)Seq2seq框架,一起pretraining即可。

總結(jié)

本文重點(diǎn)介紹了基于Seq2seq框架的文本生成類模型,對(duì)于機(jī)器翻譯任務(wù),傳統(tǒng)的attention-seq2seq結(jié)構(gòu)就能獲得不錯(cuò)的效果,相比于不同的模型結(jié)構(gòu),充分的訓(xùn)練數(shù)據(jù)似乎更為關(guān)鍵。而對(duì)于文本摘要,對(duì)話生成這類任務(wù),序列中更需要包含主題,關(guān)鍵實(shí)體等特殊信息元,因而融合主題、輸入文本、知識(shí)特征的策略很可能會(huì)帶來更多收益。不過,文本生成類任務(wù)仍處于初級(jí)階段,復(fù)雜花哨的結(jié)構(gòu)也許很難達(dá)到可觀的效果。因此筆者建議,即便是文本摘要這類任務(wù),仍不妨先試試受眾廣泛的開源實(shí)現(xiàn),諸如gnmt、fairseq、tensor2tensor等。

關(guān)于本文提到的一些trick,copy機(jī)制的實(shí)現(xiàn)有些復(fù)雜,并且不少開源項(xiàng)目的copy實(shí)現(xiàn)是存在問題的,pointer-generator的效果更好,且實(shí)現(xiàn)上更容易,當(dāng)然,主題和知識(shí)特征的融合也是值得嘗試的技巧。最后,本文沒有過多涉及的強(qiáng)化學(xué)習(xí)和對(duì)抗網(wǎng)絡(luò),在文本生成方向上有不少值得借鑒的工作,也可以作為文本生成任務(wù)的一個(gè)方向考慮。

分享到:
標(biāo)簽:框架 Seq2seq
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定