Hloubková analýza

Jak fungují transformery: Architektura za GPT a BERT

Přístupné vysvětlení architektury transformerů bez nepřekonatelné matematické bariéry – pro vývojáře a studenty, kteří chtějí skutečně rozumět tomu, co dělají jejich modely.

Vizuální diagram transformer architektury s multi-head attention mechanismem, encoder-decoder bloky a pozičními embeddingy
Martina Vlčková 18. září 2024 15 minut čtení Hloubková analýza

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.