Sobes.tech
Middle — Senior

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:

    1. Apskaičiuojamas skaliarinis daugybos tarp Query ir Key rezultatas kiekvienai pozicijų porai.
    2. Rezultatas skaliuojamas (dažniausiai dalijamas iš šaknies iš rakto dydžio), siekiant stabilizuoti gradientus.
    3. Taikomas softmax, kad gauti tikimybinį svorių pasiskirstymą.
    4. 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.