中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

詳解深度學習中“注意力機制(zhi)”

前言

本文翻譯自

最近(jin)幾(ji)年,注意力——在深度學習社(she)區中,已然成為(wei)最廣為(wei)流行(xing)的(de)概念和(he)實用工具。在這篇博客里,我們將一起回顧它(ta)是如何(he)被“發(fa)明”出來的(de),以及引申出來的(de)各種變種和(he)模型,如 transformer和(he)SNAIL。

目錄

  • Seq2Seq問題所在
  • 為”翻譯“而生
    • 定義
  • 注意力機制”家族“
    • 概要
    • 自注意力機制(Self-Attention)
    • 柔性 vs 剛性注意力
    • 全局 vs 局部注意力
  • 指針網絡(Pointer Network)
  • Transformer
    • key, Value, Query
    • Multi-Head 自注意力
    • 編碼器
    • 解碼器
    • 整體結構
  • SNAIL
  • 自注意力 GAG
  • 文獻

注(zhu)意力(li),在某(mou)種(zhong)程(cheng)度(du)上,受(shou)啟發于我們是如何關(guan)注(zhu)圖片(pian)中的(de)某(mou)些(xie)(xie)區域(yu),或者句子中的(de)某(mou)些(xie)(xie)相關(guan)詞(ci)。舉個栗子:

視覺任務中注意力轉移

人類(lei)的(de)視覺注(zhu)意力,使得我們能夠在(zai)圖(tu)片(pian)的(de)“低解析(xi)度(du)”背景(jing)下(xia),更加關注(zhu)具有“高解析(xi)度(du)或辨(bian)識度(du)”(High resolution)的(de)特定區域(如(ru)黃(huang)色(se)區域中(zhong)(zhong)狗的(de)耳朵),然(ran)后(hou)逐漸調整焦點,移動到(dao)(dao)(dao)另(ling)一(yi)(yi)個(ge)耳朵、眼睛(jing)、鼻(bi)子(zi)(zi)等,最后(hou)進行推斷整張圖(tu)片(pian)的(de)信息。給(gei)定圖(tu)片(pian)中(zhong)(zhong)的(de)一(yi)(yi)小塊補丁區域,圖(tu)片(pian)中(zhong)(zhong)其余的(de)像素點也可以提供(gong)這塊補丁應該展示什么的(de)信息。在(zai)上圖(tu)中(zhong)(zhong),假設我們先看(kan)到(dao)(dao)(dao)了狗的(de)鼻(bi)子(zi)(zi)、尖(jian)(jian)尖(jian)(jian)的(de)右耳和Shiba迷離的(de)眼睛(jing),因此我們就會理所當然(ran)的(de)期望在(zai)黃(huang)色(se)區域看(kan)到(dao)(dao)(dao)另(ling)一(yi)(yi)只尖(jian)(jian)尖(jian)(jian)的(de)耳朵。但是像毯子(zi)(zi)和毛(mao)衣(yi)的(de)信息對于解析(xi)狗的(de)特征信息幾乎沒(mei)有什么幫助。

同(tong)樣(yang)地,我們可以(yi)解釋一句(ju)話或(huo)者上下文中詞與詞之間的(de)關(guan)系。當看到“eating”這個詞時(shi),我們會期(qi)望在(zai)后面不遠的(de)位置看到“食物“描述的(de)詞。下圖(tu)中有色詞表(biao)示食物,但并不是每個詞都與”eating“直接(jie)強相關(guan)。

自然語言中語義attention

簡而言之,在深度(du)學習中(zhong),注意(yi)力可以廣泛(fan)的(de)(de)借助重要性權(quan)重向(xiang)量(liang)來實現:在預測(ce)或推斷一(yi)個元素(su)(su)時,如圖片中(zhong)的(de)(de)像(xiang)素(su)(su)點(dian)或句中(zhong)的(de)(de)一(yi)個詞,我們(men)使(shi)用注意(yi)力向(xiang)量(liang)來判(pan)斷,它與其他元素(su)(su)有多強的(de)(de)關聯性,然后對加(jia)權(quan)后的(de)(de)向(xiang)量(liang)求(qiu)和(he)以逼近最(zui)后的(de)(de)目標值(zhi)(target)。

Seq2Seq問題所在

Seq2Seq模型誕生于語言模型領域(Sutskever, et al. 2014)——廣泛的講,它是(shi)將一(yi)個(ge)輸入(ru)序(xu)列(lie)(source)轉化為另(ling)一(yi)個(ge)序(xu)列(lie)(target),兩個(ge)序(xu)列(lie)都可以(yi)是(shi)不定長的。轉化任(ren)務的場(chang)景(jing)包括(kuo)多(duo)語言機器翻譯(yi)(文本或語音)、問答對話對話生成系統、甚至(zhi)是(shi)句子解(jie)析為語法樹。

Seq2Seq模型一般都會包含編碼(ma)-解(jie)碼(ma)結構,包括:

  • 編碼器——處理序列輸入并壓縮信息到一個固定長度的上下文向量中(sentence embedding 或者 “thought” vector)。上下文向量被當做是輸入序列的語義概要。
  • 解碼器——由上下文向量初始化,并每次產生一個轉碼輸出。早期的研究僅使用編碼網絡的最后一個狀態作為下次解碼的初始狀態。

編碼器和(he)解碼器都是循(xun)環神經網(wang)絡結構(gou),如(ru)LSTM或者GRU單元(yuan)

seq2seq模型

固定長度(du)上下文向量具(ju)有(you)一個明顯的致命缺(que)點——無(wu)法記憶長句子。一旦完成編碼(ma)器輸入序列(lie)的處理(li),就會遺忘(wang)開始的部分。因此注意(yi)力機制(Bahdanau et al., 2015)被提(ti)出,解決這個問題。

為”翻譯“而生

注意力機制(zhi)”生(sheng)來“就是為機器翻譯任務幫助記憶長序列的(de)(de)(de)(de)句子(zi)輸(shu)入。相對于原始借助編碼器的(de)(de)(de)(de)最后(hou)一(yi)個隱藏(zang)單元(yuan)的(de)(de)(de)(de)輸(shu)出構建單一(yi)上下(xia)文(wen)向(xiang)量(liang),注意力機制(zhi)的(de)(de)(de)(de)獨家”秘方“在于,其考慮了(le)上下(xia)文(wen)向(xiang)量(liang)和所(suo)有序列輸(shu)入的(de)(de)(de)(de)信息,構建了(le)”連接(jie)“。每一(yi)個輸(shu)出元(yuan)素下(xia)的(de)(de)(de)(de)連接(jie)的(de)(de)(de)(de)權重都(dou)是自動學習的(de)(de)(de)(de)。

上下(xia)文向(xiang)(xiang)量已經(jing)考慮了整(zheng)體輸(shu)入序列信息,我們不需要擔心遺(yi)忘的問(wen)題。源輸(shu)入和目標輸(shu)出的語義對齊問(wen)題由(you)上下(xia)文向(xiang)(xiang)量學習(xi)和控制。實際(ji)上上下(xia)文向(xiang)(xiang)量處理三方面的信息:

  • 編碼器的隱藏狀態
  • 解碼器的隱藏狀態
  • 源輸入和目標輸出的對齊

神經網絡翻譯模型注意力機制

定義

接下來我們以理論的角度定義注意力機制。我們用X表示長度為n的源輸入序列,用Y**表示長度為m*的目(mu)標輸出序(xu)列:

源輸入和目標輸出

(加粗的變量表示向量,下同)
編碼器(qi)是一個雙向RNN結(jie)構(gou)(也可(ke)(ke)選其他RNN結(jie)構(gou))——包括前向和后向隱藏層狀態。簡(jian)單的(de)(de)維度拼(pin)接可(ke)(ke)以(yi)表示當下編碼狀態,可(ke)(ke)以(yi)理解(jie)為同時考慮了中(zhong)心詞的(de)(de)上、下文信息:

雙向RNN隱藏狀態表示

解碼網絡在t時刻有隱藏狀態St——包(bao)括上一個序列隱藏狀態,上一輸出和(he)上下文(wen)向(xiang)量(所有(you)輸入序列的(de)加權求和(he)),權重(zhong)如下:

Attention計算

對齊模型會針對第i個輸入序列和第t個(ge)輸出序列,分配一個(ge)對齊得分,以評判(yt,xi)的(de)(de)(de)(de)對齊效(xiao)果。在Bahdanau的(de)(de)(de)(de)文章中,對齊得分向(xiang)量是由單個(ge)隱藏(zang)層的(de)(de)(de)(de)前向(xiang)網絡來組織的(de)(de)(de)(de),并和(he)整體網絡的(de)(de)(de)(de)其他部分進行聯合(he)訓練(lian)。score計算函數方式輸入下:

score計算

對(dui)齊得分矩陣是一個很好的(de)副產物,并可(ke)以(yi)可(ke)視化的(de)表示輸(shu)入序列(lie)(lie)和輸(shu)出序列(lie)(lie)的(de)關聯(lian)程度(du)。

翻譯模型Attention可視化

這里(li)有(you)一個Tensorflow團隊提供的(de)一個實現方法的(de)。

注意力機制”家族“

由于注意力(li)的幫助(zhu),源輸(shu)入和目標輸(shu)出(chu)序列(lie)之間的依賴不(bu)(bu)再受限于距離問題(ti)。這在機器翻譯任(ren)務中(zhong),收益(yi)頗大(da)。不(bu)(bu)久被很好的拓展到(dao)計(ji)算(suan)機視覺領(ling)域(Xu et al. 2015),人們開始探(tan)索注意力(li)機制的各種變種(Luong, et al., 2015; Britz et al., 2017; Vaswani, et al., 2017)。

概要

下表是幾種主流的注意力機制(或更寬泛的注意力機制)
Attention機制概覽

  • (*)在Luong, et al., 2015表示”concat“,在Vaswani, et al.表示”累積注意力(additive attention)“
  • (^) 添加了尺度因子1/sqrt(n)——當輸入很大時,softmax函數可能具有極小的梯度,導致難以高效的更新學習
  • (&) 指“intra-attention”

自注意力

自注意力,又稱”intra-attention“,是一種在(zai)計算同一序列表示時(shi),權(quan)重和序列的位置(zhi)相關機(ji)(ji)制,被(bei)證(zheng)明在(zai)機(ji)(ji)器閱(yue)讀理解,抽象概要(abstractive summarization)和圖片描述生成(cheng)中非常(chang)有效。

這篇[long short-term memory network]論文使用(yong)了(le)自注意力(li)機制(zhi)做機器閱讀。如下(xia)圖,自注意力(li)機制(zhi)能夠(gou)學習到當(dang)前詞和句(ju)中先前詞之前的關聯(lian)性(xing)。

自注意力機制可視化

在(zai)[show, attend and tell]這篇(pian)文章中,自注意(yi)(yi)力機制被(bei)(bei)應用在(zai)圖(tu)片生(sheng)成描(miao)述任(ren)務中。圖(tu)片首先被(bei)(bei)CNN編碼(ma),然后輸入到帶有自注意(yi)(yi)力機制的(de)RNN網絡中,來學習(xi)圖(tu)片各個(ge)特征與描(miao)述中每個(ge)詞之前的(de)映(ying)射關系。注意(yi)(yi)力權重的(de)可視化清晰地的(de)展示了(le)模型每關注一部(bu)分特征都會(hui)輸出一個(ge)詞。

視覺任務中自注意力機制

柔性 vs 剛性注意力

”柔性(xing)“ vs ”剛性(xing)“是如何(he)定義注意力的(de)另一種方式,原始思想最初在(zai)[show, attend and tell]文(wen)章中提出——基(ji)于注意力是否(fou)需要處整(zheng)篇圖片還是僅僅局部一小塊:

  • 柔性注意力:對齊權重通過源圖片所有的”patch“進行學習映射,和Bahdanau et al., 2015想法一致
    • Pro: 模型是平滑且可導的
    • Con: 當輸入圖片很大時,訓練代價很高
  • 剛性注意力:每次僅選取圖片中一個”patch“
    • Pro: 在inference階段計算量更小
    • Con: 模型是不可導的,需要更復雜的技術手段——如降低方差(variance reduction)或者強化學習去訓練(Luong, et al., 2015)

全局 vs 局部注意力

Luong, et al., 2015提出了”全局(ju)“和(he)(he)”局(ju)部“注意力(li)的概念(nian)。全局(ju)注意力(li)和(he)(he)柔(rou)性(xing)注意力(li)很(hen)相似;局(ju)部注意力(li)是”柔(rou)性(xing)“和(he)(he)”剛性(xing)“的糅合——相對于剛性(xing),改(gai)進使其可導:模型首先預測當前目標詞的粗略(lve)對齊位置,然(ran)后在這個源輸入的位置上應用一(yi)個中(zhong)心窗口框住,計算上下文向量。

全局和局部Attention

指針網絡(Pointer Network)

在排序(xu)或(huo)者旅行推銷員問題(ti)上(shang),輸(shu)(shu)入和輸(shu)(shu)入都是序(xu)列數據(ju)。輸(shu)(shu)出元素的(de)離(li)散(san)類別(bie)總(zong)數事先是未知的(de),取決于輸(shu)(shu)入變量的(de)尺度。這很難通過經典的(de)Seq2Seqm或(huo)者NMT模型來(lai)(lai)解決。指針網(wang)絡(luo)(Ptr-Net; Vinyals, et al. 2015)被提出來(lai)(lai)解決此類問題(ti):當輸(shu)(shu)出元素和輸(shu)(shu)入序(xu)列的(de)位(wei)置(zhi)相(xiang)關時,指針網(wang)絡(luo)并非是借(jie)助注意(yi)力(li)來(lai)(lai)將編(bian)碼器的(de)隱藏(zang)狀態糅(rou)合僅上(shang)下文向(xiang)量(如圖(tu)8),而(er)是將注意(yi)力(li)機制應用在輸(shu)(shu)入元素上(shang),每次選取一個座(zuo)位(wei)解碼步驟(zou)的(de)輸(shu)(shu)出。

指針網絡輸出

Ptr-Net輸出的是序列的整數索引c=(c1, ..., cm),給定輸入序列向量x=(x1, ..., xn)且1<ci<n (可以取等號)。模型仍然沿用了編碼-解碼框架。編碼解碼的隱藏狀態分別為(h1, ..., hn)和(s1, ..., sm)。其中si是解(jie)碼器單元激活的(de)輸(shu)出(chu)門。指針(zhen)網絡(luo)在隱藏狀態間應用了(le)了(le)累積(ji)注意力,人(ren)后通過softmax進行歸一化(hua)。

Ptr-Net網絡結構

注意力(li)機制被簡化了,因(yin)為(wei)指針網絡(luo)并(bing)非是(shi)借助注意力(li)權重將編碼(ma)狀態糅合(he)僅(jin)輸出(chu)。在這里(li),輸出(chu)僅(jin)和位(wei)置相(xiang)關,和輸入(ru)內容無關。

Transformer

[Attention is All you Need]這篇文章,毫無疑問是2017年最有影響力的文章。它表示柔性注意力有了很大的提升,并使無RNN單元的Seq2Seq建模成為了可能,提出的”transformer“模型全部僅由自注意力機制構建。
秘密在于它的網絡架構。

key, Value 和 Query

transformer的主要由稱之為multi-head self-attention mechanism的單元組成——它將輸入元素的編碼表示看做key-value對(k, v),均為n維(n為輸入序列長度);在NMT的上下文中,keys和values都是編碼器的隱藏狀態。在解碼器中,先前步的輸出被壓縮進一個queryQ中(m維),且(qie)下一步(bu)輸出由這個query映(ying)射到keys和values集合來(lai)產生。

transformer采用了scaled dot-product attention:輸出(chu)是有values加(jia)權(quan)求和得(de)到,其中(zhong)分配給每(mei)一(yi)項的(de)權(quan)重由(you)query和所有keys點(dian)積求得(de)。

Transformer中Attention注意力計算方式

multi-head自注意力機制

multi-head自注意力機制

相對于一次性計算注意力,multi-head注意力機制借助尺度化的點積注意力機制進行并行化多次計算。每個獨立的注意力輸出通過簡單拼接并線性的轉換到指定的維度空間。難道因為集成總是有效的?根據文章描述: ”multi-head attention allows the model to jointly attend to information from different representation subspaces at different positions. With a single attention head, averaging inhibits this.”

multi-head 計算方式

編碼器

Transformer中的編碼器結構

編碼器能夠生成一個基于(yu)注意力(li)的(de)(de)表示,具有(you)從(cong)潛(qian)在的(de)(de)無限大上下文(wen)空間中(zhong)定位相關信息片段(duan)的(de)(de)能力(li)。

  • N=6的相同層堆疊
  • 每一層都有一個multi-head self-attention layer和一個位置敏感的全連接前向網絡
  • 每一個子網絡層都采用了殘差連接和網絡層正則化。所有的子層輸出數據都是512維

解碼器

Transformer中解碼器結構

解碼(ma)器能夠(gou)從編碼(ma)器的表(biao)示中抽取分析信息。

  • N=6的相同層堆疊
  • 每一層都有兩個帶有multi-head self-attention layer的子網絡結構和一個全連接前向網絡
  • 和解碼器相似,每一個子網絡層采用了殘差和網絡正則化
  • 第一個multi-head self-attention sub-layer被修改以防止位置信息被傳導到后續位置,正如當我們預測當下位置的信息時,并不想要偷瞥屬于目標序列的未來信息。

整體結構

最后我們整體看一下transformer的網絡結(jie)構:

  • 源輸入和目標輸出序列首先都會經過embedding層得到均為512維度的數據
  • 為了保留位置信息,一個基于正弦波的位置編碼器被整合應用到embedding層
  • softmax和線性層被添加到最后的解碼輸出中

Transformer整體結構

嘗試去實現Transformer網絡是很(hen)有趣的(de)事(shi)情(qing),這(zhe)個是原(yuan)博主(zhu)實現的(de)代(dai)碼:

SNAIL

transformer模型中沒(mei)有RNN或者CNN結構,即使在embedding向量中引入了位(wei)置(zhi)相(xiang)關的(de)編碼,也是一(yi)種序列順序的(de)弱整合。對于位(wei)置(zhi)敏感的(de)任(ren)務如增強學習,這(zhe)是一(yi)個(ge)問題(ti)。

Simple Neural Attention Meta-Learner(SNAIL)被提出(chu)部(bu)分(fen)解(jie)決了這個問題(ti)——借助帶有temporal的Transformer自注意(yi)力機(ji)制。實驗表明這種網絡在監督學習和強化學習任務(wu)中都比較(jiao)擅(shan)長。

Simple Neural Attention Meta-Learner(SNAIL)網絡結構

SNAIL 誕生于元學習(meta-learning)——很值得另開一個博客單獨介紹它。簡單地說,he meta-learning model is expected to be generalizable to novel, unseen tasks in the similar distribution
詳細的內容可以參考

自注意力GAN

最后我想提一下最近流行的對抗生成(cheng)(cheng)網絡,以及自注意力GAN(SAGAN; Zhang et al., 2018),并(bing)展示注意力機制(zhi)是如何提高生成(cheng)(cheng)圖片的質量的。

經典的深度卷(juan)積對抗生成(cheng)網絡(luo)(DCGAN)均用多層CNN網絡(luo)表(biao)示生成(cheng)器和判(pan)別器。但是網絡(luo)表(biao)示能力受限(xian)(xian)于卷(juan)積核大小(xiao),因為一個(ge)像素的特征被(bei)限(xian)(xian)制(zhi)在很小(xiao)的局部區域(yu)里。為了連(lian)接更(geng)遠(yuan)的區域(yu),特征必須通過卷(juan)積操作被(bei)稀釋,并(bing)且依賴性(xing)信息(xi)不保征被(bei)保留。

在視覺任務里,柔性注意力(li)機(ji)制下(xia)的(de)上下(xia)文向量可以明(ming)確的(de)學(xue)習一(yi)個像素和其他(ta)位(wei)置之(zhi)間(jian)的(de)關系,即使相隔較遠的(de)區域,這可以很容(rong)易的(de)捕捉(zhuo)全(quan)局依(yi)賴性。因此帶有注意力(li)機(ji)制的(de)GAN也同(tong)樣(yang)能夠捕捉(zhuo)這種細節。

卷積操作和自注意力機制

SAGAN采用了非局部神經網絡來計算注意力權重。卷積的圖片特征可以將x映射成三份copy,分別與Transformer中的key,value和query相對應(ying)。

之(zhi)后我(wo)們采用(yong)點擊(ji)計算最后特征(zheng)輸(shu)出的注(zhu)意力權重:

其中αij是注意力映射中的一個實例,表明當模型合成第j位置像素時應該分配給i位置多大權重。W均為1×1的卷積核。如果你覺得1×1的卷積核很詭異,可以瀏覽一下Andrew Ng的這篇。輸出oj是最終輸出o=(o1, ..., oj, ..., oN)的列向量。

然后,注意力層的(de)(de)輸(shu)(shu)出乘上尺度參數,累(lei)加原始(shi)的(de)(de)輸(shu)(shu)入特征(zheng)映射:

其中尺度參數γ在訓(xun)練過程中從0開始增(zeng)加(jia),網絡首先比較(jiao)依賴局部區(qu)域(yu),然(ran)后漸(jian)漸(jian)的(de)通過分配權(quan)重給較(jiao)遠的(de)區(qu)域(yu)去更新學習。


*如(ru)果(guo)你注意到(dao)本博客中(zhong)的一些(xie)錯誤(wu)地方,請(qing)及時聯系liujiezhangbupt@gmail.com。

文獻

  • [1] “Attention and Memory in Deep Learning and NLP.” - Jan 3, 2016 by Denny Britz
  • [2] “Neural Machine Translation (seq2seq) Tutorial”
  • [3] Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. “Neural machine translation by + jointly learning to align and translate.” ICLR 2015.
  • [4] Kelvin Xu, Jimmy Ba, Ryan Kiros, Kyunghyun Cho, Aaron Courville, Ruslan Salakhudinov, Rich Zemel, and Yoshua Bengio. “Show, attend and tell: Neural image caption generation with visual attention.” ICML, 2015.
  • [5] Ilya Sutskever, Oriol Vinyals, and Quoc V. Le. “Sequence to sequence learning with neural networks.” NIPS 2014.
  • [6] Thang Luong, Hieu Pham, Christopher D. Manning. “Effective Approaches to Attention-based Neural Machine Translation.” EMNLP 2015.
  • [7] Denny Britz, Anna Goldie, Thang Luong, and Quoc Le. “Massive exploration of neural machine translation architectures.” ACL 2017.
  • [8] Ashish Vaswani, et al. “Attention is all you need.” NIPS 2017.
  • [9] Jianpeng Cheng, Li Dong, and Mirella Lapata. “Long short-term memory-networks for machine reading.” EMNLP 2016.
  • [10] Xiaolong Wang, et al. “Non-local Neural Networks.” CVPR 2018
  • [11] Han Zhang, Ian Goodfellow, Dimitris Metaxas, and Augustus Odena. “Self-Attention Generative Adversarial Networks.” arXiv preprint arXiv:1805.08318 (2018).
  • [12] Nikhil Mishra, Mostafa Rohaninejad, Xi Chen, and Pieter Abbeel. “A simple neural attentive meta-learner.” NIPS Workshop on Meta-Learning. 2017.
  • [13] “WaveNet: A Generative Model for Raw Audio” - Sep 8, 2016 by DeepMind.
  • [14] Oriol Vinyals, Meire Fortunato, and Navdeep Jaitly. “Pointer networks.” NIPS 2015.
posted @ 2020-04-21 19:54  Aurelius84  閱讀(6341)  評論(0)    收藏  舉報