Gjesteblogg: Kunstig intelligens

Jeg er fysikerfruemannen, Anders (eller Andreas som svært mange allikevel klarer å kalle meg). Han hun er gift med. Sunniva og jeg har snakket mange ganger om at jeg skal skrive gjesteblogg om forskjellige ting jeg synes er spennende. Jeg er også fysiker, og tok en doktorgrad fra 2014 til 2018. Store deler av tiden gikk med på programmering, som har tatt meg videre til den jobben jeg har i dag: Programmerer i Cognite.

Cognite er et selskap som tar inn store mengder data (sensorverdier fra oljeplattformer, PDF-dokumenter, bilder, video osv). Vi analyserer dataene med avanserte algoritmer (maskinlæring/kunstig intelligens og bildeanalyse), som vi så kan bruke til å ta gode avgjørelser på ting.

Jeg har knapt drevet noe med maskinlæring/kunstig intelligens selv, men synes det er veldig spennende! Da Sunniva og jeg var på bryllupsreise kom jeg på at jeg hadde lest en bloggpost om nevrale nett. Et nevralt nett er et slags dataprogram som får inn for eksempel bilder, tekst eller tall, og spytter ut noe annet. Programmet er skrevet (kodet) på en sånn måte at den stadig blir bedre på det den skal spytte ut - maskinen (eller pgrogrammet) lærer, altså 🙂 Man kan man bruke et nevralt nett til å gjenkjenne ting (hunder og katter) fra bilder, slik som her:


Dette er kjempeviktig for blant annet selvkjørende biler, der det å vite hva som er biler, mennesker, lyktestolper og midtrabatter er helt avgjørende for å klare å kjøre trygt.

Nevrale nett kan også brukes til noe helt annet. I den bloggposten jeg nevnte over brukte forfatteren et nevralt nett til å generere tekst som likner på Shakespeare. Her er et eksempel:

TIMON: Stay, and the sere hath dangerous, Too grace: a sail, the breath of knees, broke deeds Would do thy husband and alack to speak, And pluck their men at thy abroad doth go. CASSIUS: And in desire, And call'd me ballant Cassius. 

BARDOLPH: Tost in it, what then take your madder?

Jeg er ingen Shakespeare-ekspert, men i mine øyne er dette absolutt samme stil! Et nevralt nett må trenes opp før man får ut noe fornuftig (evt "fornuftig"). Trening betyr at man kjører dataprogrammet (det nevrale nettet) som får vite hva som er riktig svar på en gitt input. I eksempelet med katter og hunder holder det å ha veldig mange bilder, der noen har kategorisert bildene og sagt "dette er en hund", "dette er en katt" osv. Da vil dataprogrammet kunne tilpasse seg og lære hva som er riktig - slik vi mennesker lærer fra vi er små (og hele livet!)

Det nevrale nettet som genererer tekst fungerer slik at, basert på de siste 20 bokstavene i en tekst, så skal det komme med neste tegn / bokstav. Før man har trent det noe som helst kommer det tilfeldig tekst ut (nettet kan jo ikke engelsk), men etter å stadig bli korrigert med fasiten - tekst fra Shakespeare - så forstår det sammenhenger som at etter bokstavene "where" er det store sjanser for at det kommer et mellomrom. Etterhvert lærer det nok til å skrive tekst som ofte er korrekt engelsk (ord for ord, og litt grammatikk) som minner om orginalen, men er fullstendig uten innhold!

Koden til dette dataprogrammet ligger åpent tilgjengelig for alle, med (en ganske komplisert) bruksanvisning om hvordan man kjører den. På bryllupsreisen begynte vi å tenke ut hva slags store mengder tekst vi har tilgjengelig på norsk... Vi var innom idéer som nyhetsartikler fra norske medier, og norske lover, før vi kom på at Sunniva har jo skrevet en stor mengde tekst på bloggen sin de siste årene! Det hadde jo vært utrolig morsomt å trene det nevrale nettet med tekst fra Sunniva, og prøve å få det til å skrive bloggposter i Sunniva-stil.

Gjennom et par flasker med bobler i Thailand stod laptopen og tilpasset det nevrale nettet med flere år med tekst fra denne bloggen som fasit. I et senere innlegg skal jeg forklare litt mer hvordan vi faktsik fikk hentet all teksten fra bloggen, og kjørt koden for å generere tekst, men her er et eksempel vi fikk etter en god del trening:

Så hva har vært veldig mye mer (det produseres dermed på den ene runnen, og det blir jo forresten ikke å snakke for andre som er jo til, og det er alltid liggert av forskningen, men dette var ha til alle ting(du kan også tro). Hadde fått blir disputaslattene 😀 Norges 5 minutter - det er sant jeg eller noen har, men jeg spør jo en lære listen - noe om at du fant jeg har sagt at andre lenger sol også - her er blitt litt ekstra udtaans kveld, må få lov tidskan dere få til å starte…hvis du leste ønsker å anga mene strengt tatt de må utt ønske frem, da, som var altså på et foredraget her:
Ja, endringer jeg kan se. Men det har jeg jo ikke død, før det er snakk om programmering - eller er dermed på engelsk (jeg har natt videre smilte temaet; når jeg spiser ELDED Som vanligvis har faktisk derfor tre hung 😉

4 kommentarer om “Gjesteblogg: Kunstig intelligens

    1. Sunniva

      Yeay! Skal få han til å skrive oppfølgingsinnlegg, også kanskje jeg skal skrive litt mer om programmering fremover jeg også...?

      Svar
  1. Espen HK

    Kult! Vet at dette antagelig bare var et lite moro-prosjekt, men:

    Tror det finnes ganske mye å hente på å gå over fra bokstav- til ord-nivå (basert på siste n ord, spå neste) evt en kombo. 20 tegn er ganske kort scope, pluss at du stadig spår neste bokstav basert på 20 tegn der de første (eldste) kanskje bare er en del av et ord: f.eks. hvis «spear» har e-en 20 posisjoner fra den du skal spå, starter substrengen du betinger på med «ear ..» som kan gi et ganske misvisende grunnlag.

    Kombo av ord-nivå RNN (for eksempel LSTM) og bokstav-nivå RNN med word embeddings ser ut til å være det som gjør det best om dagen, i noen anvendelser CNN i stedet (enten ord eller bokstav).

    Svar
    1. Sunniva

      Takk for input! Dette var et miiiikro-prosjekt, ja, men vi vil jo gjerne ta det videre, så forlag er gull 🙂

      Svar

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *