I. Forskjellige typer maskinlæring

Det å kunne kjenne igjen håndskrevne tall blir ofte brukt som eksempel når vi snakker om maskinlæring.

Under ser du noen eksempler på håndskrevne sifre fra MNIST-databasen som vanligvis blir brukt til denne typen oppgaver.

MNIST datasett

De riktige merkelappene (dvs. det sifferet skribenten hadde ment å skrive) vises over hvert tall. Legg merke til at noen av de «riktige» merkelappene er heller tvilsomme: Se for eksempel på siffer nummer to fra venstre – er det egentlig sju eller fire?

Obs!

Hva er MNIST?

Stort sett alle som vet litt om maskinlæring kjenner til MNIST-databasen. Det er likevel ikke alle som vet hva forkortelsen står for. For å si det som det er, så måtte også vi slå det opp! Derfor kan vi fortelle at «M» står for «Modified», altså modifisert, og «NIST» står for «National Institute of Standard and Technology», det vil si det nasjonale standardiseringsinstituttet i USA. Nå vet du sannsynligvis noe som en gjennomsnittlig maskinlæringsekspert ikke vet!

De fleste maskinlæringsproblemer har som regel bare ett riktig svar, dvs. én riktig klasse. Slik er det også i MNIST-eksempelet, selv om det kan være vanskelig å si hva som er det riktige svaret. Med denne type problemer er det ikke mulig at ett tilfelle tilhører flere klasser samtidig (eller ingen klasse i det hele tatt). Målet vårt er å utvikle en KI-metode som automatisk konverterer et håndskrevet tall til det korrekte sifferet (et tall mellom 0 og 9).

Obs!

Hvordan man ikke skal løse problemet

I prinsippet skal det være mulig å programmere automatisk siffergjenkjenning ved å sette opp følgende regler:

  • hvis svarte piksler i hovedsak former en sirkel, er tallet 0
  • hvis svarte piksler former to sirkler som henger sammen, er tallet 8
  • hvis svarte piksler i hovedsak danner en rett loddrett strek midt på bildet, er tallet 1
og så videre.

Det var på denne måten man utviklet KI-metoder på 1980-tallet (de såkalte ekspertsystemene). Men det er svært tidkrevende å skrive ned slike regler – selv for en så enkel oppgave som å kjenne igjen håndskrevne tall. Faktisk ville reglene over heller ikke være spesifikke nok til å fungere i et dataprogram. Vi måtte i så fall ha definert hva vi mener med «i hovedsak», «sirkel», «strek», «midt på» og så videre.

Selv om vi hadde definert dette, ville resultatet likevel ikke blitt tilfredsstillende. Det er fordi håndskrevne tall ofte er utydelige, og hver regel ville måtte ha hatt en rekke unntak.

Tre typer maskinlæring

Maskinlæring har sine røtter i statistikken – kunsten å hente ut kunnskap fra data. Det er derfor ikke overraskende at metoder som lineær regresjon og Bayesiansk statistikk – som begge er mer enn to hundre år gamle – fortsatt er svært viktige i maskinlæring. Vil du vite mer, er det flere eksempler og en kort historisk oversikt i Wikipedia (timeline of machine learning).

Maskinlæring deles ofte inn i underkategorier etter de problemene man vil løse. Her er en grov inndeling:

Overvåket læring (eng. supervised learning): Med for eksempel et bilde av et trafikkskilt, kan oppgaven være å forutsi riktig klasse. I dette eksempelet kan det være hvilken type trafikkskilt som vises på bildet (fartsgrense, stoppskilt, osv.). I de enkleste tilfellene er svaret «ja» eller «nei». Disse kaller vi binære klassifiseringsproblemer.

Uovervåket læring (eng. unsupervised learning): Her er det ingen klasser. Oppgaven her er å finne strukturen i de dataene vi har, for eksempel ved å gruppere like elementer i klynger eller organisere informasjonen i noen få, viktige «dimensjoner». Datavisualisering kan også være uovervåket læring.

Forsterkningslæring (eng. reinforcement learning): Denne typen maskinlæring blir gjerne brukt i situasjoner hvor en KI-aktør, for eksempel en selvstyrt bil, skal manøvrere i et miljø, og hvor systemet, med litt forsinkelse, gir tilbakemeldinger på om valgene som tas er riktige eller gale. Forsterkningslæring brukes også i spill der resultatet ikke blir avgjort før helt på slutten.

Fordi grensene mellom disse (under-)kategoriene kan være uklare, kan det være vanskelig å kategorisere enkeltproblemer eller -metoder. Semi-overvåket læring er delvis overvåket og delvis uovervåket læring.

Obs!

Klassifisering

Vi skal nå fokusere på et spesielt område innen overvåket læring, nemlig klassifisering. I klassifisering får vi inn inndata, for eksempel et bilde av et trafikkskilt, og prøver å utlede hvilken klasse det tilhører, det vil si typen skilt (fartsgrense 80 km/t, gangfelt, stoppskilt, osv.). Et annet eksempel på en klassifikasjonsoppgave er gjenkjenning av falske Twitter-kontoer. Relevant informasjon her kan være en liste over følgere og hvor raskt man har samlet dem. Klassen kan da enten være «falsk konto» eller «ekte konto». Et siste eksempel vi så vidt har diskutert allerede er gjenkjenning av håndskrevne tall, hvor inndata er et bilde, og klassene er sifrene 0 til 9.

menneske som lærer en robot

Overvåket læring: Når mennesker underviser maskiner

I stedet for at vi lager detaljerte regler for hvordan klassifiseringen skal gjøres, er poenget med overvåket maskinlæring at vi har en stor mengde eksempler, setter korrekt merkelapp og bruker dem til å «lære opp» KI-algoritmen. Da vil algoritmen automatisk kjenne igjen den korrekte merkelappen på treningseksemplene og – forhåpentligvis – på andre eksempler. For at det skal være mulig, må noen oppgi hva som er de riktige klassene – derav navnet overvåket læring. Overvåkeren, eller læreren, mater algoritmen med riktige svar, og hjelper den å gjenkjenne klassene slik at den etter hvert klarer det av seg selv.

Overvåket maskinlæring brukes ikke bare til klassifisering der det riktige svaret er en klasse. Det kan også brukes i situasjoner der det riktige svaret er et tall. For eksempel kan man ønske å forutsi antall brukere som klikker på en nettannonse, basert på annonsens innhold og brukernes tidligere nettvaner. Eller så vil man forsøke å forutsi antall trafikkulykker under visse omstendigheter og ved visse fartsbegrensninger, eller salgsprisen for en eiendom basert på beliggenhet, størrelse og tilstand. Disse problemstillingene kalles regresjonsproblemer. Du kjenner kanskje til lineær regresjon? Det er en klassisk, men fortsatt ofte brukt regresjonsmetode.

Obs!

Eksempel

Se for deg at vi har et datasett som består av salgsdata for solgte boliger. For hvert salg vil vi vite salgsprisen, størrelsen på boligen i kvadratmeter, antall soverom, byggeår og tilstanden (på en skala fra «falleferdig» til «splitter nytt»). Basert på en slik database, kan vi nå bruke maskinlæring til å lære opp en regresjonsmodell som kan forutsi salgsprisen på boliger som blir lagt ut for salg. Se et eksempel på en slik modell.

tre forskjellige hus

Vær varsom!

Når du bruker maskinlæringsmetoder, er det lurt å være klar over dette: Det er mulig at du har for stor tillit til nøyaktigheten av prognosene, og derfor vil gå på en smell når virkeligheten viser seg å være en helt annen.

Det første vi kan gjøre for å unngå slike tabber, er å splitte datasettet i to deler: treningsdata og testdata. Vi lærer opp algoritmene ved bare å bruke treningsdataene. Da får vi en modell eller en regel som forutsier utgangsverdien (utdata) basert på inndata. Når vi skal vurdere hvor godt modellen svarer på informasjon den ikke har sett før, kan vi ikke lenger bruke treningsdata. Selv om modellen kan forutsi det riktige svaret feilfritt på treningsdata, er det ikke sikkert at den kan generalisere til andre data. Det er her testdataene kommer inn. Vi kan bruke den trente modellen til å forutsi utgangsverdien for testdataene og sammenligne prognosene med faktiske utgangsverdier (for eksempel fremtidige boligpriser):

Obs!

Se opp for overtilpasning!

Det er viktig å huske på at presisjonen i algoritmens prognoser kan sprike veldig når man sammenligner treningsdata med uavhengige testdata. Dette kommer av såkalt overtilpasning, og en stor del av forskningen innen maskinlæring fokuserer nettopp på hvordan man kan unngå slike problemer. Overtilpasning er kort fortalt at algoritmen prøver å være «for smart». Når du ønsker å forutsi hvor stor suksess den siste sangen til en kjent artist vil få, kan du se hvordan tidligere låter har gjort det. Da kan du komme frem til at dersom sangen handler om kjærlighet og samtidig har et fengende refreng, vil den havne på topp 20-listen. Men så er det kanskje to kjærlighetssanger med fengende refreng som ikke havner på listen. Da vil du kanskje legge til: «bortsett fra når ordene "Norge" eller "yoga" forekommer», for å forbedre regelen. På den måten vil regelen din passe perfekt med tidligere data, men ikke nødvendigvis like bra med framtidige testdata.

Maskinlæringsmetoder er spesielt følsomme for overtilpasning, fordi de kan teste et stort antall forskjellige regler helt til de finner en som passer treningsdataene perfekt. Dette gjelder spesielt metoder som er veldig fleksible og kan tilpasse seg nesten hvilket som helst datamønster, bortsett fra når mengden treningsdata er veldig stor; store treningsdata blir typisk for komplekse å tilpasse seg til. Sammenlignet med de nokså begrensede modellene som er basert på lineær regresjon, er modeller av nevrale nettverk ofte så fleksible at de trenger enorme datamengder før de kan gi pålitelige prognoser. Med begrensede mengder treningsdata er det stor fare for overtilpasning.

Å lære seg å unngå overtilpasning og velge en passende modell som verken er for begrenset eller for fleksibel, er en av de viktigste ferdighetene til en som jobber med maskinlæring.

Uovervåket læring: Læring uten lærer

Hittil har vi sett på overvåket læring, hvor de korrekte svarene er tilgjengelige, og hvor maskinlæringsalgoritmens jobb er å komme fram til en modell som forutsier disse ut ifra informasjonen den får.

I uovervåket læring finnes det ingen riktige svar. Da står vi overfor en helt annen situasjon fordi vi ikke kan bygge modellen slik at den tilpasser seg de riktige svarene etter treningsdata. Det er også vanskeligere å evaluere hvordan modellen presterer siden vi ikke kan vurdere resultatene den gir ut oppimot en fasit.

Målet med uovervåket maskinlæring er vanligvis å finne mønster i et datasett. Dette kan for eksempel være nyttig i visualisering, der eksempler som ligner hverandre plasseres ved siden av hverandre, mens ulike eksempler plasseres lengre fra hverandre. Uovervåket maskinlæring lager også grupperinger eller klynger der eksempler som ligner hverandre samles i samme gruppe, mens de som ikke ligner hverandre skilles ut i hver sine grupper.

Obs!

Eksempel

Et konkret eksempel på dette er dagligvarekjeder som samler inn data om kundenes kjøpemønstre (det er derfor du har så mange medlemskort). For å forstå kundene bedre, kan butikkene visualisere informasjonen som samles inn ved hjelp av en graf, der hver kunde er representert med en prikk. Kunder som kjøper de samme varene er gruppert nærmere hverandre enn kunder som kjøper andre varer. Butikkene kan også bruke klyngemetoden for å identifisere forskjellige kundegrupper, som for eksempel «sunn mat på lavt budsjett», «fiskeelsker med god råd» eller «cola og frossenpizza seks dager i uken». Legg merke til at maskinlæringsmetoden bare grupperer kundene. Ønsker man å gi gruppene navn, må det gjøres av et menneske.

Enda et eksempel på uovervåket læring er generativ modellering, dvs. det å trene opp en modell som selv kan generere nye data. Generativ modellering har i løpet av få år blitt viktig fordi man her har gjort store fremskritt med en dyplæringsteknikk kalt GANs (generative adversial networks, på norsk: generative konkurrerende nettverk). Dersom den generative modellen trenes opp på ansikter, kan den brukes til å lage nye ansikter som ser virkelige ut, men som ikke finnes i virkeligheten.

Litt senere i kurset skal vi komme tilbake til GANs og hvilke konsekvenser det kan ha hvis du klarer å lage kunstige bilder med høy kvalitet. Først skal vi se litt nærmere på overvåket maskinlæring.