2019斯坦福CS224N筆記-(8)Translation, Seq2Seq, Attention

【2019斯坦福CS224N筆記】(8)Translation, Seq2Seq, Attention

csdn:https://blog.csdn.net/abcgkj

github:https://github.com/aimi-cn/AILearners


[toc]} 機(jī)器翻譯相信大家都不陌生,我們?nèi)粘I钪薪?jīng)常會(huì)用到諸如百度翻譯澎媒、谷歌翻譯樊诺、有道翻譯等等。這里我們給機(jī)器翻譯下一個(gè)簡(jiǎn)單的定義:機(jī)器翻譯(MT)是把一個(gè)句子x從一種語(yǔ)言(源語(yǔ)言)翻譯成另一種語(yǔ)言(目標(biāo)語(yǔ)言)的句子y鹅巍。早期的機(jī)器翻譯系統(tǒng)主要基于規(guī)則千扶,使用雙語(yǔ)詞典將源語(yǔ)言映射到對(duì)應(yīng)的目標(biāo)語(yǔ)言。而現(xiàn)今骆捧,神經(jīng)機(jī)器翻譯已經(jīng)逐漸走進(jìn)歷史舞臺(tái)澎羞。

一、統(tǒng)計(jì)機(jī)器翻譯

1990s-2010s敛苇,人們主要使用的是統(tǒng)計(jì)機(jī)器翻譯妆绞。其核心思想是:從數(shù)據(jù)中學(xué)習(xí)概率模型。假設(shè)我們想把法語(yǔ)翻譯為英語(yǔ)枫攀,即給定法語(yǔ)句子x括饶,尋找最佳的英語(yǔ)句子y。我們可以用下圖來(lái)描述:

然后来涨,我們可以使用貝葉斯來(lái)把上式分解成兩個(gè)部分图焰,如下圖所示:

其中,P(x|y):可以視為翻譯模型蹦掐。模型從并行數(shù)據(jù)中學(xué)習(xí)技羔,單詞或句子應(yīng)該如何被翻譯僵闯。P(y):可以被視為語(yǔ)言模型。在本例子中藤滥,從英語(yǔ)數(shù)據(jù)中學(xué)習(xí)如何寫(xiě)好英語(yǔ)(流利)鳖粟。之前的學(xué)習(xí)中,我們已經(jīng)介紹過(guò)語(yǔ)言模型超陆,這里不再贅述牺弹。因此,如何得到翻譯模型P(x|y)是重點(diǎn)时呀。下面我們分步來(lái)介紹傳統(tǒng)的機(jī)器翻譯是怎樣實(shí)現(xiàn)的:

第一:我們需要一個(gè)大的平行語(yǔ)料庫(kù)據(jù)(例如:翻譯成法語(yǔ)/英語(yǔ)的句子對(duì))张漂。下圖是世界上第一個(gè)平行語(yǔ)料庫(kù):羅塞塔石碑:

第二:對(duì)齊(翻譯句子中特定詞語(yǔ)之間的對(duì)應(yīng)關(guān)系)。即法語(yǔ)句子x與英語(yǔ)句子y之間的單詞級(jí)對(duì)應(yīng)谨娜。對(duì)齊時(shí)航攒,原文中可能有部分詞語(yǔ)沒(méi)有對(duì)應(yīng)的譯文,如下圖所示:

對(duì)齊可以是多對(duì)一的趴梢,如下圖所示:

對(duì)齊可以是一對(duì)多的漠畜,如下圖所示:

當(dāng)然,對(duì)齊可以是多對(duì)多(短語(yǔ)級(jí))坞靶,如下圖所示:

對(duì)齊之后憔狞,原文中每個(gè)單詞都有多個(gè)備選單詞,導(dǎo)致了許多短語(yǔ)的組合方式彰阴,如下圖所示:

第三:解碼瘾敢,即使用heuristic search算法搜索最佳翻譯,丟棄概率過(guò)低的假設(shè)尿这,如下圖所示:

以上所述簇抵,這還只是傳統(tǒng)機(jī)器翻譯系統(tǒng)的冰山一角,有許多細(xì)節(jié)沒(méi)有涉及到射众,還需要大量的特征工程和人力維護(hù)碟摆,總之是非常復(fù)雜的系統(tǒng)。其中每個(gè)環(huán)節(jié)都是獨(dú)立不同的機(jī)器學(xué)習(xí)問(wèn)題叨橱。

而深度學(xué)習(xí)則提供了一個(gè)統(tǒng)一的模型典蜕,一個(gè)統(tǒng)一的最終目標(biāo)函數(shù)。在優(yōu)化目標(biāo)函數(shù)的過(guò)程中罗洗,得到一個(gè)end to end的完整的joint模型嘉裤。傳統(tǒng)機(jī)器翻譯系統(tǒng)與深度學(xué)習(xí)是截然相反的,對(duì)齊模型栖博、詞序模型、語(yǔ)言模型……一堆獨(dú)立的模型無(wú)法聯(lián)合訓(xùn)練厢洞。接下來(lái)我們來(lái)介紹神經(jīng)機(jī)器翻譯模型仇让。

二典奉、神經(jīng)機(jī)器翻譯——seq2seq

2014年,Neural Mechine Translation出現(xiàn)了丧叽。神經(jīng)機(jī)器翻譯(NMT)是一種使用單一神經(jīng)網(wǎng)絡(luò)進(jìn)行翻譯的機(jī)器翻譯方法卫玖。神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)稱為sequence-to-sequence(又名seq2seq)。舉個(gè)例子踊淳,我們的翻譯任務(wù)定義為:

輸入:一個(gè)法語(yǔ)句子(Source sentence):il a m’ entarté假瞬。

輸出:一個(gè)英語(yǔ)句子:he hit me with a pie。

Encoder負(fù)責(zé)將輸入的原文本編碼成一個(gè)向量(context)迂尝,該向量是原文本的一個(gè)表征脱茉,包含了文本背景。為解碼器提供初始隱藏狀態(tài)垄开。如下圖所示:

Decoder是一種以編碼為條件生成目標(biāo)句的語(yǔ)言模型琴许,即使用Encoder的最終狀態(tài)和作為Decoder的初始隱狀態(tài)。除此之外溉躲,Decoder的隱藏層還來(lái)源于前一個(gè)時(shí)刻的隱藏層和前一個(gè)預(yù)測(cè)結(jié)果榜田。如下圖所示,這是在測(cè)試時(shí)的Decoder锻梳,下文會(huì)介紹如何訓(xùn)練:

注意:這里的Encoder和Decoder箭券,可以是普通的RNN,也可以是LSTM疑枯、GRU或者是Bi-LSTM等等辩块,當(dāng)然也可以是CNN。層數(shù)也可以是多層的神汹。當(dāng)然庆捺,我們不僅可以用同一種神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)編碼器和解碼器,也可以用不同的網(wǎng)絡(luò)屁魏,如編碼器基于CNN滔以,解碼器基于RNN。

那么氓拼,我們?nèi)绾斡?xùn)練一個(gè)NMT系統(tǒng)呢你画?和傳統(tǒng)的機(jī)器翻譯系統(tǒng)一樣,首先我們需要一個(gè)大的平行語(yǔ)料庫(kù)桃漾,然后我們對(duì)Source sentence進(jìn)行編碼坏匪,然后使用Encoder的最終隱藏狀態(tài)作為Decoder的初始隱藏狀態(tài)進(jìn)行預(yù)測(cè)y1,y2……y7撬统,然后用Decoder中輸入的Target sentence和預(yù)測(cè)出來(lái)的y計(jì)算loss(例如交叉熵?fù)p失函數(shù))适滓,最后使用反向傳播來(lái)更新模型中的參數(shù)。如下圖所示:

上文中恋追,在Decoder里我們通過(guò)argmax來(lái)一步步生成單詞凭迹,這種方式我們稱之為貪婪解碼罚屋。但是,這使得在生成前面的單詞后無(wú)法回溯嗅绸。那么我們?nèi)绾谓鉀Q這個(gè)問(wèn)題呢脾猛?不難想到,我們可以計(jì)算所有可能的情況鱼鸠,但很明顯這樣的計(jì)算代價(jià)是非常大的猛拴。因此,我們采用來(lái)一種新的方式——Beam search decoding蚀狰。

Beam search decoding的核心思想是:在解碼器的每個(gè)步驟中愉昆,跟蹤k個(gè)最可能的部分(我們稱之為假設(shè)),其中k我們稱之為beam size(大約是5到10)造锅。Beam search雖然不能保證我們找到最優(yōu)解撼唾,但比窮舉搜索更有效。通常我們?cè)谶M(jìn)行t次個(gè)詞后可以停止Beam search哥蔚。最后我們需要在計(jì)算總得分后除以t倒谷,如下圖所示:

經(jīng)過(guò)上文,我們很容易理解所謂的seq2seq糙箍,它其實(shí)是一個(gè)Encoder和一個(gè)Decoder渤愁,Encoder用來(lái)編碼source sentence,Decoder使用Encoder的最終隱藏狀態(tài)作為其的初始隱藏狀態(tài)深夯,充當(dāng)為一個(gè)語(yǔ)言模型來(lái)預(yù)測(cè)單詞抖格,然后根據(jù)Target sentence計(jì)算loss來(lái)更新模型。

那么咕晋,我們可以單獨(dú)訓(xùn)練Encoder和Decoder嗎雹拄?答案是可以的,但是同步訓(xùn)練的好處是掌呜,我們可以同時(shí)優(yōu)化模型中的參數(shù)滓玖。當(dāng)然,如果我們分開(kāi)訓(xùn)練质蕉,也可以使用一個(gè)預(yù)訓(xùn)練好的語(yǔ)言模型作為Decoder的初始狀態(tài)势篡,然后針對(duì)你的任務(wù)進(jìn)行fine tune。此外模暗,對(duì)于模型中需要的word embeding禁悠,我們可以使用該任務(wù)的語(yǔ)料庫(kù)得到,也可以使用現(xiàn)成的word embeding兑宇,然后進(jìn)行fine tune碍侦。

三、NMT vs SMT

與SMT相比,NMT有很多優(yōu)點(diǎn):

  • 更好的性能:更流利祝钢、更好地利用上下文比规、更好地使用短語(yǔ)相似性
  • 單個(gè)神經(jīng)網(wǎng)絡(luò)端到端優(yōu)化:沒(méi)有需要單獨(dú)優(yōu)化的子組件
  • 需要更少的人力工作:沒(méi)有特征工程、所有語(yǔ)言對(duì)的方法相同

當(dāng)然拦英,也有一些缺點(diǎn):

與SMT基于規(guī)則的方式相比,NMT的可解釋性較差:難以調(diào)試测秸。例如:當(dāng)我們使用NMT模型進(jìn)行翻譯時(shí)疤估,如果發(fā)現(xiàn)翻譯錯(cuò)誤,我們很難找到是模型中的哪個(gè)神經(jīng)元或者參數(shù)出了問(wèn)題霎冯。

四铃拇、如何評(píng)估機(jī)器翻譯模型

BLEU(Bilingual Evaluation Understudy)是一個(gè)人們普遍運(yùn)用的MT模型評(píng)價(jià)標(biāo)注。BLEU將機(jī)器翻譯與一個(gè)或多個(gè)人工翻譯進(jìn)行比較沈撞,并根據(jù)以下條件計(jì)算相似度評(píng)分:

  • n-gram精度(通常為1慷荔、2、3和4-grams)
  • 此外缠俺,系統(tǒng)翻譯太短也會(huì)受到懲罰

雖然BLEU很有用显晶,但也有一些缺點(diǎn)。例如:一個(gè)句子可以有很多種翻譯方式壹士,因此一個(gè)好的翻譯可能會(huì)得到一個(gè)較差的BLEU評(píng)分磷雇,因?yàn)樗c人工翻譯的n-grams重疊度較低。但是作為自動(dòng)評(píng)價(jià)機(jī)器翻譯系統(tǒng)好壞的方法躏救,我們?nèi)圆坏貌粫簳r(shí)使用BLEU作為機(jī)器翻譯系統(tǒng)的評(píng)價(jià)標(biāo)準(zhǔn)唯笙。

五、注意力機(jī)制

1.動(dòng)機(jī)

上文中盒使,我們提到的seq2seq模型中崩掘,很重要的一個(gè)步驟是,把Encoder的最終隱藏狀態(tài)當(dāng)作Decoder的初始隱藏狀態(tài)的一部分少办,這樣做造成源語(yǔ)句的編碼必須捕獲關(guān)于源語(yǔ)句的所有信息苞慢,才可以使模型很好的工作。但事實(shí)上凡泣,這樣僅僅依靠這一個(gè)狀態(tài)來(lái)進(jìn)行后面的解碼過(guò)程是很不可靠的枉疼,因此注意力機(jī)制的提出就可以很好的解決這個(gè)瓶頸。

注意力機(jī)制的核心思想是:在解碼器的每個(gè)步驟上鞋拟,使用與編碼器的直接連接來(lái)注意源序列的特定部分骂维。簡(jiǎn)單來(lái)說(shuō),注意力機(jī)制為解碼器網(wǎng)絡(luò)提供了在每個(gè)解碼步驟查看整個(gè)輸入序列的功能贺纲,然后解碼器可以在任何時(shí)間點(diǎn)決定哪些輸入單詞是重要的航闺。接下來(lái)我們通過(guò)公式來(lái)從本質(zhì)上理解一下Attention機(jī)制。

2.公式理解

首先,我們來(lái)做一下定義:編碼器的隱藏狀態(tài)為: h_1,……,h_N潦刃。在時(shí)間步t侮措,解碼器的隱藏狀態(tài)為:s_t。

接下來(lái)乖杠,我們可以得到t時(shí)間步下的attention分?jǐn)?shù)et,并使用softmax函數(shù)進(jìn)行歸一化處理得到αt分扎,如下圖所示:

然后,我們用α^t個(gè)編碼器隱藏層狀態(tài)進(jìn)行加權(quán)求和胧洒,得到attention的輸出a_t(有時(shí)也稱之為context vector)畏吓,如下圖所示:

最后,我們將注意輸出與解碼器隱藏狀態(tài)連接起來(lái)卫漫,并按照非注意seq2seq模型進(jìn)行處理菲饼,如下圖所示:

以上就是一般情況下attention機(jī)制的公式描述,接下來(lái)我們給出更加廣義的attention定義:給定一組向量值和一個(gè)向量查詢列赎,注意力機(jī)制是一種根據(jù)查詢計(jì)算值的加權(quán)和的技術(shù)宏悦。因此有時(shí),我們也簡(jiǎn)單稱之為查詢處理值包吝。例如饼煞,在seq2seq + attention模型中,每個(gè)解碼器隱藏狀態(tài)(查詢)都關(guān)注所有編碼器隱藏狀態(tài)(值)漏策。因此注意力機(jī)制中的加權(quán)和是值中包含的信息的選擇性匯總派哲,查詢?cè)谄渲写_定要關(guān)注哪些值。

這里我們介紹一下attention機(jī)制的幾種常見(jiàn)形式:假設(shè)我們擁有一些值h_1,……,h_N掺喻,維度為d_1和一個(gè)查詢s芭届,維度為d_2,且d_1 = d_2感耙,則:

  • Basic dot-product attention(和上文介紹的attention一致):

  • Multiplicative attention:這里的W是一個(gè)維度為d_2 * d_1的權(quán)重矩陣褂乍,也是我們需要更新的參數(shù)之一

  • Additive attention:這里的W_1的維度是d_3 *d_1,W_2的維度是d_3 *d_2即硼,v是一個(gè)維度為d_3的權(quán)重向量逃片,d_3也是模型中的一個(gè)超參數(shù)

小結(jié)

本節(jié)課我們首先回顧了傳統(tǒng)的統(tǒng)計(jì)機(jī)器翻譯(SMT),接著講述了神經(jīng)機(jī)器翻譯(NMT)——seq2seq只酥,最后利用Attention機(jī)制seq2seq模型進(jìn)行了改進(jìn)褥实。當(dāng)然,此時(shí)的seq2seq模型仍存在一些缺點(diǎn)裂允,比如OOV(Out-of-Vocabulary)問(wèn)題损离,可以通過(guò)指針或者復(fù)制機(jī)制來(lái)處理,又比如大規(guī)模輸出詞匯處理的問(wèn)題绝编、訓(xùn)練和測(cè)試數(shù)據(jù)之間的域不匹配(例如:訓(xùn)練數(shù)據(jù)采用正式的文本僻澎,而測(cè)試數(shù)據(jù)采用聊天的非正式文本)等等貌踏,有興趣的朋友可以查閱相關(guān)資料。

本文使用 文章同步助手 同步

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窟勃,一起剝皮案震驚了整個(gè)濱河市祖乳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秉氧,老刑警劉巖眷昆,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異汁咏,居然都是意外死亡隙赁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門梆暖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人掂骏,你說(shuō)我怎么就攤上這事轰驳。” “怎么了弟灼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵级解,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我田绑,道長(zhǎng)勤哗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任掩驱,我火速辦了婚禮芒划,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘欧穴。我一直安慰自己民逼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布涮帘。 她就那樣靜靜地躺著拼苍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪调缨。 梳的紋絲不亂的頭發(fā)上疮鲫,一...
    開(kāi)封第一講書(shū)人閱讀 51,231評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音弦叶,去河邊找鬼俊犯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛湾蔓,可吹牛的內(nèi)容都是我干的瘫析。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贬循!你這毒婦竟也來(lái)了咸包?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤杖虾,失蹤者是張志新(化名)和其女友劉穎烂瘫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體奇适,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坟比,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嚷往。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葛账。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖皮仁,靈堂內(nèi)的尸體忽然破棺而出籍琳,到底是詐尸還是另有隱情,我是刑警寧澤贷祈,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布趋急,位于F島的核電站,受9級(jí)特大地震影響势誊,放射性物質(zhì)發(fā)生泄漏呜达。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一粟耻、第九天 我趴在偏房一處隱蔽的房頂上張望查近。 院中可真熱鬧,春花似錦勋颖、人聲如沸嗦嗡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侥祭。三九已至,卻和暖如春茄厘,著一層夾襖步出監(jiān)牢的瞬間矮冬,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工次哈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胎署,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓窑滞,卻偏偏與公主長(zhǎng)得像琼牧,于是被迫代替她去往敵國(guó)和親恢筝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容