Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Polosukhin, I. (2017). Attention is all you need. In Advances in neural information processing systems (pp. 5998-6008).
transformer的模型結(jié)構(gòu)
transformer模型和大多數(shù)sequence to sequence模型一樣泡挺,由encoder和decoder組成。結(jié)構(gòu)示意圖如下:
1. encoder
transformer 的encoder由N=6個相同的layer構(gòu)成狐史,每個layer都有兩個sub-layers,分別是multi-head self-attention mechanism和fully connected feed-forward network。其中每個sub-layer都加了residual connection和normalisation,因此可以將sub-layer的輸出表示為:LayerNorm(x + Sublayer(x))酌壕;
2. decoder
decoder和encoder的結(jié)構(gòu)差不多蒸播,但是在每個layer下多了一個attention的sub-layer
3. Attention模型
采用傳統(tǒng)編碼器-解碼器結(jié)構(gòu)的LSTM/RNN模型存在一個問題:不論輸入長短都將其編碼成一個固定長度的向量表示,這使模型對于長輸入序列的學(xué)習(xí)效果很差(解碼效果很差)场航。而attention機制則克服了上述問題缠导,原理是在模型輸出時會選擇性地專注考慮輸入中的對應(yīng)相關(guān)的信息。使用attention機制的方法被廣泛應(yīng)用在各種序列預(yù)測任務(wù)上溉痢,包括文本翻譯僻造、語音識別等。transformer只使用了Attention孩饼。
3.1 Scaled Dot-Product Attention
Scaled Dot-Product Attention的輸入由query髓削、key、value組成镀娶,將query和所有key進行點積運算蔬螟,再除以(起調(diào)節(jié)作用,使得內(nèi)積不至于太大汽畴,太大的話 softmax 后就非 0 即 1 了旧巾,不夠“soft”了),再利用softmax 函數(shù)得到value的權(quán)重,計算得到的輸出矩陣如下:
以下是Scaled Dot-Product Attention模型圖:
?3.2 Multi-head attention
Multi-head attention結(jié)構(gòu)如下圖忍些,Query鲁猩,Key,Value首先經(jīng)過一個線性變換罢坝,然后輸入到Scaled Dot-Product attention(注意這里要做h次廓握,其實也就是所謂的Multi-head搅窿,每一次算一個head)。而且每次Q隙券,K男应,V進行線性變換的參數(shù)W是不一樣的。然后將h次的Scaled Dot-Product attention結(jié)果進行拼接娱仔,再進行一次線性變換得到的值作為Multi-head attention的結(jié)果沐飘。
attention函數(shù)輸入為由原來的Q,K牲迫,V變成了QW(上標為Q耐朴,下標為i),KW(上標為K盹憎,下標為i)筛峭,VW(上標為V,下標為i)陪每;即3個W都不相同影晓;將Q,K檩禾,V由原來的512維度變成了64維度(因為采取了8個多頭)俯艰;然后再拼接在一起變成512維,通過W(上標為O)進行線性轉(zhuǎn)換锌订;得到最終的多頭注意力值;
3.3 Self Attention
所謂 Self Attention画株,其實query=key=value辆飘。也就是說,在序列內(nèi)部做 Attention谓传,尋找序列內(nèi)部的聯(lián)系蜈项。?
4. Position-wise Feed-Forward Networks
除了attention sub-layers ,transformer的encoder和decoder都包含一個完全連接的前饋網(wǎng)絡(luò)续挟。這個網(wǎng)絡(luò)包括兩個線性轉(zhuǎn)換紧卒,中間有一個ReLu activation。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FFN(x) = max(0, xW1+ b1)W2+ b2
雖然不同位置的線性變換是相同的诗祸,但它們從一層到另一層使用不同的參數(shù)跑芳。
5. Embeddings and Softmax
與其他序列轉(zhuǎn)換模型類似,他們使用embeddings將輸入標記和輸出標記轉(zhuǎn)換為維度的向量直颅。他們也使用通常學(xué)習(xí)的線性變換和softmax函數(shù)將解碼器的輸出轉(zhuǎn)換為預(yù)測的 next-token probabilities博个。在他們的模型中,他們在兩個embedding層和pre-softmax線性變換之間共享相同的權(quán)值矩陣功偿,在嵌入層中盆佣,用這些權(quán)重乘以√dmodel。
6. Positional Encoding
如果將 K,V 按行打亂順序(相當于句子中的詞序打亂),Attention 的結(jié)果還是一樣的共耍。這就表明了虑灰,到目前為止,Attention 模型頂多是一個非常精妙的“詞袋模型”而已痹兜。為了讓模型利用序列的順序穆咐,必須注入一些關(guān)于序列中記號的相對或絕對位置的信息。因此佃蚜,他們在input embeddings中加入了positional encoding庸娱,將每個位置編號,然后每個編號對應(yīng)一個向量谐算,通過結(jié)合位置向量和詞向量熟尉,就給每個詞都引入了一定的位置信息,這樣 Attention 就可以分辨出不同位置的詞了洲脂。
7. 為什么使用self-attention
從三個方面去對比self-attention和遞歸結(jié)構(gòu)斤儿、卷積結(jié)構(gòu)的優(yōu)劣性,首先是每一層的計算復(fù)雜度恐锦,其次是能夠被并行的計算量往果,最后是網(wǎng)絡(luò)中長期依賴的路徑長度。對比顯示一铅,self-attention表現(xiàn)最好陕贮。