Self-attention: mechanismus, který pomáhá jazykovým modelům chápat souvislosti
Self-attention neboli vlastní pozornost je mechanismus, díky kterému může jazykový model při zpracování textu porovnávat jednotlivé tokeny a určovat, jak spolu souvisejí. Tokenem může být celé slovo, jeho část nebo jiný úsek textu. Model tak při interpretaci výrazu zohledňuje nejen jeho bezprostřední okolí, ale i další části věty či dokumentu.
Jak self-attention funguje
Každý vstupní token se převede na číselnou reprezentaci. Z ní model vytvoří tři vektory označované jako dotaz (query), klíč (key) a hodnota (value). Porovnáním dotazu jednoho tokenu s klíči ostatních tokenů model odhaduje, kterým částem vstupu má věnovat větší pozornost. Výsledné váhy pak použije ke kombinaci jejich hodnot.
Zjednodušeně lze říct, že každý token „zjišťuje“, které další tokeny jsou pro jeho význam důležité. Výstupem je nová reprezentace, která obsahuje informace o samotném tokenu i o jeho vztazích s ostatními částmi vstupu.
Proč je důležitá pozornost k celému kontextu
Význam slova často závisí na okolním textu. Například ve větě „Položil knihu na stůl, protože byl těžký“ musí model určit, k čemu se zájmeno „byl“ vztahuje. Self-attention mu umožňuje porovnat jednotlivá slova a využít jejich vzájemné souvislosti při interpretaci věty.
Tento mechanismus pomáhá také při práci se vzdálenějšími částmi textu, například při rozpoznávání odkazů, sledování tématu nebo zachování návaznosti v delším odstavci. Díky tomu se uplatňuje v úlohách, jako jsou překlad, sumarizace, odpovídání na otázky nebo generování textu.
Více hlav pozornosti
Moderní jazykové modely často používají takzvanou vícehlavou pozornost (multi-head attention). Nejde o jednu jedinou sadu výpočtů: několik hlav zpracovává vztahy mezi tokeny paralelně a každá se může zaměřovat na jiné typy souvislostí. Jedna hlava může například zachycovat gramatické vazby, zatímco jiná sleduje vztah mezi zájmenem a podstatným jménem.
Výsledky jednotlivých hlav se následně spojí a zpracují společně. Model tak získává různorodější informace o vstupním textu, než kdyby používal pouze jedinou hlavu pozornosti.
Self-attention v architektuře transformeru
Self-attention tvoří jednu ze základních součástí architektury transformeru, která stojí za mnoha současnými jazykovými modely. Na rozdíl od starších přístupů, které zpracovávaly text převážně postupně, dokáže transformer vyhodnocovat vztahy mezi více tokeny paralelně. To usnadňuje efektivní trénování na rozsáhlých souborech dat.
Samotná pozornost však nezajišťuje informaci o pořadí slov. Transformer proto využívá také poziční informace, které modelu napovídají, kde se token ve vstupní posloupnosti nachází. Kombinace těchto informací s mechanismem pozornosti umožňuje zohlednit jak obsah, tak pořadí textu.
Výhody a omezení mechanismu
Self-attention je užitečný především tím, že umožňuje pružně zachytit vztahy mezi tokeny a přizpůsobit jejich důležitost konkrétnímu kontextu. Zároveň podporuje paralelní zpracování, což je výhodné při trénování modelů.
Mechanismus má ale i svá omezení. Výpočetní a paměťové nároky běžné self-attention rostou s délkou vstupní posloupnosti přibližně kvadraticky. Zpracování velmi dlouhých dokumentů proto může být nákladné a vyžaduje optimalizace nebo speciální varianty pozornosti. Navíc skutečnost, že model některým tokenům přiřadí vyšší váhu, sama o sobě neznamená, že jeho vnitřní rozhodování lze jednoduše a úplně vysvětlit.
Význam self-attention pro jazykové modely
Self-attention umožňuje jazykovému modelu propojit informace z různých částí vstupu a vytvářet kontextově bohatší reprezentace textu. Právě schopnost vyhodnocovat vztahy mezi slovy a dalšími tokeny patří mezi důvody, proč se transformery staly základem mnoha moderních systémů pro zpracování přirozeného jazyka.
