Hvordan programmerer man maskinlæring og kunstig intelligens?

Malte Loller-Andersen forklarer deg hvordan AI faktisk lages og brukes i praksis.

Malte Loller-Andersen er utvikler i Knowit Objectnet, hvor han blant annet jobber med maskinlæring. Her holder han et foredrag om nettopp kunstig intelligens på årets virtuelle NDC. 📸: Knowit
Malte Loller-Andersen er utvikler i Knowit Objectnet, hvor han blant annet jobber med maskinlæring. Her holder han et foredrag om nettopp kunstig intelligens på årets virtuelle NDC. 📸: Knowit Vis mer

Sier du til et fjernt familiemedlem at du er utvikler, er det gode sjanser for at de enten:

  • A) Ber deg fikse printeren deres.
  • B) Begynner å legge ut om noe greier de leste om kunstig intelligens og hvor skummelt det er med roboter og flyvende selvkjørende biler.

For det snakkes mye om potensialet til kunstig intelligens, maskinlæring, nevrale nettverk og deep learning. Men mindre om hva alt dette faktisk er, betyr og brukes i praksis.

Vi inviterte derfor Knowit Objectnet-utvikler og AI-ekspert Malte Loller-Andersen til ukas episode av kode24-timen! Ikke bare holder han foredrag om kunstig intelligens - han koder det, også. Og i løpet av vår morsomme og interessante preik vil du forstå litt mer av hvordan du kan få til det samme.

Under har du kortversjonen av noen av de viktigste spørsmålene, og svarene fra Loller-Andersen - som er dansk, i tilfelle du synes navnet hans er litt annerledes, men ikke tør å spørre han selv.

Hva er maskinlæring?

Når jeg skal forklare dette liker jeg å starte med å forklare hva kunstig intelligens er: Kunstig intelligens er bare å få datamaskinen til å gjøre noe vi mennesker synes er intelligent.

Det kan være hva som helst; å lese en setning, eller kjenne igjen noe på et bilde.

Maskinlæring er en underdel av dette: Å bruke data til å trene opp en kunstig intelligens, med en algoritme som ikke er spesifikt programmert til å løse ett problem, men som basert på dataen du gir den på en måte kan løse "hva som helst" - i gåsetegn.

Og hva er et nevralt nettverk?

Det er en maskinlæringsalgoritme.

Det er den som har gitt best resultater de siste syv, åtte årene, og derfor snakker man masse om nevrale nettverk og deep learning.

...ooog hva er deep learning?

At man klarer å få flere abstraksjoner ut av dataen. At man har flere lag hvor man ser på dataen, og i flere lag klarer å predikere det man skal. Det er litt vanskeligere å forklare, men i dagligtale bruker man ofte dyp læring synonymt med nevrale nettverk.

Reinforcement Learning: Pac-Man - Malte Loller-Andersen & Manu Gopinathan - NDC Oslo 2020 Vis mer

Hva trenger man kunstig intelligens til, egentlig?

Det finnes mange bruksområder for kunstig intelligens. For eksempel å finne ut hva som finnes i bilder, lage chatbotter, stemmegjenkjenning eller anbefalingssystemer.

Selv bruker jeg maskinlæring i Zizr, hvor vi prøver å anbefale størrelser på klær og sko når du shopper på nettet. Har du for eksempel kjøpt en Adidas-sko i størrelse 43, kan du gå inn på en Nike-sko og få anbefalt størrelsen som maskinlæringsalgoritmen vår tror er din størrelse til den skoen. Dette er da basert på blant annet transaksjonshistorier til masse forskjellige brukere og returer.

Jeg har også jobbet med automatisk innvilgelse eller avslag på parkeringsgebyrer. Der mata vi systemet med tidligere klager, med masse forskjellige kolonner som at dette var en Toyota på Grünerløkka den datoen, og klageteksten, og hvorvidt klagen ble innvilget eller avslått. Så kan systemet se etter kjennetegn.

Hvor starter man, om man vil bygge en kunstig intelligens gjennom maskinlæring?

Aller først bør du spørre deg om dette problemet bør løses med maskinlæring. Eller om det bare er noe som er kult, fordi det er et stort buzzord i dag.

Av definisjon må du ha mye data om et problem for å gjøre maskinlæring. Så du må begynne med å kartlegge hva slags data du har, og det aller meste av jobben er å jobbe med den dataen.

Andre har laget det nevrale nettverket for deg. Du trenger ikke skrive 40.000 linjer for å lage det fra bunn av; det er bare 40 linjer i Python.

Hva slags arbeidsverktøy bruker du for å sette opp maskinlæring?

Det aller, aller vanligste, som 90 pluss prosent bruker, er Python.

Også har Google laga et veldig bra rammeverk for deep learning og nevrale nettverk, som heter TensorFlow. I tillegg har du Keras, som er en abstraksjon oppå TensorFlow, som gjør det veldig enkelt å sette opp og bruke.

Selv bruker vi egne skyleverandører for å hoste dataen og sette opp maskinlæring-serverne med GPU-er.

«Det aller, aller vanligste, som 90 pluss prosent bruker, er Python.»

Hva skjer etter du har starta en maskinlæring-økt?

Om du batch-trener det nevrale nettverket putter du for eksempel 128 rader med data inn hver runde, også står den og kjører.

Det nevrale nettverket prøver å predikere et svar, og måler selv hvor feil han tar om det er supervised learning, hvor man vet svaret. Så endrer han seg bittelitt, tar inn mer data, og itererer mange, mange ganger.

Så får du til slutt et svar, og du kan sjekke hvor feil han tar.

Hva er sluttproduktet fra maskinlæring?

Med TensorFlow får du ut en fil, en modell. Denne modellen kan du for eksempel åpne opp i et annet Python-program, og bruke til å sende inn ny data og få en predikasjon.

Så når du er ferdig med å trene, kan du for eksempel lage et API som bruker den fila for å kunne ta i mot data og gi tilbake et svar.

Kunne man ikke løst kunstig intelligens-oppgaver med masse if-er?

Du kan kanskje lage noen helt ville if then-systemer, men jeg tror det ville tatt veldig lang tid, og blitt veldig rotete. Det er ikke en helt farbar vei.

Hvor viktig tror du det blir for norske utviklere å kunne maskinlæring framover?

Jeg tror ikke det blir sånn at alle utviklere må kunne maskinlæring. Vi er ikke der. Men jeg tror det blir mer utbredt, i alle fall når flere får opp øya for alt det kan brukes til.

Hvordan tror du jobbmulighetene blir innen maskinlæring og kunstig intelligens?

Jeg ser jo flere og flere jobbannonser der maskinlæring er en del av den. Gjerne fra produktselskaper som ser at de har masse data som de vil gjøre noe med, eller et medieselskap som vil lage en bedre video-feed med AI.

Men det er langt færre jobber innen maskinlæring enn utvikling. Og det kommer nok ikke til å endre seg de kommende årene. Så det er nok lettere å få seg jobb som en utvikler enn en maskinlæringsekspert.

«Vi er ganske langt unna en AGI - en artificial general intelligence.»

Bør vi være redd for at kunstig intelligens utvikler seg til Terminator og Skynet?

Det kan godt hende. Men om det skjer i nærmeste tid - det tror jeg ikke. Der kan jeg beroligge alle sammen.

Så Skynet blir ikke basert på TensorFlow?

Det er godt spørsmål om det i det hele tatt blir nevrale nettverk som kommer til å drive det.

For vi er ganske langt unna en AGI - en artificial general intelligence.

Problemene AI løser i dag er ganske innsnevra, for eksempel gi meg en skostørrelse. Det er ikke den samme intelligensen som kan skrive et dikt, synge og spille sjakk. Det er vi ganske langt unna.

💡 Hvordan det høres ut når Terminator faktisk kommer, men bare foreslår skostørrelser, og svaret på hundre tusen flere spørsmål om praktisk AI-koding, får du i hele podcast-episoden. Håper du vil høre!