Hvorfor lyver chatGPT?


I det siste har det dukket opp en del artikler om at ChatGPT dikter opp argumenter og forskningsartikler. Et eksempel er at hvis man spør ChatGPT om Kunstig intelligens er bra for menneskeheten kan man få et svar som inneholder:

“A 2018 Stanford Study found that 83% viewed AI as beneficial”

Problemet i dette tilfellet er at det finnes ikke noen slik studie fra Stanford.

Mange lurer på hvorfor slikt skjer og ser på det som et problem. La oss se litt nærmere på hvordan slike tilfeller oppstår.

Hva er ChatGPT?

GPT står for Generative Pre-trained Transformer. Det sies ikke noe om hva som er pre-trained, men siden vi snakker om kunstig intelligens er det underforstått at det er en modell. En modell er i dette tilfellet en statistisk representasjon av et gitt subsett av virkeligheten. Transformer er et navn på en gitt type maskinlæringsmodeller.

Generativ er egentlig ikke veldig informativt. Alle modeller er generative, selv en enkel regresjonsmodell:

En slik regresjonsmodell er ganske enkelt et sett datapunkter med en tilpasset linje. Hvis vi forlenger linjen i begge retninger og leser av et datapunkt som ikke er en del av grunnlagsdataene så har vi “generert” et nytt datapunkt. Den vesentlige forskjellen på ChatGPT og regresjonsmodellen vår er at ChatGPT er ganske mange ganger mer kompleks og har veldig mange flere parametre.

Pre-Trained er litt mer interessant fordi måten modellen er laget på dikterer hva slags resultater den gir. ChatGPT og andre Large Language Models trenes i veldig stor grad på samme måte. Først gjør man en “unsupervised” trening — som ganske enkelt betyr at man laster inn store mengder data. For LLM-er kan man eksempelvis bruke Wikipedia eller Reddit eller gjerne begge dele. Resultatet er at modellen får en god statistisk representasjon av hvordan en setning ser ut. På dette nivået har den ingen form for representasjon av innholdet, bare strukturen på språket. Jo større dette basisgrunnlaget er, jo bedre blir setningsstrukturen som modellen representerer. Det er grunnen til at ChatGPT snakker bedre engelsk enn norsk; det finnes ganske enkelt mange flere setninger på engelsk der ute.

Del 2 av treningen er litt mer komplisert og også betydelig mer kostbar. Det er en “supervised” trening.

Hoveddelen av denne treningen foregår ved hjelp av at mennesker sitter og legger inn kombinasjoner av spørsmål og svar slik at modellen kan få laget en statistisk representasjon av hvordan en slik dialog kan se ut. For de populære modellene som er på markedet i disse dager er en slik trening ganske omfattende fordi modellene skal kunne svare på “hva som helst”. For en modell som skal benyttes til eksempelvis kundesupport blir emnespekteret ganske mye snevrere og treningen vil kunne bli enklere.

En del av denne treningen er å gi svarene vekting eller “poeng” slik at ikke alle svar på samme spørsmål er likeverdige. Et mer utfyllende svar vil ha høyere poengsum enn et kort og lite dekkende svar.

Tokenization

Denne teknikken går ut på å dele teksten opp i betydelig mindre deler, slik at modellen har enkle byggeklosser å bygge opp svaret sitt med. Den største utfordringen her er å finne riktig nivå; hvis man går helt ned på enkelttegn vil man kunne risikere å få ikke-eksisterende ord tilbake, mens hvis man benytter hele setninger ender man opp med plagiatproblematikk. ChatGPT benytter sub-word oppdeling som i praksis betyr at man deler ordene opp i stamme og bøyningsmønstre etc.

Så hvordan resulterer det i løgn?

La oss spille litt Scrabble med uendelig mange brikker:

Vi har et “prompt” på bordet – eksempelvis

NE

Vi kan legge på noen bokstaver og kanskje få:

NEN

Men det gir ikke så fryktelig mange poeng, og vi har som kjent uendelig med bokstavbrikker. Hva med:

CAPPUCCINOENE

På Norsk er C den bokstaven som gir mest poeng, så dette er ikke et veldig dårlig ord. Vi kan bruke det.

Poenget er at en Tokenized Large Language Model fungerer mer eller mindre på samme måten. Den ‘ser’ ikke “A 2018 Stanford Study found that 83% viewed AI as beneficial” som en enhet eller et utsagn. Den ‘ser’ :

(ja) = få poeng

(Årstall)+(Prestisjeinstitusjon)+(Statistikk)+(Argument) = mange poeng.

Og så genererer den en grammatisk gyldig setning som gir tilstrekkelig mange poeng, på samme måten som vi valgte kaffespesialitet over himmellegeme i Scrabble eksempelet over.

Er dette egentlig løgn?

Det er løgn på akkurat samme måten som hvis du kjøper en eske lego til avkommet og hun velger å bygge noe annet enn det som står på bildet utenpå boksen. GPT har ingen forhold til løgn, sannhet eller fenomenet korrekthet, den har bare et stort utvalg byggeklosser og en modell som tilsier hvordan byggeklossene passer sammen.

Om resultatet blir en bensinstasjon eller et bakeri er mindre viktig.

Hva kan vi gjøre med det da?

I veldig mange tilfelle er det ikke nødvendig å gjøre noe som helst. Når vi eksempelvis brukte denne teknikken til å generere syntetiske arbeidsforhold og historikk til bruk til testing av NAVs IT-systemer var hele poenget at vi ikke skulle ha en faktisk historikk knyttet til en faktisk person. For det første blir det personvernproblematikk av å bruke reelle personer til testing og for det andre får man mye mer interessante tester av å generere nye tilfeller som ofte blir mer kompliserte enn det normale mennesker faktisk gjør.

Hvis man faktisk vil ha faktiske tilfeller, som i kundestøtte / chatbot tilfellet så må man trene modellen ‘strammere’ slik at den bare returnerer faktiske setninger som har eksistert i treningsgrunnlaget. Jo strengere man trener en slik modell, jo mer nærmer man seg en ren søkemotor og normalt kalles det “overfitting” i maskinlæringsterminologi. Som man kan gjette av ordet er det heller ikke alltid ønskelig.

På den annen side kan det jo hende det er akkurat det man vil — det er tilsynelatende noe slikt Microsoft har gjort i siste versjon av Bing, der man kan stille ganske frie spørsmål og GPT kobles tett mot ‘ordinære’ søkeresultater for å gi et bedre resultat.