Transformatoren: Byggeklossen bak moderne maskinlæring

Anne Skjaerseth
PwC Norge
Published in
10 min readMay 8, 2024

I den stadig utviklende verdenen av kunstig intelligens (AI) kan det være vanskelig å vite hvor man skal begynne. Gjennom teknologier som ChatGPT, møter vi ofte AI-modeller i hverdagen. Så, la oss ta utgangspunkt i noe kjent, nemlig ChatGPT. GPT står for Generative Pre-Trained Transformers. Vi har tidligere utforsket generativ AI i helhet, i artikkelen “Fra begrep til bruk: Et dypdykk i generativ AI og dens påvirkning på vår hverdag”. I denne artikkelen skal vi fokusere på et av de mest sentrale konseptene i generativ AI, nemlig “T”-en i GPT: Transformator.

Transformatorer er på mange måter byggeklossen som moderne maskinlæring baseres på.

Innen akademia har man forsket på maskinlæring i lang tid, men det store gjennombruddet kom med forskningsartikkelen “Attention is all you need” som ble publisert i 2017 av åtte forskere som jobbet for Google. Artikkelen beskriver en ny “deep learning”-arkitektur, en underkategori av maskinlæring, nemlig transformatorer. Mange anser dette som det grunnleggende fundamentet i moderne maskinlæring, og det har vært en sentral faktor i den eksponentielle veksten vi har sett siden 2017. Dersom man ser på GPT-1 eller liknende modeller er de nærmest ikke sammenlignbare med dagens modeller.

Hva er en transformator?

Transformatorer er en spesifikk type nevralt nettverk som beregner sannsynligheten for det neste ordet i en sekvens basert på de foregående ordene. I den opprinnelige transformator-modellen, som ble beskrevet i “Attention Is All You Need”, var hovedformålet tekstoversettelse. Ved å mate inn tekst på ett språk, kunne transformatorer beregne en sannsynlig oversettelse til et annet språk. La oss ta et eksempel for å forstå dette konseptuelt.

Anta at vi har en setning på norsk som vi ønsker å oversette til engelsk. Setningen er “Jeg elsker å være ute”.

Når vi mater denne setningen inn i transformator-modellen, vil den først bryte ned setningen i tokens, som vi kommer tilbake til senere. I dette tilfellet kan disse være hvert enkelt ord. Så vi har “Jeg”, “elsker”, “å”, “være”, “ute”.

Transformator-modellen vil deretter prøve å forstå sammenhengen mellom disse ordene. Den vil se på hvert ord i kontekst av de andre ordene i setningen. For eksempel, ordet “elsker” er direkte relatert til “Jeg” (subjektet) og “å være ute” (objektet).

Basert på denne forståelsen, vil transformator-modellen beregne en sannsynlig oversettelse til engelsk. Den vil se på hvert ord på norsk, forstå dets betydning og kontekst, og finne det mest passende engelske ordet. Resultatet kan være noe som “I love to be outside”.

Photo by Kieran Wood on Unsplash

Det er viktig å merke seg at dette er en forenklet forklaring. I virkeligheten vil transformator-modellen ta hensyn til mange flere faktorer, som grammatikkregler, kulturelle nyanser, og så videre. Men grunnleggende sett er dette hvordan transformator-modellen fungerer når den oversetter tekst fra ett språk til et annet.

Hva kan en transformator brukes til?

Det ble raskt tydelig at transformatorer hadde et mye bredere anvendelsesområde enn først antatt. Ikke bare kunne de brukes til oversettelse, men også til å fullføre ufullstendige setninger.

For eksempel, hvis man mater inn teksten “Hovedstaden i Norge er”, vil transformatorer kunne beregne at det neste ordet med høy sannsynlighet vil være “Oslo”. Dette er mulig fordi transformatorer er trent på store mengder data. Hvis transformatoren derimot er trent på tekster som refererer til hovedstaden som “Christiania”, vil modellen velge det ordet.

Transformatorer kan generere lengre tekster som gir inntrykk av å svare tankefullt på spørsmål ved å gjenta denne prosessen. Ved gjentagelse blir det nye ordet “Oslo” lagt til i input-teksten “Hovedstaden i Norge er”. Dette er mulig fordi transformatorer har en banebrytende evne til å håndtere store, sammenhengende datamengder ved å bryte dem ned og deretter rekonstruere dem.

Photo by Marian Rotea on Unsplash

I denne artikkelen fokuserer vi utelukkende på tekstdata for enkelhets skyld, men det er viktig å merke seg at transformator-modellen også kan brukes effektivt på andre typer data, som bilder og lyd.

Hvordan fungerer en transformator?

For å forklare hva som skjer inne i en transformator, kan vi bryte ned prosessen i to steg. I første steg gjennomgår input-dataen en prosess kalt “embedding” etterfulgt av prosessen i det andre steget som kalles “attention”.

Figur 1 illustrerer disse hovedkomponentene som vi nå vil utforske ytterligere.

Figur 1: Fra “Attention Is All You Need” av Vaswani et al.

Fra ord til vektor: Embedding

Det første steget er embeddingen. Som figuren over illustrerer er dette et lite steg, men likevel helt avgjørende for den fullstendige prosessen.

Det første som skjer er at teksten som sendes inn blir delt opp i mindre biter, kalt “tokens”, og hver token får en vektor som representerer ordet.

En token består som oftest av fire tegn, men for enkelhets skyld kan vi se for oss at en token tilsvarer et ord. Hver token blir tilegnet en vektor som representerer ordet, og det er denne prosessen som kalles embedding. Ord som minner om hverandre vil ha en vektor med liknende verdi. For at det skal være enkelt for transformator-modellen å skille mellom ordene skjer dette i flere dimensjoner — for eksempel består embeddings i GPT-3 av 12288 dimensjoner. Ettersom mennesker ikke er i stand til å se for seg mer enn tre dimensjoner, forklarer vi konseptet basert på et tre-dimensjonalt verktorrom.

Se for deg at vektorene for alle ord starter i origo og peker ut i rommet, i en retning, og med en gitt lengde som er styrt av verdiene i vektoren.

Eksempelvis, hvis vi legger inn vektoren til ordet “menneske” og legger inn verdien til ordene “mann” og “dame”, vil alle disse vektorene peke i nærheten av hverandre. Om vi deretter legger inn ordene “onkel” og “tante” vil disse også være i samme område, men “onkel” vil være nærmere ordet “mann” mens “tante” vil være nærmere ordet “dame”. Interessant nok vil man også kunne se at avstanden mellom “mann” og “dame” vil være omtrent like lang som avstanden mellom “onkel” og “tante”.

Måten disse ordene beregnes er ved hjelp av en vektordatabase. Utarbeidelse av vektordatabasen er et viktig steg i treningen, og er en del av den ikke-veiledede (unsupervised) treningen som modellen gjennomgår. Ikke-veiledet trening er et begrep som beskriver trening uten fasit, og går i stor grad ut på å gruppere data etter diverse likheter. Under videre trening av modellen brukes også veiledet (supervised) trening blant annet med store forhåndsdefinerte datasett, som kan fortelle modellen hva som er riktig. Veiledet trening gjennomføres også gjerne med mennesker i et senere steg, der man sjekker kvaliteten på ulike resultater.

Photo by Evaldas Grižas on Unsplash

Treningen har som formål å tillegge modellens parametre vekter, som senere brukes til å beregne hvilke ord som er riktige å bruke til en gitt oppgave. Disse vektene er tallverdier som representerer betydningen av hver parameter i modellen. Når modellen brukes senere til å utføre en oppgave, brukes disse vektene til å beregne hvilke ord som er mest passende å bruke i den gitte oppgaven. Med andre ord, vektene hjelper modellen med å bestemme hvilke ord som er viktigere enn andre når modellen skal utføre en oppgave. Jo høyere vekt en parameter har, jo mer betydning har den for modellen. Dermed kan vektene i modellens parametere anses som en form for prioritering som hjelper modellen med å ta beslutninger basert på hva som er viktigst for oppgaven den skal utføre.

Det høres simpelt ut, men GPT-3 har 175 milliarder parametre og GPT-4 har blitt estimert til å ha så mange som 1.500 milliarder parametre, som er et tall som er langt høyere enn noe man klarer å forestille seg¹.

Hvis vi likevel skal gi det et forsøk, tilsvarer det forbruket i kroner til alle nordmenn i løpet av et helt år, og omtrent det samme som antall sekunder som har gått de siste 50.000 årene. Ifølge «Oxford English Dictionary» er det omtrent 170.000 ord i det engelske språk som brukes i dag. Det vil si at man i teorien kunne definert 10.000.000 parametre for hvert eneste ord i det engelske språket — selv om vi vet at det ikke er sånn det fungerer i praksis.

Så, kort oppsummert er embedding-prosessen en konvertering av en vanlig setning til en vektorrepresentasjon i en vektordatabase, men dette er bare det første og mest grunnleggende trinnet i en transformator. Årsaken til dette er at språk er mer komplekst enn bare en sekvens av ord. Måten ordene er plassert i forhold til hverandre, har like stor innvirkning på betydningen som ordene selv. For å forstå dette aspektet trenger vi en modell som kan håndtere kompleksiteten. Dette er hvor “Attention”-mekanismen kommer inn.

Forstå kontekst: Attention

Attention-mekanismen hjelper modellen med å forstå sammenhengen mellom ordene i en setning, noe som er avgjørende for å tolke dens betydning korrekt.

“Attention”-mekanismen er det trinnet i prosessen som gir sammenheng til flere embeddings, ved å sette ulike ord i en meningsfull kontekst.

Denne mekanismen bruker matrisemultiplikasjoner, utført flere ganger, for å etablere forbindelser mellom ordene.

For å lage korrekte setninger, er det viktig at modellen ikke bare forstår ordene som brukes og deres iboende betydning, men også konteksten de brukes i. “Attention”-mekanismen har fått sitt navn fordi den etterligner menneskelig oppmerksomhet ved å fokusere på de omkringliggende ordene som påvirker betydningen av det aktuelle ordet.

Photo by Joshua Hoehne on Unsplash

Modellene har ofte flere “attention heads” som parallelt analyserer hvert ord i konteksten av de omkringliggende ordene. De forsøker å identifisere de ordene som er avgjørende for bruken av det aktuelle ordet. Med flere parallelle prosesser, kan modellen forstå flere aspekter av setningen samtidig, noe som gir et mer nyansert bilde av språkbruken. Dette er et viktig trinn for å kunne generere meningsfulle tekster med korrekt ordbruk og grammatikk.

Når en transformer-modell er ferdig trent, vil den bruke parametrene til å gi ulike scorer til ordene rundt. Disse scorerne indikerer hvor korrelerte ordene er med hverandre, og en høyere score betyr at det er en sterkere sammenheng mellom ordene. Modellen vil deretter sammenligne scorer fra alle “attention heads” som er beskrevet tidligere, for å finne en samlet score for hvert ord i konteksten.

Modellen vil vurdere alle mulige sammenhenger mellom ordene og gi en score som indikerer hvor relevant hvert ord er for oppgaven.

Ved å ta hensyn til flere forskjellige sammenhenger mellom ordene, kan modellen forstå sammenhengen mellom ordene og gi en mer nøyaktig respons. Dette gjør den for alle ordene i setningen, slik at man får en fullstendig oversikt over hvilke ord som er korrelert i både større og mindre grad.

Det er viktig å merke seg at modellen allerede er trent på dette, og dermed klarer å lage en liste med de ordene som mest sannsynlig er neste ord i en setning, gitt oppgaven. Dette gjør modellen i stand til å generere tekst som er sammenhengende og meningsfull. Ved å bruke denne tilnærmingen kan modellen forutsi hvilke ord som passer best inn i en gitt kontekst, og dermed gi en mer nøyaktig respons.

Modellen velger i utgangspunktet det ordet med høyest sannsynlighet for å være neste ord, men dette kan styres gjennom å endre temperaturinnstillingen for modellen. Temperatur er et begrep som brukes om graden av tilfeldighet når den skal velge ord, og representeres typisk som et tall mellom 0 og 1. En temperatur på 0 vil si at den alltid velger ordet med høyest sannsynlighet og blir dermed deterministisk — det vil si at samme oppgave alltid vil gi samme svar. Avhengig av hvilken oppgave man utfører kan det være hensiktsmessig med ulik temperatur.

Tilbake til ord

Etter “attention”-mekanismen, anvender Transformer-modellen en serie med transformasjoner på de vektede embeddingene, inkludert ekstra lag med transformasjon (ofte referert til som “feed-forward”-lag), normalisering og aktiveringsfunksjoner. Denne prosessen resulterer i en endelig utgangsvektor for hver inngangstoken.

De endelige utgangsvektorene blir deretter sendt gjennom et lineært lag etterfulgt av en softmax-funksjon for å generere en sannsynlighetsfordeling over hele vokabularet for hver posisjon i utgangssekvensen. Modellen velger ordet med høyest sannsynlighet som sin utgang for den posisjonen.

Denne prosessen gjentas for hver posisjon i utgangssekvensen, enten en om gangen (i tilfelle autoregressive modeller som GPT) eller alle på en gang (i tilfelle maskerte modeller som BERT). Utgangsordene blir deretter satt sammen for å danne den endelige genererte teksten.

Det er viktig å merke seg at de spesifikke detaljene i denne prosessen kan variere avhengig av den spesifikke transformer-modellen og dens konfigurasjon.

Dette er en forenkling av ekstremt komplekse modeller, men gir en indikasjon på hvordan slike modeller faktisk kommer frem til sine svar.

Konklusjon

For å oppsummere, transformer-modeller er kraftige verktøy for å generere tekst. De kan forstå konteksten av ordene som brukes og tilpasse seg forskjellige oppgaver og behov. Ved å bruke matematiske metoder har vi oppnådd å lage noe som oppleves som tenkende, og dette har ført til en stor utvikling innen moderne maskinlæring. Men det er viktig å huske på at selv om transformermodeller er kraftige verktøy, har de også sine begrensninger. Det er viktig å bruke dem på en ansvarlig måte og forstå deres begrensninger. En ting er sikkert, med en forståelse av hvordan transformator-modeller fungerer er vi langt på vei mot å forstå moderne maskinlæring og dens utvikling.

--

--