注意力機制Attention

2021-01-15 程式設計師觀察

注意力機制(attention mechanism)

Attention實質上是一種分配機制,其核心思想是突出對象的某些重要特徵。根據Attention對象的重要程度,重新分配資源,即權重,實現核心思想是基於原有的數據找到其之間的關聯性,然後突出其某些重要特徵。注意力可以被描述為將一個查詢和一組鍵值對映射到一個輸出,其中查詢、鍵、值和輸出都是向量。輸出以加權和的形式計算的兼容性函數計算賦給每個值的權值。

文章《Attention Is All You Need》我們提出了一種新的簡單網絡結構,完全基於注意力機制,避免重複和全卷積。

傳送門:https://proceedings.neurips.cc/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf

自注意力,也被稱內部注意力,是一個與單個序列的不同位置相關的注意力機制,目的是計算序列的表達形式,因為解碼器的位置不變性,以及在DETR中,每個像素不僅僅包含數值信息,並且每個像素的位置信息也很重要。所有的編碼器在結構上都是相同的,但它們沒有共享參數。

Self-Attention

Self-Attention是Transformer最核心的內容,可以理解位將隊列和一組值與輸入對應,即形成querry,key,value向output的映射,output可以看作是value的加權求和,加權值則是由Self-Attention來得出的。

Self_attention的計算過程如下:

將輸入單詞轉化成嵌入向量;根據嵌入向量得到q,k,v三個向量;為每個向量計算一個score:score=q×v;為了梯度的穩定,Transformer使用了score歸一化,即除以sqrt(dk);對score施以softmax激活函數;softmax點乘Value值v,得到加權的每個輸入向量的評分v;相加之後得到最終的輸出結果z。

用三個指標來評估:

1)每一層的計算複雜度

2)能夠被並行的計算,用需要的最少的順序操作的數量來衡量

3)任何輸入和輸出之間的最長path length。在處理序列信息的任務中很重要的在於學習long-range dependencies。影響學習長距離依賴的關鍵點在於前向/後向信息需要傳播的步長,輸入和輸出序列中路徑越短,那麼就越容易學習long-range dependencies。

同時self-attention的模型可解釋性更好(interpretable).

Transformer

Transformer 模型結構,模型由6個編碼器(Encoder)和6個解碼器(Decoder) 組成,輸入(Inputs)和輸出(Outputs)通過同一個訓練好的詞嵌入層(Word Embedding)將輸入字符轉換為維度為d的向量。

Transformer模型結構

Encoder

Transformer對編碼器(Encoder)與解碼器(Decoder)兩端的序列分別添加位置編碼(Positional Encoding)。之後,編碼經過含有多頭自注意力機制(Multi-head Self-Attention)、位置前向傳播網絡(Position-wise Feed-Forward Network)、殘差連接(Residual Connection)和層歸一化(Layer Normalization)的計算單元。

Encoder有6層,每層包括兩個sub-layers:

第一個sub-layer是multi-head self-attention mechanism,用來計算輸入的self-attention第二個sub-layer是簡單的全連接網絡。

2.2 Decoder

Decoder是6層結構,每層包括3個sub-layers:

第一個是Masked multi-head self-attention,也是計算輸入的self-attention,但是因為是生成過程,因此在時刻 的時候,大於 的時刻都沒有結果,只有小於 的時刻有結果,因此需要做Mask第二個sub-layer是全連接網絡,與Encoder相同第三個sub-layer是對encoder的輸入進行attention計算。

那麼Scaled Dot-Product Attention的示意圖如下所示,Mask是可選的(opt.),如果是能夠獲取到所有時刻的輸入(K, V), 那麼就不使用Mask;如果是不能獲取到,那麼就需要使用Mask。使用了Mask的Transformer模型也被稱為Transformer Decoder,不使用Mask的Transformer模型也被稱為Transformer Encoder。

Scaled Dot-Product Attention示意圖

如果只對Q、K、V做一次這樣的權重操作是不夠的,這裡提出了Multi-Head Attention,操作包括:

首先對Q、K、V做一次線性映射,將輸入維度均為 的 矩陣映射到 , , 然後在採用Scaled Dot-Product Attention計算出結果多次進行上述兩步操作,然後將得到的結果進行合併將合併的結果進行線性變換

因此輸入和輸出的矩陣維度相同。這樣輸出的矩陣,每行的向量都是對向量中每一行的加權,示意圖如下所示

Multi-Head Attention機制示意圖

在圖1的Encoder-Decoder架構中,有三處Multi-head Attention模塊,分別是:

Encoder模塊的Self-Attention,在Encoder中,每層的Self-Attention的輸入 , 都是上一層的輸出。Encoder中的每個position都能夠獲取到前一層的所有位置的輸出。Decoder模塊的Mask Self-Attention,在Decoder中,每個position只能獲取到之前position的信息,因此需要做mask,將其設置為 Encoder-Decoder之間的Attention,其中 來自於之前的Decoder層輸出, 來自於encoder的輸出,這樣decoder的每個位置都能夠獲取到輸入序列的所有位置信息。

Position Embeddin

由於Transformer的計算拋棄了循環結構的遞歸和卷積,無法模擬文本中的詞語位置信息,因而需要人為添加。該過程稱為位置編碼(Positional Encoding),使用詞的位置向量,表示單詞在句中的位置與詞間的相對位置,在Transformer中與句子的嵌入表示相加,獲得模型輸入。

Position Embedding本身是一個絕對位置的信息。這表明位置p+k的向量可以表示成位置p的向量的線性變換,這提供了表達相對位置信息的可能性。position embedding,通常是一個訓練的向量,但是position embedding只是extra features,有該信息會更好,但是沒有性能也不會產生極大下降,因為RNN、CNN本身就能夠捕捉到位置信息,但是在Transformer模型中,Position Embedding是位置信息的唯一來源,因此是該模型的核心成分,並非是輔助性質的特徵。

也可以採用訓練的position embedding,但是試驗結果表明相差不大,因此論文選擇了sin position embedding,因為

這樣可以直接計算embedding而不需要訓練,減少了訓練參數這樣允許模型將position embedding擴展到超過了training set中最長position的position,例如測試集中出現了更大的position,sin position embedding依然可以給出結果,但不存在訓練到的embedding。

測試

在英德翻譯上開發集評估Transformer性能衡量的變化表現。

相關焦點

  • 一文解讀NLP中的注意力機制
    新智元推薦 來源:AI小白入門作者:yuquanle 整理編輯:三石【新智元導讀】注意力機制越發頻繁的出現在文獻中,因此對注意力機制的學習、掌握與應用顯得十分重要。本文便對注意力機製做了較為全面的綜述。
  • nlp領域發生了新的技術突破,用attention機制研究nlp領域
    包括:attention機制,cnn,adaptive attention network(an),兩層cnn相比較,an表現優於一層的cn。lstm,已經有了兩種不同的,看似性能和效率差異不大的attention機制:rnnattention,lstmattention。今天我們將從這兩種attention機制開始研究nlp領域突破性技術!
  • 哈佛大學提出變分注意力:用VAE重建注意力機制
    注意力 (attention) 模型在神經網絡中被廣泛應用,不過注意力機制一般是決定性的而非隨機變量。二、實驗效果與傳統的注意力機制進行對比,傳統的注意力機制僅能通過之前生成的單詞確定當前即將生成單詞的注意力(上圖藍色部分,僅能觀測到已經預測的單詞,由於存在多種翻譯方式,因此會注意到和實際翻譯的單詞並不對應的位置),研究人員通過全部的源文本和目標文本去得到更準確的後驗注意力(上圖紅色部分,通過全部信息得到後驗
  • 谷歌推出基於注意機制的全新翻譯框架,Attention is All You Need!
    Transformer是完全基於注意力機制(attention mechanism)的網絡框架,放棄了RNN和CNN模型。眾所周知,在編碼-解碼框架中,主流的序列傳導模型都是基於RNN或者CNN的,其中能完美連接編碼器和解碼器的是注意力機制。而谷歌提出的這一新框架Transformer,則是完全基於注意力機制的。
  • 自注意力機制(Self-Attention)的基本知識
    這裡我們關注的是基本的Self-Attention機制是如何工作的,這是Transformers模型的第一層。本質上,對於每個輸入向量,Self-Attention產生一個向量,該向量在其鄰近向量上加權求和,其中權重由單詞之間的關係或連通性決定。
  • 一文讀懂自注意力機制:8大步驟圖解+代碼
    新智元報導來源:towardsdatascience作者:Raimi Karim 編輯:肖琴NLP領域最近的快速進展離不開基於Transformer的架構,本文以圖解+代碼的形式,帶領讀者完全理解self-attention機制及其背後的數學原理
  • 將注意力機制引入RNN,解決5大應用領域的序列預測問題
    在這篇博客中,我們將發現可以在循環神經網絡中採用注意力機制(attention mechanism)來克服這種局限性。讀完這篇博客,你會知道:編碼器-解碼器結構和固定長度內部表徵的局限性讓網絡學會針對輸出序列的每一項去注意輸入序列中對應位置的注意力機制帶有注意力機制的循環神經網絡在文本翻譯、語音識別等 5 個領域中的應用。
  • 教程 | 將注意力機制引入RNN,解決5大應用領域的序列預測問題
    在這篇博客中,我們將發現可以在循環神經網絡中採用注意力機制(attention mechanism)來克服這種局限性。圖像描述中的注意力機制與 glimpse 方法不同,基於序列的注意力機制可以應用在計算機視覺問題上,來幫助找出方法,使輸出序列時更好地利用卷積神經網絡來關注輸入的圖片,例如在典型的圖像描述任務中。給定一幅輸入圖像,輸出對該圖像的英文描述。注意力機制用於關注與輸出序列中的每一個詞相關的局部圖像。
  • 【深度學習】視覺注意力機制 | Non-local與SENet、CBAM模塊融合:GCNet、DANet
    點擊上方「AI算法修煉營」,選擇加星標或「置頂」標題以下,全是乾貨前面的話前面的文章中,我們關注了Non-local網絡模塊和視覺注意力機制在分類網絡中的應用——SENet、SKNet、CBAM等。他們構成了視覺注意力機制中的基本模塊,本節中,我們將主要介紹融合Non-local模塊和SENet模塊的全局上下文建模網絡(Global Context Network,簡稱 GCNet),以及Non-local模塊與CBAM模塊融合變形在語義分割中的應用——雙重注意力網絡DANet。
  • 加性注意力機制 - CSDN
    2、軟性注意力機制的數學原理;3、軟性注意力機制、Encoder-Decoder框架與Seq2Seq4、自注意力模型的原理。 一、注意力機制可以解決什麼問題?通過這種機制可以利用有限的注意力資源從大量信息中快速篩選出高價值的信息。 二、軟性注意力機制的數學原理在神經網絡模型處理大量輸入信息的過程中,利用注意力機制,可以做到只選擇一些關鍵的的輸入信息進行處理,來提高神經網絡的效率,比如在機器閱讀理解任務中,給定一篇很長的文章,然後就文章的內容進行提問。
  • 要不試試這個百搭的Attention?
    在這裡,我們將討論巴赫達瑙注意機制(Bahdanau Attention)。下圖描述了注意力機制的內部工作原理。而Keras注意力機制則採用了更模塊化的方法,它在更細的層級上實現注意力機制(即給定解碼器RNN/LSTM/GRU的每個解碼器步驟)。
  • 注意力機制不能提高模型可解釋性?不,你這篇論文搞錯了
    注意力機制在 NLP 系統中起著重要作用,尤其是對於循環神經網絡(RNN)模型。那麼注意力模塊提供的中間表徵能否解釋模型預測的推理過程,進而幫助人們了解模型的決策過程呢?近期,很多研究人員對這個話題產生了濃厚的興趣。一篇題目為《Attention is not Explanation》(Jain and Wallace, 2019) 的論文表示,注意力機制並不能提高模型的可解釋性。
  • 哈希算法、愛因斯坦求和約定,這是2020年的注意力機制
    機器之心報導參與:思、肖清、一鳴在 Transformer 完全採用注意力機制之後,注意力機制有有了哪些改變?哈希算法、Head 之間的信息交流都需要考慮,顯存佔用、表徵能力都不能忽視。注意力機制是非常優美而神奇的機制,在神經網絡「信息過載」的今天,讓 NN 學會只關注特定的部分,無疑會大幅度提升任務的效果與效率。
  • 簡單有效的注意力機制
    本能在認知神經學中,注意力是一種人類不可或缺的複雜認知功能,指人可以在關注一些信息的同時忽略另一些信息的選擇能力。這種能力就叫做注意力。 ------ 摘自《百度百科》想解決什麼問題?深度神經網絡中引入注意力機制,主要想解決時序模型中的上下文問題。
  • GAT 圖注意力網絡 Graph Attention Network
    因此 2018 年圖注意力網絡 GAT (Graph Attention Network) 被提出,解決 GCN 存在的問題。1.GCN 缺點在之前的文章38.圖神經網絡 GNN 之圖卷積網絡 (GCN)介紹了圖卷積神經網絡 GCN,不熟悉的童鞋可以參考一下。
  • 品覽AI論技|論CCNet如何有效減輕Attention機制的計算量
    CCNet的背景注意力最開始是14年應用在MT(機器翻譯)任務中的,並且顯著改善了MT的性能。後來,在多個AI領域得到廣泛應用,包括NLP、CV、語音、統計機器學習等。但我們今天主要講cv領域,對nlp感興趣的同學可以私信後臺,如果呼籲夠強烈,我們將出一期attention在nlp的應用。
  • 學界| 雙重注意力網絡:中科院自動化所提出新的自然場景圖像分割...
    本文提出了一個新的自然場景圖像分割框架,稱為雙重注意力網絡(DANet),引入了一種自注意力機制來分別捕捉空間維度和通道維度上的視覺特徵關聯。在處理複雜多樣的場景時,本文提出的方法比以往的方法更為靈活、有效,在三個具有挑戰性的場景分割數據集(Cityscapes、PASCAL Context 和 COCO Stuff)上取得了當前最佳分割性能。
  • ICLR 2017: 注意力與記憶網絡 | 李嫣然
    具體來講,我們以往的 attention 機制的作用方式是,encoder 端的 input x_1,..., x_n,這個被作者稱為 x,decoder 端已經解碼產生的序列 y_1, ..., y_n,這個被作者稱為 q(query)。那麼,attention 機制就可以看做是一個 attention position 基於 x, q 的分布,如下式:
  • 無需標註數據集,自監督注意力機制就能搞定目標跟蹤
    但是,大量的標註數據往往需要付出巨大的人力成本,越來越多的研究開始關注如何在不獲取數據標籤的條件下提升模型的性能,這其中就包括自監督注意機制。想要了解什麼是自監督注意力機制,我們可能需要先去了解什麼是光流估計(optical flow estimation),以及它為何被人類和計算機視覺系統作為一種目標跟蹤方法。
  • Research: Tea Improves the Attention Span of Those Over 85
    ., older tea drinkers who enjoyed more than five cups a day were shown to have more focus and sustained attention span.