本筆記基于斯坦福大學(xué)2019年冬季CS224N最新課程:基于深度學(xué)習(xí)的自然語言處理,希望可以接觸到最前沿的進(jìn)展。
主要內(nèi)容
這一節(jié)主要討論自然語言處理中的旗艦任務(wù):機(jī)器翻譯。
神經(jīng)機(jī)器翻譯之前機(jī)器翻譯早期機(jī)器翻譯:1950s統(tǒng)計機(jī)器翻譯:1990s-2010s對齊很復(fù)雜對齊學(xué)習(xí)SMT解碼SMT特點(diǎn)神經(jīng)機(jī)器翻譯序列到序列模型用途廣泛條件語言模型NMT訓(xùn)練貪心解碼窮舉搜索解碼柱搜索解碼終止條件最終修正NMT優(yōu)點(diǎn)NMT缺點(diǎn)機(jī)器翻譯評測機(jī)器翻譯進(jìn)展NMT仍然存在問題NMT研究仍在繼續(xù)注意力序列到序列的瓶頸問題注意力注意力很厲害注意力應(yīng)用廣泛注意力變體下節(jié)預(yù)告閱讀更多
神經(jīng)機(jī)器翻譯之前
講神經(jīng)機(jī)器翻譯之前,先來看看機(jī)器翻譯的歷史。
機(jī)器翻譯
機(jī)器翻譯任務(wù)是將一種語言(原始語言)的句子x翻譯成另一種語言(目標(biāo)語言)的句子y。
例如:
x: L'homme est né libre, et partout il est dans les fers
y: Man is born free, but everywhere he is in chains
早期機(jī)器翻譯:1950s
機(jī)器翻譯研究始于1950年初。
1954 年,美國喬治敦大學(xué)(Georgetown University) 在 IBM 公司協(xié)同下, 用 IBM-701計算機(jī)首次完成了英俄機(jī)器翻譯試驗(yàn),向公眾和科學(xué)界展示了機(jī)器翻譯的可行性,從而拉開了機(jī)器翻譯研究的序幕。
中國開始這項(xiàng)研究也并不晚, 早在1956年,國家就把這項(xiàng)研究列入了全國科學(xué)工作發(fā)展規(guī)劃,課題名稱是“機(jī)器翻譯、自然語言翻譯規(guī)則的建設(shè)和自然語言的數(shù)學(xué)理論”。1957 年,中國科學(xué)院語言研究所與計算技術(shù)研究所合作開展俄漢機(jī)器翻譯試驗(yàn),翻譯了9 種不同類型的較為復(fù)雜的句子。
早期機(jī)器翻譯大都基于規(guī)則,并使用雙語詞典。
統(tǒng)計機(jī)器翻譯:1990s-2010s
核心思想:從數(shù)據(jù)中學(xué)習(xí)概率模型。
假定翻譯方向是從法語到英語。
給定法語句子x,那么目標(biāo)就是找到最佳英語句子y:
也就是找到概率分布P。
通常的做法是使用貝葉斯法則,將上式分解成兩項(xiàng),便于分別學(xué)習(xí):
其中:
是翻譯模型,是關(guān)于詞語和短語如何翻譯的模型,考查的是忠實(shí)度。翻譯模型從平行數(shù)據(jù)中學(xué)習(xí);
是語言模型,是關(guān)于如何書寫正確英語的模型,考查的是流暢度。語言模型從單語數(shù)據(jù)中學(xué)習(xí)。之前已經(jīng)學(xué)過。
那么如何學(xué)習(xí)翻譯模型?
首先需要平行語料庫。
舉世聞名的羅賽塔石碑就是一個早期的平行語料庫。
羅賽塔石碑
在這個石碑上,同一文本被書寫成了三種語言。而這恰恰成了19世紀(jì)人們破解古埃及文的關(guān)鍵。如果你在倫敦,不妨親自去大英博物館看一看這個平行語料庫。
當(dāng)然,我們需要的平行語料庫要大得多,遠(yuǎn)非一塊石碑所能寫下。
有了大規(guī)模平行語料庫后,如何從中學(xué)習(xí)翻譯模型?
方法是進(jìn)一步分解。實(shí)際上我們希望考慮:
其中a是對齊,即法語句子x和英語句子y之間的詞語對齊。
所謂對齊就是句對之間詞語的對應(yīng)。
對齊很復(fù)雜
無對應(yīng)
無對應(yīng)
多對一
多對一
一對多(這樣的詞稱為能產(chǎn)詞)
一對多
一對很多
一對很多
多對多(短語對齊)
多對多
對齊學(xué)習(xí)
學(xué)習(xí)就是學(xué)習(xí)多種因素的組合,包括:
詞語對齊的概率(同時取決于詞語在句子中的位置)
詞語具有特定能產(chǎn)度(對應(yīng)詞的個數(shù))的概率
等等
所有這些都是從平行數(shù)據(jù)中學(xué)習(xí)。
SMT解碼
有了翻譯模型和語言模型后,如何計算?
一種暴力解法就是枚舉每一個可能的y,然后計算概率。很明顯,這樣做的計算代價非常高。
解決辦法:使用啟發(fā)式搜索算法找到最佳翻譯,忽略掉概率非常低的翻譯。
這一過程稱為解碼。
SMT示例
SMT解碼示例
SMT特點(diǎn)
曾經(jīng)是個非常熱門的研究領(lǐng)域
最好的系統(tǒng)都極其復(fù)雜
有很多單獨(dú)設(shè)計的子系統(tǒng)
大量的特征工程
需要收集和整理大量的外部資源,例如平行短語表
需要大量人力維護(hù)
直到2014年,神經(jīng)機(jī)器翻譯橫空出世!
神經(jīng)機(jī)器翻譯
神經(jīng)機(jī)器翻譯(NMT)是一種只使用神經(jīng)網(wǎng)絡(luò)做機(jī)器翻譯的方法。
這種神經(jīng)網(wǎng)絡(luò)稱為序列到序列結(jié)構(gòu)(seq2seq),包括兩個RNN。
序列到序列模型
序列到序列模型由兩個RNN組成:編碼器RNN和解碼器RNN。
Seq2Seq
編碼器RNN通過最后的隱層狀態(tài)對原始句子進(jìn)行編碼。原始句子的編碼就是解碼器RNN的初始隱層狀態(tài)。這相當(dāng)于將原始句子編碼傳入解碼器RNN。
解碼器RNN相當(dāng)于語言模型,根據(jù)前面的編碼一步一步來生成目標(biāo)句子。
注意:上圖顯示的是測試模型,解碼器的輸出作為下一步的輸入,進(jìn)而生成文本。
另外,每種語言各有一個單獨(dú)的詞表和詞嵌入。
用途廣泛
序列到序列模型不僅僅用于機(jī)器翻譯。很多其他NLP任務(wù)本質(zhì)上也是序列到序列。
摘要生成(長文本-->短文本)
對話(上一句話-->下一句話)
句法分析(輸入文本-->輸出句法分析序列)
代碼生成(自然語言-->Python代碼)
條件語言模型
序列到序列模型屬于條件語言模型。
說它是語言模型,因?yàn)榻獯a器所做的就是預(yù)測目標(biāo)句子y的下一個詞
說它是條件的,因?yàn)榻獯a器的預(yù)測是以原始句子x為條件的
NMT的強(qiáng)大之處在于它直接計算概率P(y|x):
即給定原始句子x和當(dāng)前所有的目標(biāo)詞語,計算下一個目標(biāo)詞語。
NMT訓(xùn)練
如何訓(xùn)練一個NMT系統(tǒng)?
首先要有一個大的平行語料庫。
將原始句子送入編碼器RNN,然后將目標(biāo)句子送入解碼器RNN,同時編碼器RNN最終隱層狀態(tài)會傳入解碼器RNN的初始隱層狀態(tài)。在解碼器RNN的每一步會產(chǎn)生下一個單詞的概率分布,進(jìn)而通過交叉熵計算損失。將每一步損失加總?cè)∑骄偷玫搅苏麄€句子的損失。
如下圖所示:
NMT訓(xùn)練
Seq2Seq作為整個系統(tǒng)進(jìn)行優(yōu)化。反向傳播方式為"端到端",一端連接最終損失,一端連接編碼器RNN的開始。反向傳播穿過了整個系統(tǒng)。
注意,訓(xùn)練期間,解碼器的輸入來自語料庫。解碼器每一步的輸出僅僅用于計算損失,不會送入下一步輸入。
貪心解碼
我們看到,對解碼器的每一步輸出求argmax,就能生成(或解碼)目標(biāo)句子。
貪心解碼
這就是貪心解碼(在每一步取概率最高的詞)
貪心解碼的問題是每一步取概率最高的詞并不必然導(dǎo)致整個句子概率最高!
貪心解碼無法取消上一步?jīng)Q策。
例如,輸入是il a m’entarté (he hit me with a pie )
he_
he hit_
he hit a___
糟糕!解碼到第3步時,概率最高的詞是a,這不是想要的結(jié)果,現(xiàn)在想回到上一步,怎么辦?
這就是貪心解碼的問題,無法返回上一步。
窮舉搜索解碼
我們的目標(biāo)其實(shí)是找到使下述概率最大的翻譯y(長度T):
我們可以計算所有可能的序列y,這意味著解碼器在每一步t,都要追蹤個可能的未完成翻譯。計算代價非常高。我們需要高效的搜索算法。
柱搜索解碼
核心思想:在解碼器的每一步,只追蹤k個概率最高的翻譯(亦稱為假設(shè))。k就是柱搜索的大小(一般是5-10)。
我們使用對數(shù)概率作為假設(shè)的分值:
分值都是負(fù)數(shù),數(shù)值越大越好。我們只搜索分值高的假設(shè),在每一步,只追蹤前k個。
柱搜索解碼
柱搜索不能保證找到最優(yōu)解,但效率要遠(yuǎn)遠(yuǎn)高于窮舉搜索。
終止條件
在貪心搜索中,解碼的終止條件是
例如:
在柱搜索中,不同的假設(shè)可能會在不同的時間步產(chǎn)生
如果一個假設(shè)已經(jīng)產(chǎn)生
繼續(xù)通過柱搜索探索其他假設(shè)。
通常,柱搜索的終止條件是:
達(dá)到時間步T(T是事先預(yù)定的數(shù)值)
已經(jīng)得到至少n個完整的假設(shè)(n是事先預(yù)定的數(shù)值)
最終修正
現(xiàn)在我們有了完成的假設(shè)列表。如何選擇分值最高的一個?
列表中每一個假設(shè)都有一個分值
問題在于假設(shè)越長,分值越低。
修正:用長度作歸一化。
NMT優(yōu)點(diǎn)
與SMT相比,NMT具有很多優(yōu)點(diǎn):
效果更好
更流暢
更充分利用上下文
更充分利用短語相似度
單個神經(jīng)網(wǎng)絡(luò),端到端優(yōu)化
無須針對子系統(tǒng)進(jìn)行逐個優(yōu)化
人工參與更少
無特征工程
適用于所有語言對
NMT缺點(diǎn)
與SMT相比:
NMT可解釋性差
難以調(diào)試
NMT難以控制
無法指定翻譯規(guī)則或原則
安全問題
機(jī)器翻譯評測
目前比較流行的自動評測方法是IBM提出的BLEU(bilingual evaluation understudy)算法。
BLEU的核心思想就是機(jī)器翻譯的譯文越接近人工翻譯的結(jié)果,它的翻譯質(zhì)量就越高。BLEU如何定義機(jī)器翻譯與參考譯文之間的相似度?
n元文法精度(通常是一、二、三、四元文法)
對過于簡短的譯文作懲罰
BLEU非常有用,但并非完美無缺
一句話有多種有效的翻譯方式
如果與人工翻譯的n元文法重疊度低,即使翻譯再好,BLEU也會偏低
機(jī)器翻譯進(jìn)展
機(jī)器翻譯進(jìn)展
2014年,神經(jīng)機(jī)器翻譯只是非常邊緣的研究范疇;但在2016年,神經(jīng)機(jī)器翻譯已經(jīng)成為主流的標(biāo)準(zhǔn)方法。
2014年,第一篇seq2seq論文發(fā)布
2016年,谷歌翻譯從SMT切換到NMT
僅僅兩年,NMT實(shí)現(xiàn)驚人逆襲!
SMT系統(tǒng),需要數(shù)以百計的工程師,經(jīng)年累月,方能搭建;而NMT系統(tǒng),只需幾個工程師幾個月內(nèi)就能搭建,而且效果反超SMT。
NMT仍然存在問題
NMT雖然大獲成功,但仍然存在很多問題:
未登錄詞
訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)領(lǐng)域不匹配
長文本上下文問題
有些語言對數(shù)據(jù)量不夠
利用常識仍然困難
沒有常識
NMT學(xué)到了數(shù)據(jù)中的偏見
數(shù)據(jù)偏見
不可解釋的系統(tǒng)會做一些莫名其妙的事情
不可解釋
NMT研究仍在繼續(xù)
NMT是深度自然語言處理的旗艦任務(wù)。
NMT研究引領(lǐng)了NLP深度學(xué)習(xí)的很多創(chuàng)新
2019年,NMT研究仍在蓬勃發(fā)展
研究人員發(fā)現(xiàn)了上面標(biāo)準(zhǔn)seq2seq的很多改進(jìn)方法,其中有一項(xiàng)改進(jìn)如此不可或缺,已經(jīng)成為新的標(biāo)準(zhǔn)方法。那就是Attention(注意力)
注意力
序列到序列的瓶頸問題
信息瓶頸問題
在編碼器RNN的最后一步,這里的隱層狀態(tài)需要獲得原始句子的所有信息。這就存在信息瓶頸的問題。
注意力
注意力的核心思想是在解碼器的每一步,都與編碼器直接相連,以便對原始句子的特定部分進(jìn)行關(guān)注。先上圖。
基于注意力的序列到序列模型
編碼器隱層狀態(tài)為:
到第t時間步,解碼器的隱層狀態(tài)為:
此步的注意力分值為:
使用softmax獲得該步的注意力分布:
然后使用對編碼器的隱層狀態(tài)加權(quán)求和,獲得注意力輸出:
最后,將注意力輸出和編碼器隱層狀態(tài)拼接:
后續(xù)過程就與普通Seq2Seq一樣了。
注意力很厲害
注意力允許解碼器關(guān)注原始句子的特定部分,顯著提高了NMT效果
注意力允許解碼器直接查看原始句子,解決了信息瓶頸的問題
注意力提供了遙遠(yuǎn)狀態(tài)的捷徑,有助于緩解梯度消失的問題
注意力提供了某種可解釋性:
查看注意力分布,可以了解解碼器所關(guān)注的內(nèi)容
免費(fèi)自動實(shí)現(xiàn)了軟對齊,無需單獨(dú)訓(xùn)練一套對齊系統(tǒng)
注意力應(yīng)用廣泛
已經(jīng)看到,注意力可以大大改善機(jī)器翻譯的效果。
然而不僅于此,注意力同樣適用于很多其他神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和很多其他任務(wù)。
注意力的廣義定義:
給定一組向量值(value)和一個向量查詢(query),注意力就是根據(jù)向量查詢來計算向量值加權(quán)求和。
例如在seq2seq+attention模型中,每個解碼器隱層狀態(tài)就是查詢,它會去關(guān)注編碼器的所有隱層狀態(tài)(值)。
加權(quán)求和就是對數(shù)值中的信息進(jìn)行選擇性摘取,查詢決定了需要關(guān)注哪些數(shù)值。
注意力可根據(jù)某些表示(查詢)將任意一組表示(值)轉(zhuǎn)換為固定大小的表示。
注意力變體
假設(shè)有若干值和一個查詢。
注意力通常包括:
計算注意力分值
用softmax獲得注意力分布:
使用注意力分布計算值的加權(quán)求和,這就是注意力輸出(亦稱為語境向量):
這里注意力分值計算有若干種方法:
基本點(diǎn)乘:
矩陣乘法:,其中是權(quán)重矩陣
加法:
其中:
是權(quán)重矩陣
是權(quán)重向量
是注意力的維度,是超參數(shù)
總結(jié)一下:我們學(xué)習(xí)了機(jī)器翻譯的歷史、神經(jīng)機(jī)器翻譯的序列到序列模型和注意力機(jī)制。
-
機(jī)器翻譯
+關(guān)注
關(guān)注
0文章
139瀏覽量
14919 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5511瀏覽量
121355 -
自然語言處理
+關(guān)注
關(guān)注
1文章
619瀏覽量
13603
原文標(biāo)題:機(jī)器翻譯、Seq2Seq、注意力(CS224N-2019-8)
文章出處:【微信號:gh_b11486d178ef,微信公眾號:語言和智能】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論