7.3 Transformer Encoder
Transformer encoder 會把 self-attention、feed-forward network、residual connection 與 layer normalization 組合起來。本篇使用小型合成序列分類資料,示範如何用 Keras layer 建立一個可訓練的 Transformer encoder。
1. 學習目標
本篇聚焦如何把 self-attention 組成真正的分類模型。前兩篇先看 attention 計算,本篇則把它放進完整模型,處理固定長度序列分類任務。
2. Transformer Encoder 結構
基本 encoder block 包含:
- Multi-head self-attention。
- Add & LayerNorm。
- Feed-forward network。
- Add & LayerNorm。
輸入序列還需要 position embedding,否則 attention 本身不知道 token 或時間點的順序。
3. 實作流程
Notebook 會產生三類數值序列資料,加入可訓練的 position embedding,建立 Transformer encoder block,最後用 GlobalAveragePooling 與 Dense softmax 做分類。
4. 如何套用自己的資料?
只要資料能整理成 (samples, sequence_length, features),就可以嘗試 Transformer encoder。文字任務通常先經過 token embedding;時間序列任務則可先用 Dense layer 把數值特徵投影到 embedding 維度。序列長度越長,attention 計算成本越高。
5. 小結
Transformer encoder 是許多現代模型的基礎積木。先在小型序列分類任務上理解 encoder block,後續才容易延伸到 NLP、時間序列與影像 patch 任務。