一文讀懂:注意力機制(Attention Mechanism)

注意力機制

第一部分:注意力機制(Attention Mechanism)淺談

1. 注意力機制的由來,解決了什麼問題?

早期在解決機器翻譯這一類序列到序列(Sequence to Sequence)的問題時,通常採用的做法是利用一個編碼器(Encoder)和一個解碼器(Decoder)構建端到端的神經網絡模型,但是基於編碼解碼的神經網絡存在兩個問題,拿機器翻譯舉例:

問題1:

如果翻譯的句子很長很複雜,比如直接一篇文章輸進去,模型的計算量很大,並且模型的準確率下降嚴重。

問題2:

在翻譯時,可能在不同的語境下,同一個詞具有不同的含義,但是網絡對這些詞向量並沒有區分度,沒有考慮詞與詞之間的相關性,導致翻譯效果比較差。

同樣在計算機視覺領域,如果輸入的圖像尺寸很大,做圖像分類或者識別時,模型的性能就會下降。

針對這樣的問題,注意力機制被提出。

2. 什麼是注意力機制?

注意力機制早在上世紀九十年代就有研究,到2014年Volodymyr的《Recurrent Models of Visual Attention》一文中將其應用在視覺領域,後來伴隨着2017年Ashish Vaswani的《Attention is all you need》中Transformer結構的提出,注意力機制在NLP,CV相關問題的網絡設計上被廣泛應用。

“注意力機制”實際上就是想將人的感知方式、注意力的行爲應用在機器上,讓機器學會去感知數據中的重要和不重要的部分。

打個比方:當我們觀察下面這張圖片時,大部分人第一眼應該注意到的是小貓的面部以及吐出的舌頭,然後我們纔會把我們的注意力轉移到圖片的其他部分。

所謂的"注意力機制"也就是當機器在做一些任務,比如要識別下面這張圖片是一個什麼動物時,我們讓機器也存在這樣的一個注意力側重,最重要該關注的地方就是圖片中動物的面部特徵,包括耳朵,眼睛,鼻子,嘴巴,而不用太關注背景的一些信息,核心的目的就在於希望機器能在很多的信息中注意到對當前任務更關鍵的信息,而對於其他的非關鍵信息就不需要太多的注意力側重。

同樣的如果我們在機器翻譯中,我們要讓機器注意到每個詞向量之間的相關性,有側重地進行翻譯,模擬人類理解的過程。

3. 注意力機制如何實現,以及注意力機制的分類

簡單來說就是對於模型的每一個輸入項,可能是圖片中的不同部分,或者是語句中的某個單詞分配一個權重,這個權重的大小就代表了我們希望模型對該部分一個關注程度。這樣一來,通過權重大小來模擬人在處理信息的注意力的側重,有效的提高了模型的性能,並且一定程度上降低了計算量。

深度學習中的注意力機制通常可分爲三類:軟注意(全局注意)、硬注意(局部注意)和自注意(內注意)

1. Soft/Global Attention(軟注意機制):

對每個輸入項的分配的權重爲0-1之間,也就是某些部分關注的多一點,某些部分關注的少一點,因爲對大部分信息都有考慮,但考慮程度不一樣,所以相對來說計算量比較大。

2. Hard/Local Attention(硬注意機制):

對每個輸入項分配的權重非0即1,和軟注意不同,硬注意機制只考慮那部分需要關注,哪部分不關注,也就是直接捨棄掉一些不相關項。優勢在於可以減少一定的時間和計算成本,但有可能丟失掉一些本應該注意的信息。

3. Self/Intra Attention(自注意力機制):

對每個輸入項分配的權重取決於輸入項之間的相互作用,即通過輸入項內部的"表決"來決定應該關注哪些輸入項。和前兩種相比,在處理很長的輸入時,具有並行計算的優勢。

參考資料:

https://arxiv.org/abs/2103.16775

https://arxiv.org/abs/1406.6247

https://arxiv.org/abs/1706.03762

第二部分:自注意力機制(Self-Attention)

1. 自注意力機制概述

自注意力機制實際上是注意力機制中的一種,也是一種網絡的構型,它想要解決的問題是網絡接收的輸入是很多向量,並且向量的大小也是不確定的情況,比如機器翻譯(序列到序列的問題,機器自己決定多少個標籤),詞性標註(Pos tagging一個向量對應一個標籤),語義分析(多個向量對應一個標籤)等文字處理問題。

2. 文字處理中單詞向量編碼的方式

在文字處理中,我們對單詞進行向量編碼通常有兩種方式:

2.1 獨熱編碼(one-hot encoding):

用N位的寄存器對N個狀態編碼,通俗來講就是開一個很長很長的向量,向量的長度和世界上存在的詞語的數量是一樣多的,每一項都表示一個詞語,只要把其中的某一項置1,其他的項都置0,那麼就可以表示一個詞語,但這樣的編碼方式沒有考慮詞語之間的相關性,並且內存佔用也很大.

2.2 詞向量編碼(Word Embedding):

將詞語映射(嵌入)到另一個數值向量空間,可以通過距離來表徵不同詞語之間的相關性。

拿詞性標註舉例,對一個句子來說每一個詞向量對應一個標籤,初始的想法是可以通過全連接神經網絡,但全連接神經網絡沒有考慮在句子不同位置,單詞可能表示不同含義的問題,並且當輸入的句子很長,比如是一篇文章的時候,模型的性能下降嚴重。

3.自注意力機制如何實現

針對全連接神經網絡存在的這個問題,通過自注意力機制來解決,自注意力機制實際上是想讓機器注意到整個輸入中不同部分之間的相關性,它的實現方法如下:

對於每一個輸入向量a,在本例中也就是每一個詞向量,經過self-attention之後都輸出一個向量b,這個向量b是考慮了所有的輸入向量纔得到的,這裏有四個詞向量a對應就會輸出四個向量b。

那麼向量b是如何產生的呢?

步驟1:對於每一個向量a,分別乘上三個係數

得到的 Q,K,V 分別表示 query,key 和 value 。

三個 W 就是我們需要學習的參數

步驟2:利用得到的Q和K計算每兩個輸入向量之間的相關性,也就是計算attention的值α,α的計算方法有多種,通常採用點乘的方式

矩陣A中的每一個值記錄了對應的兩個輸入向量的Attention的大小α

步驟3:對A矩陣進行softmax操作或者relu操作得到A'

步驟4:利用得到的A'和V計算每個輸入向量a對應的self-attention層的輸出向量b:

拿第一個向量a1對應的self-attention輸出向量b1舉例,它的產生過程如下:

先通過三個W矩陣生成q,k,v;然後利用q,k計算attention的值α,再把所有的α經過softmax得到α';最後對所有的v進行加權求和,權重是α',得到a1對應的self-attention輸出的b1

4.自注意力機制的問題

自注意力機制雖然考慮了所有的輸入向量,但沒有考慮到向量的位置信息。在實際的文字處理問題中,可能在不同位置詞語具有不同的性質,比如動詞往往較低頻率出現在句首。

有學者提出可以通過位置編碼(Positional Encoding)來解決這個問題:對每一個輸入向量加上一個位置向量e,位置向量的生成方式有多種,通過e來表示位置信息帶入self-attention層進行計算。

參考資料:Learning to Encode Position for Transformer with Continuous Dynamical Model

https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2003.09229

5.自注意力機制&CNN、RNN

5.1 自注意力機制與CNN:

實際上,在處理圖像問題時,每一個像素點都可以看成一個三維的向量,維度就是圖像的通道數,所以圖像也可以看成是很多向量輸入到模型,自注意力機制和CNN的概念類似,都是希望網絡不僅僅考慮某一個向量,也就是CNN中希望模型不僅僅考慮某一個像素點,而是讓模型考慮一個正方形或者矩形的感受野(Receptive field),對於自注意力機制來說,相當於模型自己決定receptive field是怎樣的形狀和類型。所以其實CNN卷積神經網絡是特殊情況下的一種self-attention,self-attention就是複雜版的CNN。

參考資料:On the Relationship between Self-Attention and Convolutional Layers

https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1911.03584

5.2 自注意力機制與RNN

RNN和自注意力機制也類似,都是接受一批輸入向量,然後輸出一批向量,但RNN只能接受前面的輸出作爲輸入,self-attention可以同時接受所有的向量作爲輸入,所以一定程度上說Self-attention比RNN更具效率。

參考資料:Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention

https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2006.16236

Attention in vision
參考資料:Transformers in Vision: A Survey

https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/2101.01169.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章