Deep Learning Academy · Oppitunti

Skaalattu pistetulo ja multi-head

Kohdistakaa huomiota rinnakkaisissa aliavaruuksissa

Oppitunti 2/413 vaihetta

Skaalattu pistetulo ja multi-head on ilmainen Deep Learning Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Deep Learning Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Deep Learning Academy-kurssilla on yhteensä 4 oppituntia.

Skaalausongelma

Kun key-vektorit ovat pitkiä, pistetulopistemäärät kasvavat valtaviksi ja softmax muuttuu erittäin jyrkäksi. Se tuhoaa gradientit, joten meidän on skaalattava pistemääriä alaspäin.

Jaa luvulla neliöjuuri d

Ratkaisu on jakaa jokainen pistemäärä keyn ulottuvuuden neliöjuurella. Näin luvut pysyvät vakaalla alueella ennen softmaxia.

scores = (q @ k.transpose(-2, -1)) / d_k ** 0.5

Skaalattu pistetuloihin perustuva huomio

Yhdistä vaiheet: pisteytä, skaalaa, käytä softmaxia ja yhdistä valut. Tämä nelivaiheinen menetelmä on kuuluisa skaalattu pistetulohuomio.

w = scores.softmax(dim=-1)
out = w @ v

Yksi pää, yksi näkökulma

Yksi huomio-pää oppii vain yhden tavan yhdistää tokeneita. Kieli sisältää kuitenkin samanaikaisesti monia suhteita, joten yksi pää on rajoittava.

Monta päätä rinnakkain

Monipäinen huomio suorittaa useita huomio-päitä rinnakkain. Jokaisella on omat Q-, K- ja V-projektionsa, ja jokainen toimii eri aliavaruudessa.

Jaa ulottuvuus

Mallia ei levennetä, vaan mallin ulottuvuus jaetaan päiden kesken, jolloin jokainen pää käsittelee rinnakkain pienempää osaa.

d_head = d_model // num_heads

Muotoile päiksi

Jotta päät voidaan suorittaa rinnakkain, muotoilet Q:n, K:n ja V:n lisäämällä pääakselin ja suoritat huomion itsenäisesti kussakin päässä.

q = q.view(B, T, H, d_head).transpose(1, 2)

Erilaiset kaavat

Yksi pää voi seurata kielioppia ja toinen yhdistää pronominin substantiiviinsa. Useat päät tallentavat saman syötteen sisältämiä monipuolisia kaavoja.

Ketjuta päät

Kun jokainen pää on tuottanut tulosteensa, ketjutat ne takaisin yhdeksi alkuperäisen mallin ulottuvuuden vektoriksi.

out = out.transpose(1, 2).reshape(B, T, d_model)

Lopullinen projektio

Viimeinen tulosteen projektio yhdistää ketjutettujen päiden tulokset, jolloin malli voi yhdistää kaiken, mitä kukin pää löysi.

out = self.W_o(out)

Käytä valmista toteutusta

PyTorch sisältää käytännössä nn.MultiheadAttention-toteutuksen, joten muotoiluja tarvitsee harvoin tehdä käsin. Matematiikan tunteminen auttaa silti virheenkorjauksessa.

attn = nn.MultiheadAttention(d_model, num_heads)

Pikakertaus

Varmistetaan, miksi skaalaamme pistemääriä.

Kertaus

Näimme, kuinka skaalaus vakauttaa softmaxin ja kuinka monipäinen huomio jakaa työn rinnakkaisten päiden kesken, ketjuttaa tulokset ja projisoi ne. Edistyt hienosti!

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Skaalattu pistetulo ja multi-head” ilmainen?

Kyllä – oppitunnin ”Skaalattu pistetulo ja multi-head” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Deep Learning Academy-kurssin, päivitä CoddyKit PROhon. Deep Learning Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Skaalattu pistetulo ja multi-head”?

Kohdistakaa huomiota rinnakkaisissa aliavaruuksissa Harjoittelet Deep Learning Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Deep Learning Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Deep Learning Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Skaalattu pistetulo ja multi-head”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Deep Learning Academy-oppitunnilla?

Kyllä. Jokainen Deep Learning Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Self-attention: Query, Key ja Value
  2. Skaalattu pistetulo ja multi-head
  3. Paikkakoodaus järjestystä varten
  4. Kootkaa transformer-enkooderin lohko
← Takaisin: Deep Learning Academy