NLP——機器翻譯中的Attention

框架

在這裏插入圖片描述

簡介

Encoder-Decoder模型雖然非常經典,但是侷限性也非常大。最大的侷限性就在於編碼和解碼之間的唯一聯 系就是一個固定長度的語義向量C。也就是說,編碼器要將整個序列的信息壓縮進一個固定長度的向量中。但是這樣做有兩個弊端,一是語義向量無法完全表示整個序列的信息,二是先輸入的內容攜帶的信息會被後輸入 的信息稀釋掉。輸入序列越長,這個現象就越嚴重。這就使得在解碼的時候一開始就沒有獲得輸入序列足夠的信息,那麼解碼時準確率就要打一定折扣。爲了解決上述問題,在Seq2Seq出現一年以後Attention模型被提出。該模型在產生輸出的時候,會產生一個 注意力範圍來表示接下來輸出的時候要重點關注輸入序列的哪些部分,然後根據關注的區域來產生下一個輸出,如此反覆。Attention和人的一些行爲特徵有一定相似之處,人在看一段話的時候,通常只會重點注意具有信息量的詞,而非全部詞,即人會賦予每個詞的注意力權重不同。
相比於之前的Encoder-Decoder模型,Attention模型最大的區別就在於它不再要求編碼器將所有輸入信息都 編碼進一個固定長度的向量之中。相反,此時編碼器需要將輸入編碼成一個向量的序列,而在解碼的時候,每 一步都會選擇性的從向量序列中挑選一個子集進行進一步處理。這樣,在產生每一個輸出的時候,都能夠做到 充分利用輸入序列攜帶的信息。每一個C會自動去選取與當前所要輸出的y最合適的上下文信息。具體來說,aij 衡量編碼中第j階段的hj和解碼時第i階段的相關性,最終Decoder中第i階段的輸入的上下文信息Ci就來自於所有 hj對aij的加權和。
在這裏插入圖片描述

相關性計算

對於輸入序列每個輸入得到的輸出,計算注意力權重並加權:
• 不僅僅使用Encoder最後一步的輸出,而且使用Encoder每一步的輸出
• Decoder每次進行生成時,先根據Decoder當前狀態和Encoder每一步輸出之間的關係,計算對應的注意力權重
• 根據權重將Encoder每一步的輸出進行加權求和,得到當前這一步所使用的上下文context
• Decoder根據context以及上一步的輸出,更新得到下一步的狀態,進而得到下一步的輸出
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章