A képlet, amelyre minden épül
Az Attention Is All You Need tanulmány a figyelmet egyetlen képletben adja meg. A Q, K és V a query, key és value vektorok mátrixba rendezve, a d_k pedig a query és key vektorok hossza. A képlet a következő.
Ez a sor sűrűnek tűnik, de négy jól elkülönülő lépés van benne. Először a query és a key pontszorzata adja a nyers pontszámokat. Másodszor ezeket elosztjuk a d_k gyökével. Harmadszor a softmax függvény ezekből súlyokat készít, amelyek összege egy. Negyedszer a súlyokkal megszorozzuk a value vektorokat, és összeadjuk őket. Vegyük sorra a négy lépést.
- PontszorzatA query és minden key pontszorzata megadja, mennyire illik a kérdés a címkéhez. Ez a nyers pontszám.
- SkálázásA pontszámokat elosztjuk a d_k gyökével, hogy ne nőjenek túl nagyra.
- SoftmaxA softmax a pontszámokból súlyokat készít, amelyek nullától egyig terjednek és összegük egy.
- Súlyozott valueA súlyokkal megszorozzuk a value vektorokat és összeadjuk. Ez a token új megjelenítése.
Első lépés. A pontszorzat
Két vektor pontszorzata egyetlen szám, amely annál nagyobb, minél inkább egy irányba mutat a két vektor. A figyelemben egy token query vektorát megszorozzuk minden token key vektorával. Így minden query token minden key tokennel kap egy pontszámot. Ez a pontszám azt méri, mennyire illik az adott kérdés az adott címkéhez. Ha az egészet mátrixban nézzük, a Q és K szorzata egy négyzetes táblázatot ad, ahol a sorok a kérdező tokenek, az oszlopok a válaszoló tokenek. Ezt hívjuk figyelemmátrixnak.
Második lépés. Skálázás a d_k gyökével
A pontszorzatok értéke a vektorok hosszával együtt nő. Ha a d_k nagy, a pontszámok is nagyra nőnek, és ez gondot okoz a következő lépésben. A nagy értékeknél a softmax nagyon élessé válik, szinte csak egyetlen tokenre tesz súlyt, a többire alig, és ilyenkor a tanulás lassul, mert a gradiensek elenyészően kicsivé válnak. A megoldás egyszerű. A pontszámokat elosztjuk a d_k gyökével. A tanulmány alapmodelljében a d_k értéke 64, tehát a gyöke 8. Ez az osztás tartja kordában a pontszámokat, ezért is hívjuk a mechanizmust skálázottnak.
Harmadik lépés. A softmax
A softmax függvény tetszőleges számsorból olyan súlyokat készít, amelyek mind nulla és egy közé esnek, és összegük pontosan egy. A nagyobb pontszámhoz nagyobb súly tartozik, de mindegyik kap valamennyit. A figyelemben ez azt jelenti, hogy minden kérdező token szétosztja a figyelmét a többi token között. Egy sor a figyelemmátrixban a softmax után éppen egy ilyen súlyeloszlás. A legjobban illeszkedő token kapja a legnagyobb súlyt, de a mondat többi része is befolyásolja az eredményt.
Negyedik lépés. A súlyozott value összeg
Az utolsó lépésben a softmax súlyaival megszorozzuk a value vektorokat, és összeadjuk őket. Az eredmény minden kérdező tokenhez egy új vektor, amely a mondat többi részének tartalmából áll össze, súlyozva aszerint hogy melyik mennyire fontos. Ez a lényeg. A token kilép a figyelemből egy olyan megjelenítéssel, amely már a környezetét is figyelembe veszi. Amikor a query, a key és a value ugyanabból a sorozatból származik, önfigyelemről (self-attention) beszélünk, mert a sorozat saját magára figyel. Ez a transzformer motorja.
Négy lépés, egy képlet. Pontszorzat, skálázás a d_k gyökével, softmax, majd súlyozott value összeg. Ez a skálázott ponttermékes figyelem. Minden más, amit a következő leckékben látunk, ennek a négy lépésnek a kibővítése vagy megismétlése.
Workshop
AI Transformation Day
Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.
Érdekel a program →