Selvoppmerksomhet er en grunnleggende mekanisme som brukes i nevrale nettverk, spesielt fremtredende i transformatormodeller, som lar dem behandle sekvensielle data effektivt. Det gjør det mulig for modellen å veie forskjellige ord eller elementer i en sekvens annerledes, og fokusere mer på relevante deler under beregningen.
Komponenter av selvoppmerksomhet
-
Queries, Keys og Values: I selvoppmerksomhet transformeres inndatasekvensen til tre vektorer: Query, Key og Value. Disse vektorene er hentet fra inngangssekvensen gjennom lineære transformasjoner, og genererer disse komponentene som vil bli brukt til å beregne oppmerksomhetsskårene.
-
Oppmerksomhetspoeng: Når disse vektorene er oppnådd, beregnes oppmerksomhetspoeng ved å måle likheten mellom Spørringsvektoren og Nøkkelvektorene * av alle elementene i sekvensen*. Dette gjøres vanligvis ved å bruke etpunktprodukt, etterfulgt avskaleringog bruk av ensoftmax-funksjon for å få oppmerksomhetsvekter for hvert element.
-
Vektet sum: oppmerksomhetsvektene som er oppnådd brukes til å veie verdivektorene. En veid sum av disse verdiene, basert på deres respektive oppmerksomhetsvekter, gir resultatet av selvoppmerksomhetslaget.
-
Multi-Head Attention: For å fange opp forskjellige forhold mellom ord eller elementer, utføres flere sett med spørrings-, nøkkel- og verditransformasjoner parallelt, noe som resulterer i flere sett med oppmerksomhetsvekter og utdatavektorer. Disse blir deretter sammenkoblet og transformert igjen for å oppnå det endelige resultatet.
Tilrettelegging for læring på lang rekkevidde avhengigheter
Selvoppmerksomhet utmerker seg ved å fange avhengigheter på lang avstand i sekvenser på grunn av dens evne til å direkte modellere interaksjoner mellom alle elementer i sekvensen. Tradisjonelle arkitekturer som tilbakevendende nevrale nettverk (RNN) lider av forsvinnende eller eksploderende gradientproblemer, noe som begrenser deres evne til å lære langdistanseavhengigheter. Selvoppmerksomhet, på den annen side, kan fange relasjoner mellom fjerne ord eller elementer uten disse problemene, noe som gjør den mer effektiv i å forstå konteksten og relasjonene i sekvensen.
Fordeler fremfor tradisjonelle arkitekturer
-
Parallellisering: Selvoppmerksomhet tillater parallell beregning av oppmerksomhetspoeng for alle elementer i en sekvens, noe som gjør den mer effektiv enn sekvensiell behandling i RNN-er.
-
Langdistanseavhengigheter: I motsetning til RNN-er, som sliter med å fange avhengigheter over lange avstander på grunn av deres sekvensielle natur, kan selvoppmerksomhet fange disse avhengighetene effektivt.
-
Redusert banelengde: Selvoppmerksomhet kobler alle elementene direkte i en sekvens, reduserer banelengden mellom fjerne elementer, og muliggjør bedre gradientflyt under trening.
Begrensninger og beregningsmessige kompleksiteter
-
Kvadratisk kompleksitet: Selvoppmerksomhet innebærer parvise sammenligninger mellom alle elementer i en sekvens, noe som resulterer i en kvadratisk økning i beregningen ettersom sekvenslengden øker. Dette kan være beregningsmessig dyrt for svært lange sekvenser.
-
Minnekrav: Transformatorer, på grunn av deres selvoppmerksomhetsmekanismer, krever ofte mer minne sammenlignet med enklere arkitekturer som CNN eller RNN.
-
Oppmerksomhetsmaskering: Håndtering av sekvenser av variable lengder krever bruk av oppmerksomhetsmasker for å håndtere polstring, noe som kan legge til kompleksitet til modellen og treningsprosessen.
Til tross for disse begrensningene, har selvoppmerksomhet vist seg å være en svært effektiv mekanisme i naturlig språkbehandlingsoppgaver, og pågående forskning tar sikte på å adressere dens beregningsmessige kompleksitet for enda bedre effektivitet og skalerbarhet.