免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
注意力的動畫解析(以機器翻譯為例)

本文為 AI 研習(xí)社編譯的技術(shù)博客,原標題 :

Attn: Illustrated Attention

作者 | Raimi Karim

翻譯 | yata 校對 | 鄧普斯·杰弗

審核 | 醬番梨 整理 | Pita

https://towardsdatascience.com/attn-illustrated-attention-5ec4ad276ee3

近十年以來,直到神經(jīng)機器翻譯系統(tǒng)的誕生之前,統(tǒng)計機器翻譯一直在機器翻譯領(lǐng)域占據(jù)著主要地位。神經(jīng)機器翻譯模型作為一種新興的機器翻譯方法,其致力于構(gòu)建并訓(xùn)練出一個可以輸入文本并返回翻譯文本的大型神經(jīng)網(wǎng)絡(luò)。

Kalchbrenner and Blunsom (2013), Sutskever et. al (2014) 和Cho. et. al (2014b)等人,作為先驅(qū)首先提出了神經(jīng)機器翻譯框架,之后由Sutskever 等人提出了更廣為人知的序列到序列模型。我們這篇文章將基于序列到序列的框架,以及如何在此框架上構(gòu)建attention機制,來展開講解。

Fig. 0.1: 輸入序列長度為4的序列到序列的框架

在序列到序列模型中,其主要的思想在于使用兩個循環(huán)神經(jīng)網(wǎng)絡(luò)構(gòu)建一個編碼器-解碼器的結(jié)構(gòu):首先以其中一個RNN為構(gòu)成的編碼器,按時間順序一個一個讀入輸入的文字,之后便可以得到一個固定維度的向量;在這些輸入的基礎(chǔ)上,由另一個RNN構(gòu)成的解碼器按照時間順序再進行一個一個的解碼,從而得到最后的翻譯。我們的解釋借鑒了[5]。

Fig. 0.2: 輸入序列長度為64的序列到序列框架

序列到序列模型的主要問題在于,編碼器的最后一個隱層狀態(tài)(見Fig.0.1中的兩個紅色節(jié)點),作為唯一的信息輸入到解碼器中來。而這最后一個隱層狀態(tài)向量就好像是全部輸入的一個數(shù)值匯總。所以當輸入的文字很長時(Fig.0.2),僅僅利用一個匯總向量(期望他可以充分的總結(jié)輸入序列的所有信息),便希望可以輸出一個合理的翻譯文本,便顯得有些不合理,因為匯總向量的表達能力的受限,這必然會導(dǎo)致對輸入文本災(zāi)難性的"遺忘"。這就好比給你一個由一百多個單詞組成的段落,然后希望你可以在閱讀完最后一個詞之后,立馬給出這個段落的翻譯,你可以做到嗎?

如果我們都做不到,我們也不應(yīng)該奢求解碼器能夠做到。那么我們?yōu)楹尾豢紤]讓解碼器使用編碼器部分每一個時刻的隱層狀態(tài),而不是單單只是使用編碼器部分最后一個隱層狀態(tài),這樣子我們應(yīng)該會得到更好的翻譯文本。這就要引入attention機制了。

Fig 0.3:在編碼器和解碼器中間加入attention機制。這里,在給出第一個翻譯詞匯之前,解碼器就已經(jīng)從解碼器得到了第一個時間步長的輸入信息(初始化狀態(tài))。

注意力作為編碼器和解碼器之間的接口,負責(zé)將編碼器部分每一個時刻的隱狀態(tài)提供給解碼器(其中不包括在Fig.0.3中的標紅的隱狀態(tài))。在這樣的設(shè)定下,模型才有能力去聚焦在輸入序列中有用的部分,并且從中學(xué)到輸入文本與輸出翻譯文本之間的對齊(alignment)。這對于模型有效的處理長輸入句子十分有效。

定義:對齊

對齊的意思是將原始輸入文本中的片段與他們對應(yīng)輸出的翻譯文本片段,進行匹配。

Fig.0.3:法文"la"與輸入序列之間的對齊分布在輸入序列中各個單詞上,但是主要在其中四個單詞:"the","European","Economic"和"Area"。連線的顏色越深表示attention的score越大。

在[2]中的介紹我們可以直到,這里有種形式的attention.一種是,使用編碼器的所有隱層狀態(tài),我們稱其為全局attention。相對的,只使用編碼器隱層狀態(tài)的子集來計算attention,我們將其稱為局部attention。在這篇文章中,我們討論的是全局attention。其中提到attention時大家就默認為全局attention.

在這篇文章中,我們使用動畫的形式進行對attention的工作原理進行總結(jié),所以大家再也不用對著論文或者資料里的各種數(shù)學(xué)表達式發(fā)愁了。同時作為例證,我將介紹在過去五年里發(fā)表的四種神經(jīng)機器翻譯的框架。并且我將在文章中為對其中的一些概念理論進行直觀推斷式的講解,所以大家要注意這些講解哦。

目錄

1.Attention:綜述

2.Attention:例子

3.總結(jié)

附錄:attention分數(shù)計算方法

1.Attention:綜述

在我們討論attention如何使用之前,首先允許我使用直觀理解的方式,解釋如何將序列到序列模型運用到翻譯任務(wù)上。

直觀理解:序列到序列模型

一名翻譯員從頭到尾的讀一段德語文本,一旦他讀完這段文本,便開始將其逐詞的翻譯為英文。當這段文本很長時,他極有可能在翻譯過程中已經(jīng)忘記了這段文本之前的段落。

當然,上面我們說的只是一個簡單的序列到序列模型。下面我將帶大家厘清在序列到序列+attention模型中attention層中計算的具體步驟。在這之前,讓我們首先對模型有一個直觀理解。

直觀理解:序列到序列+attention

一名翻譯員從頭到尾去讀一段德語文本,只是在讀的過程中,會記下來文本中涉及到的關(guān)鍵詞。這樣在之后翻譯工作時,他可以在翻譯每個德語單詞時借鑒他在之前已經(jīng)記下的關(guān)鍵詞。

attention通過向不同的單詞賦予不同的分數(shù)來表征 不同的關(guān)注程度。之后,將這些得到的分數(shù)經(jīng)過softmax層(從而拿到歸一化的權(quán)重),這樣我們就可以將編碼器階段所有的隱層狀態(tài)經(jīng)過加權(quán)和得到一個上下文向量。attention層具體的實現(xiàn)可以分解為如下四個步驟。

Step 0:準備隱層狀態(tài)

我們要首先準備好decoder的(當前)隱層狀態(tài)(紅色)和所有可以拿到的編碼器隱層狀態(tài)(綠色)。在我們的例子中,我們有4個編碼器隱層狀態(tài)和一個當前解碼器隱層狀態(tài)。

Fig.1.0 準備關(guān)注

Step 1: 獲得對每個編碼器隱層狀態(tài)的分數(shù)

分數(shù)(標量)可以通過分數(shù)函數(shù)(或者叫做對齊分數(shù)函數(shù)[2]或者對齊模型)得到。在這個例子中,我們使用解碼器和編碼器隱層狀態(tài)之間的點積作為我們的分數(shù)計算函數(shù)。

附錄A中給了不同的分數(shù)計算函數(shù)。

Fig. 1.1:分數(shù)獲得

在上面這個例子中,我們在編碼器隱層狀態(tài)[5, 0, 1]中得到了較高的分數(shù),這意味著下一個要翻譯的單詞將較大的收到這個隱層狀態(tài)的影響。

Step 2 : 將所有的分數(shù)值通過一個softmax層

我們將這些分數(shù)通過一個softmax層,這樣我們可以得到對應(yīng)的加起來為1的值。這些經(jīng)過了softmax層的分數(shù)代表了[3,10]的注意力分布。

Fig.1.2 softmaxed 分數(shù)

我們可以看到,在經(jīng)過了softmax的分數(shù)score^,attention按我們的預(yù)期只分布在[5, 0, 1]上。實際上,這些數(shù)應(yīng)該是0到1之間的浮點數(shù)而不是0和1的二值數(shù)。

Step 3: 將每個編碼器隱狀態(tài)乘以softmax層之后的分數(shù)值

通過將每個編碼器的隱層狀態(tài)乘上對應(yīng)的softmax之后的分數(shù)值,我們就可以得到對齊向量[2]或者叫做標注向量[1]。這就是對齊的機制。

Fig. 1.3: Get the alignment vectors

這里我們可以看到除了[5, 0, 1]之外的其他隱層狀態(tài)都因為其分數(shù)小的原因降至0。這意味著我們可以認為第一個被翻譯出的單詞應(yīng)該匹配著輸入單詞中的[5,0,1]編碼向量。

Step 4: 將所有的對齊向量相加

將所有的對齊向量相加即可得到最終的上下文向量[1,2]。一個上下文向量相當于是之前所有步驟中的對齊向量的聚合信息。

Fig. 1.4: Get the context vector

Step 5: 將上下文向量輸入解碼器部分

(輸入解碼器的)方式由我們的框架設(shè)計所決定。之后我們將在Section 2a,2b,和2c中通過例子介紹這些框架如何在解碼器部分使用上下文向量信息。

Fig. 1.5: Feed the context vector to decoder

下面是整個動態(tài)的過程。

Fig. 1.6: Attention

直觀理解:attention到底是如何有效的

答案:反向傳播,驚喜嗎?反向傳播會盡其可能的去讓輸出接近真實答案。它需要去不斷的調(diào)整RNN網(wǎng)絡(luò)中的權(quán)值以及對應(yīng)的函數(shù)方程中的權(quán)值,如果有需要的話。這些權(quán)重會去影響編碼器的隱層狀態(tài)和解碼器的隱層狀態(tài),從而間接的去影響attention的分數(shù)。

2. Attention:例子

我們在之前的章節(jié)中已經(jīng)了解了序列到序列和序列到序列+attention兩種框架。在下一小節(jié)中,我們將詳細的去了解3個在序列到序列基礎(chǔ)上運用attention機制的神經(jīng)機器翻譯模型。為了讓大家更為完整的了解(他們的具體性能),我將附上他們的雙語評估分數(shù)(BLEU)--一種在真實序列基礎(chǔ)上評價合成序列的指標。

2a. Bahdanau 等(2015)[1]

這種attention的計算實現(xiàn)是基礎(chǔ)attention計算的來源之一。作者在論文題目"Neural Machine Translation by Learning to Jointly Align and Translate"中用了"align"(對齊)這和詞,以此來表示在訓(xùn)練模型時去調(diào)整跟分數(shù)直接相關(guān)的權(quán)重。下面是對此框架的一些要點總結(jié):

1.編碼器是由雙向(前向+反向)的門限循環(huán)單元(BiGRU)。解碼器是由一個單向的GRU組成,它的初始化狀態(tài)是由編碼器的反向GRU的最后一個隱層狀態(tài)變換而來。(這一點沒有在下面的圖中體現(xiàn))

2.attention層分數(shù)的計算方式是 加/串聯(lián)

3.機器碼器下一個時刻的輸入是由上一步解碼器的輸出(粉色)和當前時刻的上下文向量(深綠)串聯(lián)。

Fig. 2a: NMT from Bahdanau et. al. Encoder is a BiGRU, decoder is a GRU.

作者在WMT14英-法數(shù)據(jù)集上BLEU值達到了26.75。

直觀理解:由雙向編碼器組成的序列到序列模型+attention機制

譯者A像之前我們說的那樣邊讀邊寫下關(guān)鍵詞。譯者B(他屬于高級譯者,有可以從后往前讀文章并可以進行翻譯的能力)從最后一個詞開始從后往前閱讀,并且也做關(guān)鍵詞的記錄。這樣兩個人會不斷的討論他們閱讀到的內(nèi)容,一旦閱讀完整段德語文本,譯者B被要求依據(jù)他們之前討論的內(nèi)容以及他們共同整理的關(guān)鍵詞,將德文逐詞的翻譯為英文。

譯者A是前向RNN,譯者B是反向RNN。

2b. Luong等(2015)[2]

Effective Approaches to Attention-based Neural Machine Translation的作者將Bahdanau等的框架進行了泛化,并且進行了簡化。下面我們看下它的主要結(jié)構(gòu):

1.編碼器是一個兩層的長短時記憶網(wǎng)絡(luò)(LSTM)。解碼器也有著相同的網(wǎng)絡(luò)框架,同時它的隱狀態(tài)的初始化來自編碼器的最后一個隱層狀態(tài)。

2.他們在實驗過的分數(shù)方程有(i)加/串聯(lián),(ii)點乘,(iii)基于位置的 和(iv)一般化的。

3.當前時刻解碼器的最終輸出(粉色),由當前時刻解碼器部分的輸出(譯者注:解碼器部分LSTM的輸出或隱層狀態(tài))和當前時刻計算得到的上下文向量進行串聯(lián),之后經(jīng)過一層全連接網(wǎng)絡(luò)得到。

Fig. 2b: NMT from Luong et. al. Encoder is a 2 layer LSTM, likewise for decoder.

此模型在WMT15 英語-法語數(shù)據(jù)集上BLEU分數(shù)達到了25.9.

直觀理解:帶有兩層(LSTM)堆疊編碼器的序列到序列模型 + attention

譯者A從前至后閱讀德語文本,并寫下遇到的關(guān)鍵詞。同樣的,譯者B(比譯者A的級別要高)同樣閱讀這段德語文本,并且記下關(guān)鍵詞。注意在這個過程中,譯者A每讀一個詞就向譯者A進行匯報。當文本閱讀結(jié)束后。兩位譯者會基于他們之前共同得到的關(guān)鍵詞進行逐詞的翻譯。

2c. 谷歌的神經(jīng)機器翻譯模型(GNMT)[9]

我們中的大多數(shù)應(yīng)該都曾經(jīng)以各種形式使用過谷歌翻譯,所以我覺得十分有必要來討論2016年實現(xiàn)的谷歌神經(jīng)機器翻譯系統(tǒng)。GNMT是我們看到的前兩個例子的結(jié)合(深受第一個例子[1]的啟發(fā))。

1.編碼器部分由八層LSTM堆疊而成,其中第一層是雙向的(雙向的輸出進行串聯(lián)),并且從第三層開始會進行連續(xù)的殘差連接。解碼器部分由8層單向的LSTM堆疊而組成。

2.分數(shù)計算函數(shù)使用的 加/串聯(lián),和文獻[1]一樣。

3.同樣的,和文獻[1]相同,解碼器當前時刻的輸入由上一個時刻解碼器的輸出(粉色)和當前時刻的上下文向量(深綠)串聯(lián)而得。

Fig. 2c: Google's NMT for Google Translate. Skip connections are denoted by curved arrows. *Note that the LSTM cells only show the hidden state and input; it does not show the cell state input.

該模型在WMT14英-法數(shù)據(jù)庫上BLEU分數(shù)達到了38.95,在WMT14英-德數(shù)據(jù)庫上BLEU的值達到了24.17.

直觀理解:GNMT--有八層LSTM堆疊而成編碼器的序列到序列模型(+雙向+殘差連接)+attention

八個譯者依次坐好,順序是從A到B直到H。每個譯者都讀著相同的德語文本。在每個詞上,譯者A向譯者B分享他的發(fā)現(xiàn),譯者B會改善得到的信息并將它分享給譯者C,重復(fù)這樣的過程直到告訴譯者H。同樣的,譯者H會在讀這段德文文本時,基于它獲得的信息寫下相關(guān)的關(guān)鍵詞。

一旦每個人都讀完了這段德文文本,譯者A會被告知去翻譯第一個詞。首先他開始回想,然后他將他的答案分享給B,B改進答案后分享給C,重復(fù)這個過程直到傳遞給了H。然后譯者H會基于他得到的答案和之前記錄下的關(guān)鍵詞,寫下第一個翻譯出來的單詞。他會重復(fù)這個過程直到整個翻譯內(nèi)容結(jié)束。

3. 總結(jié)

這里我們對你在這篇文章里見過的所有架構(gòu)做一個快速的總結(jié)。

有雙向編碼器的序列到序列模型 + attention

以上就是所有的內(nèi)容。在下一篇博客中,我將為你講述什么是self-attention,并且講述它是怎樣應(yīng)用到谷歌的Transformer和self-Attention對抗神經(jīng)網(wǎng)絡(luò)模型上的。請密切關(guān)注我的空間!

附錄:分數(shù)函數(shù)

下面是Lilian Weng編輯的分數(shù)函數(shù)中的一部分。加/串聯(lián) 和 點乘在這篇文章中已經(jīng)被提及。其中包含了點乘操作(點乘,余弦距離等)的分數(shù)函數(shù),其主旨是為了度量兩個向量之間的相似性。對于使用前饋神經(jīng)網(wǎng)絡(luò)的分數(shù)函數(shù),其主旨是對翻譯譯文的對齊權(quán)重進行建模。

Fig. A0: Summary of score functions

Fig. A1: Summary of score functions. (Image source)

References

[1] Neural Machine Translation by Jointly Learning to Align and Translate (Bahdanau et. al, 2015)

[2] Effective Approaches to Attention-based Neural Machine Translation (Luong et. al, 2015)

[3] Attention Is All You Need (Vaswani et. al, 2017)

[4] Self-Attention GAN (Zhang et. al, 2018)

[5] Sequence to Sequence Learning with Neural Networks (Sutskever et. al, 2014)

[6] TensorFlow's seq2seq Tutorial with Attention (Tutorial on seq2seq+attention)

[7] Lilian Weng's Blog on Attention (Great start to attention)

[8] Jay Alammar's Blog on Seq2Seq with Attention (Great illustrations and worked example on seq2seq+attention)

[9] Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation (Wu et. al, 2016)

Related Articles on Deep Learning

Animated RNN, LSTM and GRU

Line-by-Line Word2Vec Implementation (on word embeddings)

Step-by-Step Tutorial on Linear Regression with Stochastic Gradient Descent

10 Gradient Descent Optimisation Algorithms + Cheat Sheet

Counting No. of Parameters in Deep Learning Models

想要繼續(xù)查看本篇文章相關(guān)鏈接和參考文獻?

長按鏈接點擊打開或點擊【注意力的動畫解析(以機器翻譯為例)】:

https://ai.yanxishe.com/page/TextTranslation/1460

AI研習(xí)社每日更新精彩內(nèi)容,觀看更多精彩內(nèi)容:雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)(公眾號:雷鋒網(wǎng))

CVPR 2018 最牛逼的十篇論文

深度學(xué)習(xí)目標檢測算法綜述

迷你自動駕駛汽車深度學(xué)習(xí)特征映射的可視化

在2018年用"笨辦法"學(xué)數(shù)據(jù)科學(xué)體會分享

等你來譯:

如何在神經(jīng)NLP處理中引用語義結(jié)構(gòu)

(Python)用Mask R-CNN檢測空閑車位

高級DQNs:利用深度強化學(xué)習(xí)玩吃豆人游戲

深度強化學(xué)習(xí)新趨勢:谷歌如何把好奇心引入強化學(xué)習(xí)智能體

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
RNN的應(yīng)用及注意力模型
Transformer網(wǎng)絡(luò)解讀
【NLP】圖解 Attention完整版
不用看數(shù)學(xué)公式!圖解谷歌神經(jīng)機器翻譯核心部分:注意力機制
自然語言處理中的自注意力機制(Self
【NAACL 2018】Self-attention考慮相對位置,谷歌Vaswani團隊最新工作
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服