transformer架構

| 機器學習與資料探勘 |
|---|
在深度學習中,transformer(直譯為「變換器」)是一種基於多頭注意力機制的類神經網絡架構,其中文字被轉換為稱為詞元(token)的數值表示,每個詞元透過從詞嵌入表中尋找轉換為一個向量。[1]在每一層,每個詞元都透過並列的多頭注意力機制在上下文窗口的範圍內與其他(未封鎖的)詞元進行上下文關聯,從而放大關鍵詞元的訊號並減弱不太重要的詞元,從而按輸入數據各部分重要性的不同而分配不同的權重。採用該架構的模型主要用於自然語言處理(NLP)與電腦視覺(CV)領域。
和循環神經網絡(RNN)一樣,transformer旨在處理自然語言等順序輸入數據,可應用於翻譯、文字摘要等任務。但transformer的優勢在於它沒有循環單元,能夠一次性處理所有輸入數據。注意力機制可以為輸入序列中的任意位置提供上下文。如果輸入數據是自然語言,則transformer不必像RNN一樣一次只處理一個單詞,這種架構允許更多的平行計算,並以此減少訓練時間。[1]之後的變體被廣泛用於在大型(語言)數據集上訓練大型語言模型(LLM)。[2]
現代版transformer於2017年由谷歌大腦的一個團隊在論文《Attention Is All You Need》中提出。[1] 其前身最初是為了改進機器翻譯的現有架構而開發的,[3][4] 但此後應用範圍不斷擴大。它們被用於大規模自然語言處理、電腦視覺(視覺transformer)[5]、強化學習[6][7]、音頻處理[8]、多模態學習、機械人[9],甚至可以下國際象棋[10],逐步取代長短期記憶(LSTM)等RNN模型成為了NLP問題的首選模型[11]。Transformer模型也催生了預訓練系統(遷移學習)的發展,並列化優勢允許其在更大的數據集上進行訓練,例如GPT 和BERT[12]。這些系統使用了維基百科、Common Crawl等大型語料庫進行訓練,並可以針對特定任務進行微調。[13][14]
跟2017年的原始模型相比,一些現代模型(如RoBERTa)在詞元化階段可以改用更高效的WordPiece演算法;位置編碼則可能使用更新的旋轉位置編碼(RoPE)方案[15]。
背景
[編輯]在transformer模型之前,大多數最先進的NLP系統都依賴於諸如LSTM、門控循環單元(GRU)等門控RNN模型,並在此基礎上增加了注意力機制。transformer正是在注意力機制的基礎上構建的,但其沒有使用RNN結構,這表明僅依靠注意力機制就能在效能上比肩加上了注意力機制的RNN模型。2014年,注意力機制的提出為transformer奠定了理論基礎[16]。
順序處理
[編輯]RNN模型按順序處理每一個標記(token)並維護一個狀態向量,其中包含所有已輸入數據的表示。如要處理第個標記,模型將表示句中到第個標記為止的狀態向量與最新的第個標記的資訊結合在一起建立一個新的狀態向量,以此表示句中到第個標記為止的狀態。從理論上講,如果狀態向量不斷繼續編碼每個標記的上下文資訊,則來自一個標記的資訊可以在序列中不斷傳播下去。但在實踐中,這一機制是有缺陷的:梯度消失問題使得對於長序列,模型訓練效果較差。且按順序處理的機制使得長句末尾的模型狀態會缺少前面標記的精確資訊。此外,每個標記的計算都依賴於先前標記的計算結果,這也使得其很難在現代深度學習硬件上進行並列處理,這導致了RNN模型訓練效率低下。
自注意力機制
[編輯]注意力機制解決了上述這些問題。這一機制讓模型得以提取序列中任意先前點的狀態資訊。注意力層能夠訪問所有先前的狀態並根據學習到的相關性度量對其進行加權,從而提供相距很遠的標記的相關資訊。
翻譯是一個能夠突顯注意力機制優勢的例子,其中上下文對於句子中單詞的含義至關重要。例如在一個將英語翻譯為法語的系統中,法語輸出的第一個詞很可能取決於英語輸入的前幾個詞。然而在經典的LSTM模型中,為了產生法語輸出的第一個單詞,模型需要訪問處理完最後一個英語單詞後得到的狀態向量。理論上這個向量包含了整個英陳述式子的資訊,從而為模型提供所有必要的知識。然而在實踐中,LSTM通常無法很好地儲存這些資訊。可以透過添加注意力機制來解決這個問題:解碼器可以訪問每個英語輸入單詞的狀態向量,而不僅僅是最後一個單詞。同時模型可以學習注意力權重,這些權重決定了對每個英語輸入狀態向量的關注程度。
在RNN模型中添加注意力機制能提高模型的效能。而transformer架構的發展表明,注意力機制本身就足夠強大,並且不需要像RNN模型一樣再對數據進行順序循環處理。transformer模型採用了沒有RNN模型的注意力機制,它能夠同時處理所有標記並計算它們之間的注意力權重。由於注意力機制僅使用來自之前層中其他標記的資訊,因此可以平行計算所有標記以提高訓練速度。
架構
[編輯]輸入
[編輯]輸入文字使用位元組對編碼以進行標記化,每個標記透過詞嵌入轉換為向量。然後,將標記的位置資訊添加到嵌入向量中。
編碼器-解碼器架構
[編輯]與早期的seq2seq模型一樣,原始的Transformer模型使用「編碼器-解碼器」(encoder–decoder)架構。編碼器由逐層迭代處理輸入的編碼層組成,而解碼器則由對編碼器的輸出執行相同操作的解碼層組成。
每個編碼層的功能是確定輸入數據的哪些部分彼此相關。它將其編碼作為輸入再傳遞給下一個編碼層。每個解碼層的功能則相反,讀取被編碼的資訊並使用整合好的上下文資訊來生成輸出序列。[17]為了實現這一點,每個編碼層和解碼層都使用了注意力機制。
對於每個輸入,注意力會權衡每個其他輸入的相關性,並從中提取資訊以產生輸出。[18]每個解碼層都包含一個額外的注意力機制,它會在從編碼層提取資訊之前先從之前解碼器的輸出中提取資訊。
編碼層和解碼層都有一個前饋神經網絡用於對輸出進行額外處理,並包含殘差連接和層歸一化步驟。[18]
縮放點積注意力
[編輯]transformer模型的基本構建單元是縮放點積注意力(scaled dot-product attention)單元。當一個句子被傳遞到一個transformer模型中時,可以同時計算所有標記互相之間的注意力權重。注意力單元為上下文中的每個標記生成嵌入,其中包含有關標記本身的資訊以及由注意力權重加權得到的其他相關標記的資訊。
對於每個注意力單元,transformer模型學習三個權重矩陣,分別為查詢(query)權重、鍵(key)權重以及值(value)權重。對於每個標記,輸入詞嵌入分別與三個權重矩陣相乘以得到查詢向量、鍵向量與值向量。再使用查詢向量和鍵向量計算注意力權重,即計算和的點積以得到從標記到標記的注意力權重。之後再將注意力權重除以向量維度的平方根以在訓練期間穩定梯度,並透過softmax函數對權重進行歸一化。與的不同意味着注意力是非對稱的:即使標記很關註標記(即很大),也不能保證標記也反過來關註標記(即可能很小)。對每一個標記而言,注意力單元的輸出是以(標記到每一個標記的注意力)加權所有標記的值向量得到的加權和。
對所有標記的注意力計算可以表示為使用softmax函數的一個大型矩陣計算,由於可以對矩陣運算速度進行最佳化,這十分利於訓練速度的提升。矩陣、和可分別定義為第行是向量、 和的矩陣。
多頭注意力
[編輯]一組矩陣稱為一個注意力頭(attention head),transformer模型中每一層都包含多個注意力頭。每個注意力頭都表示不同標記相互之間的注意力,而多個注意力頭則可以針對不同的「相關性」計算不同的注意力權重。多注意力頭編碼的相關性資訊是人類可以理解的,例如某個注意力頭可能主要關注下一個單詞,而另一個注意力頭則可能主要關注動詞與其直接賓語之間的關係。[19]每個注意力頭的計算可以並列執行,這使得處理速度得以加快。注意力層的輸出被連接起來傳遞到前饋神經網絡層。
編碼器
[編輯]每個編碼器由一個自注意力機制和一個前饋神經網絡兩個主要部分組成。自注意力機制接受來自前一個編碼器的輸入編碼,並計算它們之間相關性的權重以生成輸出編碼。前饋神經網絡則進一步單獨處理每個輸出編碼。然後將這些輸出編碼作為輸入傳遞給下一個編碼器以及解碼器。
第一個編碼器將輸入序列的位置資訊和嵌入作為其輸入。位置資訊向transformer模型提供了序列的順序資訊,這是模型中唯一利用這一資訊的部分。[1]
編碼器是雙向的,這意味着當前標記的注意力可以放在之前或之後的標記上。
BERT是一種僅具有編碼器的結構。
解碼器
[編輯]每個解碼器由一個自注意力機制、一個針對編碼器的注意力機制和一個前饋神經網絡三個主要部分組成。解碼器的功能與編碼器類似,但插入了一個額外的注意力機制,它從編碼器生成的編碼中提取相關資訊。這種機制也可以稱為編碼器-解碼器注意力(encoder-decoder attention)。[1][18]
與第一個編碼器一樣,第一個解碼器也將輸出序列的位置資訊和嵌入作為其輸入。因為模型不能使用當前或未來的輸出來預測輸出,因此必須對輸出序列進行部分封鎖以防止這種反向資訊流。[1]這使得自回歸文字生成成為可能。最後一個解碼器之後是最終的線性變換和softmax層以產生所有詞彙的輸出概率。
替代架構
[編輯]訓練基於transformer模型的架構可能很昂貴,尤其是對於長輸入而言。替代架構包括Reformer模型、ETC/BigBird模型等[20],前者可以將計算複雜度從減少為 ,後者則可以減少到,其中表示序列長度。其實現得益於局部敏感雜湊與可逆層。[21][22]
原始的Transformer模型需要與上下文窗口大小成二次方的主記憶體大小。無注意力transformer模型(attention-free transformer)[23]則將對主記憶體的需求減少為線性依賴,同時透過連接鏈與值保留了transformer模型的優勢。
2020年底推出了用於比較不同transformer架構的基準測試。[24]
現代演進
[編輯]稀疏注意力
[編輯]- Block Sparse(GPT-3):局部窗口注意力+隨機注意力
- Longformer:膨脹滑動窗口模式
混合架構
[編輯]| 模型 | CV融合方式 | NLP代表 |
|---|---|---|
| ViT | 圖像分塊嵌入 | / |
| BEiT | 視覺tokenizer | BERT-style |
| Flamingo | 跨模態配接器 | Chinchilla |
訓練
[編輯]transformer模型通常會進行自監督學習,包括無監督預訓練和監督微調。由於監督微調時使用的帶標籤訓練數據一般比較有限,預訓練通常會在比微調時所用的更大的數據集上完成。預訓練和微調的任務通常包括:
應用
[編輯]transformer模型在自然語言處理(NLP)領域取得了巨大成功,例如機器翻譯與時間序列預測任務。[26]包括GPT-2、GPT-3、BERT、XLNet與RoBERTa在內的許多預訓練模型展示了transformer模型執行各種NLP相關任務的能力,並有很多潛在實際應用。[13][14][27]這些應用包括:
2020年,transformer架構(更具體地說是GPT-2)被證明可以透過微調執行下象棋的任務。[33]transformer模型也已應用於圖像處理,其結果可與卷積神經網絡相媲美。[34][35]
實現
[編輯]transformer模型已在TensorFlow、PyTorch等標準深度學習框架中實現。
「transformers」是由Hugging Face製作的一個庫,提供基於transformer的架構和預訓練模型。[11]
參見
[編輯]參考文獻
[編輯]- ^ 1.0 1.1 1.2 1.3 1.4 1.5 Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N.; Kaiser, Lukasz; Polosukhin, Illia. Attention Is All You Need. 2017-06-12. arXiv:1706.03762
[cs.CL].
- ^ Better Language Models and Their Implications. OpenAI. 2019-02-14 [2019-08-25]. (原始內容存檔於2020-12-19).
- ^ Bahdanau; Cho, Kyunghyun; Bengio, Yoshua. Neural Machine Translation by Jointly Learning to Align and Translate. September 1, 2014. arXiv:1409.0473
[cs.CL].
- ^ Luong, Minh-Thang; Pham, Hieu; Manning, Christopher D. Effective Approaches to Attention-based Neural Machine Translation. August 17, 2015. arXiv:1508.04025
[cs.CL].
- ^ He, Cheng. Transformer in CV. Transformer in CV. Towards Data Science. 31 December 2021 [2022-06-08]. (原始內容存檔於2023-04-16).
- ^ Chen, Lili; Lu, Kevin; Rajeswaran, Aravind; Lee, Kimin; Grover, Aditya; Laskin, Michael; Abbeel, Pieter; Srinivas, Aravind; Mordatch, Igor, Decision Transformer: Reinforcement Learning via Sequence Modeling, 2021-06-24, arXiv:2106.01345
- ^ Parisotto, Emilio; Song, Francis; Rae, Jack; Pascanu, Razvan; Gulcehre, Caglar; Jayakumar, Siddhant; Jaderberg, Max; Kaufman, Raphaël Lopez; Clark, Aidan; Noury, Seb; Botvinick, Matthew; Heess, Nicolas; Hadsell, Raia. Stabilizing Transformers for Reinforcement Learning. Proceedings of the 37th International Conference on Machine Learning (PMLR). 2020-11-21: 7487–7498 (英語).
- ^ Radford, Alec; Jong Wook Kim; Xu, Tao; Brockman, Greg; McLeavey, Christine; Sutskever, Ilya. Robust Speech Recognition via Large-Scale Weak Supervision. 2022. arXiv:2212.04356
[eess.AS].
- ^ Monastirsky, Maxim; Azulay, Osher; Sintov, Avishai. Learning to Throw With a Handful of Samples Using Decision Transformers. IEEE Robotics and Automation Letters. February 2023, 8 (2): 576–583. Bibcode:2023IRAL....8..576M. ISSN 2377-3766. doi:10.1109/LRA.2022.3229266.
- ^ Ruoss, Anian; Delétang, Grégoire; Medapati, Sourabh; Grau-Moya, Jordi; Wenliang, Li; Catt, Elliot; Reid, John; Genewein, Tim. Grandmaster-Level Chess Without Search. 2024-02-07. arXiv:2402.04494v1
[cs.LG].
- ^ 11.0 11.1 Wolf, Thomas; Debut, Lysandre; Sanh, Victor; Chaumond, Julien; Delangue, Clement; Moi, Anthony; Cistac, Pierric; Rault, Tim; Louf, Remi; Funtowicz, Morgan; Davison, Joe; Shleifer, Sam; von Platen, Patrick; Ma, Clara; Jernite, Yacine; Plu, Julien; Xu, Canwen; Le Scao, Teven; Gugger, Sylvain; Drame, Mariama; Lhoest, Quentin; Rush, Alexander. Transformers: State-of-the-Art Natural Language Processing. Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations. 2020: 38–45. S2CID 208117506. doi:10.18653/v1/2020.emnlp-demos.6.
- ^ Devlin, Jacob; Chang, Ming-Wei; Lee, Kenton; Toutanova, Kristina. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. 2018-10-11. arXiv:1810.04805v2
[cs.CL].
- ^ 13.0 13.1 13.2 13.3 Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing. Google AI Blog. [2019-08-25]. (原始內容存檔於2021-01-13).
- ^ 14.0 14.1 14.2 Better Language Models and Their Implications. OpenAI. 2019-02-14 [2019-08-25]. (原始內容存檔於2020-12-19).
- ^ Su, Jianlin; Ahmed, Murtadha; Lu, Yu; Pan, Shengfeng; Bo, Wen; Liu, Yunfeng. RoFormer: Enhanced transformer with Rotary Position Embedding. Neurocomputing. 2024-02, 568 [2025-08-11]. ISSN 0925-2312. doi:10.1016/j.neucom.2023.127063.
- ^ Bahdanau, Dzmitry; Cho, Kyunghyun; Bengio, Yoshua. Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473v7
[cs.CL].
- ^ Sequence Modeling with Neural Networks (Part 2): Attention Models. Indico. 2016-04-18 [2019-10-15]. (原始內容存檔於2020-10-21).
- ^ 18.0 18.1 18.2 Alammar, Jay. The Illustrated Transformer. jalammar.github.io. [2019-10-15]. (原始內容存檔於2020-10-18).
- ^ Clark, Kevin; Khandelwal, Urvashi; Levy, Omer; Manning, Christopher D. What Does BERT Look at? An Analysis of BERT's Attention. Proceedings of the 2019 ACL Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP (Florence, Italy: Association for Computational Linguistics). August 2019: 276–286 [2022-06-08]. doi:10.18653/v1/W19-4828
. (原始內容存檔於2020-10-21).
- ^ Constructing Transformers For Longer Sequences with Sparse Attention Methods. Google AI Blog. [2021-05-28]. (原始內容存檔於2021-09-18) (英語).
- ^ Tasks with Long Sequences – Chatbot. Coursera. [2022-06-08]. (原始內容存檔於2020-10-26).
- ^ Reformer: The Efficient Transformer. Google AI Blog. [2020-10-22]. (原始內容存檔於2020-10-22) (英語).
- ^ Zhai. An Attention Free Transformer. arXiv:2105.14103
.
- ^ Tay. Long Range Arena: A Benchmark for Efficient Transformers. arXiv:2011.04006
.
- ^ 25.0 25.1 Wang, Alex; Singh, Amanpreet; Michael, Julian; Hill, Felix; Levy, Omer; Bowman, Samuel. GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding. Proceedings of the 2018 EMNLP Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP (Stroudsburg, PA, USA: Association for Computational Linguistics). 2018: 353–355. S2CID 5034059. arXiv:1804.07461
. doi:10.18653/v1/w18-5446.
- ^ Allard, Maxime. What is a Transformer?. Medium. 2019-07-01 [2019-10-21]. (原始內容存檔於2020-10-17) (英語).
- ^ Yang, Zhilin Dai, Zihang Yang, Yiming Carbonell, Jaime Salakhutdinov, Ruslan Le, Quoc V. XLNet: Generalized Autoregressive Pretraining for Language Understanding. 2019-06-19. OCLC 1106350082.
- ^ Monsters, Data. 10 Applications of Artificial Neural Networks in Natural Language Processing. Medium. 2017-09-26 [2019-10-21]. (原始內容存檔於2020-10-17) (英語).
- ^ Rives, Alexander; Goyal, Siddharth. Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences. bioRxiv 10.1101/622803
.
- ^ Nambiar, Ananthan; Heflin, Maeve; Liu, Simon; Maslov, Sergei; Hopkins, Mark; Ritz, Anna. Transforming the Language of Life: Transformer Neural Networks for Protein Prediction Tasks.. 2020. S2CID 226283020. doi:10.1145/3388440.3412467
.
- ^ Rao, Roshan; Bhattacharya, Nicholas. Evaluating Protein Transfer Learning with TAPE. bioRxiv 10.1101/676825
.
- ^ Bertasias; Wang; Torresani. Is Space-Time Attention All You Need for Video Understanding?. 2021. arXiv:2102.05095
[cs.CV].
- ^ Noever, David; Ciolino, Matt; Kalin, Josh. The Chess Transformer: Mastering Play using Generative Language Models. 2020-08-21. arXiv:2008.04057
[cs.AI].
- ^ Dosovitskiy, Alexey; Beyer, Lucas; Kolesnikov, Alexander; Weissenborn, Dirk; Zhai, Xiaohua; Unterthiner, Thomas; Dehghani, Mostafa; Minderer, Matthias; Heigold, Georg; Gelly, Sylvain; Uszkoreit, Jakob; Houlsby, Neil. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale. 2020. arXiv:2010.11929
[cs.CV].
- ^ Touvron, Hugo; Cord, Matthieu; Douze, Matthijs; Massa, Francisco; Sablayrolles, Alexandre; Jégou, Hervé. Training data-efficient image transformers & distillation through attention. 2020. arXiv:2012.12877
[cs.CV].