论文解读:Attention is All you need
論文解讀:Attention is All you need
習翔宇?北京大學 軟件工程博士在讀?關注他192 人贊同了該文章Attention機制最早在視覺領域提出,2014年Google Mind發表了《Recurrent Models of Visual Attention》,使Attention機制流行起來,這篇論文采用了RNN模型,并加入了Attention機制來進行圖像的分類。
205年,Bahdanau等人在論文《Neural Machine Translation by Jointly Learning to Align and Translate》中,將attention機制首次應用在nlp領域,其采用Seq2Seq+Attention模型來進行機器翻譯,并且得到了效果的提升,Seq2Seq With Attention中進行了介紹。
2017 年,Google 機器翻譯團隊發表的《Attention is All You Need》中,完全拋棄了RNN和CNN等網絡結構,而僅僅采用Attention機制來進行機器翻譯任務,并且取得了很好的效果,注意力機制也成為了大家近期的研究熱點。
本文首先介紹常見的Attention機制,然后對論文《Attention is All You Need》進行介紹,該論文發表在NIPS 2017上。
1. Attention機制
Attention用于計算"相關程度", 例如在翻譯過程中,不同的英文對中文的依賴程度不同,Attention通常可以進行如下描述,表示為將query(Q)和key-value pairs 映射到輸出上,其中query、每個key、每個value都是向量,輸出是V中所有values的加權,其中權重是由Query和每個key計算出來的,計算方法分為三步:
第一步:計算比較Q和K的相似度,用f來表示
第二步:將得到的相似度進行Softmax操作,進行歸一化
第三步:針對計算出來的權重 ,對V中所有的values進行加權求和計算,得到Attention向量
通常第一步中計算方法包括以下四種:
- 點乘 dot product
- 權重 General
- 拼接權重 Concat
- 感知器 Perceptron
2. Transformer Architecture
絕大部分的序列處理模型都采用encoder-decoder結構,其中encoder將輸入序列 映射到連續表示 ,然后decoder生成一個輸出序列 ,每個時刻輸出一個結果。Transformer模型延續了這個模型,整體架構如下圖1所示。
圖1 基于Transformer模型的Encoder-Decoder模型示意圖2.1 Encoder
Encoder有N=6層,每層包括兩個sub-layers:
在每個sub-layer我們都模擬了殘差網絡,每個sub-layer的輸出都是
其中Sublayer(x) 表示Sub-layer對輸入 做的映射,為了確保連接,所有的sub-layers和embedding layer輸出的維數都相同 .
2.2 Decoder
Decoder也是N=6層,每層包括3個sub-layers:
同時Decoder中的self-attention層需要進行修改,因為只能獲取到當前時刻之前的輸入,因此只對時刻 之前的時刻輸入進行attention計算,這也稱為Mask操作。
2.3 Attention機制
在Transformer中使用的Attention是Scaled Dot-Product Attention, 是歸一化的點乘Attention,假設輸入的query 、key維度為 ,value維度為 , 那么就計算query和每個key的點乘操作,并除以 ,然后應用Softmax函數計算權重。
在實踐中,將query和keys、values分別處理為矩陣 , 那么計算輸出矩陣為:
其中 , , ,輸出矩陣維度為 ,如下所示
那么Scaled Dot-Product Attention的示意圖如下所示,Mask是可選的(opt.),如果是能夠獲取到所有時刻的輸入(K, V), 那么就不使用Mask;如果是不能獲取到,那么就需要使用Mask。使用了Mask的Transformer模型也被稱為Transformer Decoder,不使用Mask的Transformer模型也被稱為Transformer Encoder。
圖2 Scaled Dot-Product Attention示意圖如果只對Q、K、V做一次這樣的權重操作是不夠的,這里提出了Multi-Head Attention,操作包括:
總結來說公示如下所示
其中第1步的線性變換參數為 , , , 第4步的線性變化參數為 . 而第三步計算的次數是 。
在論文中取 表示每個時刻的輸入維度和輸出維度, 表示8次Attention操作, 表示經過線性變換之后、進行Attention操作之前的維度。那么進行一次Attention之后輸出的矩陣維度是 , 然后進行h = 8次操作合并之后輸出的結果是 ,因此輸入和輸出的矩陣維度相同。
這樣輸出的矩陣 ,每行的向量都是對 向量中每一行 的加權,示意圖如下所示
圖3 Multi-Head Attention機制示意圖在圖1的Encoder-Decoder架構中,有三處Multi-head Attention模塊,分別是:
2.4 Position-wise Feed-forward Networks
在進行了Attention操作之后,encoder和decoder中的每一層都包含了一個全連接前向網絡,對每個position的向量分別進行相同的操作,包括兩個線性變換和一個ReLU激活輸出
其中每一層的參數都不同。
2.5 Position Embedding
因為模型不包括recurrence/convolution,因此是無法捕捉到序列順序信息的,例如將K、V按行進行打亂,那么Attention之后的結果是一樣的。但是序列信息非常重要,代表著全局的結構,因此必須將序列的token相對或者絕對position信息利用起來。
這里每個token的position embedding 向量維度也是 然后將原本的input embedding和position embedding加起來組成最終的embedding作為encoder/decoder的輸入。其中position embedding計算公式如下
其中 表示位置index, 表示dimension index。
Position Embedding本身是一個絕對位置的信息,但在語言中,相對位置也很重要,Google選擇前述的位置向量公式的一個重要原因是:由于我們有
這表明位置p+k的向量可以表示成位置p的向量的線性變換,這提供了表達相對位置信息的可能性。
在其他NLP論文中,大家也都看過position embedding,通常是一個訓練的向量,但是position embedding只是extra features,有該信息會更好,但是沒有性能也不會產生極大下降,因為RNN、CNN本身就能夠捕捉到位置信息,但是在Transformer模型中,Position Embedding是位置信息的唯一來源,因此是該模型的核心成分,并非是輔助性質的特征。
也可以采用訓練的position embedding,但是試驗結果表明相差不大,因此論文選擇了sin position embedding,因為
3. Why Self-Attention
這里將Self-Attention layers和recurrent/convolutional layers來進行比較,來說明Self-Attention的好處。假設將一個輸入序列 分別用
來映射到一個相同長度的序列 ,其中 .
我們分析下面三個指標:
結果如下所示
3.1 并行計算
Self-Attention layer用一個常量級別的順序操作,將所有的positions連接起來
Recurrent Layer需要 個順序操作
3.2 計算復雜度分析
如果序列長度 表示維度 ,Self-Attention Layer比recurrent layers快,這對絕大部分現有模型和任務都是成立的。
為了提高在序列長度很長的任務上的性能,我們對Self-Attention進行限制,只考慮輸入序列中窗口為 的位置上的信息,這稱為Self-Attention(restricted), 這回增加maximum path length到 .
3.3 length path
如果卷積層kernel width ,并不會將所有位置的輸入和輸出都連接起來。這樣需要 個卷積層或者 個dilated convolution,增加了輸入輸出之間的最大path length。
卷積層比循環層計算復雜度更高,是k倍。但是Separable Convolutions將見效復雜度。
同時self-attention的模型可解釋性更好(interpretable).
Reference
[1]https://github.com/Kyubyong/transformer
[2]Vaswani, Ashish, et al. "Attention is all you need."Advances in Neural Information Processing Systems. 2017.
編輯于 2018-10-18「真誠贊賞,手留余香」贊賞還沒有人贊賞,快來當第一個贊賞的人吧!機器學習深度學習(Deep Learning)神經網絡?贊同 192??18 條評論?分享?收藏?總結
以上是生活随笔為你收集整理的论文解读:Attention is All you need的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 玩转算法面试-第三章
- 下一篇: 百度机器阅读理解比赛赛后总结