07 · Architektury · 4 min czytania · Interaktywne · aktualizacja
Czym jest transformer w uczeniu maszynowym i jak działa ta architektura?
W skrócie
Transformer to architektura z bloków samouwagi i warstw MLP z połączeniami rezydualnymi. Liczy całą sekwencję naraz i napędza dzisiejsze modele językowe.
Co to jest
Transformer to architektura sieci neuronowej do przetwarzania sekwencji, zbudowana z powtarzanych bloków, z których każdy ma dwie części: wielogłową samouwagę (tokeny wymieniają się informacją) i sieć MLP działającą na każdym tokenie osobno (każdy token „przetwarza” to, co zebrał). Obie części otaczają połączenia rezydualne i normalizacja warstwy. Architekturę przedstawili Vaswani i współpracownicy w pracy „Attention Is All You Need” (2017).
Intuicja: każdy blok to runda zebrania. Najpierw wszyscy uczestnicy (tokeny) słuchają się nawzajem i notują, co od kogo jest dla nich ważne — to samouwaga. Potem każdy w ciszy przemyśla swoje notatki — to MLP. Po kilkunastu albo kilkudziesięciu rundach reprezentacja każdego tokenu zawiera bogatą wiedzę o jego roli w całym tekście.
Transformer zaczął jako model tłumaczenia (koder czyta zdanie źródłowe, dekoder generuje przekład). Dziś stosuje się trzy warianty: tylko koder (BERT — rozumienie i klasyfikacja tekstu), tylko dekoder (GPT i większość dużych modeli językowych — generowanie) oraz koder–dekoder (T5, modele tłumaczeniowe). Ta sama architektura działa też na obrazach (ViT), dźwięku i białkach.
Mechanizm — dlaczego tak działa
Przepływ w modelu typu GPT: tekst dzieli się na tokeny, każdy token zamienia się na wektor (embedding), dodaje się informację o pozycji. Następnie wektory przechodzą przez N identycznych bloków. W wariancie pre-norm, dziś standardowym, blok to: x = x + Attention(LayerNorm(x)), potem x = x + MLP(LayerNorm(x)). MLP to zwykle dwie warstwy gęste z rozszerzeniem do 4·d i nieliniowością (GELU lub SwiGLU). Na końcu ostatnia normalizacja i warstwa liniowa z softmaksem dają rozkład prawdopodobieństwa następnego tokenu.
Dlaczego to działa tak dobrze? Po pierwsze, samouwaga daje każdemu tokenowi bezpośredni dostęp do każdego innego, więc dalekie zależności nie muszą przeciskać się przez dziesiątki kroków rekurencji jak w RNN. Po drugie, cała sekwencja liczy się równolegle — trening to w ogromnej mierze mnożenie dużych macierzy, w czym GPU są bardzo wydajne. To pozwoliło trenować modele na bezprecedensowych ilościach tekstu, a jakość rosła przewidywalnie ze skalą (prawa skalowania).
Po trzecie, podział pracy: uwaga przenosi informację między pozycjami, MLP przekształca ją w obrębie pozycji. Badania interpretowalności sugerują, że znaczna część wiedzy faktograficznej modelu „siedzi” w warstwach MLP, które stanowią około dwóch trzecich parametrów bloku. Po czwarte, połączenia rezydualne tworzą wspólny „strumień” reprezentacji, do którego każdy blok tylko dopisuje poprawki — dlatego da się stosować dziesiątki bloków.
Model typu dekoder uczy się przewidywać następny token z maską przyczynową: token na pozycji t widzi tylko pozycje 1…t. Dzięki masce jedno przejście przez zdanie z n tokenami daje n przykładów treningowych naraz.
Ograniczenia: koszt samouwagi rośnie kwadratowo z długością kontekstu; przy generowaniu tekst powstaje token po tokenie, więc inferencja jest sekwencyjna; transformer ma słabsze indukcyjne obciążenie niż CNN czy RNN, więc potrzebuje dużo danych. Na małych zbiorach tabelarycznych czy obrazowych często przegrywa z prostszymi modelami.
Na przykładzie
Policzmy parametry GPT-2 small (12 bloków, d = 768, 12 głów, słownik 50 257 tokenów, kontekst 1024). Embeddingi tokenów: 50 257·768 = 38 597 376. Pozycje: 1024·768 = 786 432. Jeden blok: samouwaga 4·768² + 4·768 = 2 362 368, MLP z rozszerzeniem do 3072: 768·3072 + 3072 + 3072·768 + 768 = 4 722 432, dwie normalizacje 3 072 — razem 7 087 872. Dwanaście bloków to 85 054 464, końcowa normalizacja 1 536. Suma: 124 439 808, czyli znane „124 mln” (warstwa wyjściowa współdzieli wagi z embeddingami, więc nie dodaje parametrów). Sprawdziliśmy to, licząc parametry modelu w bibliotece transformers.
Ciekawostka z tego rachunku: MLP to 67% parametrów bloku, uwaga 33%, a sam słownik embeddingów — 31% całego modelu. W większych modelach udział embeddingów szybko maleje. Oryginalny transformer z 2017 roku miał 65 mln parametrów w wersji base i 213 mln w wersji big; ta druga osiągnęła BLEU 28,4 w tłumaczeniu angielski→niemiecki na zbiorze WMT 2014, przy treningu trwającym 3,5 dnia na 8 kartach GPU.
W praktyce
- Gotowe modele: biblioteka Hugging Face
transformers(AutoModel.from_pretrained("gpt2"),AutoModelForSequenceClassification). - W PyTorch są też klocki
nn.TransformerEncoderLayer(d_model, nhead, norm_first=True, batch_first=True)inn.TransformerEncoder. - Typowe hiperparametry treningu: AdamW, rozgrzewka współczynnika uczenia (warmup), potem spadek kosinusowy; obcinanie gradientu do normy 1.
- Do własnych danych zwykle lepiej dostroić gotowy model (fine-tuning, LoRA) niż trenować od zera.
- Częsty błąd: brak maski przyczynowej w modelu generującym — strata treningowa spada podejrzanie nisko, a generowanie jest bezsensowne.
Najczęstsze pytania
- Czym transformer różni się od RNN?
- RNN czyta tekst krok po kroku i przechowuje wszystko w jednym stanie ukrytym. Transformer patrzy na całą sekwencję naraz przez samouwagę, więc łatwiej łączy odległe słowa i trenuje się równolegle, co pozwala na ogromną skalę.
- Co oznacza „T” w GPT?
- GPT to Generative Pre-trained Transformer: model generujący, wstępnie wytrenowany na dużym korpusie tekstu, oparty na transformerze w wariancie tylko z dekoderem.
- Czy transformery działają tylko na tekście?
- Nie. Obrazy dzieli się na łatki (ViT), dźwięk na ramki, białka na aminokwasy — wszystko, co da się przedstawić jako sekwencję tokenów, może przetwarzać transformer.
Źródła
- Vaswani i in. „Attention Is All You Need”, NeurIPS 2017, arXiv:1706.03762.
- Radford i in. „Language Models are Unsupervised Multitask Learners”, raport techniczny OpenAI, 2019.
- Devlin, Chang, Lee, Toutanova „BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”, NAACL 2019.
- Zhang i in. „Dive into Deep Learning”, d2l.ai, rozdz. 11 („Attention Mechanisms and Transformers”).
- Jurafsky, Martin „Speech and Language Processing”, 3rd ed. draft, rozdział o transformerach i dużych modelach językowych, https://web.stanford.edu/~jurafsky/slp3/