中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
神經(jīng)機(jī)器翻譯的訓(xùn)練改進(jìn)和解碼提速

編輯整理:殷鵬

內(nèi)容來源:將門線上直播176期

出品平臺(tái):將門、DataFun

注:歡迎轉(zhuǎn)載,轉(zhuǎn)載請留言。

導(dǎo)讀:當(dāng)前機(jī)器翻譯模型通常采用自注意力機(jī)制進(jìn)行編碼,訓(xùn)練時(shí)直接將Ground Truth詞語用作上文,并行生成所有的目標(biāo)詞語,極大的提升了訓(xùn)練速度。但測試的時(shí)候卻面臨以下難題:

首先,模型得不到Ground Truth,從而只能用自己生成的詞作為上文,使得訓(xùn)練和測試的分布不一致,影響了翻譯質(zhì)量;

其次,由于每個(gè)目標(biāo)詞語的生成依賴于其之前生成的詞,所以目標(biāo)詞語只能順序生成,不能并行,從而影響了解碼速度。

本次分享將針對以上問題,介紹他們的解決方法。

具體分享內(nèi)容如下:

1. 改進(jìn)訓(xùn)練和測試的分布不一致問題:

  • 采用計(jì)劃采樣的方法 (ACL 2019 best paper)

  • 采用可導(dǎo)的序列級(jí)損失函數(shù)進(jìn)行貪心搜索解碼

2. 解碼速度提升:

  • 基于Cube Pruning解碼算法

  • 融入序列信息的非自回歸翻譯模型

▌背景

當(dāng)前,自然語言處理方向的生成任務(wù)主要包括:機(jī)器翻譯,人機(jī)對話,文章寫作,文章摘要等等。目前這些問題主要是通過序列到序列模型來解決的。序列到序列模型的主要架構(gòu)是一個(gè)帶有注意力機(jī)制的編碼器-解碼器架構(gòu)。這個(gè)架構(gòu)基于一個(gè)重要的假設(shè):即“源端的輸入和目的端的輸出之間是可以找到一個(gè)共同的語義空間。編碼器的任務(wù)就是對輸入進(jìn)行各種變換,映射到共同語義空間上的一個(gè)點(diǎn)。解碼器的任務(wù)是對共同語義空間的這個(gè)點(diǎn)進(jìn)行一些反操作,將其映射到目標(biāo)端空間,從而生成相應(yīng)的詞語??紤]到在每一步進(jìn)行翻譯的時(shí)候不需要關(guān)注所有的源端輸入,而是僅僅關(guān)注一部分,注意力機(jī)制主要目的就是將當(dāng)前步需要關(guān)注的部分找出來。
目前主流的序列到序列模型主要包括兩種: 一個(gè)是RNNSearch,一個(gè)是Transformer。
RNNSearch通過RNN來將源端的輸入編碼成一個(gè)表示,通常源端采用的是雙向RNN,這樣對于每一個(gè)源端Token的編碼表示都能考慮到其上下文信息。在目標(biāo)端同樣是使用一個(gè)RNN,它可以將翻譯的歷史信息給串起來,這樣在當(dāng)前步翻譯的時(shí)候就能考慮到上文的信息。
Google在2017年提出了Transformer結(jié)構(gòu),該結(jié)構(gòu)經(jīng)過無數(shù)人的驗(yàn)證,發(fā)現(xiàn)非常好用,所以Transformer就成為了當(dāng)前主流的序列到序列模型。Transformer主要的機(jī)制是:在生成源端表示的時(shí)候并沒有使用RNN,而是使用自注意力機(jī)制來生成每一個(gè)Token的表示。這樣做的好處是,在訓(xùn)練的時(shí)候可以并行,因?yàn)槊總€(gè)詞都可以并行的和其它詞計(jì)算attention ( RNN則只能串行 )。同樣在解碼端的時(shí)候,也是使用的自注意力機(jī)制。
這種模型在訓(xùn)練的時(shí)候都是采用的TeacherForcing形式。模型在解碼當(dāng)前步的時(shí)候,通常會(huì)有三個(gè)輸入:解碼器當(dāng)前的狀態(tài),attention和上一步解碼的結(jié)果。在訓(xùn)練的過程中,我們通常使用上一步的真實(shí)輸出而非模型輸出作為當(dāng)前步解碼的結(jié)果,這就是所謂的Teacher Forcing。
在Inference的時(shí)候通常采用Beam-Search +順序生成的方式,在每一步都保存Top-K個(gè)最優(yōu)結(jié)果。
在介紹了訓(xùn)練和推斷之后,我們來看一下目前面臨的問題,因?yàn)樵谟?xùn)練的時(shí)候我們使用Teacher Forcing的方式,但是我們在推斷的時(shí)候并不知道上一步的GroundTruth是什么,所以,我們只能將上一步預(yù)測的結(jié)果來近似為Ground Truth。這樣,訓(xùn)練和推斷在生成分布的條件上就產(chǎn)生了差異(Ground Truth vs Predicted),這個(gè)問題被稱作為 Exposure Bias。
在訓(xùn)練的時(shí)候,我們還存在另一個(gè)問題。訓(xùn)練的時(shí)候由于我們使用的交叉熵?fù)p失函數(shù),該損失函數(shù)只對Ground Truth友好,對于非Ground Truth的結(jié)果一視同仁。但是對于翻譯任務(wù)來說,并不是只有一種翻譯方式,從slides中可以看到,Output1和Ground Truth表示的是同一個(gè)意思,但是Output2和Ground Truth表示的含義就是不同了,但是在訓(xùn)練的時(shí)候,交叉熵?fù)p失函數(shù)會(huì)將Output1和Output2一視同仁,這樣是不合理的。
在推斷階段解碼的時(shí)候同樣存在兩個(gè)問題,在每一個(gè)解碼step我們都要執(zhí)行n各預(yù)測,每個(gè)預(yù)測都要得到整個(gè)詞表的一個(gè)分布,所以在每一個(gè)step都要生成n*|V|個(gè)詞語。而且每個(gè)時(shí)間步還必須串行,這大大影響了解碼速度。
▌?dòng)?xùn)練
1. 計(jì)劃采樣
對上面提到的問題進(jìn)行一個(gè)小總結(jié):
① 訓(xùn)練
  • 預(yù)測過程中Ground Truth的未知導(dǎo)致的Exposure Bias 問題
  • 交叉熵?fù)p失函數(shù)的逐詞匹配所導(dǎo)致對于所有的非Ground Truth 一視同仁的問題。
② 解碼
  • Beam Search 的Beam Size 會(huì)引入大量的計(jì)算成本
  • 自回歸解碼導(dǎo)致的無法并行問題。
首先,針對于Exposure Bias問題,我們采用的是進(jìn)化采樣的方法,這個(gè)就是我們2019ACL Best Paper的工作。針對與訓(xùn)練和測試時(shí)context不一致的情況,我們的解決方法的主要思想是,在訓(xùn)練的時(shí)候模仿測試時(shí)候可能會(huì)碰到的情況,這樣在測試的時(shí)候就會(huì)發(fā)現(xiàn),當(dāng)前碰到的情況在訓(xùn)練的時(shí)候都碰到過,這樣模型就可以應(yīng)對了。
具體的做法是我們在每一步,模擬上一步的翻譯結(jié)果,就是slides中的oracle,其中帶*的是就是Ground Truth,在每一步,我們都會(huì)隨機(jī)的選擇是Oracle還是Ground Truth來作為當(dāng)前步的上一步詞輸入。
使用上述方法,我們需要解決的三個(gè)關(guān)鍵問題是:
  • 如何生成Oracle翻譯
  • Oracle和Ground Truth如何對上文進(jìn)行采樣
  • 如何訓(xùn)練模型
對于Oracle的生成,我們有兩種方法,一個(gè)是生成詞級(jí)別的Oracle,另一個(gè)是生成句級(jí)別的Oracle。詞級(jí)Oracle即每一步都會(huì)選擇最優(yōu),句子級(jí)別Oracle需要考慮到整個(gè)句子的最優(yōu)。
由于RNN Search會(huì)在生成oracle的算法中會(huì)用到。在講生成oracle的算法之前,先大體介紹一下RNN Search模型。RNN Search在當(dāng)前步翻譯的時(shí)候,會(huì)輸入歷史的隱狀態(tài)信息,同時(shí)也會(huì)將上一步翻譯的結(jié)果輸入進(jìn)去,經(jīng)過一系列的變換,會(huì)得到當(dāng)前步的一個(gè)隱狀態(tài)
,該隱狀態(tài)再經(jīng)過幾層全連接的計(jì)算,最終輸入到softmax層得到詞表中每一個(gè)詞的歸一化的分?jǐn)?shù)。
在生成詞級(jí)oracle的時(shí)候,我們會(huì)在softmax歸一化分布之前加上一個(gè)Gumble Noise。Gumble Noise 的公式如slides中所示,其中  表示一個(gè)均勻分布。式子中的 表示溫度,當(dāng)非常大的時(shí)候,相當(dāng)于argmax,當(dāng)  比較小的時(shí)候,相當(dāng)于均勻分布。
對于句級(jí)Oracle,我們首先采用Beam Search生成前K個(gè)候選譯文,然后對選定的K個(gè)候選譯文進(jìn)行排序,這里的排序可以根據(jù)K個(gè)候選譯文和Ground Truth計(jì)算一個(gè)BLUE值,還可以用一些其它的方法進(jìn)行排序,最終選取得分最高的譯文作為句級(jí)的Oracle。詞級(jí)Oracle和句級(jí)Oracle 是一個(gè)局部最優(yōu)和全局最優(yōu)的一個(gè)區(qū)別。
對于采樣,具體是怎么操作的呢?首先考慮到一點(diǎn)就是在剛開始訓(xùn)練的時(shí)候,模型的效果不怎么好,這樣,無論是詞級(jí)oracle的生成還是句級(jí)oracle的生成效果肯定都不是很理想,如果這時(shí)候使用oracle來引導(dǎo)模型訓(xùn)練的話, 可能會(huì)使得模型收斂的比較慢。一個(gè)比較合理的做法是,剛開始我們盡量選用Ground Truth的詞,當(dāng)模型快收斂的時(shí)候,我們再加大Oracle翻譯的采樣比例。這里的采樣概率公式如slides所示,其中,隨著epoch的增長,系統(tǒng)越來越傾向于選擇oracle label。
對于訓(xùn)練的話,同樣的采用最大化log likelihood的方式。
實(shí)驗(yàn)結(jié)果:除了對比Transformer 和 RNN-Search,也對比了另外兩個(gè)系統(tǒng),SS-NMT 和 MIXER。其中,SS-NMT也是通過計(jì)劃采樣的方式。MIXER的loss分為兩個(gè)部分,一個(gè)部分是傳統(tǒng)的Transformer使用的交叉熵?fù)p失函數(shù),另外一部分是將BLEU值作為reward,然后通過policy gradient的方法對模型進(jìn)行訓(xùn)練。
這個(gè)是在中英文新聞數(shù)據(jù)上的結(jié)果,可以看到,在RNN-Search的系統(tǒng)上, 我們相比于Baseline能夠提升2.3個(gè)點(diǎn)。在Transformer系統(tǒng)上,相比于Baseline能夠提升1.5個(gè)點(diǎn)。
在英德新聞數(shù)據(jù)結(jié)果上,基于RNN-Search的系統(tǒng)比baseline高了1.6個(gè)點(diǎn),基于Transformer的系統(tǒng)比baseline高了1.3個(gè)點(diǎn)。
2. 可導(dǎo)的序列級(jí)目標(biāo)
接下來介紹如果解決詞級(jí)匹配的對于好一點(diǎn)的匹配和差的匹配一視同仁的問題。
這個(gè)是我們在EMNLP 2018上所做的工作。通過使用可導(dǎo)的序列級(jí)目標(biāo)來解決詞級(jí)匹配的問題。
首先介紹一下傳統(tǒng)的序列級(jí)損失函數(shù)。傳統(tǒng)的序列級(jí)損失函數(shù)基本上都是基于N-gram正確率的損失函數(shù),比如,BLEU,GLEU等等。計(jì)算方法為,命中n-gram的個(gè)數(shù)/總共的n-gram的個(gè)數(shù)(candidate),其中n-gram的個(gè)數(shù)為其每個(gè)詞語出現(xiàn)頻次的乘積。
直接使用BLEU不可到的原因是因?yàn)椴僮髦杏衋rgmax,為了使其可導(dǎo),我們使用token的預(yù)測概率,而非使用argmax。這個(gè)方法和直接用BLEU作為Score,然后reinforce算法直接訓(xùn)練對比有啥優(yōu)勢?由于reinforce算法的方差比較大,所以在訓(xùn)練的時(shí)候是很難收斂的。而使用傳統(tǒng)的梯度下降的方法,訓(xùn)練過程就會(huì)平穩(wěn)的多。
這里是3-gram的例子,其中output是概率最高的詞,3-gram概率的是由獨(dú)立Token的輸出概率相乘得到結(jié)果,然后求和會(huì)得到The total probabilistic count of 3-grams。將匹配上的3-gram的概率拿出來求和作為分子,Total probabilistic count作為分母,計(jì)算得到 Precision of 3-grams。這就是我們的loss。
這個(gè)例子用來展示整個(gè)的訓(xùn)練過程,這里需要注意的一點(diǎn)就是,和傳統(tǒng)的teacher forcing方式不同,這里當(dāng)前步輸入的為上一步預(yù)測的結(jié)果(貪心搜索得到的結(jié)果),而不是ground truth的值。剩下的就是按照上頁slides介紹的來計(jì)算loss。對于loss采用傳統(tǒng)的梯度下降算法即可。下面貼的是在數(shù)據(jù)集上的結(jié)果。
從結(jié)果中可以看出,2-gram比4-gram的效果要好,這里我們給出的解釋是,過多的使用自己生成的去計(jì)算的話,會(huì)存在一定程度上的錯(cuò)誤累積。
在訓(xùn)練的時(shí)候,也是可以通過teacher forcing的方式來訓(xùn)練的,但是從圖中可以看出,teacherforcing的方式收斂的比較快,但是效果不如greedy search的方式好。
▌解碼
1. CubePruning
下面介紹在解碼方面的兩個(gè)工作,第一個(gè)工作要解決的是beam search每一步要計(jì)算BeamSize*|V|的問題,這個(gè)計(jì)算量大大降低了inference時(shí)候解碼的速度。
這是解碼過程中每個(gè)步驟的時(shí)間消耗,對于GPU來說,大部分的時(shí)間消耗在的計(jì)算上,其它三個(gè)步驟比較節(jié)省時(shí)間,對于CPU來說,最耗費(fèi)時(shí)間的是最后兩個(gè)步驟,因?yàn)閨V|比較大。
傳統(tǒng)的方法使用的是Beam Search,傳統(tǒng)的 Beam Search其實(shí)是一個(gè)二維的搜索方法。其中第一維就是已經(jīng)生成的部分的譯文,假設(shè)Beam Size = 4,那么就是四個(gè)譯文。第二維度是這四個(gè)譯文都要進(jìn)行下一步的Token預(yù)測計(jì)算??偣簿托枰?jì)算4*|V|的概率。因?yàn)閨V|的個(gè)數(shù)通常是幾千上萬級(jí)別的,所以這個(gè)部分的計(jì)算量就非常大。
我們的做法是將二維的搜索擴(kuò)展成三維的搜索,具體的做法分為以下幾步:
① Beam分組:假設(shè)我們要解碼第11步,我們就將第10步解碼出來相同Token的候選序列歸為一組。
② 分組預(yù)測第11步的候選Token:只用每個(gè)組得分最高的哪個(gè)候選序列來計(jì)算當(dāng)前的Token分布。
③ 近似組員的Token分布:由上一步已經(jīng)知道本組最優(yōu)的候選序列的下一個(gè)token的預(yù)測分布,對于組員來說,也將共享其老大計(jì)算出來的Token分布score,然后和自身的序列score相加,得到自身擴(kuò)展一個(gè)Token后的score。這個(gè)score作為自身的近似分。
④ 查找Top-K:經(jīng)過上面的計(jì)算之后,這樣每個(gè)組就是得分其實(shí)是一個(gè)二維矩陣,我們將矩陣橫軸作為每個(gè)組員,縱軸表示當(dāng)前步預(yù)測的token,然后保證右上角score最大,往右,往下都是減小。這樣便于我們查找Top-K。具體請看下一張slides。
對于近似的score這里有兩個(gè)選擇:
  • 如果取到的candidate是預(yù)測的score,那么用真實(shí)的狀態(tài)來重新計(jì)算一下這個(gè)score,這時(shí)候也順便更新了一下自己的隱狀態(tài)
  • 直接用預(yù)測的score,不使用更新的方式,這時(shí)候和老大哥共享隱狀態(tài)
這個(gè)是GPU上的結(jié)果,橫軸是速度,縱軸是BLEU值,可以看出在取得最優(yōu)的BLEU值的情況下,我們的方法所用的時(shí)間是更短的。速度可以提升3.3倍。在CPU下,提速可以達(dá)到3.5倍。
在Beam Size=40的情況下,GPU上速度提升3.8倍,CPU上提升4.2倍。
2. 非自回歸解碼
最后介紹一下基于非自回歸的解碼方法,傳統(tǒng)的解碼方法是順序生成的。如果能夠使得解碼的時(shí)候并行的方式生成,這速度將會(huì)大大的提升。
傳統(tǒng)的非自回歸模型的做法是,在Transformer Encoder端頭部加一個(gè)Fertility預(yù)測,用來預(yù)測每個(gè)源端Token能翻譯成一個(gè)目標(biāo)端的Token,然后根據(jù)預(yù)測的結(jié)果,將源端的Token拷貝到Decoder的輸入,如果一個(gè)源端Token能夠翻譯兩個(gè)目標(biāo)Token,那就拷貝兩次,如果源端Token不會(huì)翻譯成目標(biāo)端Token,那就不拷貝。由于每一步輸出的譯文是沒有給到下一步的,所以是可以并行的。對于Fertility的訓(xùn)練是采用某種對齊模型,通過計(jì)算源端和目標(biāo)端的對齊關(guān)系,然后就可以得到源端和目標(biāo)端的對齊結(jié)果,就可以采用監(jiān)督的方式來訓(xùn)練Fertility分支。
該方法有一個(gè)問題,就是在翻譯當(dāng)前步的時(shí)候沒有考慮上一步的翻譯信息。這樣就可能導(dǎo)致翻譯結(jié)果的流暢度不夠好。我們的方法就是在該方法的基礎(chǔ)上添加了序列上的信息。這樣模型既能并行執(zhí)行,又能考慮的到前后的序列關(guān)系。
我們的工作分為兩個(gè)方面,一個(gè)是在訓(xùn)練上添加序列信息,一個(gè)是在模型上面同樣也添加序列信息。序列訓(xùn)練采用的是Reinforce的方法,Reinforce的方法非常難以訓(xùn)練,這是因?yàn)槠浞讲罘浅4?,方差大的原因是?qiáng)化學(xué)習(xí)episode(一條軌跡從開始到結(jié)束)的搜索空間非常大,我們每次只是采樣出一個(gè)episode,然后根據(jù)這個(gè)episode進(jìn)行計(jì)算,通過大數(shù)定律,我們可以假設(shè)這最終得到的是一個(gè)梯度的無偏估計(jì)。但是在實(shí)際情況下,抖動(dòng)是非常大的。
將Reinforce算法應(yīng)用到我們這個(gè)場景,首先看第一個(gè)公式,由于目標(biāo)端詞的概率是獨(dú)立的,所以就可以寫成連乘的形式,第二個(gè)公式就是傳統(tǒng)的Reinforce公式,就是翻譯的reward。是通過前向后向算法計(jì)算出來的當(dāng)前步的reward。
上面的slides介紹的是計(jì)算reward時(shí)候的不同,接下來看sampling機(jī)制的區(qū)別。根據(jù)生成前后詞的獨(dú)立性,每一步我們并不是采樣出一個(gè)詞,而是采樣出K+1個(gè)詞。這樣的話就可以看做我們一次更新的過程中考慮到更多的episode,而不是僅用一個(gè)episode就去訓(xùn)練了。具體的做法是,每一步,我們先取Top-K,計(jì)算一下?lián)p失函數(shù)的值,然后從剩下的Token中再采樣出來一個(gè)。我們將這兩部分的loss合起來,是為了保證無偏估計(jì)。為前k個(gè)翻譯的概率的和。
另外一個(gè)方法就是模型上的改進(jìn),在非自回歸層的上面加上自回歸層。具體的做法是,模型分為 Bottom Layer,F(xiàn)usion Layer,Top Layer。Bottom Layer就是之前介紹的非自回歸模型,F(xiàn)usion Layer的作用是將非自回歸模型的輸出和其Embedding整合起來,Top-Layer和Transformer 的解碼器基本一致。
實(shí)驗(yàn)結(jié)果:AR(Transformer),NAT(非自回歸的方法),IRNAT(迭代的非自回歸方法),最后是我們提出的方法,第一種是在訓(xùn)練的過程中引入序列信息,第二是在模型上進(jìn)行改進(jìn)。作為對比的數(shù)據(jù)集有三個(gè),前兩個(gè)數(shù)據(jù)集比較小。主要關(guān)注第三個(gè)數(shù)據(jù)集??梢钥闯?,使用NAT來代替AR模型的話,效果會(huì)降6個(gè)點(diǎn)左右,迭代的方法會(huì)帶來1到2個(gè)點(diǎn)的提升。我們提出的reinforce方法和傳統(tǒng)的reinforce方法相比,有0.6個(gè)點(diǎn)的提升。加上回歸層的模型已經(jīng)接近Transformer的效果了。關(guān)于速度的提升,如果僅訓(xùn)練的時(shí)候采用序列信息,速度可以提升10倍。如果是NAT加上自回歸層的方法,速度也可以提高4倍左右。
這里有一些翻譯實(shí)例,可以看出 NAT-base的方法流暢性不夠好,重復(fù)很多“more more …”,因?yàn)闆]有考慮序列信息,所以導(dǎo)致結(jié)果的流暢度不行。使用我們提出的reinforce方法,能夠一定程度上的緩解流暢度的問題,但是問題還是存在。通過使用NAT+AR的方法,能夠更好的緩解流暢度的問題。
研究組主頁:
http://nlp.ict.ac.cn/2017/
個(gè)人主頁:
http://nlp.ict.ac.cn/~fengyang/
今天的分享就到這里,謝謝大家。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
一文讀懂深度學(xué)習(xí):從神經(jīng)元到BERT
在Transformer時(shí)代重塑RNN,RWKV將非Transformer架構(gòu)擴(kuò)展到數(shù)百億參數(shù)
JCIM| 基于雙向RNN的分子生成模型
程序員再也不怕需求改來改去!
自然語言處理之seq2seq模型
《Nature》子刊:不僅是語言,機(jī)器翻譯還能把腦波「翻譯」成文字
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服