近年來,神經(jīng)機(jī)器翻譯的突飛猛進(jìn)讓越來越多的人類翻譯感到壓力山大,瑟瑟發(fā)抖,那么如此強(qiáng)大的機(jī)器翻譯架構(gòu)內(nèi)部的運(yùn)行機(jī)制究竟是怎樣的?本文用一系列動(dòng)圖帶你看個(gè)明白。
過去幾十年來,統(tǒng)計(jì)機(jī)器翻譯一直是占據(jù)主導(dǎo)地位的機(jī)器翻譯模型[9],直到神經(jīng)機(jī)器翻譯(NMT)誕生。神經(jīng)機(jī)器翻譯(NMT)是近幾年來新興的機(jī)器翻譯模式,該模式試圖構(gòu)建和訓(xùn)練能夠讀取輸入文本,并輸出翻譯結(jié)果的單個(gè)大型神經(jīng)網(wǎng)絡(luò)。
NMT的最初來自Kalchbrenner和Blunsom(2013)等人的提議。今天更為人所知的框架是從Sutskever等人提出的seq2seq框架。本文就將重點(diǎn)介紹seq2seq框架以及如何構(gòu)建基于seq2seq框架的注意力機(jī)制。
總體來說,注意力層的部署可以分為4步(其實(shí)是5步)
第0步:準(zhǔn)備隱藏狀態(tài)。
首先準(zhǔn)備第一個(gè)解碼器隱藏狀態(tài)(紅色)和所有可用的編碼器隱藏狀態(tài)(綠色)。在我們的例子中有4個(gè)編碼器隱藏狀態(tài)和當(dāng)前解碼器隱藏狀態(tài)。
步驟1:獲取每個(gè)編碼器隱藏狀態(tài)的分?jǐn)?shù)
通過評(píng)分函數(shù)(也稱為比對(duì)評(píng)分函數(shù)或比對(duì)模型)獲得評(píng)分(標(biāo)量)。在該示例中,得分函數(shù)是解碼器和編碼器隱藏狀態(tài)之間的點(diǎn)積。
步驟2:通過softmax圖層運(yùn)行所有分?jǐn)?shù)。
我們將得分放到softmax函數(shù)層,使softmax處理后的得分(標(biāo)量)之和為1。這些得分代表注意力的分布。
步驟3:將每個(gè)編碼器隱藏狀態(tài)乘以其softmax得分。
通過將每個(gè)編碼器隱藏狀態(tài)與其對(duì)應(yīng)的softmax得分(標(biāo)量)相乘,獲得對(duì)齊向量或注釋向量。這就是對(duì)齊的機(jī)制。
步驟4:總結(jié)對(duì)齊向量。
對(duì)齊向量的總結(jié)可以生成上下文向量。上下文向量反映的是前一步的對(duì)齊向量的聚合信息。
步驟5:將上下文向量送到解碼器。
具體傳送方式取決于翻譯系統(tǒng)的架構(gòu)設(shè)計(jì)。我們將在下文示例中看到不同的架構(gòu)如何利用解碼器的上下文向量。
下面來看看幾種seq2seq模型的運(yùn)行機(jī)制,為便于理解,我們采用比較直觀的描述(對(duì)于每種模型,均以德-英翻譯為例)。
seq2seq
翻譯會(huì)從頭至尾把德語文本閱讀一遍,讀完開始逐詞翻譯成英語,如果句子過長,他可能會(huì)忘了文章開始時(shí)都讀過哪些內(nèi)容。
一個(gè)簡單的seq2seq模型就是這樣了,至于面向注意力層的逐級(jí)計(jì)算,是下面要講的seq2seq+注意力模型,下面是這個(gè)模型的直觀表述。
seq2seq+ 注意力
翻譯一遍閱讀德文文本,一邊從頭至尾地記錄關(guān)鍵詞,然后開始翻譯成英語。每翻譯一個(gè)德語詞匯,都要用一次記下來的關(guān)鍵詞。
該機(jī)制下會(huì)為每個(gè)單詞分配一個(gè)得分,根據(jù)分?jǐn)?shù)高低投入不同的注意力。然后根據(jù)Softmax函數(shù)處理過的分?jǐn)?shù),使用編碼器隱藏狀態(tài)的加權(quán)和來聚合編碼器隱藏狀態(tài),獲得上下文向量。注意力層的實(shí)現(xiàn)可以分為4個(gè)步驟。
注意力機(jī)制的運(yùn)行究竟是怎樣的?
答案是:反向傳播,沒想到吧。反向傳播將盡一切努力確保產(chǎn)出成果接近實(shí)際情況。通過改變RNN中的權(quán)重和得分函數(shù)(如果有的話)來實(shí)現(xiàn)這一目標(biāo)。這些權(quán)重將影響編碼器隱藏狀態(tài)和解碼器隱藏狀態(tài),進(jìn)而影響注意力得分。
帶雙向編碼器的seq2seq+注意力
這一機(jī)制相當(dāng)于有兩名翻譯。翻譯A一邊閱讀德語文本,一邊記錄關(guān)鍵詞。翻譯B(比A更高級(jí)的翻譯,可以從后往前倒著閱讀然后進(jìn)行翻譯)也在逐詞閱讀同樣的德語文本,同時(shí)記下關(guān)鍵詞。
這兩個(gè)翻譯會(huì)定期討論到目前為止閱讀的每一個(gè)詞。一旦閱讀完畢,翻譯B會(huì)負(fù)責(zé)根據(jù)討論結(jié)果和選擇的綜合關(guān)鍵詞,將德語的句子逐字翻譯成英語。
翻譯A就是前向RNN,翻譯B就是后向RNN。
采用雙層堆疊編碼器的seq2seq+注意力
翻譯A一邊閱讀德語文本,一邊記錄關(guān)鍵詞。翻譯B(比A更高級(jí)的翻譯,可以從后往前倒著閱讀然后進(jìn)行翻譯)也在逐詞閱讀同樣的德語文本,同時(shí)記下關(guān)鍵詞。注意,初級(jí)翻譯A必須把閱讀到的每個(gè)單詞向翻譯B報(bào)告。閱讀完成后,兩位翻譯都會(huì)根據(jù)他們所選擇的綜合關(guān)鍵詞,逐字逐句地將句子翻譯成英語。
谷歌的神經(jīng)機(jī)器翻譯:帶8個(gè)堆疊編碼器的seq2seq(+雙向+剩余連接)+注意力
相當(dāng)于翻譯A、B、...到H一共8位翻譯,從下到上排成一列。每位翻譯都閱讀相同的德語文本。每閱讀一個(gè)單詞,翻譯A會(huì)與翻譯B分享發(fā)現(xiàn),翻譯B對(duì)發(fā)現(xiàn)內(nèi)容進(jìn)行改進(jìn),并與翻譯C分享,以此類推重復(fù)這個(gè)過程,直到翻譯H為止。此外,在閱讀德語文本時(shí),翻譯H會(huì)根據(jù)自己的知識(shí)和收到的信息記錄下相關(guān)的關(guān)鍵詞。
在每個(gè)翻譯都閱讀過英文文本之后,命令翻譯A開始翻譯第一個(gè)單詞。首先,翻譯A試圖回憶起,然后他與譯者B分享他的答案,譯者B改進(jìn)答案并與譯者C分享,以此類推重復(fù)這一過程,直到翻譯H。然后,翻譯H根據(jù)記錄的關(guān)鍵詞寫出第一個(gè)翻譯。重復(fù)這個(gè)過程,直到翻譯完成為止。
-
編碼器
+關(guān)注
關(guān)注
45文章
3645瀏覽量
134579 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4772瀏覽量
100808 -
機(jī)器翻譯
+關(guān)注
關(guān)注
0文章
139瀏覽量
14886
原文標(biāo)題:五張動(dòng)圖,看清神經(jīng)機(jī)器翻譯里的Attention!
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論