Selvopmærksomhed er en grundlæggende mekanisme, der bruges i neurale netværk, især fremtrædende i transformatormodeller, hvilket giver dem mulighed for effektivt at behandle sekventielle data. Det gør det muligt for modellen at veje forskellige ord eller elementer i en sekvens forskelligt, og fokusere mere på relevante dele under beregningen.
Komponenter af selvopmærksomhed
-
Forespørgsler, Nøgler og Værdier: I selvopmærksomhed transformeres inputsekvensen til tre vektorer: Forespørgsel, Nøgle og Værdi. Disse vektorer opnås fra inputsekvensen gennem lineære transformationer, der genererer disse komponenter, som vil blive brugt til at beregne opmærksomhedsscorerne.
-
Opmærksomhedsscore: Når disse vektorer er opnået, beregnes opmærksomhedsscore ved at måle ligheden mellem Forespørgselsvektoren og Nøglevektorerne * af alle elementer i sekvensen*. Dette gøres typisk ved hjælp af etpunktprodukt, efterfulgt afskaleringog anvendelse af ensoftmax-funktion for at få opmærksomhedsvægte for hvert element.
-
Vægtet sum: De opnåede opmærksomhedsvægte bruges til at veje værdivektorerne. En vægtet sum af disse værdier, baseret på deres respektive opmærksomhedsvægte, giver outputtet af selvopmærksomhedslaget.
-
Multi-Head Attention: For at fange forskellige relationer mellem ord eller elementer udføres flere sæt forespørgsels-, nøgle- og værditransformationer parallelt, hvilket resulterer i flere sæt opmærksomhedsvægte og outputvektorer. Disse sammenkædes og transformeres igen for at opnå det endelige output.
Facilitering af langsigtede afhængigheder
Selvopmærksomhed udmærker sig ved at fange afhængigheder på lang afstand i sekvenser på grund af dens evne til direkte at modellere interaktioner mellem alle elementer i sekvensen. Traditionelle arkitekturer som tilbagevendende neurale netværk (RNN'er) lider af forsvindende eller eksploderende gradientproblemer, hvilket begrænser deres evne til at lære lang rækkevidde afhængigheder. Selvopmærksomhed kan på den anden side fange relationer mellem fjerne ord eller elementer uden disse problemer, hvilket gør den mere effektiv til at forstå konteksten og relationerne i sekvensen.
Fordele i forhold til traditionelle arkitekturer
-
Parallelisering: Selvopmærksomhed giver mulighed for parallel beregning af opmærksomhedsscore for alle elementer i en sekvens, hvilket gør det mere effektivt end sekventiel behandling i RNN'er.
-
Langrækkende afhængigheder: I modsætning til RNN'er, som kæmper med at fange afhængigheder over lange afstande på grund af deres sekventielle karakter, kan selvopmærksomhed fange disse afhængigheder effektivt.
-
Reduceret vejlængde: Selvopmærksomhed forbinder alle elementer direkte i en sekvens, hvilket reducerer vejlængden mellem fjerne elementer, hvilket muliggør bedre gradientflow under træning.
Begrænsninger og beregningsmæssige kompleksiteter
-
Kvadratisk kompleksitet: Selvopmærksomhed involverer parvise sammenligninger mellem alle elementer i en sekvens, hvilket resulterer i en kvadratisk stigning i beregningen, når sekvenslængden øges. Dette kan være beregningsmæssigt dyrt for meget lange sekvenser.
-
Hukommelseskrav: Transformere kræver på grund af deres selvopmærksomhedsmekanismer ofte mere hukommelse sammenlignet med simplere arkitekturer som CNN'er eller RNN'er.
-
Opmærksomhedsmaskering: Håndtering af sekvenser af variable længder kræver brug af opmærksomhedsmasker til at håndtere polstring, hvilket kan tilføje kompleksitet til modellen og træningsprocessen.
På trods af disse begrænsninger har selvopmærksomhed vist sig at være en yderst effektiv mekanisme i naturligt sprogbehandlingsopgaver, og igangværende forskning har til formål at adressere dens beregningsmæssige kompleksitet for endnu bedre effektivitet og skalerbarhed.