Rok 2017 přinesl revoluci v oblasti zpracování přirozeného jazyka. Přelomová práce „Attention Is All You Need" od Vaswaniho a kol. z Google Brain představila architekturu transformer, která postupně nahradila rekurentní sítě (RNN, LSTM) a stala se základem pro GPT, BERT, T5 a stovky dalších moderních modelů. Pojďme ji rozebrat.
Proč transformer překonal RNN?
Rekurentní neuronové sítě zpracovávaly sekvence postupně – každé slovo bylo závislé na zpracování předchozího. To znamenalo dva problémy: nemožnost paralelizace (trénování bylo pomalé) a problém s dlouhodobými závislostmi (gradient vanishing). Transformer tyto problémy elegantně řeší mechanismem attention, který umožňuje každému tokenu přímo komunikovat s každým jiným tokenem v sekvenci – nezávisle na vzdálenosti.
Tokenizace: Jak model vidí text
Transformer nepracuje se slovy, ale s tokeny. Tokenizér (například BPE – Byte-Pair Encoding nebo WordPiece) rozdělí text na subslova nebo slova a každému přiřadí číslo (token ID). Slovo „nepřekonatelný" může být rozděleno na tokeny jako „nep", „řeko", „natel", „ný".
Každý token ID je pak transformován na husté vektorové reprezentaci – embedding – typicky o dimenzi 768 (BERT-base) nebo 1536 (GPT-3). Tyto embeddingy se učí během trénování.
Positional Encoding: Zachycení pořadí
Na rozdíl od RNN transformer nemá inherentní pojem o pořadí slov. Bez positional encoding by věty „pes kousl muže" a „muž kousl psa" byly identické. Proto se k embedding vektoru přičítá positional encoding – sinusové a kosinusové funkce různých frekvencí, které kódují pozici tokenu v sekvenci.
Moderní modely (RoPE, ALiBi) používají sofistikovanější metody pozičního kódování, které lépe generalizují na delší sekvence než model viděl během trénování.
Self-Attention: Srdce transformeru
Self-attention je mechanismus, který každému tokenu umožňuje „rozhlédnout se" po celé sekvenci a rozhodnout, na které tokeny se zaměřit. Pro každý token jsou vypočítány tři vektory: Query (co hledám?), Key (co nabízím?) a Value (co předám?).
Attention score mezi dvěma tokeny je skalární součin jejich Query a Key vektorů, normalizovaný softmax funkcí. Výstup attention vrstvy je pak váženou kombinací Value vektorů všech tokenů, kde váhy jsou attention scores. Intuitivně: token „banka" v kontextu „finanční banka" bude věnovat velkou pozornost slovům „finanční" a „účet", aby správně interpretoval svůj význam.
Multi-Head Attention: Zachycení různých typů vztahů
Jeden attention mechanismus zachytí jeden typ vztahu. Multi-head attention spouští attention paralelně v H „hlavách" (typicky 8 nebo 12), přičemž každá hlava se specializuje na jiný druh lingvistické závislosti: syntaktické vztahy, koreference, sémantická podobnost.
Výstupy všech hlav jsou konkatenovaný a lineárně transformovaný. Tímto způsobem model zachytí bohatou, víceúrovňovou reprezentaci vztahů v textu.
Feed-Forward Network a Layer Normalization
Po multi-head attention následuje position-wise feed-forward network – dvě lineární vrstvy s ReLU aktivací aplikované nezávisle na každé pozici. Tato část přidává nelineární transformační kapacitu. Celý transformer blok doplňují residual connections a layer normalization, které stabilizují trénování hlubokých sítí.
Encoder vs. Decoder: BERT vs. GPT
Původní transformer měl encoder-decoder architekturu pro strojový překlad. Moderní modely se specializují:
- Encoder-only (BERT, RoBERTa, CzechBERT) – bidirectional attention, vidí celý kontext. Vhodné pro klasifikaci, NER, question answering.
- Decoder-only (GPT-4, Llama 3, Gemini) – causal attention, vidí jen předchozí tokeny. Vhodné pro generování textu, chat.
- Encoder-decoder (T5, mT5, NLLB) – plná architektura pro překlad, sumarizaci, seq2seq úlohy.
Pre-training a Fine-tuning
Transformery se trénují ve dvou fázích. Pre-training na obrovském textovém korpusu (Common Crawl, Wikipedia, knihy) naučí model obecnou jazykovou reprezentaci. Fine-tuning na specifickém datasetu pak model adaptuje pro konkrétní úlohu. Tento transfer learning přístup dramaticky snižuje potřebné množství dat a výpočetních zdrojů pro specializované aplikace.
Praktické využití pro české NLP
Pro práci s češtinou jsou klíčové modely: CzechBERT (trénovaný na českém textu), mBERT a XLM-R (vícejazyčné modely), Seznam.cz Retromae pro embeddingy. Hugging Face Transformers knihovna poskytuje jednoduché API pro použití všech těchto modelů v Pythonu.
Závěr
Transformer architektura není magie – je to elegantní kombinace attention mechanismu, residual connections a normalizačních technik. Pochopení jejích principů vám umožní nejen efektivněji využívat existující modely, ale také informovaně rozhodovat o jejich výběru a doladění pro vaše úlohy.
Chcete se do NLP a transformerů ponořit systematicky? Podívejte se na náš kurz Zpracování přirozeného jazyka, kde transformery implementujeme od základů v PyTorchu.