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. 前言

注意力模型最近幾年在深度學習各個領域被普遍使用,不管是圖像處理、語音識別仍是天然語言處理的各類不一樣類型的任務中,都很容易遇到注意力模型的身影。因此,瞭解注意力機制的工做原理對於關注深度學習技術發展的技術人員來講有很大的必要。html

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機制。spa

3.1 Soft Attention介紹

咱們最廣泛的一種Soft Attention的計算過程。翻譯

加上Attention的Encoder-Decoder的框架以下:3d

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\)如何計算?code

咱們再看一副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結構實現不一樣層級間的信息傳遞,而且還能並行處理大大提升運行速度,和準確度。

相關文章
相關標籤/搜索