01 Språkmodell · experiment

2020

Högskoleprovet

AI får 1.3 på högskoleprovet — bättre än 80% av svenskar som deltar på provet.

Studenter som skriver ett universitetsprov i Wien
01ProvetKF · Public domain

En AI-modell fick bättre resultat än 80% av provdeltagarna

Arkiverat experiment · preliminärt resultat från 2020.

Testa modellen själv

ORD

Modellen tror: lärare vid högskola


Ett neuralt nätverk följer betydelsen i en svensk meningEtt sparsamt lagerdiagram visar hur ordet språk får en aktiv signal genom nätverkets attention-lager.NEURAL NETWORK · 12 LAYERSSIGNALFLÖDEINPUTEMBEDDINGATTENTIONCONTEXTOUTPUT[CLS]kanspråkförstås[SEP]AKTIV SIGNAL0.84språkKONTEXTUELL VIKTORD → REPRESENTATION → BETYDELSE12 × 12 · 110M PARAMETERS
02NätverketAttention · representation

DJUPA NEURALA NÄTVERK FÖR HÖGSKOLEPROVE

GENOMBROTTET INOM AI: TRANSFORMERS

September 2019 vaknar jag hög som ett hus efter en nyckelbensoperation och tar upp telefonen. I mitt feed ser jag att det kommit en ny modell(Albert, A lite Bert) som slår snittmänniskan i läsförståelseuppgfiter på Engelska för Högstadie och gymnasieelever i Kina. Detta fick mitt höga huvud att flumma ännu mer. Vad var möjligheterna? Tänk om jag höll på med detta? Jag måste göra detta!


Genombrottet kom ifrån en modell skapad för maskinöversättning och dess fortsättningar i form av GPT och Bert. De nya modellerna fullständigt krossade många av ledartavlorna som forskare tävlar om på olika uppgifter. Jag hade gjort lite experiment på Engelska men det var Svenska som var mest intressant och det fanns inga bra modeller.


I November, någorlunda återhämtad startade jag en resa för att utforska vad de senaste genombrotten inom Artificiella Neurala Nätverk för språkförståelse innebar för mitt språk, Svenska. Vad som fascinerade mig mest var inte de höga resultaten på text och meningsklassificering, utan att de klarade av att göra tester på läsförståelse. Trots att implementeringarna är otroligt lika på en teknisk nivå så är det väldigt spännande när det verkar ha uppstått en annan typ av läsförståelse än den vi har men som fortfarande kan "resonera" (mönsterigenkänning) över texter och svara på frågor. Detta var extremt spännande, vad innebar det för mig? Hur fungerar det? Vad spottar den ut? Finns det några likheter med hur vi gör det?



Ett TPU 3.0-kort med fyra vattenkylda Tensor Processing Units
03TPU 3.0Zinskauf · CC BY-SA 4.0

Vad gjorde det möjligt för AI att gå om snittsvensken?

HP · 2020DATASET
100GBsvensk text
25MA4-sidor
80år av oavbruten läsning

WEBB · RIKSDAGEN · UNDERtexter · WIKIPEDIA

Datans skalaSvensk träningskorpus

Möjligheten

De nya modellerna tränades på enorma mängder data jämfört med mina tidigare experiment, som mest använde svenska Wikipedia. De nya modellerna använde 16GB, 38GB, ibland 140GB eller mer. I stället för enstaka rader och meningar tränades de på hela texter. Jag fick bygga om hela datasetet från grunden och kom till slut upp i ungefär 100GB.

Utskrivet på 25 miljoner A4-sidor och lagt blad efter blad skulle materialet räcka från Stockholm till Seoul. Med 1,7 minuters lästid per sida skulle det ta mer än 80 år att läsa allt utan paus. Och detta räknades fortfarande som litet.

Som tur var fanns det starka öppna resurser. Common Crawl stod för en stor del; efter städning gav en dump ungefär 16GB användbar svensk text. Riksdagens öppna texter, OPUS undertexter, Wikipedia och senare OSCAR kompletterade materialet.

Modeller i den här storleken kräver mycket beräkningskraft. På min arbetsstation med ett RTX 2080-kort kunde en bra träningskörning ha tagit flera år. Genom TensorFlow Research Cloud fick forskare tillgång till Tensor Processing Units, specialbyggda för den här sortens arbete. Den tillgången gjorde mina ”småskaliga” experiment möjliga.

Öppenhet

NLP-forskningen var anmärkningsvärt öppen. Modeller, data och kod rörde sig snabbt mellan forskare och företag. Det var hektiskt att följa, men perfekt för någon som lär sig genom att plocka isär fungerande system.

Jag frågade forskarna bakom ALBERT om jag kunde få se hur de löste RACE, ett läsförståelsetest baserat på kinesiska skolprov. Två dagar senare dök ett par filer upp på GitHub. Arbetet började.

Svensk text strukturerad som träningsdataSvenska tecken, ord och källor ordnas i ett typografiskt korpusregister.SWEDISH CORPUS · 100 GBKORPUSREGISTERTECKENTOKENSTRÖMKÄLLOR001hurlärsigspråk002frågasvarochtext003avtalsamhälleförstå004svenskaikontext25MA4-SIDOR01WEBB02RIKSDAGEN03UNDERTEXTER04WIKIPEDIA≈ 80 ÅROAVBRUTEN LÄSNINGRÅTEXT → TOKEN → TRÄNINGUTF-8 · SV
04SpråketKorpus · svenska

HUR LÄR MAN EN AI SVENSKA?

Tokenization

En bilfärja lämnade lilla varholmen
[ "en", "bil", "##fär", "##ja", "lämnade", "lilla", "var", "##holmen" ]

Ser den ord? bokstäver? Modellen får se "tokens", en token kan vara en bokstav, del av ett ord eller ett helt ord. Att dela in texter i tokens har sina för- och nackdelar. Det största problemet och fördelen är att dessa modeller tittar på hur alla tokens i en text påverkar varandra("Attention"). Om alla tokens bara var bokstäver i exemplet ovan så blir det 19 och i längre texter skulle detta kräva extremt mycket datorkraft, om vi istället kollar på ord så är det enbart 5. Skulle vi spara alla ord så får vi dels en gigantisk mängd tokens att lagra, dels så missar vi en del kontext som kunde vara användbar. Med nuvarande tokenization får vi 8, en bättre trade-off. T.ex så kan man gissa att ["vilken token som helst", "##holmen"] handlar om en plats vid vatten även om modellen aldrig sett "burholmen" förut i en annan text. Därför skapar man ett Vocab med ett begränsat antal tokens. Desssutom begränsar man det totala antalet tokens en modell kan se.


Klurigheter
I Svenskan har vi vansinnigt många olika sammansatta ord t.ex "långtidslagring" och "förtidsröstning". Detta blir snabbt ett problem med hur nuvarande algoritmer söker tokens, som inte alls är anpassde efter detta. De tokens som modellen får se blir ofta dåligt anpassade och en annorlunda böjning av ett del-ord kan kasta om alla tokens som blir av det hela sammansatta ordet. Det blir dessutom dubbletter om det är i början eller i ett ord, T.ex. så ses "holmen" och "##holmen" som helt olika tokens. Ni kan testa själva nedan i demon.


Lösningar
Dels så pågår det mycket forskning på "Attention", det som gör det svårt att titta på längre sekvenser och vissa framsteg har gjorts. Men sen kan man även ha ett smartare system för hur man tokenizar. Detta forskas det lite på och är delvis ett problem som kanske fokuseras på i andra germanska språk än Engelska som Tyska. Jag har själv en hel del idéer som jag skulle vilja utforska. Jag antar att fler personer eventuellt jobbar på att ta fram olika lösningar redan. Sen kan det helt enkelt och delvis vara så att det krävs mer beräkningskraft som löser sig med tiden och detta bara blir temporära quickfix för att kompensera för nutidens långsamma datorer sett ut ett framtidssperspektiv. Need m0ar compute.

01 · Text till data

Tokenisering

Tokenföljd

31
Delar
01 som02 exempel0304 försöker05 den06 placera07 "08 avtal09 "10 och11 "12 kontrakt13 "14 nära15 varandra16 ,17 förmodligen1819 ligger20 "21 jurist22 "23 i24 närområdet25 om26 den27 är28 bra29 träna30 ##d31 .
IDs
220410072752715220871392371918195063915482275196324275695913313953261522212201935204763120213
HP · 2020ARKITEKTUR

Basmodell

12 × 12lager × attention-huvuden

GPT-3

96 × 96lager × attention-huvuden

Kontextfönster

2,048tokens
Modellens skalaBasmodell jämförd med GPT-3

Modellen

Embeddings
Modellen börjar med att skapa embeddings, en sorts representation av vad en token har för betydelse. Som exempel så försöker den placera "avtal" och "kontrakt" nära varandra, förmodligen så ligger "jurist" i närområdet om den är bra tränad.


Transformer
Sen så går dessa representationer igenom flera transformer-lager. Ett transformer-lager lär sig ställa frågor ("attention") från varje token på alla andra tokens. Ett exempel skulle kunna vara "vem skapade kontraktet". En basmodell har ofta 12 sådana här "frågor per lager". Svaret på dessa frågor slås ihop och går igenom ett neuralt nätverk som skapar en ny representation för tokensen som kan gå vidare till nästa lager. En basmodell har ofta 12 lager. Ökar man heads och lager så ökar man antalet mönster som modellen kan plocka upp. Ofta så har kända modeller olika namn men det brukar vara variationer på detta eller träningsmetod som skiljer dem åt. T. ex. så har GPT3 96 heads och 96 lager med en variant på attention-mekanismen som ger den bättre möjlighet att titta på lite längre texter(2048 tokens).

Model

12
7
HP · 2020FÖRTRÄNING
01Original text

modellen lär sig svenska

02Byt ut ord

modellen säl sig svenska

03Hitta bytet

säl → ersatt

TräningsloopenELECTRA · DISCRIMINATOR

Lära sig svenska

Uppgift
För att lära en modell Svenska måste man ha en uppgift som den kan träna på. En uppgift där man kan se om den har fel. För att den skall kunna lära sig så bra som möjligt behöver man extrema mängder uppgifter. Därför är det bäst att komma på uppgifter som fungerar på vilken text som helst. Tidigare har detta varit att ta bort tokens och sedan låta modellen gissa vilken token som skall vara där. Antingen i mitten av en mening eller att gissa nästa token i en text. Om man gissar en token i mitten av texterna blir den bra på att förstå texter. Om man tränar den på att gissa nästa token blir den bra på att skriva texter.


Effektivare

Nedan kan ni se outputen från modellen. Desto större tal desto mer tror modellen att det är utbytt.


Förträning

HP · 2020UTVÄRDERING
01ORD

Ordförståelse

02MEK

Meningskomplettering

03LÄS

Läsförståelse

Tre delar av språkprovetHÖGSKOLEPROVET

Testa kunskaperna på högskoleprovet

Målet är att träna modellen på att kunna göra uppgifter som liknar högskoleprovet och sedan testa den på högskoleprovet. Alltså inte att träna den på högskoleprov och sedan testa den på några den inte sett. Detta som ett test på generaliseringspotentialen som de nya modellerna har. Till exempel så är en återkommande fråga på högskoleprovet, "vad säger författaren i den första paragrafen?". Jag vill se om modellen har en sådan generell förståelse att man inte skall behöva träna den på att lära sig små knep för att få bra resultat på just högskoleprovet.

ORD

Definition
Den här uppgiften liknar mer någon form av givet ett ord, en kombination av ord eller en fras välj det mest lika i betydelse. Det är inte så lätt som att bara ha lista på ord, för här förekommer ordspråk och annat.


Träning
Den får läsa orden från svenska wiktionary. Jag använder en cosine similarity loss. Splittar 80 / 10 / 10 och får ~0.91 i cosine pearson


Reflektion
Det som är intressant med denna uppgift är att man kan se hur modellen/metoden generaliserar utöver listan på synonymer som enbart består av ett ord till att klara av fraser och även ord som inte är med i synonymlistan. När jag testade modellen på 3 högskoleprov fick jag runt 84% rätt på orden. Jag testade även sen att köra standardsättet för encoders och fick som bäst runt 89%. Jag använder dock inte resultatet därifrån då jag använde 3 högskoleprov som ett dev set och detta blir fusk. Det jag vill göra är att träna den på att ganska generellt lösa liknande uppgifter som HP och bara använda HP som ett sluttest. Det som är intressant förutom generalisering är att denna uppgift är förmdligen ett väldigt bra mått på hur bra modellen delar upp tokens. Rätt delord -> mer generalisering.


MEK

Definition

Läs en text som har flera tomma platser, i dessa platser kan ett eller flera ord vara. Välj från 4 alternativ vilket som är bäst.

Träning

Här gjorde jag ingen träning alls. Modellen har redan från sin basförståelse av svenska en riktig talang för detta! Ni kan ovan testa att se vad modellen spottar ut när ni byter ut olika ord. Även om den tror att det ordet ni bytt ut kan vara där så blir den generellt sätt mer osäker på orden runt omkring. Så genom att titta på en ruta runt orden har man en ganska bra grund för om orden är utbytta. Detta gav 78% rätt på 3 prov.

Reflektion

Här finns mycket man förmodligen kan hämta. Dels genom att träna den på att hitta utbytta ord i texter med extremt hög kvalité och inte random-sidor från internet. Man skulle sedan kunna lägga på en klassificerare och träna den på att välja rätt alternativ. Detta går dock lite emot syftet, att testa hur bra den generaliserar på högskoleprovet.

LÄS

Definition
Läs en text och en fråga. Välj svar från 4 alternativ vilket som är bäst.


Träning
Här kommer det svåra. Högskoleprovet är förmodligen den största datamängden som finns på läsförståelse som ligger uppe. Kanske att det finns för nationella prov eller hos något företag som erbjuder träningsmaterial för detta. Jag valde att titta på vad det fanns för material på Engelska. jag tränade en modell på att översätta från Engelska till Svenska. Den modellen fick översätta läsförståelseuppgifter på engelska. Sedan tränade jag en Svensk modell på att göra uppgifterna. Koden för att träna i Tensorflow har jag lagt upp på Huggingface github. Det bästa resultatet jag fick med denna metoden var 1.0. Jag tror det finns en del att hämta genom att använda bättre data och använda en större modell tyvärr var detta både resurskrävande i form av compute men även i tid. Jag hoppas kunna fortsätta experimentera med detta framöver. Det finns en modell på Engelska, UnifiedQA. Den är tränad på T5, en modell som finns i "extrema" storlekar. De tränade en modell att göra väldigt breda läsförståelseuppgifter, Jag gör tester med deras 3B-variant i fortsättningen och översätter med en modell som matar in de svenska texterna på engelska för att se var gränsen verkar gå.


Reflektion
Den största begränsningen här är data och modellstorlek. Läsförståelse kräver mycket av modellen. Ju fler mönster modellen kan hitta desto bättre resultat. Om man har många exempel på de mönster som krävs för att göra uppgiften ökar också chansen. Det jag hade möjlighet att göra var i princip en modell med 12 lager baserade på mina dåvarande kunskaper om träning. Jag började experimentera med att ge mig in i hur man kan få plats och optimera för större modeller. Att använda UnifiedQA 11B skulle ev. höja accuracyn med ca 5%.


Om man kollar på resultatet nedan så verkar det fortfarande vara bättre att ev. träna en mindre modell på svenska och fortfarande slå den stora engelska med översättning. Skall bli spännande att se om jag fortsätter! Man skall även ta i beaktning att de engelska uppgifterna på hp är av enklare karaktär jämfört med de svenska.


05 · Utvärdering

Resultat

Laddar...