Mechanismus pozornosti (anglicky attention) je způsob, jakým neuronová síť při zpracování jednoho slova zváží, která ostatní slova ve větě jsou pro jeho význam důležitá. Stojí na něm transformer i dnešní jazykové modely typu GPT a BERT. Popsali ho Vaswani a kolektiv v práci Attention Is All You Need z roku 2017.
Pozornost řeší starý problém: význam slova závisí na okolí. Ve větě „koupil jsem si myš k počítači“ určuje slovo „počítač“, že „myš“ není zvíře. Tenhle princip poprvé použil Bahdanau se spoluautory už v roce 2014 pro strojový překlad, transformer ho pak roku 2017 postavil do středu sítě.
Starší sítě, například rekurentní LSTM, četly větu slovo po slovu a vzdálené souvislosti jim unikaly. Pozornost tenhle postup nahradila. Každé slovo se naráz porovná se všemi ostatními a dostane od nich různě silný příspěvek podle toho, jak spolu souvisejí. Podrobný popis celé sítě má samostatné heslo transformerová architektura, tady jde o samotný výpočet pozornosti.
Každý token si spočítá dotaz, klíč a hodnotu
Vstupní text se rozdělí na tokeny a každý token dostane svůj číselný vektor, takzvaný embedding. Z tohoto vektoru si model třemi naučenými maticemi spočítá 3 nové vektory: dotaz (query, Q), klíč (key, K) a hodnotu (value, V).
Přirovnání pomůže. Dotaz je otázka, kterou token klade ostatním: „koho z vás potřebuju?“. Klíč je visačka, kterou se každý token nabízí. Hodnota je obsah, který token předá dál, když si ho někdo vybere. Této variantě, kde Q, K i V pocházejí ze stejné věty, se říká self-attention, tedy pozornost sama na sebe. Trojici Q, K, V převzali autoři z databází, kde se roku 2017 stala základem transformeru.
Skalární součin a softmax určí váhy pozornosti
Model spočítá skalární součin dotazu jednoho tokenu s klíčem každého dalšího. Vyšší součin znamená, že se dvojice k sobě hodí. Tato surová čísla pak projdou funkcí softmax, která je převede na váhy mezi 0 a 1, jež dohromady dávají 1.
Výsledná hodnota tokenu je vážený součet hodnot (V) všech tokenů, kde váhu určila právě softmax. Token si tak přitáhne nejvíc z těch, které jsou pro něj podle klíčů důležité. Celý postup Vaswani roku 2017 popsal jedním vzorcem, kterému se říká scaled dot-product attention.
Attention(Q, K, V) = softmax(Q · Kᵀ / √d_k) · V.
Dělení odmocninou z d_k drží softmax stabilní
Ve vzorci se skalární součin dělí odmocninou z d_k, což je rozměr vektoru klíče. Bez tohoto dělení by u velkých vektorů vycházela hodně velká čísla. Softmax by pak skoro celou váhu 1 přidělil jedinému tokenu a ostatním nechal skoro nulu.
To má praktický důsledek při učení. Když softmax vydá hodnoty blízké 0 a 1, jeho gradient je nepatrný a síť se přestává učit. Dělení odmocninou z d_k drží čísla v rozumném rozsahu a učení běží dál. Autoři proto metodu pojmenovali „scaled“, tedy škálovaná.
Více hlav sleduje víc typů vztahů naráz
Jeden výpočet pozornosti zachytí jeden druh vztahu mezi slovy. Věta jich ale nese víc: kdo s kým souhlasí gramaticky, co na co navazuje významem, co se k čemu vztahuje časově. Proto Vaswani pustil několik výpočtů pozornosti souběžně a každému říká hlava (head).
Původní práce z roku 2017 použila 8 paralelních hlav. Každá má vlastní matice pro Q, K a V, takže se dívá na jiný typ souvislosti. Výstupy hlav se spojí a společně dají bohatší obraz věty. Této variantě se věnuje heslo multi-head attention.
Maskovaná pozornost brání modelu koukat dopředu
Když model text jen čte a rozumí mu, smí se každý token dívat na všechny ostatní, dozadu i dopředu. To využívá enkodér, například v modelu BERT.
Při generování textu je to jinak. Model, který píše slovo po slovu, nesmí vidět slova, která teprve přijdou, jinak by podváděl. Proto se u něj budoucí tokeny zakryjí a jejich váha se nastaví na nulu. Tomu se říká jednosměrná pozornost nebo maskovaná pozornost a používá ji dekodér modelů řady GPT.
Kvadratická náročnost omezuje délku kontextu
Pozornost porovná každý token s každým, takže při 1000 tokenech spočítá zhruba milion dvojic. Výpočet i paměť tak rostou s druhou mocninou délky textu. Odtud plyne, proč mají modely omezené kontextové okno a proč se delší kontext prodražuje.
Právě kvůli této náročnosti vzniká řada úprav, které pozornost zlevňují, třeba tím, že se každý token porovná jen s částí ostatních, jak to dělá model Longformer. Cílem je udržet přínos pozornosti a přitom zvládnout delší vstupy, jaké potřebují dnešní velké jazykové modely.
Nejčastější omyly kolem pozornosti
- Zaměňování pozornosti za paměť – pozornost neukládá nic natrvalo, během jednoho průchodu jen zváží vztahy mezi tokeny. Co je mimo kontextové okno, model nevidí, podobně jako GPT zapomene starší část chatu.
- Představa, že hlavy mají pevné role – někdy se tvrdí, že jedna hlava dělá gramatiku a jiná význam. Rozdělení rolí ale není předem dané, model si ho sám najde při učení a u každé z 8 hlav vypadá jinak.
- Záměna pozornosti a celého transformeru – pozornost je jádro, ale ne celá síť. Kolem ní pracují ještě dopředné vrstvy, normalizace a reziduální spoje s principem převzatým z ResNet, bez nichž by transformerová architektura nefungovala.
Už jste četli? Viz x viz.
S čím se pozornost často nesprávně zaměňuje
Embedding je číselný vektor, který zachycuje význam jednoho tokenu; u modelu BERT má 768 čísel. Pozornost s embeddingy pracuje, ale sama jimi není. Embedding je vstup, pozornost je výpočet, který z nich udělá vektory citlivé na okolí.
Multi-head attention není jiný mechanismus, jen pozornost puštěná v několika hlavách naráz, v základním transformeru jich je 8. Základní jednotkou zůstává jeden výpočet Q, K a V popsaný výše.
Související pojmy
- Transformer – síť postavená na pozornosti, kterou zavedla práce z roku 2017.
- Transformerová architektura – celé uspořádání sítě kolem pozornosti.
- Multi-head attention – pozornost v několika paralelních hlavách.
- Jednosměrná pozornost – maskovaná varianta pro generování textu.
- Token – jednotka textu, mezi kterými se pozornost počítá.
- Embedding – vstupní vektor tokenu, z něhož vznikají Q, K a V.
- Kontextové okno – rozsah tokenů, přes který pozornost dosáhne.
- Enkodér – část sítě s obousměrnou pozorností přes celý vstup.
- Velký jazykový model – model, jehož jádrem je pozornost.