Attention 機制的學習

概念:

注意力機制模仿了生物觀察行為的內部過程,即一種將內部經驗和外部感覺對齊從而增加部分區域的觀察精細度的機制。例如人的視覺在處理一張圖片時,會通過快速掃描全局圖像,獲得需要重點關注的目標區域,也就是注意力焦點。然後對這一區域投入更多的注意力資源,以獲得更多所需要關注的目標的細節信息,並抑制其它無用信息,

主要用於解決LSTM/RNN模型輸入序列較長的時候很難獲得最終合理的向量表示問題,做法是保留LSTM的中間結果,用新的模型對其進行學習,並將其與輸出進行關聯,從而達到信息篩選的目的

Attention 機制的學習

Encoder+Decoder

  中文名字是編碼器和解碼器,應用於seq2seq問題,其實就是固定長度的輸入轉化為固定長度輸出。其中encoder和decoder可以採用的模型包括CNN/RNN/BiRNN/GRU/LSTM等,可以自由組合。 目前大多數的注意力模型都是依附在 Encoder-Decoder 框架下,但並不是只能運用在該模型中,注意力機制作為一種思想可以和多種模型進行結合,其本身不依賴於任何一種框架。 Encoder-Decoder 框架是深度學習中非常常見的一個模型框架:   例如在 Image Caption 的應用中 Encoder-Decoder 就是 CNN-RNN 的編碼 - 解碼框架;   在神經網絡機器翻譯中 Encoder-Decoder 往往就是 LSTM-LSTM 的編碼 - 解碼框架,在機器翻譯中也被叫做 Sequence to Sequence learning 。 所謂編碼,就是將輸入的序列編碼成一個固定長度的向量;解碼,就是將之前生成的固定向量再解碼成輸出序列。這裡的輸入序列和輸出序列正是機器翻譯的結果和輸出。

流程圖:

Attention 機制的學習

encoder過程將輸入的句子轉換為語義中間件,decoder過程根據語義中間件和之前的單詞輸出,依次輸出最有可能的單詞組成句子。

Attention 機制的學習

當輸入長度非常長的時候,這個時候產生的語義中間件效果非常的不好,需要調整。

Attention 機制的學習

2.attention模型

  attention\\color{blue}{attention}attention模型用於解碼過程中,它改變了傳統decoder對每一個輸入都賦予相同向量的缺點,而是根據單詞的不同賦予不同的權重。在encoder過程中,輸出不再是一個固定長度的中間語義,而是一個由不同長度向量構成的序列,decoder過程根據這個序列子集進行進一步處理。

Attention 機制的學習

attention原理   這麼說比較抽象,具體是怎麼做的呢。用一個小例子來說明: 假設輸入為一句英文的話:Tom chase Jerry那麼最終的結果應該是逐步輸出 “湯姆”,“追逐”,“傑瑞”。那麼問題來了,如果用傳統encoder-decoder模型,那麼在翻譯Jerry時,所有輸入單詞對翻譯的影響都是相同的,但顯然Jerry的貢獻度應該更高。 引入attention後,每個單詞都會有一個權重\\color{red}{引入attention後,每個單詞都會有一個權重}引入attention後,每個單詞都會有一個權重:(Tom,0.3)(Chase,0.2) (Jerry,0.5),現在的關鍵是權重怎麼算的呢。

Attention 機制的學習

單詞權重計算思路   從圖上可以看出來,加了attention機制以後,encoder層的每一步輸出都會和當前的輸出進行聯立計算(wx+b形式),最後用softmx函數生成概率值。 概率值出來了,最後的結果就是一個加權和的形式。

Attention 機制的學習

         輸出結果計算方法

基本上所有的attention都採用了這個原理,只不過算權重的函數形式可能會有所不同,但想法相同。

3.attention應用   attention的應用領域非常廣泛,文本、圖片等都有應用。    文本:應用於seq2seq模型,最常見的應用是翻譯。    圖片:應用於卷積神經網絡的圖片提取 當然還有很多其他應用,大家可以自己探索。

4.attention簡單實現 4.1 思路1:直接對原文本進行權重計算 這個思路非常暴力,我們說過要對輸入進行權重計算,此種方法的計算很簡單,就是將輸入來一個全連接,隨後採用softmax函數激活算概率。

4.2 思路2:加入激活函數並求和

這個的思路是權重計算之後加了一個tanh激活函數,然後求完權重進行了加和,更加符合attention機制的習慣,其實方法是一樣的只不過返回是乘完加和而已。代碼來自網上,原作者自己定義了一個attention層。

Attention 機制的學習

4.3 層級attention模型

這是比較新的一種思路,在句子和單詞層面都輸出了一個向量。思路圖如下:

Attention 機制的學習

             層級attention的思路


分享到:


相關文章: