Transformator (sztuczna inteligencja)
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]
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].

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].
Koder
[edytuj | edytuj kod]
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]
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]:
- Warstwa samouwagi z maską (Masked Multi-Head Attention)
- Wartswa samouwagi z koderem (Multi-Head Attention with encoder)
- Warstwa sieci jednokierunkowej
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]
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.

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]- ↑ 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] .
- ↑ 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.).
- ↑ 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, DOI: 10.35765/pk.2023.4203.06, ISSN 2719-8014 [dostęp 2024-05-29] .
- ↑ Feliks Kurp , Sztuczna inteligencja od podstaw, Gliwice: Helion, 2023, s. 175, ISBN 978-83-8322-123-6 [dostęp 2024-11-22] .
- ↑ Wacław Iszkowski , Ryszard Tadeusiewicz , Na marginesie dyskusji o sztucznej inteligencji, „Nauka”, 2023, s. 49–70, DOI: 10.24425/nauka.2023.148227, ISSN 1231-8515 [dostęp 2024-05-29] (pol.).
- ↑ 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.).
- ↑ 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.).
- ↑ Jürgen Schmidhuber , Learning to Control Fast-Weight Memories: An Alternative to Dynamic Recurrent Networks, „Neural Computation”, 4 (1), 1992, s. 131–139, DOI: 10.1162/neco.1992.4.1.131, ISSN 0899-7667 [dostęp 2024-05-21] (ang.).
- ↑ Dzmitry Bahdanau , Kyunghyun Cho , Yoshua Bengio , Neural Machine Translation by Jointly Learning to Align and Translate, [w:] arXiv, 2014, DOI: 10.48550/ARXIV.1409.0473, arXiv:1409.0473 .
- ↑ Sepp Hochreiter , Jürgen Schmidhuber , Long Short-Term Memory, „Neural Computation”, 9 (8), 1997, s. 1735–1780, DOI: 10.1162/neco.1997.9.8.1735, ISSN 0899-7667 [dostęp 2024-05-21] (ang.).
- ↑ Dzmitry Bahdanau , Kyunghyun Cho , Yoshua Bengio , Neural Machine Translation by Jointly Learning to Align and Translate, arXiv, 19 maja 2016, DOI: 10.48550/arXiv.1409.0473 [dostęp 2025-04-08] .
- ↑ Minh-Thang Luong , Hieu Pham , Christopher D. Manning , Effective Approaches to Attention-based Neural Machine Translation, arXiv, 20 września 2015, DOI: 10.48550/arXiv.1508.04025 [dostęp 2025-04-08] .
- ↑ Thomas Wolf i inni, Transformers: State-of-the-Art Natural Language Processing, Association for Computational Linguistics, 2020, s. 38–45, DOI: 10.18653/v1/2020.emnlp-demos.6 [dostęp 2024-05-21] (ang.).
- ↑ Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processin [online], research.google [dostęp 2024-05-21] (ang.).
- ↑ a b c d The Annotated Transformer [online], nlp.seas.harvard.edu [dostęp 2025-04-08] .
- ↑ a b c Jay Alammar , The Illustrated Transformer [online], jalammar.github.io [dostęp 2025-04-08] .
- ↑ Ketan Doshi , Transformers Explained Visually (Part 1): Overview of Functionality [online], Towards Data Science, 13 grudnia 2020 [dostęp 2025-04-08] (ang.).
- ↑ Ruibin Xiong i inni, On Layer Normalization in the Transformer Architecture, PMLR, 21 listopada 2020, s. 10524–10533 [dostęp 2025-04-08] (ang.).
- ↑ Philipp Dufter , Martin Schmitt , Hinrich Schütze , Position Information in Transformers: An Overview, „Computational Linguistics”, 48 (3), 2022, s. 733–763, DOI: 10.1162/coli_a_00445, ISSN 0891-2017 [dostęp 2025-04-09] .
- ↑ 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] .
- ↑ Alec Radford i inni, Improving Language Understanding by Generative Pre-Training [online], OpenAI [zarchiwizowane z adresu 2021-01-26] .
- ↑ Jacob Devlin i inni, BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, arXiv, 24 maja 2019, DOI: 10.48550/arXiv.1810.04805 [dostęp 2025-04-09] .
- ↑ 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, DOI: 10.18653/v1/2020.emnlp-demos.6 [dostęp 2025-04-17] .
- ↑ Aakanksha Chowdhery i inni, PaLM: Scaling Language Modeling with Pathways, arXiv, 5 października 2022, DOI: 10.48550/arXiv.2204.02311 [dostęp 2025-04-17] .
- ↑ DeepSeek-AI i inni, DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model, arXiv, 19 czerwca 2024, DOI: 10.48550/arXiv.2405.04434 [dostęp 2025-04-17] .
- ↑ Alexey Dosovitskiy i inni, An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale, arXiv, 3 czerwca 2021, DOI: 10.48550/arXiv.2010.11929 [dostęp 2025-05-12] .
- ↑ Aditya Ramesh i inni, Zero-Shot Text-to-Image Generation, arXiv, 26 lutego 2021, DOI: 10.48550/arXiv.2102.12092 [dostęp 2025-05-12] .