Attention and Self-Attention

1.attention

與人類學習相同,機器學習過程中我們也希望能有側重點,核心目標也是從眾多信息中選擇出對當前任務目標更關鍵的信息。所以就有了Attention的出現。

2.Encoder-Decoder框架

在學習attention模型之前,我們先回憶encoder-decoder框架。


Encoder-Decoder框架抽象表示

如果我們把中間語義編碼C換成根據當前輸出來調整成加入注意力模型的變化的Ci,那么增加了注意力模型的Encoder-Decoder框架如下:

注意力模型的Encoder-Decoder框架

3.Attention機制的本質思想

下面我們來看下注意力模型的Encoder-Decoder框架Ci具體是什么。
Attention函數的本質可以被描述為一個查詢(query)到一系列(鍵key-值value)對的映射。

本質

其計算方式是先計算Query和各個Key的相似性或者相關性(這里用點乘),得到每個Key對應Value的權重系數,然后對Value進行加權求和,即得到了最終的Attention數值。所以本質上Attention機制是對Source中元素的Value值進行加權求和,而Query和Key用來計算對應Value的權重系數

計算方式

Attention機制的具體計算過程,如果對目前大多數方法進行抽象的話,可以將其歸納為兩個過程:
第一個過程是根據Query和Key計算權重系數,第二個過程根據權重系數對Value進行加權求和。
而第一個過程又可以細分為兩個階段:
第一個階段根據Query和Key計算兩者的相似性或者相關性,求相似性方法有點乘,權重,余弦相似性等;
第二個階段對第一階段的原始分值進行歸一化處理;
可以將Attention的計算過程抽象為三個階段。


三階段計算attention

4.例子

我們以李宏毅深度學習授課資料:Attention-based Model所講述的機器翻譯為例。
將‘機器學習’翻譯為‘machine learning’

image.png

attention其實就是一個當前的輸入與輸出的匹配度,即為h1和z0的匹配度。
h1為當前時刻RNN的隱層輸出向量,而不是原始輸入的詞向量,z0初始化向量,如rnn中的初始記憶。

第一步:求z與h的相似性得到a

第一步

第二步:softmax歸一化處理得到概率值a^

第二步

第三步:對h加權求和得c

第三步
image.png

以上便是求attention得3個過程。

那么再算出了co之后,我們就把這個向量作為rnn的輸入(如果我們decoder用的是RNN的話),然后第一個時間點的輸出的編碼z1由co和初始狀態z0共同決定。

image.png

將z1替代z0做下一步計算。再和每一個輸入的encoder的vector計算匹配度,然后softmax,計算向量加權,作為第二時刻的輸入……如此循環直至結束。

image.png

image.png

5.Self-Attention

Self-Attention是Attention的特殊形式。自注意模型其實就是我們前面的query、key和value是相等的。在序列內部做Attention,尋找序列內部的聯系。
例如輸入一個句子,那么里面的每個詞都要和該句子中的所有詞進行attention計算。目的是學習句子內部的詞依賴關系,捕獲句子的內部結構。

6.Self-Attention GAN中的Self-Attention模型

SAGAN

在這個模型中用的就是一個自監督模塊關注全局信息,它的Q、K、V都是相同的是convolution feture map,再計算attention

第一步:求相似度再歸一化

計算相似度再歸一化

第二步:注意層輸出

注意層輸出
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容