Decoder (Transformer) (CS)
Dekodér (angl. Decoder) — v oblasti strojového učení a hlubokého učení jde o komponent neuronové sítě, jehož hlavním úkolem je přeměna zakódované reprezentace (například kontextového vektoru nebo sekvence skrytých stavů získaných od enkodéru) na výstupní sekvenci dat (například text nebo obraz). Dekodér generuje výstupní data krok za krokem, zpravidla v autoregresivním režimu.
V širším smyslu, v teorii informace, je dekodér jakékoli zařízení nebo algoritmus, který přeměňuje zakódovaná data zpět do jejich původního nebo srozumitelného formátu.
Koncepce a účel
Zatímco enkodér odpovídá za porozumění a kompresi vstupních dat, dekodér odpovídá za generování a rozvinutí výstupních dat. Přebírá kompaktní, informačně bohatou reprezentaci a postupně ji přeměňuje do požadovaného formátu, ať už jde o větu v jiném jazyce, textový popis obrázku nebo sekvenci hudebních not.
Klíčovou charakteristikou většiny dekodérů je jejich autoregresivní povaha: pro generování dalšího prvku sekvence (například slova nebo pixelu) využívají jak zakódovanou reprezentaci, tak všechny dříve vygenerované prvky.
Dekodér v různých architekturách
Dekodér v autoenkodéru
V architektuře autoenkodéru plní dekodér úlohu opačnou k enkodéru:
- Enkodér komprimuje vstupní data do skryté reprezentace.
- Dekodér přebírá tuto skrytou reprezentaci a pokouší se z ní rekonstruovat původní data.
Trénování takové sítě umožňuje využívat dekodér samostatně ke generování nových dat prostřednictvím vektorů z latentního prostoru.
Dekodér v rekurentních neuronových sítích (RNN/LSTM)
V klasických modelech převodu sekvence na sekvenci (seq2seq) založených na RNN nebo LSTM představuje dekodér rekurentní síť, která generuje výstupní sekvenci token po tokenu.
- Princip fungování: Dekodér je inicializován koncovým skrytým stavem (kontextovým vektorem) enkodéru. V každém kroku přijímá na vstupu dříve vygenerovaný token a svůj předchozí skrytý stav, poté generuje další token a aktualizuje svůj stav. Tento proces pokračuje, dokud není vygenerován speciální token konce sekvence (`<EOS>`).
Dekodér v architektuře Transformer
Dekodér založený na architektuře Transformer také funguje autoregresivně, ale jeho vnitřní struktura se liší. Skládá se ze zásobníku () identických vrstev, z nichž každá má tři hlavní podvrstvy:
- Maskované vícehlavé vlastní pozornosti (Masked Multi-Head Self-Attention): Tento mechanismus funguje stejně jako v enkodéru, ale s jedním důležitým rozdílem — maskováním. Maska zabraňuje každé pozici „věnovat pozornost" následujícím pozicím v sekvenci. To zaručuje, že predikce pro pozici závisí pouze na již známých výstupech na pozicích , čímž je zachována autoregresivní vlastnost.
- Vícehalavé křížové pozornosti (Multi-Head Cross-Attention): Jde o klíčový mechanismus propojující dekodér s enkodérem. Dotazy (Query) přicházejí z předchozí vrstvy dekodéru, zatímco klíče (Key) a hodnoty (Value) pocházejí z výstupních reprezentací enkodéru. To umožňuje dekodéru v každém kroku generování soustředit se na nejrelevantnější části vstupní sekvence.
- Plně propojená neuronová síť (Feed-Forward Network): Analogická té, která je použita v enkodéru.
Typy modelů založených na dekodéru
Modely enkodér–dekodér
Jde o klasickou architekturu, kde enkodér a dekodér pracují v páru.
- Princip fungování: Enkodér vytváří reprezentaci vstupních dat a dekodér generuje výstupní data s využitím této reprezentace.
- Příklady: Původní Transformer, T5, BART.
Modely pouze-dekodér (Decoder-Only)
Tyto modely, které se staly dominantními v oblasti generativní AI, využívají výhradně zásobník dekodérů Transformeru.
- Princip fungování: V těchto modelech chybí křížová pozornost k enkodéru, protože enkodér není přítomen. Model pracuje čistě v autoregresivním režimu a předpovídá další token na základě všech předchozích tokenů ve stejné sekvenci. Vstupní prompt a již vygenerovaný text jsou zpracovávány společně.
- Využití: Ideální pro úlohy vyžadující pokračování zadaného textu (generování textu, dialogové systémy, chatboti).
- Příklady: Řada GPT, LLaMA, Claude.
Vztah k enkodéru
Vzájemné působení enkodéru a dekodéru je základním principem pro úlohy přeměny.
- Enkodér komprimuje informace o vstupní sekvenci do sady vektorů.
- Dekodér tuto sadu vektorů využívá k postupnému generování nové sekvence.
Křížová pozornost umožňuje dekodéru v každém kroku „konzultovat" enkodér, aby pochopil, na které části vstupního textu se má v daný okamžik soustředit. Například při překladu věty může dekodér při generování německého slova „nahlédnout" na odpovídající anglické slovo ze vstupu.
Viz také
- GPT
Literatura
- Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.