Przejdź do zawartości

Transformator (sztuczna inteligencja)

Z Wikipedii, wolnej encyklopedii

Transformator[1][2][3][4] (lub transformer[5][6]) – architektura uczenia głębokiego opracowana przez Google i oparta na zrównoleglonym mechanizmie uwagi, zaproponowana w 2017 w artykule zatytułowanym „Attention Is All You Need” („Uwaga to wszystko, czego potrzebujesz”)[7]. Zastosowany w transformatorach mechanizm uwagi (ang. attention) wywodzi się z algorytmu zaproponowanego przez Bahdanau i innych w 2014 do tłumaczenia maszynowego oraz mechanizmu Fast Weight Controller przedstawionego w 1992[8][9].

Przewagą transformatorów nad rekurencyjnymi sieciami neuronowymi, takimi jak długa pamięć krótkotrwała, jest to, że nie mają jednostek rekurencyjnych, a zatem wymagają krótszego uczenia[10]. Jedna z odmian transformatorów została zastosowana do uczenia dużych modeli językowych.

Architektura ta początkowo stworzona jako mechanizm ulepszenia architektur tłumaczenia maszynowego[11][12], a obecnie ta architektura jest wykorzystywana w przetwarzaniu języka naturalnego i rozpoznawaniu obrazów jak i w przetwarzaniu dźwięku i przetwarzaniu multimodalnym (łączącym różne obszary, np. rozpoznawanie języka i obrazów). Doprowadziła ona również do rozwoju wstępnie wytrenowanych systemów, takich jak GPT[13] i BERT[14].

Architektura

[edytuj | edytuj kod]
Architektura transformera z jedną warstwą kodera i dekodera oraz oryginalnym umiejscowieniem warstwy normalizacyjnej.

Transformator w swojej podstawowej formie składa się zasadniczo z połączonych szeregowo koderów i dekoderów[7][15][16]. Sekwencja wejściowa jest przekształcana w reprezentację wektorową za pomocą tzw. warstwy osadzającej (embedding layer). Wagi tej warstwy są dostosowywane w trakcie treningu. W przypadku transformatorów dodatkowo stosuje się kodowanie pozycji (position encoding), dzięki któremu można uwzględnić kolejność słów[15].

Sekwencja wejściowa (np. zdanie) jest przekazywana w formie reprezentacji wektorowej do serii koderów i przekształcana w wewnętrzną reprezentację, która w uproszczeniu oddaje znaczenie tego, co zostało podane na wejściu. Następnie ta wewnętrzna reprezentacja trafia do dekoderów, które na jej podstawie tworzą sekwencję wyjściową (np. tłumaczenie na inny język)[16].

Dane wejściowe są przetwarzane w trybie wsadowym (w grupach, tzw. batchach), a maksymalna długość sekwencji, którą można wprowadzić, zależy od rozmiaru ścieżki koder-dekoder[15]. W zależności od wielkości sieci można przetwarzać na przykład pojedyncze zdania lub całe akapity. W przypadku sekwencji wejściowych krótszych niż pojemność ścieżki koder-dekoder stosuje się wypełnianie (ang. padding), aby zapełnić całą sekwencję wejściową[15]. Koder składa się z modułu samouwagi (self-attention) oraz modułu jednokierunkowego (feedforward), natomiast dekoder składa się z modułu samouwagi, modułu uwagi kodera-dekodera i modułu jednokierunkowego[16].

Transformator jest złożony z warstw kodera i dekodera nałożonych na siebie

Transformatory rozwiązują problem zrównoleglenia, przez wykorzystanie koderów i dekoderów wraz z modułami uwagi. Moduły uwagi przyspieszają proces tłumaczenia kolejnych sekwencji. Wszystkie kodery mają identyczną architekturę, a dekodery są do siebie bardzo podobne. Każdy koder składa się z dwóch warstw: modułu samouwagi i modułu jednokierunkowego. Sekwencja wejściowa trafia najpierw do warstwy samouwagi. Dekoder posiada obie te warstwy, ale pomiędzy nimi znajduje się warstwa uwagi pomagająca dekoderowi skupić się na najistotniejszych elementach wejścia[17]. Ponadto architektura zawiera połączenia rezydualne i warstwy normalizujące[18].

Jeden blok kodera

Zasadę działania kodera można przedstawić za pomocą funkcji z , gdzie:

Jak widać powyżej, funkcje softmax i ReLU są używane do obliczeń[19].

Dekoder

[edytuj | edytuj kod]
Jeden blok dekodera

Podczas inferencji, dekoder może być użyty do autoregresywnego generowania sekwencji. Dekoder jako wejście dostaje wartość startową sekwencji po czym przekazuje kolejny najbardziej prawdopodobny token, który jest przekazany do kolejnego dekodera[20].

Każdy dekoder składa się z trzech części[20]:

Adaptacje architektury

[edytuj | edytuj kod]

Duże modele językowe nie używane do pierwotnego zastosowania jakim jest tłumaczenie tekstu, które nie muszą przewidywać całych zdań tylko z kodera lub dekodera z oryginalnej architektury transformera. Wczesne modele GPT korzystają tylko z modeli bazujących na dekoderach wytrenowane aby przewidywać kolejny token w sekwencji[21], a model BERT od Google wykorzystuje tylko warstwę koderów wytrenowaną aby przewidywać losowy zamaskowany token w sekwencji[22].

Dalsze usprawnienia

[edytuj | edytuj kod]

Dostępne implementacje

[edytuj | edytuj kod]

Model transformatora został zaimplementowany w standardowych bibliotekach do głębokiego uczenia jak TensorFlow i PyTorch. Hugging Face udostępnia bibliotekę Transformers z architekturami transformatorów i modelami wstępnie wytrenowanymi[23].

Uwaga wielozapytaniowa

[edytuj | edytuj kod]
Porównanie różnych mechanizmów uwagi wraz z ilością wymaganej pamięci podręcznej dla wartości KV

Uwaga wielozapytaniowa (ang. Multi-Query Attention) zmienia standardową uwagę wieloczłonową[24], to znaczy:

jest zastąpiona przez tylko jedna macierz wag

Podejście to ma neutralny wpływ na jakość modelu i szybkość treningu ale przyspiesza szybkość inferencji.

Architektura DeepSeek V2 z wyróżnioną ukrytą uwagą wieloczłonową wraz z wariantem mieszanki ekspertów

Ukryta uwaga wieloczłonowa (ang. Multihead Latent Attention) jest dodatkowym rozszerzeniem architektury uwagi wieloczłonowej, w której każdy wektor wejściowy jest dzielony na dwie niskowymiarowe części, jedna dla zapytania (Q vector) i jedna dla klucza i wartości (KV vector). Ta modyfikacja zmniejsza wymaganą pamięć podręczną, ponieważ wektory są niskowymiarowe[25].

Multimodalność

[edytuj | edytuj kod]

Transformatory mogą być również użyte do modalności wejściowej i wyjściowej, zazwyczaj poprzez tokenizację modalności.

Transformator wizyjny jest adaptacją transformatora do zastosowań wizji komputerowej poprzez rozbicie obrazów wejściowych na serię fragmentów, przekształcenie ich w wektory i traktowanie ich jak tokenów w standardowym transformatorze[26].

Do generowania obrazów, późniejsze wersje DALL-E są oparte na dekoderach transformatora generujących tekst, który potem jest konwertowany przez autoenkoder wariacyjny do obrazu[27].

Przypisy

[edytuj | edytuj kod]
  1. Aurélien Géron, Uczenie maszynowe z użyciem Scikit-Learn i TensorFlow, Krzysztof Sawka (tłum.), Wydanie II, aktualizacja do modułu TensorFlow 2, Gliwice: Helion, 2020, s. 539, ISBN 978-83-283-6002-0 [dostęp 2024-06-24].
  2. Sztuczna inteligencja albo nas zbawi, albo zabije. Mam tyle samo nadziei, co obaw [online], CHIP - Technologie mamy we krwi!, 18 marca 2023 [dostęp 2024-05-29] (pol.).
  3. Bożena Jaskowska, Książki pisane przez sztuczną inteligencję: Teraźniejszość oraz refleksje i pytania o przyszłość, „Perspektywy Kultury”, 42 (3), 2023, s. 39–64, DOI10.35765/pk.2023.4203.06, ISSN 2719-8014 [dostęp 2024-05-29].
  4. Feliks Kurp, Sztuczna inteligencja od podstaw, Gliwice: Helion, 2023, s. 175, ISBN 978-83-8322-123-6 [dostęp 2024-11-22].
  5. Wacław Iszkowski, Ryszard Tadeusiewicz, Na marginesie dyskusji o sztucznej inteligencji, „Nauka”, 2023, s. 49–70, DOI10.24425/nauka.2023.148227, ISSN 1231-8515 [dostęp 2024-05-29] (pol.).
  6. Leandro von Werra, Lewis Tunstall, Thomas Wolf, Przetwarzanie języka naturalnego z wykorzystaniem transformerów: budowanie aplikacji językowych za pomocą bibliotek Hugging Face, Grzegorz Werner (tłum.), Gliwice: Helion, 2024, ISBN 978-83-289-0711-9 [dostęp 2025-04-16] (pol.).
  7. a b Ashish Vaswani i inni, Attention is All you Need, „Advances in Neural Information Processing Systems”, 30, Curran Associates, Inc., 2017 [dostęp 2024-05-21] (ang.).
  8. Jürgen Schmidhuber, Learning to Control Fast-Weight Memories: An Alternative to Dynamic Recurrent Networks, „Neural Computation”, 4 (1), 1992, s. 131–139, DOI10.1162/neco.1992.4.1.131, ISSN 0899-7667 [dostęp 2024-05-21] (ang.).
  9. Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio, Neural Machine Translation by Jointly Learning to Align and Translate, [w:] arXiv, 2014, DOI10.48550/ARXIV.1409.0473, arXiv:1409.0473.
  10. Sepp Hochreiter, Jürgen Schmidhuber, Long Short-Term Memory, „Neural Computation”, 9 (8), 1997, s. 1735–1780, DOI10.1162/neco.1997.9.8.1735, ISSN 0899-7667 [dostęp 2024-05-21] (ang.).
  11. Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio, Neural Machine Translation by Jointly Learning to Align and Translate, arXiv, 19 maja 2016, DOI10.48550/arXiv.1409.0473 [dostęp 2025-04-08].
  12. Minh-Thang Luong, Hieu Pham, Christopher D. Manning, Effective Approaches to Attention-based Neural Machine Translation, arXiv, 20 września 2015, DOI10.48550/arXiv.1508.04025 [dostęp 2025-04-08].
  13. Thomas Wolf i inni, Transformers: State-of-the-Art Natural Language Processing, Association for Computational Linguistics, 2020, s. 38–45, DOI10.18653/v1/2020.emnlp-demos.6 [dostęp 2024-05-21] (ang.).
  14. Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processin [online], research.google [dostęp 2024-05-21] (ang.).
  15. a b c d The Annotated Transformer [online], nlp.seas.harvard.edu [dostęp 2025-04-08].
  16. a b c Jay Alammar, The Illustrated Transformer [online], jalammar.github.io [dostęp 2025-04-08].
  17. Ketan Doshi, Transformers Explained Visually (Part 1): Overview of Functionality [online], Towards Data Science, 13 grudnia 2020 [dostęp 2025-04-08] (ang.).
  18. Ruibin Xiong i inni, On Layer Normalization in the Transformer Architecture, PMLR, 21 listopada 2020, s. 10524–10533 [dostęp 2025-04-08] (ang.).
  19. Philipp Dufter, Martin Schmitt, Hinrich Schütze, Position Information in Transformers: An Overview, „Computational Linguistics”, 48 (3), 2022, s. 733–763, DOI10.1162/coli_a_00445, ISSN 0891-2017 [dostęp 2025-04-09].
  20. a b Czym jest i jak działa transformer (sieć neuronowa)? - Mirosław Mamczur [online], miroslawmamczur.pl, 20 grudnia 2020 [dostęp 2025-04-09].
  21. Alec Radford i inni, Improving Language Understanding by Generative Pre-Training [online], OpenAI [zarchiwizowane z adresu 2021-01-26].
  22. Jacob Devlin i inni, BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, arXiv, 24 maja 2019, DOI10.48550/arXiv.1810.04805 [dostęp 2025-04-09].
  23. Thomas Wolf i inni, Transformers: State-of-the-Art Natural Language Processing, Qun Liu, David Schlangen (red.), Online: Association for Computational Linguistics, październik 2020, s. 38–45, DOI10.18653/v1/2020.emnlp-demos.6 [dostęp 2025-04-17].
  24. Aakanksha Chowdhery i inni, PaLM: Scaling Language Modeling with Pathways, arXiv, 5 października 2022, DOI10.48550/arXiv.2204.02311 [dostęp 2025-04-17].
  25. DeepSeek-AI i inni, DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model, arXiv, 19 czerwca 2024, DOI10.48550/arXiv.2405.04434 [dostęp 2025-04-17].
  26. Alexey Dosovitskiy i inni, An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale, arXiv, 3 czerwca 2021, DOI10.48550/arXiv.2010.11929 [dostęp 2025-05-12].
  27. Aditya Ramesh i inni, Zero-Shot Text-to-Image Generation, arXiv, 26 lutego 2021, DOI10.48550/arXiv.2102.12092 [dostęp 2025-05-12].