Transformer
Transformer 是一種基于自注意力機制(Self-Attention Mechanism)的深度學習模型,首次由 Vaswani 等人于 2017 年在論文《Attention is All You Need》中提出。與 RNN 和 LSTM 不同,Transformer 不需要依靠序列順序進行遞歸,而是通過全局注意力機制一次性處理整個輸入序列,從而具備了更高的計算效率和更強的并行化能力。
Transformer 的提出徹底改變了自然語言處理(NLP)和其他領域的發展,廣泛應用于機器翻譯、文本生成、語言理解、圖像識別等任務。
Transformer 的結構
Transformer 模型由兩部分組成:
- 編碼器(Encoder):用于將輸入序列轉化為上下文相關的表示。
- 解碼器(Decoder):用于根據編碼器的輸出生成新的序列(如翻譯成另一種語言)。
Transformer 的基本結構如下:
Transformer
├── 編碼器(Encoder)
│ ├── 多頭自注意力機制(Multi-Head Attention)
│ ├── 前饋神經網絡(Feed-Forward Neural Network)
│ └── 殘差連接與層歸一化(Residual Connection + Layer Normalization)
│
└── 解碼器(Decoder)├── 多頭自注意力機制(Multi-Head Attention)├── 編碼器-解碼器注意力機制├── 前饋神經網絡└── 殘差連接與層歸一化
核心機制解析
1. 多頭自注意力機制(Multi-Head Self-Attention)
自注意力機制的核心是:每個單詞能夠根據輸入序列的上下文信息,動態地分配注意力權重,從而獲得上下文相關的表示。
計算步驟:
- 將輸入序列 ( X ) 通過線性變換生成查詢向量(Query, Q)、鍵向量(Key, K) 和 值向量(Value, V)。
- 計算每個查詢向量 ( Q_i ) 與所有鍵向量 ( K_j ) 之間的相似度,通過 softmax 函數獲得注意力權重。
- 將注意力權重與對應的值向量 ( V ) 相乘,得到加權后的輸出。
公式:
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk??QKT?)V
其中:
- ( Q ):查詢矩陣
- ( K ):鍵矩陣
- ( V ):值矩陣
- ( d_k ):向量的維度(用來進行縮放)
多頭注意力機制 是將多個自注意力機制并行計算,捕捉到輸入序列中不同層次的信息,然后將多個頭的輸出拼接成最終結果。
2. 前饋神經網絡(Feed-Forward Network, FFN)
在自注意力機制后,每個位置的輸出會通過一個前饋神經網絡(通常是兩層全連接層)進行非線性變換,提高模型的非線性表達能力。
公式:
F F N ( x ) = ReLU ( x W 1 + b 1 ) W 2 + b 2 FFN(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2 FFN(x)=ReLU(xW1?+b1?)W2?+b2?
其中 ( W1 ) 和 ( W2 ) 是權重矩陣,( b1 ) 和 ( b2 ) 是偏置項。
3. 殘差連接與層歸一化(Residual Connection + Layer Normalization)
為了避免梯度消失和梯度爆炸問題,Transformer 在每一層增加了殘差連接,并在殘差連接之后進行層歸一化(Layer Normalization),確保輸出保持穩定,提升模型訓練的穩定性。
殘差連接公式:
Output = LayerNorm ( x + SubLayer ( x ) ) \text{Output} = \text{LayerNorm}(x + \text{SubLayer}(x)) Output=LayerNorm(x+SubLayer(x))
其中 ( x ) 是輸入,( \text{SubLayer}(x) ) 是注意力機制或前饋網絡的輸出。
4. 位置編碼(Positional Encoding)
由于 Transformer 不像 RNN 那樣依靠序列的順序信息,因此需要為輸入序列加入位置編碼,幫助模型捕獲序列的時序特征。
位置編碼公式:
P E ( p o s , 2 i ) = sin ? ( p o s 1000 0 2 i / d ) PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right) PE(pos,2i)?=sin(100002i/dpos?)
P E ( p o s , 2 i + 1 ) = cos ? ( p o s 1000 0 2 i / d ) PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right) PE(pos,2i+1)?=cos(100002i/dpos?)
其中:
- ( pos ) 是單詞在序列中的位置。
- ( i ) 是維度索引。
- ( d ) 是向量的維度。
位置編碼將序列的位置信息注入到輸入嵌入中,使得模型能夠區分“第一個詞”和“第二個詞”。
Transformer 的應用
1. 機器翻譯
Transformer 最初的應用就是機器翻譯任務。在機器翻譯中:
- 編碼器將源語言的句子轉化為上下文表示。
- 解碼器根據上下文生成目標語言句子。
2. 文本生成
GPT(生成預訓練模型)是基于 Transformer 解碼器結構的文本生成模型,能夠根據輸入文本生成合理的續寫內容。
3. 語言理解
BERT(雙向編碼器表示模型)是基于 Transformer 編碼器結構的語言理解模型,擅長回答問題、文本分類等任務。
4. 圖像識別
Vision Transformer(ViT)將圖像切分成小塊,并將它們視為序列輸入到 Transformer 中,從而實現了圖像識別任務。
Transformer 的優點和缺點
優點:
- 高效并行:相比 RNN 和 LSTM,Transformer 不需要逐步遞歸處理序列,可以并行處理整個序列,大大提高了訓練效率。
- 捕獲長距離依賴:通過自注意力機制,Transformer 能夠輕松捕獲長距離的上下文關系。
- 結構靈活:編碼器和解碼器模塊可以根據任務需求自由組合。
缺點:
- 計算量大:多頭自注意力機制和全連接層使得模型計算復雜度較高,對硬件資源要求較高。
- 需要大規模數據:Transformer 模型的訓練通常需要海量的數據和時間。
經典模型發展
- 2017 年:Transformer 提出,首次應用于機器翻譯,性能超越傳統 RNN 和 LSTM。
- 2018 年:BERT 推出,將 Transformer 編碼器用于雙向語言理解,成為 NLP 領域的里程碑。
- 2018 年:GPT(Generative Pretrained Transformer) 推出,將 Transformer 解碼器用于文本生成。
- 2020 年:GPT-3 震驚 NLP 領域,通過 1750 億參數的預訓練模型實現了令人驚艷的文本生成效果。