attention注意力機制學習

learn_forlife發表於2020-11-06

【參考資料】:

  1. 目前主流的attention方法都有哪些? - JayLou婁傑的回答 - 知乎

  2. 目前主流的attention方法都有哪些? - 張戎的回答 - 知乎

  3. Attention機制解讀 - 高峰OUC的文章 - 知乎

  4. Transformer詳解(一)——Attention機制詳解 - 被包養的程式猿丶的文章 - 知乎

  5. 簡說Seq2Seq原理及實現 - 陳猛的文章 - 知乎

  6. Attention機制簡單總結 - 邱震宇的文章 - 知乎

注:本文的內容均來自上面所羅列的參考資料,只是在學習的過程中對所學的內容進行整理,感謝上面的各位大佬,讓我這個nlp小白對attention有了一定的瞭解。


Attention機制的血緣關係:

encoder-decoder:

是一種神經網路的結構,常見的encoder和decoder可以是RNN、LSTM、GRU這些能夠處理序列資料的模型。

在這裡插入圖片描述
seq2seq

任務:輸入一個序列,輸出一個序列。

主要部分:encoder和decoder,encoder首先處理輸入序列中的每一個item(需要做embeeding處理),並且將其轉換成一個向量(context向量),然後encoder將context向量傳遞給decoder,decoder根據context向量一個接一個的生成輸出序列中的每個item。

在這裡插入圖片描述

Attention:

從上面的encoder和decoder結構seq2seq模型可以發現,encoder只把最後一個hidden state作為context向量餵給decoder,所以這種結構在處理長句子翻譯問題的時候表現並不好。為解決這個問題,Attention應運而生,Attention使得模型能夠關注輸入序列中與目標相關的部分。

在這裡插入圖片描述

1. 什麼要引入Attention機制?

迴圈神經網路已經的很強的記憶能力,但想要記憶長距離的資訊需要更復雜的模型,需要更強大的計算能力,而往往在很多場合計算能力是一個瓶頸,使得不能一味增加模型的複雜度來提高模型效果。

2. Attention機制的理解

引入人腦處理資訊過載的方式,只選擇一些關鍵資訊進行處理,來提高神經網路的效率。在影像識別中人的面部、文字中的標題以及文章首句等位置就是關鍵資訊。

3. Attention機制有哪些?

按照認知神經學中的注意力,可以分為兩類:

  • 聚焦式(focus)注意力:自上而下的有意識的注意力,主動注意--------是指有預定目的、依賴任務、主動有意識地聚焦於某一物件的注意力。
  • 顯著性(saliency-based)注意力:自下而上的有意識的注意力,被動注意—基於顯著性的注意力是由外界刺激驅動的注意力,不需要主動干預,也和任務無關;可以將max-pooling和門控(gating)機制來近似地看做是自下而上的基於顯著性的注意力機制。

在人工神經網路中,注意力機制一般就特指聚焦式注意力。

4. Attention機制的原理

在這裡插入圖片描述

上面的圖是QKV模型,假設輸入為 [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳 q q q,Memory 中以( k k k, v v v)形式儲存需要的上下文。感覺在 Q&A 任務中,這種設定比較合理,transformer 是採用的這種建模方式。 k k k 是 question, v v v是 answer, q q q是新來的 question,看看歷史 memory 中 k k k 更相似,然後依葫蘆畫瓢,根據相似 v v v,合成當前問題的答案。

decoder中的資訊定義為一個Query,encoder中包含了所有可能出現的詞語,我們將其作為一個字典,該字典的key為所有encoder的序列資訊。n個單詞相當於當前字典中有n條記錄,而字典的value通常也是所有encoder的序列資訊。

注意力機制可以分為三步:

  • step1-資訊輸入:

    用X = [x1, · · · , xN ]表示N 個輸入資訊
  • step2-計算注意力分佈α:

    Key=Value=X,則可以給出注意力分佈

    α i = s o f t m a x ( s ( k e y i , q ) ) = s o f t m a x ( s ( X i , q ) ) α_i = softmax(s(key_i,q)) = softmax(s(X_i,q)) αi=softmax(s(keyi,q))=softmax(s(Xi,q))

我們將 α i \alpha_i αi稱之為注意力分佈(概率分佈), s ( X i , q ) s(X_i,q) s(Xi,q)為注意力打分機制,有幾種打分機制:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-2RoGg8Yi-1604650084818)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20201106113934987.png)]

  • step3-根據注意力分佈α來計算輸入資訊的加權平均:

    注意力分佈 α i \alpha_i αi可以解釋為在上下文查詢q時,第i個資訊受關注的程度,採用一種“軟性”的資訊選擇機制對輸入資訊X進行編碼為:

    a t t ( q , X ) = ∑ i = 1 N α i X i att(q,X) =\sum_{i=1}^{N}\alpha_iX_i att(q,X)=i=1NαiXi

這種編碼方式為軟性注意力機制(soft Attention),軟性注意力機制有兩種:普通模式(Key=Value=X)和鍵值對模式(Key!= Value )
[外鏈圖片轉存中...(img-2q9iKpt2-1604650084832)]


關於Attention的更多內容可以在開頭的參考資料中進行查閱學習。

相關文章