Skaalattu pistetulo ja multi-head
Kohdistakaa huomiota rinnakkaisissa aliavaruuksissa
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.5Skaalattu 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 @ vYksi 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_headsMuotoile 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!
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
- Self-attention: Query, Key ja Value
- Skaalattu pistetulo ja multi-head
- Paikkakoodaus järjestystä varten
- Kootkaa transformer-enkooderin lohko