【論文閱讀筆記】Transformer——《Attention Is All You Need》

KeanShi發表於2024-11-08

論文地址:https://arxiv.org/pdf/1706.03762
程式碼地址:https://github.com/huggingface/transformers

【論文閱讀筆記】Transformer——《Attention Is All You Need》

目錄
  • Introduction
  • Background
  • Model Architecture
    • Encoder
      • LN and BN
    • Decoder
    • Attention
    • Multi-head Attention
    • Feed-Forward
    • Postion Encoding
  • Why self-attention

Introduction

  1. RNN,LSTM 處理時序資訊的侷限性:無法並行,部分歷史資訊會在後面丟棄
  2. 編碼器與解碼器結構
  3. proposed transformer:純注意力機制

Background

  1. CNN 替換 RNN:無法對時序資訊進行建模——自注意力可以解決;CNN 可以多個輸出通道——多頭注意力機制
  2. Memory-Network

Model Architecture

【論文閱讀筆記】Transformer——《Attention Is All You Need》

圖 1:Transformer 架構

  • Encoder:$\text{input}(x_1,...,x_n) \rightarrow \text{output: } \boldsymbol{z}=(z_1,...,z_n) $,其中 \(z_t(1 \le t \le n)\)\(x_t\) 的向量表示
  • Decoder:$\text{input}(z_1,...,z_n) \rightarrow \text{output: } \boldsymbol{y}=(y_1,...,y_m) $:一個一個生成(auto-regression),上一時刻輸出為下一時刻輸入

Encoder

2 個子層:\(LayerNorm(x+Sublayer(x)) * 2\),每一層輸出均為 512 維

LN and BN

【論文閱讀筆記】Transformer——《Attention Is All You Need》
  1. 如果 feature 長度不同:BN 更加不穩定!
【論文閱讀筆記】Transformer——《Attention Is All You Need》
  1. 預測過程
  • BN:要記錄全域性的 \(\mu\)\(\sigma\),如果有的 feature 很長訓練沒見過,\(\mu\)\(\sigma\) 就不合適了
  • LN:每個樣本內部計算,不受全域性影響,受長度影響很小

Decoder

3 個字層:\(LayerNorm(x+Sublayer(x)) * 3\),自迴歸

Attention

【論文閱讀筆記】Transformer——《Attention Is All You Need》

圖 2:dot-product attention 結構

其中 \(Q,K\)\(d_k\) 維,\(V\)\(d_v\) 維,attention計算公式:

\[\text{Attention}(Q,K,V)=\text{softmax}(\frac{QK^T}{\sqrt{d_k}})V \]

為什麼是 scaled dot-product attention?

  1. 因為點乘非常簡單,兩次矩陣乘法易於平行計算
  2. \(d_k\) 比較大,\(\text{softmax}(QK^T)\) 分佈發散,梯度比較小收斂慢

Mask 操作

\(QK^T\) 後將 \(t\) 位置之後變為很小的負數(如\(-1e10\)),softmax 後為 0

Multi-head Attention

能夠學習到不同的投影,不同特徵。計算公式如下:

\[\text{MultiHead}(Q,K,V)=\text{Concat}(head_1,...,head_n)W^o \]

\[where \ \ \ head_i=\text{Attention}(QW_i^Q,KW_i^K,VW_i^V) \]

Feed-Forward

\[\text{FFN}(x)=max(0,xW_1+b_1)W_2+b_2 \]

Postion Encoding

加入時序資訊:

\[\text{PE}(pos,2i)=\sin(pos/10000^{2i/d}) \]

\[\text{PE}(pos,2i+1)=\cos(pos/10000^{2i/d}) \]

Why self-attention

相關文章