Transzformerek és a figyelem mechanizmus · Lecke 05

A többfejű figyelem (multi-head attention)

Egyetlen figyelem egyszerre csak egyféle összefüggést tud jól megragadni. A transzformer ezért nem egyet, hanem több figyelmet futtat párhuzamosan, ezeket hívjuk fejeknek. Ebben a leckében megnézzük, miért jobb ez, hogyan osztja szét a modell a dimenziót a fejek között, és hogyan fűzi össze a végén az eredményüket.

Vissza a tananyaghoz


Miért nem elég egy figyelem

Egy önfigyelem minden tokenhez egyetlen súlyeloszlást ad. Ez azt jelenti, hogy egyszerre egyféle szempont szerint keveri a value vektorokat. A nyelvben viszont egyszerre több összefüggés is fontos lehet. Egy szó egyszerre kapcsolódhat a nyelvtani alanyához, egy távoli tárgyhoz és egy közeli módosítóhoz is. Ha csak egy figyelem van, ezeket a szempontokat egyetlen súlyeloszlásba kell belesűríteni, ami sok információt összemos. A megoldás az, hogy több figyelmet futtatunk egyszerre, mindegyik a maga szempontja szerint.


Több fej, kisebb dimenzió

A többfejű figyelemben a modell nem egyszer, hanem h alkalommal végzi el a figyelmet, mindegyikhez saját tanult W mátrixokkal a query, key és value irányra. Egy ilyen párhuzamos futás egy fej (head). Fontos, hogy a fejek nem a teljes d_model dimenzión dolgoznak, hanem annak egy-egy kisebb szeletén. A tanulmány alapmodelljében h értéke 8, és minden fej a d_k = d_v = d_model / h = 512 / 8 = 64 dimenzión dolgozik. Így a nyolc fej együttes számítási igénye nagyjából annyi, mint egyetlen teljes dimenziós figyelemé, mégis nyolcféle szempontot tanul.


Bemenet d_model = 512 1. fej 64 dim, saját szempont 2. fej 64 dim, saját szempont 8. fej 64 dim, saját szempont Összefűzés 8 × 64 = 512 W output 512 kimenet Nyolc fej párhuzamosan, mindegyik 64 dimenzión, majd összefűzés és záró vetítés
A többfejű figyelem a bemenetet nyolc fejre osztja, mindegyik 64 dimenzión dolgozik, az eredményeket összefűzi, majd egy záró W mátrix vetíti vissza 512 dimenzióba.

A képlet

A többfejű figyelem képlete a fejeket összefűzi, majd egy záró W mátrixszal, amelyet output vetítésnek nevezünk, visszavetíti a d_model dimenzióba. Minden fej maga egy skálázott ponttermékes figyelem, a saját tanult mátrixaival.

MultiHead(Q, K, V) = Concat(fej1, …, fejh) WO
ahol feji = Attention(Q WiQ, K WiK, V WiV)

  1. Vetítés fejenkéntMinden fej saját W mátrixaival vetíti a bemenetet query, key és value irányba, 64 dimenzióra.
  2. Figyelem fejenkéntMinden fej lefuttatja a skálázott ponttermékes figyelmet a maga szempontja szerint.
  3. ÖsszefűzésA nyolc fej 64 dimenziós kimenete egymás mellé kerül, ez összesen 512 dimenzió.
  4. Záró vetítésEgy W output mátrix az összefűzött vektort visszavetíti a d_model dimenzióba.

Mit tanulnak a fejek

Mivel minden fejnek saját tanult mátrixai vannak, a modell a tanítás során különböző szerepekre hangolhatja őket. Egy fej figyelhet elsősorban a közvetlen szomszédokra, egy másik a nyelvtani kapcsolatokra, egy harmadik egy távoli, de fontos szóra. A lényeg, hogy ezt nem mi írjuk elő, hanem a modell alakítja ki magától. A többfejű figyelem így egyszerre több nézőpontból nézi a mondatot, és az összefűzött eredmény ezeket egyesíti. Ez az egyik oka annak, hogy a transzformer gazdag nyelvi összefüggéseket képes megragadni.


d_model, teljes dimenzió512
Fejek száma, h8
Fejenkénti dimenzió, d_k64

8

Nyolc fej, nyolc szempont. Az alapmodell nyolc figyelmet futtat párhuzamosan, mindegyiket 64 dimenzión. A 8 × 64 = 512 összefűzés visszaadja a teljes dimenziót, így a többfejű figyelem beilleszthető a rétegek sorába anélkül, hogy a méret megváltozna.


← Előző lecke Következő lecke →

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 →