Transformer/zh
| Article | |
|---|---|
| Topic area | Machine Learning |
| Difficulty | Introductory |
Transformer 是一類圍繞自注意力機制構建的神經網絡架構,由 Vaswani 等人在 2017 年的論文 Lua error: Internal error: The interpreter exited with status 1. Is All You Need 中提出。它已成為自然語言處理領域佔主導地位的架構,並日益廣泛地應用於計算機視覺、語音和多模態任務。
概述
Transformer 處理一個 token 序列時,使用Lua error: Internal error: The interpreter exited with status 1.而非循環或Lua error: Internal error: The interpreter exited with status 1.,反覆在各位置之間混合信息。每一層先應用多頭自Lua error: Internal error: The interpreter exited with status 1.,再接一個按位置的前饋網絡,每個子層都帶有殘差連接和層歸一化。由於Lua error: Internal error: The interpreter exited with status 1.對位置具有置換不變性,因此通過位置編碼顯式注入位置信息。
與循環神經網絡不同,Transformer 在訓練時並行計算序列中的所有位置,這在現代硬件上顯著提升了吞吐量。這種並行性,加上Lua error: Internal error: The interpreter exited with status 1.能夠在固定層數內建模長距離依賴,使得可以在超大規模語料上訓練超大模型——這是當代大語言模型(LLM)的基礎。
核心概念
- 自Lua error: Internal error: The interpreter exited with status 1. —— 序列中的每個 token 計算所有其他 token 的加權和,權重根據內容相似度而非位置學習得到。
- 查詢、鍵和值 —— 每個 token 被投影為三個向量:查詢與鍵進行匹配以產生Lua error: Internal error: The interpreter exited with status 1.權重,再用這些權重對值進行加權組合。
- 多頭Lua error: Internal error: The interpreter exited with status 1. —— 多個Lua error: Internal error: The interpreter exited with status 1.操作以獨立的投影並行運行,使模型能夠同時關注輸入的不同方面。
- 位置編碼 —— 加到 token Lua error: Internal error: The interpreter exited with status 1.上的正弦或學習得到的向量,使模型能夠在原本與順序無關的操作中區分位置。
- 殘差連接與層歸一化 —— 包裹每個子層,以穩定梯度並支持非常深的堆疊。
- 前饋網絡 —— 按位置獨立作用於每個 token 的兩層 MLP,提供逐位置的非線性變換。
- 因果掩碼 —— 在解碼器中,未來位置在Lua error: Internal error: The interpreter exited with status 1.中被屏蔽,使模型在自回歸生成時無法窺視未來。
歷史
Lua error: Internal error: The interpreter exited with status 1.作為編碼器與解碼器隱藏狀態之間的一種軟對齊機制,由 Bahdanau 等人 (2015) 引入用於神經機器翻譯,並由 Luong 等人 (2015) 加以改進,但這些模型仍然構建在 RNN 之上。2017 年,Vaswani 等人提出了 Transformer,完全去除了循環結構,僅依賴Lua error: Internal error: The interpreter exited with status 1.。該架構在 WMT'14 英德和英法翻譯基準上取得了最佳成績,同時訓練時間僅為之前的一小部分。
2018 年,Devlin 等人發佈了 BERT,這是一種使用掩碼語言建模預訓練的深度雙向編碼器,在大量 NLP 基準上刷新了當時的最佳結果。同年,Radford 等人提出了 GPT,一種僅含解碼器、用標準語言建模目標訓練的自回歸 Transformer。隨後的規模擴展——GPT-2 (2019)、GPT-3 (2020)、PaLM、LLaMA 以及當代前沿模型——表明隨着參數、數據和算力的增長,Transformer 的性能遵循可預測的擴展律(Kaplan 等人 2020)。
Transformer 還擴展到了文本之外:Vision Transformer(Dosovitskiy 等人 2021)將圖像塊視為 token;語音 Transformer(如 Whisper)作用於音頻頻譜圖;CLIP 和 Flamingo 等多模態模型則將多種模態統一到一個架構中。
主要方法
核心組件是縮放點積Lua error: Internal error: The interpreter exited with status 1.。給定查詢矩陣 $ Q \in \mathbb{R}^{n \times d_k} $、鍵矩陣 $ K \in \mathbb{R}^{n \times d_k} $ 和值矩陣 $ V \in \mathbb{R}^{n \times d_v} $:
- $ \mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\left(\frac{Q K^{\!\top}}{\sqrt{d_k}}\right) V $
縮放因子 $ \sqrt{d_k} $ 可避免點積過大、將 softmax 推入梯度極小的區域。多頭Lua error: Internal error: The interpreter exited with status 1. 以獨立的投影並行運行 $ h $ 個頭,並將它們的輸出拼接起來:
- $ \mathrm{MultiHead}(Q, K, V) = \mathrm{Concat}(\mathrm{head}_1, \dots, \mathrm{head}_h)\, W^O $
其中 $ \mathrm{head}_i = \mathrm{Attention}(Q W_i^Q,\, K W_i^K,\, V W_i^V) $。
在實踐中,三種架構變體佔據主導地位:
- 編碼器–解碼器 Transformer —— 最初的設計,用於翻譯、摘要等Lua error: Internal error: The interpreter exited with status 1.任務。編碼器層使用雙向自Lua error: Internal error: The interpreter exited with status 1.;解碼器層使用因果自Lua error: Internal error: The interpreter exited with status 1.以及對編碼器輸出的交叉Lua error: Internal error: The interpreter exited with status 1.。代表:T5、BART 及最早的 Vaswani 模型。
- 僅編碼器 Transformer —— 去除解碼器,全程使用雙向自Lua error: Internal error: The interpreter exited with status 1.。以掩碼語言建模進行預訓練,用於表示學習。代表:BERT、RoBERTa、DeBERTa。
- 僅解碼器 Transformer —— 去除編碼器,僅使用因果自Lua error: Internal error: The interpreter exited with status 1.,以下一 token 預測為訓練目標。如今已成為通用語言模型的主流設計。代表:GPT 系列、LLaMA、Mistral、Claude。
最初的 Transformer 使用正弦位置編碼:
- $ \mathrm{PE}(pos, 2i) = \sin\!\left(\frac{pos}{10000^{2i/d}}\right), \quad \mathrm{PE}(pos, 2i+1) = \cos\!\left(\frac{pos}{10000^{2i/d}}\right) $
後續工作引入了學習得到的絕對位置(BERT、GPT-2)、相對位置編碼(Shaw 等人 2018,T5)、旋轉位置 Lua error: Internal error: The interpreter exited with status 1.(RoPE,Su 等人 2021),以及 ALiBi 線性偏置(Press 等人 2022);後兩者能夠更好地外推到比訓練時更長的序列。
自Lua error: Internal error: The interpreter exited with status 1.的複雜度為 $ O(n^2 d) $,對長序列而言代價高昂。高效 Transformer 變體降低了這一開銷:Linformer 和 Performer 採用低秩或核近似;Longformer 和 BigBird 混合使用局部與全局Lua error: Internal error: The interpreter exited with status 1.模式;FlashAttention(Dao 等人 2022)通過對 IO 友好的方式重排計算,在大幅提高硬件利用率的同時實現精確Lua error: Internal error: The interpreter exited with status 1.。稀疏Lua error: Internal error: The interpreter exited with status 1.(Lua error: Internal error: The interpreter exited with status 1.)路由用稀疏激活的專家(Switch Transformer、Mixtral)替代稠密前饋子層,以在不按比例增加算力的情況下擴大參數規模。
關聯
Transformer 與現代機器學習中的其他思想有着深刻聯繫。它直接建立在 注意力機制之上,將早期 Lua error: Internal error: The interpreter exited with status 1.模型中使用的軟對齊加以推廣。其輸入通常是稠密的 詞嵌入(或如 BPE 和 SentencePiece 這樣學習得到的子詞 Lua error: Internal error: The interpreter exited with status 1.),其在詞表上的輸出則由作用在線性 Lua error: Internal error: The interpreter exited with status 1. 上的 softmax 產生。
訓練依賴與其他深度網絡相同的機制:通過Lua error: Internal error: The interpreter exited with status 1.與前饋子層進行反向傳播,使用如 Lua error: Internal error: The interpreter exited with status 1. 和 AdamW 這類梯度下降變體進行優化,並使用交叉熵損失進行下一 token 預測或掩碼 token 恢復。Lua error: Internal error: The interpreter exited with status 1.技術也是標準做法,包括作用於Lua error: Internal error: The interpreter exited with status 1.權重和前饋Lua error: Internal error: The interpreter exited with status 1.上的 dropout,以及權重衰減。
從架構上看,Transformer 可被視為帶有內容條件路由的全連接層的推廣,或視為作用於全連接圖上的圖神經網絡的特例。它們通常在大規模未標註語料上預訓練,然後通過遷移學習適配到下游任務——Lua error: Internal error: The interpreter exited with status 1.、LoRA 和前綴微調等參數高效方法,或者直接進行上下文提示。
參見
- Attention Mechanisms
- Neural Networks
- Recurrent Neural Networks
- Word Embeddings
- Softmax Function
- Transfer Learning
- Backpropagation
- Cross-Entropy Loss
參考文獻
- Vaswani, A.、Shazeer, N.、Parmar, N.、Uszkoreit, J.、Jones, L.、Gomez, A. N.、Kaiser, Ł. 與 Polosukhin, I. (2017). "Lua error: Internal error: The interpreter exited with status 1. Is All You Need". NeurIPS.
- Devlin, J.、Chang, M.-W.、Lee, K. 與 Toutanova, K. (2019). "BERT: Lua error: Internal error: The interpreter exited with status 1. of Deep Bidirectional Transformers for Language Understanding". NAACL.
- Radford, A.、Narasimhan, K.、Salimans, T. 與 Sutskever, I. (2018). "Improving Language Understanding by Generative Pre-Training". OpenAI technical report.
- Brown, T. 等 (2020). "Language Models are Few-Shot Learners". NeurIPS.
- Kaplan, J. 等 (2020). "Scaling Laws for Neural Language Models". arXiv:2001.08361.
- Dosovitskiy, A. 等 (2021). "An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale". ICLR.
- Su, J.、Lu, Y.、Pan, S.、Murtadha, A.、Wen, B. 與 Liu, Y. (2021). "RoFormer: Enhanced Transformer with Rotary Position Lua error: Internal error: The interpreter exited with status 1.". arXiv:2104.09864.
- Dao, T.、Fu, D. Y.、Ermon, S.、Rudra, A. 與 Ré, C. (2022). "FlashAttention: Fast and Memory-Efficient Exact Lua error: Internal error: The interpreter exited with status 1. with IO-Awareness". NeurIPS.