注意力機(jī)制

1. 前言

神經(jīng)網(wǎng)絡(luò)在進(jìn)行特征提取的時候货邓,會將所有的輸入進(jìn)行處理举瑰,提取得到的特征并沒有進(jìn)行特別的處理劳曹。那么,如果神經(jīng)網(wǎng)絡(luò)能夠像人一樣琅摩,并不是“觀察”到所有的特征铁孵,而是只“注意”到那些真正關(guān)心的特征呢?

2. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

雖然注意力機(jī)制常常用于語音處理房资,也就是RNN蜕劝,但是在圖像處理上,也有非常有趣的應(yīng)用轰异。例如這篇論文岖沛,使用神經(jīng)網(wǎng)絡(luò)對圖片進(jìn)行描述。這篇論文兩年前就讀過搭独,但是當(dāng)時也是瞎學(xué)一通婴削,今天,抽出時間再次拜讀一下牙肝。

論文的主要貢獻(xiàn):

  • 作者介紹了兩種注意力唉俗,一種是soft,它可以使用BP算法求解配椭,一種是hard
  • 作者介紹了將注意力可視化的方法
  • 作者對結(jié)果進(jìn)行了量化驗證

2.1 模型介紹

作者采用了常見的sequence to sequence形式互躬,就是通過一個encoder將圖片轉(zhuǎn)換為了一個特征向量,再通過decoder將這個向量轉(zhuǎn)換為一串輸出颂郎。

Encoder:作者使用了傳統(tǒng)的CNN作為encoder,通過CNN對一個圖片進(jìn)行了特征提取容为。作者將特征稱為annotation向量乓序。不同的是,作者沒有從最后一層fc層中提出特征坎背,而是從中間的卷積層提取特征替劈,因此得到的特征是一個矩陣,而不是一個向量得滤。如下圖 L個向量陨献,向量維度是D

annotation

其中每一個特征向量對應(yīng)圖片的一個部分懂更。

Decoder:作者在decoder的選擇上也非常簡單眨业,就是LSTM。LSTM就是一個加強(qiáng)版的RNN cell沮协。它通過設(shè)計門結(jié)構(gòu)龄捡,使得cell擁有長時記憶。如下:

LSTM

公式如下:
LSTM

注意慷暂,每個時刻LSTM cell的輸入是:上個時刻的狀態(tài)
h_{t-1}
聘殖,上個時刻的輸出
y_{t-1}
,上下文向量
z_t
。狀態(tài)奸腺,輸出都好理解餐禁,那么這個
z_t
是什么呢?作者通過對
z_t
的設(shè)計突照,使得它能夠包含圖片的信息帮非,我們可以將它理解為cell的輸入,但是它是通過圖片的特征annotation處理得到的绷旗。
根據(jù)annotation喜鼓,對每一個特征向量計算一個值
\alpha_i
,用它表示當(dāng)前時刻和該部分的相關(guān)性衔肢。當(dāng)將
\alpha_i
表示為圖片部分
i
是當(dāng)前時刻關(guān)心的部分的概率時庄岖,就是hard 注意力,當(dāng)
\alpha_i
表示圖片部分
i
角骤,在當(dāng)前時刻的相對其他圖片部分的重要程度時隅忿,就是 soft注意力。
公式如下:
通過注意力模型
f_{att}
計算一個輸出邦尊,該輸出通過softmax得到概率
e_{ti} = f_{att}(\alpha_i, h_{t-1})

\alpha_{ti} = \frac{exp(e_{ti})}{\sum^L_{k=1}exp(e_{tk})}

f_{att}作者選擇的是一個多層fc背桐,它的輸入是上一時刻的狀態(tài),和annotation蝉揍。

一旦得到了權(quán)重\alpha_{ti}就可以通過\phi計算上下文向量\hat{z}_t链峭。這里就會有上面提到的hard, soft的區(qū)分。

2.2 Stochatic "hard" Attention

作者使用s_t表示在產(chǎn)生第t個詞的時候應(yīng)該注意的地方又沾,s_{ti}是一個向量弊仪,它的第i個值為1,其余為0杖刷,表示在t時刻應(yīng)該注意i位置励饵。
那么,由于\alpha_{ti}表示概率滑燃,就有如下公式:

hard attention

也就是說役听,在
t
時刻,只關(guān)注應(yīng)該關(guān)注的地方表窘。
為了進(jìn)行反向傳播典予,作者定義了損失函數(shù):
L_s = \sum_s p(s|\alpha) log p(y | s, \alpha)
其中
y
是輸出的單詞。
它的梯度:
梯度

進(jìn)一步
梯度

我理解就是蚊丐,由于位置的選擇是根據(jù)概率來決定的熙参,就像給定
n
個選擇的概率,進(jìn)行抽樣一樣麦备。這可以看作一個Monte Carlo抽樣孽椰,只不過是對梯度進(jìn)行抽樣昭娩。同時,為了減少抽樣的不穩(wěn)定性黍匾,也就是方差栏渺,作者加入了baseline
作者提出锐涯,這個公式類似于REINFORCE磕诊。只不過,action的選擇
s
纹腌,reward是正比于輸出的句子的log likelihood的一個值霎终。

2.3 Deterministic "Soft" Attention

soft情況下,\alpha_{ti}被看作相對重要性升薯。那么上下文向量可以由annotation的加權(quán)和得到:

soft

在文章中還有關(guān)于 輸出單詞莱褒,注意多個地方等的討論,具體請參考涎劈。

3. Neural Machine Translation by Jointly Learning to Align and Translate

這篇貌似是最早引入注意力機(jī)制的文章广凸,它在機(jī)器翻譯中引入了注意力。同樣蛛枚,作者是使用sequence to sequence框架進(jìn)行訓(xùn)練谅海。

3.1 模型

Decoder:作者定義新的條件概率:

條件概率

也就是說,當(dāng)網(wǎng)絡(luò)預(yù)測新的詞的時候蹦浦,是根據(jù)上一個預(yù)測的詞
y_{i-1}
扭吁,RNN hidden state
s_{i-1}
和上下文向量context vector
c_i
,來進(jìn)行的盲镶。
很顯然智末,關(guān)鍵就在于如何計算這個上下文向量,以及如何使用它來進(jìn)行預(yù)測徒河。
上下文向量由輸入的句子決定,在整個模型中送漠,會有一個encoder來將輸入的句子映射成多個向量顽照,作者稱為annotations
(h_1, ..., h_{T_x})
。每一個annotation向量
h_i
都包含了
i
之前的所有詞的信息闽寡。
于是代兵,上下文向量就由它們的加權(quán)和得到:
context

它們的權(quán)重
\alpha{ij}
怎么計算呢?如下面公式:
weight

其中,
a
就是alignment model爷狈,由它來決定在預(yù)測第
i
個詞時植影,和前面的
j
個輸入的關(guān)系。作者將
e
稱為energy涎永。它反應(yīng)了annotation
h_j
在預(yù)測
i
的時候的重要性思币。作者使用了一個神經(jīng)網(wǎng)絡(luò)作為aligment model鹿响,它可以和其他部分一起訓(xùn)練。如下:
alignment model

Encoder
作者使用了一個雙向的RNN作為encoder谷饿,雙向的RNN類似于普通的RNN惶我,但是它又進(jìn)一步提取了輸入反向輸入時的特征,具體可以參考論文博投。

4. Attention Is All You Need(TODO)

在這篇論文中绸贡,作者提出了一種新的網(wǎng)絡(luò)結(jié)構(gòu),稱之為Transformer毅哗,里面僅僅使用了注意力機(jī)制听怕,拋棄了之前的RNN,CNN等結(jié)構(gòu)虑绵。
作者認(rèn)為尿瞭,在傳統(tǒng)的RNN結(jié)構(gòu)中,在計算過程中需要cell的hidden state h_t蒸殿。因此筷厘,在每個時刻t,都需要之前的結(jié)果宏所,這使得訓(xùn)練無法并行化酥艳,因此,在訓(xùn)練長的句子的時候爬骤,就無法使用大的batch來訓(xùn)練充石,因為GPU的顯存有限。
在論文中霞玄,作者提出了Transformer骤铃,避開了RNN,將input和output僅僅通過注意力機(jī)制連接起來坷剧。并且惰爬,Transformer允許更多的并行處理。

4.1 模型結(jié)構(gòu)

如下圖:


結(jié)構(gòu)

結(jié)構(gòu)依然采用了encoder-decoder的架構(gòu)惫企。
** Encoder:整個encoder由6個相同的層堆疊成撕瞧,每一層有兩個子層,第一個子層是multi-head self-attention mechanism狞尔,第二個子層是一個簡單的position-wise fc層丛版。作者在每個子層間加入了layer normalizationresidual connection。也就是說偏序,每個子層的輸出是:LayerNorm(x + Sublayer(x))页畦。

** Decoder:decoder同樣由6個相同的層堆疊成。除了像encoder中的兩個子層研儒,decoder還加入了第三個子層豫缨,它對encoder的輸出進(jìn)行multi-head attention**独令。

4.2 注意力

注意力機(jī)制可以描述為將一組query 和 一組輸入 映射為一組輸出,通常情況下這個輸出由輸入的加權(quán)得到州胳,權(quán)重由query 和 輸入來決定记焊。

Scale Dot-Product Attention:如下圖:

Scale Dot-Product Attention

輸入由 queries
d_k
維的keys栓撞,
d_v
維的values組成遍膜。那么Attention可以由下式得到:
Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}})V

權(quán)重由
softmax(\frac{QK^T}{\sqrt{d_k}})
得到,

Multi-Head Attention:作者發(fā)現(xiàn)將queries, keys, values映射h次瓤湘,到一個不同的瓢颅,學(xué)習(xí)得到的映射結(jié)果d_k, d_k, d_v會更加有利。在這些映射后的結(jié)果上弛说,再使用注意力機(jī)制挽懦,得到d_v維的輸出。最后再進(jìn)行拼接木人,和一次映射信柿,得到最后的輸出結(jié)果。簡單地說醒第,就是將queries, keys, values通過線性變換到一個新的維度渔嚷,再進(jìn)行Scalesd Dot-Product Attention,結(jié)果拼接起來作為輸出稠曼。當(dāng)然這個結(jié)果還有一次映射形病。

Multi-Head Attention

公式如下:


公式

4.3 如何在模型中應(yīng)用注意力機(jī)制

論文提出的模型中,有三個不同的方式來應(yīng)用注意力機(jī)制霞幅。

  • queries來自于前一個decoder層漠吻,keys, values來自于encoder的輸出。這樣的話司恳,允許decoder關(guān)注到輸入的所有位置(之前的)途乃。
  • 在encoder中,包含一個self-attention層扔傅。在這個層中欺劳,keys, values, queries都來自于同一個地方,例如:上一個encoder層的輸出铅鲤。這樣的話,每一次encoder都可以注意到之前所有encoder的輸出枫弟。
  • 類似地邢享,可以在decoder中加入一個self-attention層,來觀察到之前所有層的輸出淡诗。但是骇塘,我們需要防止前面層的信息淹沒了decoder當(dāng)前的信息伊履,we need to prevent leftward information flow in the decoder to preserver the auto-regressive property,作者通過使用mask款违,去掉了所有不合理的連接唐瀑。

4.4 Positional Encoding

為了在輸入中保留位置信息,作者加入了位置編碼插爹。如下:

positional encoding

其中
pos
是位置特姐,
i
是緯度膘格。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子郁油,更是在濱河造成了極大的恐慌,老刑警劉巖类茂,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗疮,死亡現(xiàn)場離奇詭異,居然都是意外死亡寸宵,警方通過查閱死者的電腦和手機(jī)崖面,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梯影,“玉大人巫员,你說我怎么就攤上這事」夂ǎ” “怎么了疏遏?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長救军。 經(jīng)常有香客問我财异,道長,這世上最難降的妖魔是什么唱遭? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任戳寸,我火速辦了婚禮,結(jié)果婚禮上拷泽,老公的妹妹穿的比我還像新娘疫鹊。我一直安慰自己,他們只是感情好司致,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布拆吆。 她就那樣靜靜地躺著,像睡著了一般脂矫。 火紅的嫁衣襯著肌膚如雪枣耀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天庭再,我揣著相機(jī)與錄音捞奕,去河邊找鬼牺堰。 笑死,一個胖子當(dāng)著我的面吹牛颅围,可吹牛的內(nèi)容都是我干的伟葫。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼院促,長吁一口氣:“原來是場噩夢啊……” “哼筏养!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起一疯,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤撼玄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后墩邀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掌猛,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年眉睹,在試婚紗的時候發(fā)現(xiàn)自己被綠了荔茬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡竹海,死狀恐怖慕蔚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情斋配,我是刑警寧澤孔飒,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站艰争,受9級特大地震影響坏瞄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜甩卓,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一鸠匀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逾柿,春花似錦缀棍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弱匪,卻和暖如春青瀑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工狱窘, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人财搁。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓蘸炸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尖奔。 傳聞我的和親對象是個殘疾皇子搭儒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容