Transformer模型---decoder


一、結構

1.編碼器

Transformer模型---encoder - nxf_rabbit75 - 博客園

2.解碼器

(1)第一個子層也是一個多頭自注意力multi-head self-attention層,但是,在計算位置i的self-attention時屏蔽掉了位置i之后的序列值,這意味着:位置i的attention只能依賴於它之前的結果,不能依賴它之后的結果。因此,這種self-attention也被稱作masked self-attention。

(2)第二個子層是一個多頭注意力multi-head attention層,用於捕獲decoder output和encoder output之間的attention。第三個子層是一個簡單的全連接層。

(3)和encoder一樣:每個子層都使用殘差直連,並且殘差直連之后跟隨一個layer normalization:LN;decoder所有層的輸入、輸出的向量維度也是$d_{model}=512$維。

二、Tips

1.使用multi-head attention的三個適用場景:

  encoder-decoder attention:使用multi-head attention,輸入為encoder的輸出和decoder的self-attention輸出,其中encoder的self-attention作為 key and value,decoder的self-attention作為query

  encoder self-attention:使用 multi-head attention,輸入的Q、K、V都是一樣的(input embedding and positional embedding)
  decoder self-attention:在decoder的self-attention層中,deocder 都能夠訪問當前位置前面的位置

2.decoder的masked self-attention

注意encoder里面是叫self-attention,decoder里面是叫masked self-attention。

這里的masked就是要在做language modelling(或者像翻譯)的時候,不給模型看到未來的信息。

3.優化

三、Transformer vs CNN vs RNN

 1.假設輸入序列長度為n,每個元素的維度為$d:\{x_1,...,x_n\}$,輸出序列長度也為n,每個元素的維度也是d:$\{y_1,...,y_n\}$,從每層的計算復雜度、並行的操作數量、學習距離長度三個方面比較Transformer、CNN、RNN三個特征提取器:

1.每層的計算復雜度:

  考慮到n個key和n個query兩兩點乘,因此self-attention每層計算復雜度為$O(n^2*d)$

  考慮到矩陣(維度為$n*n$)和輸入向量相乘,因此RNN每層計算復雜度為$O(n*d^2)$

  對於k個卷積核經過n次一維卷積,因此CNN每層計算復雜度為$O(k*n*d^2)$,如果考慮深度可分離卷積,則計算復雜度下降為$O(k*n*d+n*d^2)$

因此:

  當$n<d$時,self attention要比RNN和CNN快;

  當$n>d$時,可以使用受限self attention,即:計算attention時僅考慮每個輸出位置附近窗口的r個輸入。這將帶來兩個效果:每層計算復雜度降為$O(r*n*d)$

  最長學習距離降低為r,因此需要執行$O(n/r)$次才能覆蓋到所有輸入。

2.並行操作數量:

可以通過必須串行的操作數量來描述:

  對於self-attention,CNN,其串行操作數量為O(1),並行度最大;

  對於RNN,其串行操作數量為O(n),較難並行化。

3.最長計算路徑:

覆蓋所有輸入的操作的數量

  對於self-attention,最長計算路徑為O(1);對於self-attention stricted,最長計算路徑為O(n/r);

  對於常規卷積,則需要O(n/k)個卷積才能覆蓋所有的輸入;對於空洞卷積,則需要$O(log_kn)$才能覆蓋所有的輸入;

  對於RNN,最長計算路徑為O(n)

4.作為額外收益,self-attention可以產生可解釋性的模型:

通過檢查模型中的注意力分布,可以展示與句子語法和語義結構相關的信息。

 

 

 

 

參考文獻:

【1】BERT專題系列(二):Transformer (Attention is all you need)_嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili

【2】NLP學習(5)----attention/ self-attention/ seq2seq/ transformer - Lee_yl - 博客園


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM