Attention機制總結

Attention:

感興趣區(qū)域ROI和定位機制。

每一步只關注特定小區(qū)域,抽取區(qū)域表征信息,再整合到之前的步驟所積累的信息中。

Soft attention: 以概率進行加權輸入到下一層;

Hard attention: 選取一個輸入到下一層。

策略梯度的強化學習技術 使得訓練定位小框位置變得可能,在每次探索中,如果分類模塊能正確預測,給與正反饋,強化對這個位置的選擇,反之則給負反饋。

一瞥模塊:接收一個位置的二維向量作為輸入 畫出小框提取特征再結合位置信息 得到中間向量z。

循環(huán)模塊:接收中間向量z 包含2層RNN,下層主要積累識別的信息 上層主要預測位置。

發(fā)射模塊:上層RNN輸出的累積位置信息(隱層的高維向量)映射成二維位置向量,并進行高斯采樣。

分類模塊:根據下層 RNN的輸出向量進行預測。

上下文模塊:解決第一步往哪兒看的問題 接收整張圖怓 輸出初始狀態(tài)向量作為上層RNN的初始輸入得到第一個glimpse的位置

將輸入分解成序列化的 同時學習 where and what的思想就是attention的核心

在序列到序列的模型中(sequence2sequence):

Attention機制是連接編碼層和解碼層的一個通道。由于我們在編碼(encoder)過程中保留每個RNN單元的隱藏狀態(tài)(hidden state)得到(h1……h(huán)N)。而后對于解碼(decoder)過程中每一個timestep,因為有此時decoder的輸入和上一步隱藏狀態(tài)的輸出,計算得到當前步的隱藏狀態(tài)。假設第t步的隱藏狀態(tài)為St(當前輸入和上一步隱藏狀態(tài))。

在每個第t步利用St和每個編碼過程中的隱藏狀態(tài)hi進行dot點積得到attention score,也稱為相似度或影響得分。即每個編碼過程的隱藏狀態(tài)對當前的輸出St的一個貢獻度。計算公式如下:(此處按照斯坦福大學教材上用st和hi計算,原始論文為st-1)。

之后用softmax將attention-score轉換為概率分布。按照概率分布將隱藏狀態(tài)轉換成加權和。公式如下:

上下文(attention)向量c計算公式

由此得到上下文向量c(或者是注意力向量)。

最后將注意力向量ct和decoder的t時刻的隱藏狀態(tài)St并聯(lián)起來,繼續(xù)之后步驟。

其圖示如下:


原文圖示
原文闡述

Attention的通用定義如下:

給定一組向量集合values,以及查詢向量query,我們根據query向量去計算values加權和,即成為attention機制。

attention的重點即為求這個集合values中每個value的權值。我們也稱attention的機制叫做query的輸出關注了(考慮到了)原文的不同部分。

如seq2seq模型中,St是后面的query向量,而編碼過程的隱藏狀態(tài)hi是values。其就是根據某些規(guī)則(或額外信息query)從向量表達集合values中抽取特定的向量進行加權組合的方法,只要從部分向量里用了加權和,計算使用了attention機制。

如何改進或創(chuàng)新attention機制:

1.在向量加權和上做文章。

2.在匹配度的計算方式上做文章。

針對向量計算方式的變體:

soft / global / dynamic (都是soft attention)

hard

local attention(半軟半硬attention)

靜態(tài)attention

強制前向attention

soft / global / dynamic (都是soft attention)

是求概率分布,就是對于任意一個單詞或者values都給出概率,attention得分經過softmax后權值用aph表示,把attention向量用ct表示。

hard attention

一般用在圖像中 只選中一個區(qū)域,只選1個,其余為0。

local attention(半軟半硬attention)

先選中一個區(qū)域,然后在其中的各個小部分生成概率分布。

論文:Effective Approaches to Attention-based Neural Machine Translation

在這個模型中,對于是時刻t的每一個目標詞匯,模型首先產生一個對齊的位置 pt(aligned position),context vector 由編碼器中一個集合的隱藏層狀態(tài)計算得到,編碼器中的隱藏層包含在窗口[pt-D,pt+D]中,D的大小通過經驗選擇。

上式之中,大S指的是源句子的長度,Wp和vp是指的模型的參數,通過訓練得到,為了支持pt附近的對齊點,設置一個圍繞pt的高斯分布,其中小s是在以pt為中心的窗口中的整數,pt是一個在[0,S]之間的實數。小Sigma σ 一般取窗口大小的一半。

靜態(tài)attention

對輸出句子共用一個St。一般在BiLstm首位hidden state輸出拼接起來作為St(圖中為u)。

針對attention-score計算的變體:

三種計算score的方法公式

第一個,s和hi的維數要一樣。

第二個W矩陣是訓練得到的參數,維度是d2 x d1,d2是s的hidden state輸出維數,d1是hi的hidden state維數,也就是兩者可以不同維度。

最后就是上面提到的additive attention,是對兩種hidden state 分別再訓練矩陣然后激活過后再乘以一個參數向量變成一個得分。

其中,W1 = d3xd1,W2 = d3xd2,v = d3x1 ,d1,d2,d3分別為h,s,v的維數,屬于超參數。

Self- attention

在沒有額外信息下,仍然可以允許向量values使用self attention來處理自己,從句子中提取需要關注的信息。

  1. 以當前的隱藏狀態(tài)去計算和前面的隱藏狀態(tài)的得分,作為當前隱藏單元的attention score,例如
第一種計算方法

2.以當前狀態(tài)本身去計算得分作為當前單元attention score,這種方式更常見,也更簡單,例如:

第二種計算方法

key-values attention

即將hi 隱藏狀態(tài)拆分成兩部分一部分是key(i) 一部分是values(i)然后只針對key部分計算attention的權值,然后加權使用values部分的值進行加權求和。

key-values計算公式

Multi-head attention:

首先,google先定義了一下attention的計算,也是定義出key,value,query三個元素(在seq2seq里面,query是st,key和value都是hi)在self 里面,query 是當前要計算的hi,k和v仍然一樣,是其他單元的hidden state。在key value attention里面key和value則是分開了的。

然后除以了一下根號dk,為了讓內積不至于太大(太大的話softmax后就非0即1了,不夠“soft”了)

這里我們不妨假設,Q是

維,K是image.png維,v是
維,忽略歸一化和softmax的話就是三個矩陣相乘,得到的是ndv的矩陣。我們可以說,通過這么一個attention層,就將一個

的序列****Q****,提取信息編碼成

的序列了。
*

Wi用來先在算attention對三個矩陣做不同的矩陣變換映射一下,變成nxdk’,mxdk’,mxdv’維度。

最后做并聯(lián),有點類似于inception 里面多個卷積核的feature map并聯(lián)的感覺。附:多核卷積示意圖。

多核卷積示意圖

部分內容參考CSDN:https://blog.csdn.net/hahajinbu/article/details/81940355

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容