6. 從Encoder-Decoder(Seq2Seq)理解Attention的本質


1. 語言模型

2. Attention Is All You Need(Transformer)算法原理解析

3. ELMo算法原理解析

4. OpenAI GPT算法原理解析

5. BERT算法原理解析

6. 從Encoder-Decoder(Seq2Seq)理解Attention的本質

7. Transformer-XL原理介紹

1. 前言

注意力模型最近幾年在深度學習各個領域被廣泛使用,無論是圖像處理、語音識別還是自然語言處理的各種不同類型的任務中,都很容易遇到注意力模型的身影。所以,了解注意力機制的工作原理對於關注深度學習技術發展的技術人員來說有很大的必要。

2. Encoder-Decoder(Seq2Seq)框架

要了解深度學習中的注意力模型,就不得不先談Encoder-Decoder框架,因為目前大多數注意力模型附着在Encoder-Decoder框架下。其實注意力模型可以看作一種通用的思想,本身並不依賴於特定框架,這點需要注意

Encoder-Decoder框架可以看作是一種深度學習領域的研究模式,應用場景異常廣泛。圖2是文本處理領域里常用的Encoder-Decoder框架最抽象的一種表示。

image

文本處理領域的Encoder-Decoder框架可以這么直觀地去理解:可以把它看作適合處理由一個句子(或篇章)生成另外一個句子(或篇章)的通用處理模型。對於句子對(Source,Target),我們的目標是給定輸入句子Source,期待通過Encoder-Decoder框架來生成目標句子Target。Source和Target可以是同一種語言,也可以是兩種不同的語言。而Source和Target分別由各自的單詞序列構成:

\[ Source=(x_1,x_2,...,x_m) \]
\[ Target=(y_1,y_2,...,y_n) \]

Encoder顧名思義就是對輸入句子Source進行編碼,將輸入句子通過非線性變換轉化為中間語義表示C:

\[ C=f(x_1,x_2,...,x_m) \]

對於解碼器Decoder來說,其任務是根據句子Source的中間語義表示C和之前已經生成的歷史信息

\[ y_{i}=g(C,y_1,y_2,...,y_{i-1}) \]

3. Attention原理

按照Encoder-Decoder的框架,我們的輸出值y的表達式:

\[ y_{i}=g(C,y_1,y_2,...,y_{i-1}) \]

語義編碼C是由句子Source的每個單詞經過Encoder編碼產生的,這意味着不論是生成哪個單詞,\(y_1\),$y_2$還是$y_3$,其實句子Source中任意單詞對生成某個目標單詞$y_i$來說影響力都是相同的,這是為何說這個模型沒有體現出注意力的緣由。這類似於人類看到眼前的畫面,但是眼中卻沒有注意焦點一樣。這樣不符合人類認知事物的原理。所以我們引入Attention機制。

3.1 Soft Attention介紹

我們最普遍的一種Soft Attention的計算過程。

加上Attention的Encoder-Decoder的框架如下:

image

我們的圖中,出現了$C_1,C_2,C_3$分別對應了$y_1,y_2,y_3$,這樣我們的輸出值的表達式也改變了:

\[ y_{i}=g(C_i,y_1,y_2,...,y_{i-1}) \]

問題是我們的$C_i$如何計算?

我們再看一副Attention的細節圖

image

從圖中可以看出$C_i$時$h_i$的加權的結果

\[ C_i=\sum_{j\in{m}}\alpha_{i,j}h_i \]

我們如何計算$\alpha_i$呢?這時候就用到我們的Softmax的原理,着也是Soft Attention取名的原因。

\[ \alpha_{i,j}=\frac{exp(e(h_i,s_j))}{\sum_i{exp(e(h_i,s_j))}} \]

根據不同的Attention算法$e(h_i,s_j)$的實現方式也不同:

  • Bahdanau Attention結構
\[ e(h,s) = Utanh(Vh+Ws) \]

其中$U,V,W$是模型的參數,$e(h,s)$結構代表了一層全聯接層。

  • Luong Attention結構
\[ e(h,s) = h^TWs \]

但是無論是Bahdanau Attention,還是Luong Attention,它們都屬於Soft Attention的結構,都是通過Softmax來計算$\alpha_{i,j}$。

4. Attention機制的本質思想

上述內容就是經典的Soft Attention模型的基本思想,那么怎么理解Attention模型的物理含義呢?一般在自然語言處理應用里會把Attention模型看作是輸出Target句子中某個單詞和輸入Source句子每個單詞的對齊模型,這是非常有道理的。

目標句子生成的每個單詞對應輸入句子單詞的概率分布可以理解為輸入句子單詞和這個目標生成單詞的對齊概率,這在機器翻譯語境下是非常直觀的:傳統的統計機器翻譯一般在做的過程中會專門有一個短語對齊的步驟,而注意力模型其實起的是相同的作用。

image

我們可以這樣來看待Attention機制:將Source中的構成元素想象成是由一系列的(Key,Value)數據對構成,此時給定Target中的某個元素Query,通過計算Query和各個Key的相似性或者相關性,得到每個Key對應Value的權重系數,然后對Value進行加權求和,即得到了最終的Attention數值。所以本質上Attention機制是對Source中元素的Value值進行加權求和,而Query和Key用來計算對應Value的權重系數。即可以將其本質思想改寫為如下公式:

\[ Attention(Query_j,Source)=\sum_{i=1}^NSimilarity(Query_j,Key_i)*Value_i \]

上文所舉的Encoder-Decoder框架中,因為在計算Attention的過程中,Source中的Key和Value合二為一成,指向的是同一個東西,也即輸入句子中每個單詞對應的語義編碼$h_i$,所以可能不容易看出這種能夠體現本質思想的結構。

從本質上理解,Attention是從大量信息中有選擇地篩選出少量重要信息並聚焦到這些重要信息上,忽略大多不重要的信息。聚焦的過程體現在權重系數的計算上,權重越大越聚焦於其對應的Value值上,即權重代表了信息的重要性,而Value是其對應的信息。

5. 總結

Encoder-Decoder(Seq2Seq)加Attention架構由於其卓越的實際效果,目前在深度學習領域里得到了廣泛的使用,了解並熟練使用這一架構對於解決實際問題會有極大幫助。

再者還有最新的Transformer結構,拋棄傳統的RNN結構,完全使用Attention結構實現不同層級間的信息傳遞,並且還能並行處理大大提高運行速度,和准確度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM