Maskinlæring: Fra sjakk til medisinsk diagnose – en komplett guide

Idéen om å konstruere maskiner som overgår menneskelig intelligens er langt fra ny.

En av de tidligste utfordringene datavitenskapen tok på seg angående menneskelig «intelligens», var gjennom sjakkspillet. Sjakk ble, eller kanskje vi burde si *ble*, sett på av mange som den ultimate prøven på menneskelig intellekt og kreativitet. På 1960- og 70-tallet eksisterte det ulike synspunkter innenfor datavitenskap.

Noen trodde det bare var et spørsmål om tid før datamaskiner ville overgå mennesker i sjakk, mens andre hevdet at dette aldri ville skje.

Kasparov mot Deep Blue

Den mest omtalte konfrontasjonen mellom menneske og maskin i en intellektuell kamp, var sjakkmatchen i 1996 mellom den daværende verdensmesteren Garry Kasparov (som utvilsomt var den beste sjakkspilleren noensinne) og Deep Blue, en superdatamaskin utviklet av IBM spesifikt for denne begivenheten.

Bildekreditt: Wikipedia

For å gjøre en lang historie kort, vant Kasparov den første kampen i 1996 (4-2) med god margin, men tapte omkampen i 1997 (4,5-3,5) under mye kontrovers, inkludert Kasparovs direkte beskyldninger om juks rettet mot IBM.

Uansett, en æra innen sjakk og datavitenskap var over. Datamaskiner var nå bevist smartere enn noe levende menneske. IBM, tilfreds med sin revansj, demonterte Deep Blue og gikk videre.

I dag er det umulig for selv den beste stormester å vinne over en standard sjakkprogramvare som kjører på vanlig maskinvare.

Hva er ikke maskinlæring?

Før vi ser nærmere på maskinlæring, la oss avklare noen vanlige misforståelser. Maskinlæring er på ingen måte et forsøk på å kopiere den menneskelige hjerne. Til tross for noen oppsiktsvekkende påstander, for eksempel fra Elon Musk, hevder datavitenskapsforskere at de ikke søker etter denne «hellige gral» og at de absolutt ikke er i nærheten av å oppnå det.

Enkelt forklart er maskinlæring prosessen med å bruke «læring-gjennom-eksempel»-metoder på datamaskiner. Dette står i kontrast til den tradisjonelle tilnærmingen, der en programmerer manuelt må definere alle tenkelige scenarier og programmere regler for disse i et system.

Kjernen i maskinlæring er nettopp dette: å mate datamaskinen enorme mengder data slik at den kan lære av eksempler (prøve → feile → sammenligne → forbedre), i stedet for å stole på manuell koding.

Anvendelsesområder for maskinlæring

Så, hvis maskinlæring verken er «svart magi» eller et verktøy for å skape Terminators, hva er det da nyttig til?

Maskinlæring er til hjelp i situasjoner der tradisjonell programmering mislykkes, og disse tilfellene kan generelt deles inn i to kategorier.

Som navnet antyder, handler klassifisering om å merke ting korrekt, mens prediksjon tar sikte på å gi mer nøyaktige fremtidige anslag, basert på et stort datasett med tidligere verdier.

Noen interessante bruksområder for maskinlæring er:

Spamfiltrering

E-postspam er et utbredt problem, men å prøve å stoppe det kan være en vanskelig oppgave. Hvordan definerer man egentlig spam? Er det tilstedeværelsen av bestemte søkeord? Eller kanskje måten det er skrevet på? Det er vanskelig å lage en uttømmende liste med regler ved hjelp av tradisjonell programmering.

Det er her maskinlæring kommer inn. Vi viser systemet millioner av spam-meldinger og ikke-spam-meldinger, og lar det finne ut resten selv. Dette var hemmeligheten bak Gmails effektive spamfiltre, som forandret personlig e-post tidlig på 2000-tallet!

Anbefalinger

Alle store e-handelsbedrifter har nå avanserte anbefalingssystemer. Noen ganger er deres evne til å foreslå ting som vi kanskje finner nyttige forbløffende nøyaktig, selv om vi aldri har klikket på det aktuelle produktet før.

Tilfeldighet? Overhodet ikke!

Maskinlæring jobber iherdig i bakgrunnen og analyserer terabyte på terabyte med data, og prøver å forutse våre skiftende preferanser og stemninger.

Chatbots

Har du noen gang snakket med kundestøtte på første nivå som virket litt robotaktig, men likevel var i stand til å føre en interessant samtale?

Da har du nok blitt «lurt» av maskinlæring!

Å lære av samtaler og avgjøre hva man skal si i forskjellige situasjoner er et voksende og spennende område for chatbot-applikasjoner.

Ugressfjerning

Innen landbruket brukes roboter drevet av maskinlæring til selektivt å sprøyte ugress og andre uønskede vekster blant avlinger.

Dette ville ellers måtte gjøres manuelt eller være veldig ineffektivt, da systemet også ville sprøytet avlingene med giftstoffene!

Stemmesøk

Stemmebasert interaksjon med datasystemer er ikke lenger science fiction. I dag har vi digitale assistenter som Alexa, Siri og Google Home som kan ta verbale kommandoer og faktisk utføre dem (nesten i hvert fall!).

Noen vil kanskje hevde at dette er en oppfinnelse som best unngås, siden den gjør menneskeheten enda mer lat, men det er vanskelig å argumentere mot effektiviteten.

Medisinsk diagnose

Vi er på terskelen til en revolusjon innen medisinsk diagnose, ettersom maskinlæringsbaserte systemer begynner å overgå erfarne leger i diagnostisering ved hjelp av røntgenbilder og lignende.

Dette betyr ikke at leger snart vil bli overflødige, men at kvaliteten på medisinsk behandling vil forbedres betraktelig, samtidig som kostnadene kan reduseres (med mindre kommersielle aktører legger andre planer!).

Dette var bare noen få eksempler på hva maskinlæring kan brukes til. Selvkjørende biler, roboter for strategispill, brettemaskiner for t-skjorter, løsning av CAPTCHA og fargelegging av svart-hvitt-bilder er andre anvendelsesområder som er i rask utvikling.

Typer maskinlæring

Maskinlæringsteknikker kan deles inn i to hovedkategorier.

Veiledet læring (Supervised Learning), der systemet styres av menneskelige vurderinger, og ikke-veiledet læring (Unsupervised Learning), der systemet lærer helt på egen hånd. En annen måte å uttrykke det samme på, er at i veiledet læring har vi et datasett som inneholder både input og ønsket output, som systemet bruker til å sammenligne og justere seg selv. I ikke-veiledet læring, derimot, finnes det ingen eksisterende output å måle seg mot, så resultatene kan variere mye.

Et spennende og nesten skremmende eksempel på anvendelse av ikke-veiledet maskinlæring?

Det ville være roboter som spiller brettspill, der programmet får kunnskap om spillereglene og vinnerbetingelsene, og deretter overlates til seg selv. Programmet spiller så millioner av spill mot seg selv, lærer av sine feil og forsterker de avgjørelsene som viser seg å være fordelaktige.

Med en kraftig nok datamaskin kan en AI som slår verdenseliten i spillet, være klar i løpet av noen få timer!

De følgende bildene illustrerer disse ideene kort (kilde: Medium):

Ressurser for å komme i gang med maskinlæring

Nå som du er tent på maskinlæring og ser potensialet for hvordan det kan hjelpe deg å erobre verden, hvor skal du begynne?

Nedenfor har jeg listet opp noen utmerkede ressurser på nettet som kan hjelpe deg å oppnå ferdigheter i maskinlæring uten å måtte ta en doktorgrad i datavitenskap! Selv om du ikke er forsker innen maskinlæring, vil du oppdage at dette feltet er like praktisk og underholdende som programmering generelt.

Så ikke bekymre deg, uansett hvilket nivå du er på nå, kan du, som et godt maskinlæringsprogram, lære deg selv og stadig bli bedre. 😛

#1. Programmering

Det første kravet for å komme i gang med maskinlæring er å lære programmering. Det er fordi maskinlæringssystemer presenteres i form av biblioteker for ulike programmeringsspråk.

Python er det mest anbefalte språket, dels fordi det er relativt enkelt å lære, og dels fordi det har et enormt økosystem av biblioteker og ressurser.

Den offisielle nybegynnerguiden er et utmerket sted å starte, selv om du allerede har litt kjennskap til Python. Eller du kan ta dette bootcamp-kurset for å bli en ekspert fra bunnen av.

#2. Tenk statistikk

Når du har lært det grunnleggende i Python, er min andre anbefaling å gå gjennom to fremragende bøker. De er 100% gratis og tilgjengelige som PDF for nedlasting. Think Stats og Think Bayes er to moderne klassikere som enhver ambisiøs maskinlæringsingeniør bør tilegne seg.

#3. Udemy

På dette tidspunktet vil jeg anbefale deg å ta et par kurs fra Udemy. Det interaktive formatet i eget tempo vil hjelpe deg å bli tryggere på materialet og bygge selvtillit.

Sørg for at du sjekker forhåndsvisningen av kurset, vurderingene (spesielt de negative!) og det generelle inntrykket av kurset før du begynner.

Du kan også finne fantastiske veiledninger på YouTube gratis. Sentdex er en kanal jeg kan anbefale. Den er alltid underholdende, men tilnærmingen hans er ikke nødvendigvis nybegynnervennlig.

#4. Andrew Ng

Kursene som undervises av Andrew Ng på Coursera er utvilsomt den mest populære læringsressursen for grunnleggende maskinlæring.

Selv om kurset bruker programmeringsspråket R, er det fortsatt enestående i sin behandling av emnet og i sin evne til å forklare på en forståelig måte. På grunn av dette kurset har Andrew Ng oppnådd en nesten gudelignende status innen maskinlæringsmiljøet, og mange ser opp til ham for å få visdom og veiledning (jeg tuller ikke!).

Dette er ikke et kurs for nybegynnere, men hvis du allerede er flink til datahåndtering og ikke har noe imot litt ekstra research underveis, er dette kurset det beste jeg kan anbefale.

#5. Udacity

Bli en maskinlæringsingeniør ved å ta denne nanograden ved Udacity.

Det vil ta omtrent tre måneder å fullføre kurset, og etter det forventes det at du har en god forståelse av maskinlæringsalgoritmer, hvordan du modellerer dem og hvordan du implementerer dem i produksjon.

Konklusjon

Det finnes et uendelig antall ressurser på internett, og det er lett å gå seg vill når man begynner. De fleste veiledningene og diskusjonene der ute er enten matematisk utfordrende eller mangler struktur, og kan ødelegge selvtilliten din før du i det hele tatt har kommet i gang.

Derfor vil jeg advare deg mot selvdestruksjon: Hold målene dine beskjedne og ta små, men sikre skritt. Maskinlæring er ikke noe du blir komfortabel med på en dag eller to, men ganske snart vil du begynne å synes det er gøy, og hvem vet, kanskje til og med skape noe skremmende!

Ha det gøy! 🙂