Išsamiai paaiškinkite daugiaaukštę dėmesį: kas yra Q/K/V, kaip skaičiuojami dėmesio svoriai, kodėl yra keli galvai.
sobes.tech AI
Atsakymas iš AI
Daugiašalė dėmesio — tai pagrindinis mechanizmas transformatoriuose, leidžiantis modeliui vienu metu sutelkti dėmesį į skirtingas įvesties sekos dalis.
-
Q (Klausimas), K (Raktas), V (Reikšmė) — tai trys matricų rinkiniai, gaunami iš įvesties duomenų mokomųjų linijinių transformacijų pagalba. Kiekviena sekos pozicija paverčiama į tris vektorius:
- Klausimas — užklausa, kuriai ieškoma aktualios informacijos.
- Raktas — raktas, su kuriuo lyginamas klausimas.
- Reikšmė — reikšmė, kuri grąžinama kaip atsakymas į užklausą.
-
Dėmesio svorių skaičiavimas:
- Apskaičiuojamas skaliarinis daugybos tarp Query ir Key rezultatas kiekvienai pozicijų porai.
- Rezultatas skaliuojamas (dažniausiai dalijamas iš šaknies iš rakto dydžio), siekiant stabilizuoti gradientus.
- Taikomas softmax, kad gauti tikimybinį svorių pasiskirstymą.
- Svoriai dauginami iš atitinkamų reikšmių, ir rezultatai sudedami — tai yra dėmesio išėjimas.
-
Kodėl keli galvai (multi-head)? Kelios galvos leidžia modeliui matyti informaciją iš skirtingų "kampų", tai yra, kiekviena galva mokosi išryškinti skirtingas priklausomybes ir modelius duomenyse. Tai didina išraiškingumą ir modelio kokybę.
Supaprastintas pavyzdys:
# Kiekvienai galvai:
Q_i = X * W_Q_i
K_i = X * W_K_i
V_i = X * W_V_i
dėmesio_svoriai = softmax((Q_i @ K_i.T) / sqrt(d_k))
išėjimas_i = dėmesio_svoriai @ V_i
# Visų galvų išėjimų sujungimas
išėjimas = concat(išėjimas_1, ..., išėjimas_h) * W_O
Kur W_Q_i, W_K_i, W_V_i, W_O — mokomosios matricų, d_k — raktų dydis, o h — galvų skaičius.