Attention Mechanism
Attention Mechanism je technika, vďaka ktorej sa model pri spracovaní textu (alebo obrazu, zvuku) dynamicky zameriava na tie časti vstupu, ktoré sú pre aktuálny krok najdôležitejšie. Predstav si to ako reflektor na javisku: nesvieti stále rovnako na všetko, ale presúva sa tam, kde sa práve deje podstatná akcia. Je to mechanizmus, ktorý v roku 2017 (práca „Attention Is All You Need" — Vaswani et al., Google Brain) odštartoval éru transformerov a moderných veľkých jazykových modelov. Dnes, v roku 2026, stojí attention v jadre prakticky každého produkčného AI systému — od chatbotov cez medicínsku diagnostiku až po generovanie kódu.
1. Čo to je (definícia + analógia)
Attention rieši starý problém rekurentných sietí (RNN): informácia sa stratila skôr, než sa k nej model dostal znova. Namiesto sériového posúvania „pamäti" cez každý token attention umožňuje modelu pozrieť sa priamo na akýkoľvek token v kontexte — v jedinej operácii, naraz.
Tri praktické analógie pomôžu zasadiť mechanizmus do súvislostí:
- Reflektor / zvýrazňovač: keď generuješ ďalšie slovo vo vete, model si „posvieti" na slová, ktoré najviac súvisia s tým, čo má nasledovať. Ostatné zostanú v polotme.
- Knižnica a otázka: máš otázku (čo riešiš) a v knižnici veľa kníh (celý kontext). Attention rýchlo vyberie relevantné pasáže a poskladá z nich odpoveď — bez toho, aby čítala každú stranu od začiatku.
- Selektívna pamäť pri rozhovore: hovoríš s kolegom o projekte. Z desiatich viet, ktoré si povedal, sa tvoj mozog v správnom momente odvolá na tú jednu zásadnú. Attention je práve tento mechanizmus výberu.
2. Query, Key, Value — tri roly každého tokenu
Jadro attention sú tri roly, ktoré dostane každý token. Každá sa naučí cez tréning (sú to naučiteľné matice váh Wq, Wk, Wv):
| Rola | Otázka, ktorú reprezentuje | Analógia |
|---|---|---|
| Query (Q) | „Čo hľadám?" | Hľadaný výraz vo vyhľadávači |
| Key (K) | „Čím sa ponúkam, podľa čoho ma nájdeš?" | Nadpis a metadata dokumentu |
| Value (V) | „Akú informáciu nesiem, ak ma vyberieš?" | Samotný obsah dokumentu |
Model porovná Query každého tokenu s Key všetkých ostatných tokenov v kontexte. Z podobností vypočíta váhy (cez softmax) a výsledok je vážený priemer Values. Tokeny s vysokou podobnosťou Query–Key dostanú vysokú váhu — teda silno ovplyvnia výsledok.
Kľúčové je, že Q, K, V nie sú pôvodné tokeny — sú to ich lineárne projekcie do iného priestoru. Model sa teda učí, ako tokeny premeniť do rolí, ktoré najlepšie slúžia účelu vyhľadávania relevantného kontextu.
3. Scaled dot-product attention (technicky)
Matematicky je to jeden elegantný vzorec:
Attention(Q, K, V) = softmax( (Q · Kᵀ) / √d_k ) · V
A v PyTorch kóde:
import torch
import torch.nn.functional as F
def scaled_dot_product_attention(Q, K, V, mask=None):
d_k = Q.size(-1)
scores = (Q @ K.transpose(-2, -1)) / d_k**0.5 # podobnosti
if mask is not None:
scores = scores.masked_fill(mask == 0, float('-inf'))
weights = F.softmax(scores, dim=-1) # rozdelenie pozornosti
return weights @ V # vážený mix hodnôt
Delenie √d_k (scaling) drží skóre v rozumnom rozsahu, aby softmax neskolaboval do extrémov — pri veľkých hodnotách by sofmax vrátil takmer nuly a jedničky, gradient by zanikol. Škálovanie to stabilizuje.
Výsledkom je pre každý token nový vektor — „mix" informácií zo všetkých ostatných tokenov, vážený ich relevanciou. Toto je vstup do ďalšej vrstvy siete.
4. Druhy attention, ktoré sa oplatí poznať
Nie všetky varianty attention sú rovnaké. Líšia sa tým, čo sa porovnáva s čím a čo je zakryté:
| Typ | Popis | Kde sa používa |
|---|---|---|
| Self-attention | Token sa pozerá na všetky ostatné tokeny v tom istom vstupe | Encoder aj decoder transformera, GPT, BERT |
| Cross-attention | Token z jednej sekvencie sa pozerá na druhú sekvenciu | Prekladač (zdrojový → cieľový jazyk), multimodálne modely |
| Masked (causal) attention | Maska zakryje budúce tokeny — model nevidí dopredu | Autoregresívne generovanie (GPT-štýl) |
| Multi-head attention | Viac paralelných „hláv", každá sleduje iný typ vzťahu | Takmer všade — základ moderných LLM |
| Sparse attention | Každý token sa pozrie len na podmnožinu iných tokenov | Dlhé kontexty, dokumentové modely |
| Sliding window attention | Token sa pozerá len na okolie ±k tokenov | Mistral, Gemma — efektívny dlhý kontext |
Multi-head attention podrobnejšie
Namiesto jedného reflektora máš viac naraz — každá „hlava" (head) zachytáva iný typ vzťahu medzi tokenmi:
- Syntaktická hlava: podmet–prísudok, zhoda rodu a čísla
- Sémantická hlava: synonymá, tematické súvislosti
- Koreferenčná hlava: kto je „on/ona/oni", čo znamená „toto"
- Pozičná hlava: vzťahy na základe vzdialenosti medzi tokenmi
Každá hlava pracuje s nižšou dimenziou (d_model / num_heads) — výpočtová cena teda zostáva podobná ako pri jednej hlave plnej dimenzie. Výstupy všetkých hláv sa na konci zreťazia a lineárne premietnu.
Multi-head attention je ako mať viac analytikov nad tým istým textom: jeden sleduje gramatiku, druhý témy, tretí referencie — a ich závery sa skombinujú.
5. Moderné varianty a optimalizácie (2024–2026)
Klasický attention má kvadratickú cenu O(n²) voči dĺžke kontextu. Pre kratšie vstupy to nevadí, ale modely s kontextom stoviek tisíc až miliónov tokenov potrebujú efektívnejšie riešenia.
FlashAttention
FlashAttention (2022, v3 v roku 2024) nerieši kvadratickú asymptotiku, ale drasticky zrýchľuje výpočet tým, že sa vyhýba pomalým presunom dát medzi pamäťou GPU. Výpočet prebieha po blokoch priamo v rýchlej SRAM — výsledok je rovnaký ako klasický attention, ale 2–4× rýchlejší a s oveľa menšou spotrebou pamäte. Väčšina dnešných open-source aj proprietárnych modelov ho používa ako štandard.
Multi-Query Attention (MQA) a Grouped-Query Attention (GQA)
Kľúčový problém pri generovaní (inference) je tzv. KV cache — model si pamätá Keys a Values pre všetky predošlé tokeny. Pri klasickom multi-head attention to vyžaduje obrovskú pamäť.
- MQA: všetky Query hlavy zdieľajú jednu sadu K a V → dramaticky menší KV cache, rýchlejšia inference
- GQA: kompromis — skupiny hláv zdieľajú K a V → Llama 3, Gemma 2, Mistral a väčšina modelov 2024–2026
| Varianta | K/V hláv | Q hláv | Pamäť KV cache | Kvalita |
|---|---|---|---|---|
| Multi-head (MHA) | = Q hlavám | N | Najvyššia | Najvyššia |
| Grouped-query (GQA) | N/skupina | N | Stredná | Takmer MHA |
| Multi-query (MQA) | 1 | N | Najnižšia | Mierne nižšia |
Ring Attention a distribuovaný kontext
Pre extrémne dlhé kontexty (1M+ tokenov) sa v roku 2024–2025 udomácnil Ring Attention: sekvenciu rozdelia medzi viac GPU, každé GPU počíta attention pre svoju časť a výsledky kolujú po „kruhu" medzi GPU. Takto sa dajú spracovať kontexty, ktoré sa nezmestia na jedinú kartu.
6. Prečo je to dôležité / kde sa to používa
Bez attention by moderné jazykové modely nefungovali v dnešnej kvalite.
- Transformery: attention je ich jadro — self-attention v každej vrstve.
- Preklady, sumarizácie, Q&A: model potrebuje vedieť, ktoré časti textu sú relevantné pre aktuálne generovaný token.
- Multimodálne modely (GPT-4o, Gemini, Claude): cross-attention spája text s obrazom, audiom alebo videom.
- Generovanie kódu: attention sleduje referencie na premenné a funkcie definované ďaleko skôr v súbore.
- Medicína a veda: attention v proteínových modeloch (AlphaFold) sleduje vzťahy medzi aminokyselinami naprieč celou sekvenciou.
- Kontextové okno: keď model „zabudne" dôležitú informáciu, často sa k nej v správnom momente nedostal alebo ju nedokázal uprednostniť — priamo súvisí s limitmi kontextového okna.
7. Výhody a obmedzenia
Výhody
- Dlhý kontext: model spája informácie na veľkú vzdialenosť v texte bez straty.
- Paralelizácia: celá attention matica sa počíta naraz (nie sériovo ako RNN) → rýchlejší tréning.
- Flexibilita: rovnaká myšlienka funguje pre text, obraz, zvuk, proteíny, grafy.
- Interpretovateľnosť: attention váhy sa dajú vizualizovať — vidieť, na čo sa model pozrel (hoci s rezervou).
Obmedzenia
- Kvadratická cena O(n²): klasický attention rastie s druhou mocninou dĺžky kontextu — pri veľmi dlhých vstupoch bolí čas aj pamäť. Rieši to FlashAttention, sparse attention, GQA a ďalšie optimalizácie.
- Nie je to „pochopenie": vysoké attention váhy nie sú zárukou, že model rozumel vzťahu — len že ho štatisticky korelovalo.
- Citlivosť na šum: príliš veľa irelevantného kontextu → model sa zameria na nesprávne veci (tzv. lost-in-the-middle efekt).
- KV cache pamäť: pri dlhej inference rastú pamäťové nároky lineárne — adresuje to GQA/MQA.
8. Čo to znamená pre teba (aj keď nie si programátor)
Pochopenie attention má priamy dopad na to, ako efektívne komunikuješ s AI modelmi.
- Štruktúra promptu pomáha pozornosti: dôležité fakty daj jasne a oddelene — odrážky, nadpis „Pravidlá", oddeľ „dáta" od „úlohy". Model ľahšie nájde, čo je podstatné.
- Opakovanie kritických bodov je legitímne: ak je niečo zásadné, pripomeň to aj na konci zadania — attention to znova „zaváži".
- Dlhý kontext nie je záruka kvality: pomáha sumár na začiatku, jednoznačné kľúčové slová, konzistentné názvy sekcií. Chaotický dlhý prompt môže byť horší než stručný jasný.
- Lost-in-the-middle: fakty pohrabané v strede veľmi dlhého textu majú štatisticky nižšiu šancu, že ich model správne uprednostní. Kritické informácie daj na začiatok alebo koniec.
- Keď model halucinuje, často zlyhá výber: model mohol uprednostniť nesprávne tokeny. Pomôže doplniť chýbajúce fakty explicitne alebo zjednodušiť kontext.
Zhrnutie
- Attention Mechanism priraďuje rôznu dôležitosť častiam vstupu a skladá z nich relevantný „mix" informácie — pre každý token zvlášť, v každej vrstve modelu.
- Funguje cez trojicu Query–Key–Value a vzorec
softmax(QKᵀ/√d_k)·V. - Najčastejšie stretneš self-attention, cross-attention a multi-head attention — základ všetkých moderných transformerov.
- Moderné varianty (FlashAttention, GQA, Ring Attention) riešia kvadratickú cenu a pamäťové nároky pri dlhých kontextoch — sú to optimalizácie, nie zmeny základnej myšlienky.
- Pre teba ako používateľa platí: dobrá štruktúra promptu reálne zvyšuje šancu, že sa model zameria na podstatné — attention to nie je metafora, je to doslovný mechanizmus výberu.