Attention Is All You Need(Transformer)算法原理解析

1. 前言

谷歌在2017年發表了一篇論文名字教Attention Is All You Need,提出了一個只基於attention的結構來處理序列模型相關的問題,比如機器翻譯。傳統的神經機器翻譯大都是利用RNN或者CNN來作為encoder-decoder的模型基礎,而谷歌最新的只基於Attention的Transformer模型摒棄了固有的定式,並沒有用任何CNN或者RNN的結構。該模型可以高度並行地工作,所以在提升翻譯性能的同時訓練速度也特別快。

回到頂部

2. Transformer模型結構

Transformer的主體結構圖:

Attention Is All You Need(Transformer)算法原理解析

2.1 Transformer的編碼器解碼器

模型分為編碼器解碼器兩個部分。

  • 編碼器由6個相同的層堆疊在一起,每一層又有兩個支層。第一個支層是一個多頭的自注意機制,第二個支層是一個簡單的全連接前饋網絡。在兩個支層外面都添加了一個residual的連接,然後進行了layer nomalization的操作。模型所有的支層以及embedding層的輸出維度都是dmodel
  • 解碼器也是堆疊了六個相同的層。不過每層除了編碼器中那兩個支層,解碼器還加入了第三個支層,如圖中所示同樣也用了residual以及layer normalization。具體的細節後面再講。

2.2 輸入層

編碼器和解碼器的輸入就是利用學習好的embeddings將tokens(一般應該是詞或者字符)轉化為d維向量。對解碼器來說,利用線性變換以及softmax函數將解碼的輸出轉化為一個預測下一個token的概率。

2.3 位置向量

由於模型沒有任何循環或者卷積,為了使用序列的順序信息,需要將tokens的相對以及絕對位置信息注入到模型中去。論文在輸入embeddings的基礎上加了一個“位置編碼”。位置編碼和embeddings由同樣的維度都是dmodel,所以兩者可以直接相加。有很多位置編碼的選擇,既有學習到的也有固定不變的。

2.4 Attention模型

2.4.1 Scaled attention

論文中用的attention是基本的點乘的方式,就是多了一個所謂的scale。輸入包括維度為dk 的queries以及keys,還有維度為dv的values。計算query和所有keys的點乘,然後每個都除以(dk)^1/2(這個操作就是所謂的Scaled)。之後利用一個softmax函數來獲取values的權重。

實際操作中,attention函數是在一些列queries上同時進行的,將這些queries並在一起形成一個矩陣Q同時keys以及values也並在一起形成了矩陣K以及V。則attention的輸出矩陣可以按照下述公式計算:

Attention Is All You Need(Transformer)算法原理解析


Attention Is All You Need(Transformer)算法原理解析

2.4.2 Multi-Head Attention

本文結構中的Attention並不是簡簡單單將一個點乘的attention應用進去。作者發現先對queries,keys以及values進行h

h次不同的線性映射效果特別好。學習到的線性映射分別映射到dk,dk以及dv維。分別對每一個映射之後的得到的queries,keys以及values進行attention函數的並行操作,生成dv維的output值。具體結構和公式如下。

Attention Is All You Need(Transformer)算法原理解析

Attention Is All You Need(Transformer)算法原理解析

2.4.3 模型中的attention

Transformer以三種不同的方式使用了多頭attention。

  1. 在encoder-decoder的attention層,queries來自於之前的decoder層,而keys和values都來自於encoder的輸出。這個類似於很多已經提出的seq2seq模型所使用的attention機制。
  2. 在encoder含有self-attention層。在一個self-attention層中,所有的keys,values以及queries都來自於同一個地方,本例中即encoder之前一層的的輸出。
  3. 類似的,decoder中的self-attention層也是一樣。不同的是在scaled點乘attention操作中加了一個mask的操作,這個操作是保證softmax操作之後不會將非法的values連到attention中。

2.4.4 Feed Foreword

每層由兩個支層,attention層就是其中一個,而attention之後的另一個支層就是一個前饋的網絡。公式描述如下。

Attention Is All You Need(Transformer)算法原理解析

3. 總結

模型的整體框架基本介紹完了,其最重要的創新應該就是Self-Attention和Multi-Head Attention的架構。在摒棄傳統CNN和RNN的情況下,還能提高表現,降低訓練時間。Transformer用於機器翻譯任務,表現極好,可並行化,並且大大減少訓練時間。並且也給我們開拓了一個思路,在處理問題時可以增加一種結構的選擇。


分享到:


相關文章: