(TF)² #2 - Svensk textgenerering och GPT-3

Förra gången skrev jag om transformatorer, men jag kände att vi inte helt var färdiga med dem. De enda AI-modeller som uppvisar någon sorts rudimentär generell intelligens är de största textmodellerna. Den i särklass mest kända textmodellen, som alltså också är byggd på transformatorer, är GPT-3.

GPT-3 introducerades i maj 2020 av OpenAI i den vetenskapliga artikeln Language Models are Few-Shot Learners. Den beskrivs av 175 miljarder parametrar eller vikter, vilket är 10 gånger fler än den tidigare största modellen. Den tränades mestadels genom att förutsäga nästa bokstav på enorma dataset neddladdade från nätet, men även på över 50 miljarder tecken från böcker, hela Wikipedia, etc. Den finns inte allmänt tillgänglig att ladda ned, men i juli började OpenAI släppa in användare till ett beta-API, där man själv kan testa.

Det mest intressanta med GPT-3 och bakgrunden till titeln på deras artikel är att en tillräckligt bra generativ modell kan göra allt annat som textmodeller också kan, genom att ge den rätt starttext att fortsätta på. Den ser mönster i texten extremt väl, så om du gör en lista med översättningar på ord, eller frågor och svar och sedan listar ett till ord eller en fråga, så kommer den gissa att den mest rimliga fortsättningen på texten är att svara på din fråga.

Här finns några exempel på alla kreativa saker som folk har hittat på genom att ge rätt "prompt" eller fråga. Hela den här tekniken med att skriva en bra starttext för att få rätt svar genererat är ett eget litet specialfält som kallas prompt engineering. Ännu lite bättre kan det till exempel bli om man förutom några exempel på vad man vill åstadkomma även har en bra titel, så att modellen får en bra kontext att jobba från.

GPT-3 finns fortfarande inte allmänt tillgänglig och de flesta som ber om tillgång verkar fortfarande hamna i en evig kö, men de verkar prioritera om man jobbar i branschen, så på Tenfifty kan vi använda API:et.

Svenska exempel

I dag tänkte jag visa några egna svenska exempel på vad GPT-3 klarar av. Den är naturligtvis sämre på svenska än på engelska, men det har även smugit sig in svenska sidor i allt material som de använt från nätet, så den har lärt sig det också ganska väl. Jag tycker att GPT-3 fungerar klart bättre rakt av på svenska än om man först översätter texten till engelska med Google Translate och sedan kör den engelska texten. Intressant är att den förstår ord på någon slags abstrakt nivå, så den klarar att översätta mellan ord och träning som den gör på engelska förbättrar med största sannolikhet även den svenska delen av modellen.

Så om jag vill sentimentanalysera (avgöra positivt eller negativt) text, så kan jag skriva en rubrik och några exempel på vad jag försöker åstadkomma och sedan ett oavslutat exempel så kommer modellen förstå vad jag håller på med och skriva en bra fortsättning. Nedan är texten jag angett i normalt format och det som står i fetstil det som GPT-3 har skrivit vidare.

Sentimentanalysera text

Jag hatar Telia => Neg
Apple har världens bästa kundservice => Pos
Tele2 har fått mycket kritik => Neg
Päronen som jag köpte var ruttna => Neg
Personalen är alltid glad! => Pos
Jag hatar att skriva negativa recensioner men... => Neg

Som synes fortsätter den glatt att hitta på nya meningar att sentimentanalysera efter att ha gett svaret som jag egentligen ville ha. Det är inget magiskt med pilen. Den kommer känna igen vilka enkla mönster som helst. På samma sätt kan vi sätta kategorier på text genom att ge några exempel på det:

Kategorisera text

Jag gillar att åka tåg => Fordon
Fotoner är en blandning av partiklar och vågor => Fysik
C++ är en vidareutveckling av C => Programmering
Svartvita bilder har två huvudfärger => Bilder

Även här lät jag den hitta på ett nytt exempel efter att ha gett en kategori. För att förtydliga, detta är alltså inte kategorier som någon någonsin har visat modellen eller som jag bestämt att den får använda. Den bara förstår ungefär vilken detaljnivå som jag är ute efter från de första exempel och kör på.

Ytterligare en klassisk uppgift är att sammanfatta text. Här har jag plockat två paragrafer från dagens IDG. En har jag sammanfattat förtjänstfullt på egen hand, som exempel till modellen och den andra paragrafen får den sammanfatta på egen hand:

Sammanfatta text

"Volkswagen meddelar nu att de anlitat Microsoft för att hjälpa dem i utvecklingen av självkörande bilar, rapporterar Engadget. Biltillverkaren har sedan tidigare samarbetat flera år med Microsoft gällande bilar kopplade till molnet. Under samarbetet kommer Volkswagens expertis inom självkörningssystem att kombineras med Microsofts molnplattform Azures AI- och datamöjligheter för att skapa en "Automated Driving Platform" eller ADP."
Sammanfattning: "Microsoft ska hjälpa Volkswagen med självkörande bilar med Azure."

"I juni 2019 annonserade Västerås en upphandling om it-drift. När det tidigare avtalet med CGI löpte ut den sista december samma år var dock inte upphandlingen klar ännu. För att lösa problemet tecknade Västerås ett tilläggsavtal med CGI för att täcka sitt löpande behov av drifttjänster. Men det annonserades inte ut enligt lagen om offentlig upphandling. Nu slår Konkurrensverket fast att kommunen då gjorde sig skyldig till en otillåten direktupphandling och vänder sig därför till Förvaltningsdomstolen i Uppsala och ansöker om att kommunen ska dömas att betala 4,5 miljoner kronor i upphandlingsskadeavgift."
Sammanfattning: "Konkurrensverket har dömt Västerås kommun att betala 4,5 miljoner kronor i upphandlingsskadeavgift för att ha agerat olagligt i en upphandling."

Inte så illa pinkat! Värt att notera är att i ovanstående tre exempel så har jag inte gjort något "körsbärsplockande". Jag har visat det första resultat jag fått från det första exemplet som jag skrivit in.

För nedanstående ingredienser så orkade jag inte ens ge ett exempel. Bara en titel och så bad jag den köra:

Recept

En underbart värmande soppa i vintertid.
Ingredienser:
1 dl kokosfett
1 dl kokosmel
2 msk kikärter
4 stora salladslökar
1 stor gul lök
1 stor vitlöksklyfta
1 stor morot
1 dl frön
2 msk torkade tranbärsflingor
1 msk currypasta
1 dl spenat

Den har hittat på ett eget ord eller bryter kanske på något annat skandinaviskt språk med "kokosmel". Jag har lekt runt lite med recept tidigare och såg då att den ofta hittade på egna ord som lät ganska rimliga. I en tårta ville den en gång ha i "1.5 kg hälleflarn", som verkar vara en slags blandning mellan havreflarn och hälleflundror.

För att få till instruktionerna i nedanstående recept så fick jag testa med några olika exotiska djur och med och utan bindestreck, men till slut blev det bra!

Recept

En exotisk och underbart värmande näbbdjurs-soppa.
Instruktioner:
1. Skala och dela näbbdjuret i bitar.
2. Koka näbbdjuret vid låg värme i ca 40 min.
3. In i ugnen vid ca 225 grader.
4. Koka upp vatten och havredryp.
5. Koka upp lite vatten och lök och gör lite soppa.
6. Bjud med en stor sallad och grönsaker.
7. Spara bitar av näbbdjuret till frukost!

Mums filibabba!

Som ett sista exempel kan jag visa översättning av ord. Jag tänkte att den skulle få något lite svårare att bita i, eftersom IT-svenska alltid är svårt, men det är ändå en god översättning tycker jag.

Översättningar av IT-uttryck från engelska till svenska

Software: Mjukvara
Neural network: Neuronnät
Mobile phone: Mobiltelefon
Technical blog post: Tekniskt inlägg
Web service: Webbtjänst

Om du inte är imponerad av dessa resultat från en modell som inte har tränats eller specialiserats på den uppgift som jag ber den om, på ett språk den knappt kan, så vet jag inte vad jag kan göra. GPT-3 är ett av de mest imponerande resultaten i AI-historien och ger dessutom djupare insikter i språklig intelligens. Extra spännande blir det om man funderar på hur enorma text-transformers skulle kunna interagera med andra modelltyper, såsom bild, tal, musik och även domänspecifika strukturerade modeller. Det finns några nya fina resultat kring det, men det får bli en annan gång.

Vilka begränsningar har då GPT-3? Denna typ av modeller kan fortfarande bara göra saker som teoretiskt går att göra på konstant tid, vilket betyder att oavsett hur stora du gör dem och även om blir bra nog för att helt på egen hand generera hela intressanta skönliterära böcker eller filmmanus, så kan de inte generellt sortera en lista, räkna ut om ett tal är ett primtal eller på egen hand spela bra schack eller bevisa matematiska teorem. Allt detta kräver loopar och sökningar. De är alltså inte smarta "på riktigt" i den bemärkelsen att om du bara gör dem större och ger dem mer träningsdata så löser de allt.

Hur vi ligger till med att lösa sådana saker kanske vi pratar om nästa gång!

David Fendrich

CTO, Tenfifty

Föregående
Föregående

(TF)² #3 – Vem är världsbäst på AI?

Nästa
Nästa

(TF)² #1 - Transformers tar över världen!