De fleste av oss har blitt vant til å høre begreper som kunstig intelligens og maskinlæring, men det er ikke alltid like enkelt å forstå hva det er og hvordan det fungerer. I denne posten skal vi prøve å forklare dyplæring, en av metodene innenfor kunstig intelligens, på en enkel og forståelig måte.
Hva er dyplæring?
Kort sagt er kunstig intelligens, eller AI (Artificial Intelligence) som det ofte kalles, en samlebetegnelse for et bredt spekter av metoder som brukes for å få datamaskiner til å gjøre en oppgave uten å eksplisitt programmere hvordan den skal gjøre det. En metode innenfor kunstig intelligens som har vist seg å svære svært effektiv til å løse en rekke komplekse problemer de siste årene er dyplæring.
Så hvordan fungerer det egentlig?
Kunstig nevrale nettverk
Hjørnesteinen i dyplæringsmetoder er kunstige nevrale nettverk (Artificial Neural Networks). Disse nettverkene er inspirert av måten det nevrale nettverket i hjernen vår fungerer og består av noder som er strukturert i flere lag.
I figuren over ser du en illustrasjon av et svært enkelt nevralt nett, hvor hver sirkel representerer en node. Vi kan dele dette nettet inn i tre lag: input-laget (de blå), det skjulte laget (de orange) og output laget (de gule). Hver node holder på en tallverdi.
-
- For input-laget vil dette ofte representere en fysisk verdi, dette kan for eksempel være verdien til en piksel i et bilde.
-
- I output laget vil ofte verdiene i nodene representere svaret på oppgaven du satt nettet til å løse. Et vanlig eksempel er å gi nettet bilder av hunder og katter også trene nettet til å avgjøre om det er en hund eller en katt på bildet. I et slik eksempel kan z₁ og z₂ være verdier mellom 0 og 1 som representerer hvor sannsynlig nettet tror at det er en katt vs. en hund på bildet.
-
- I det skjulte laget vil ofte ikke verdiene i nodene representere noen fysisk eller konseptuell verdi, men det er det skjulte laget som plukker opp mønstre som gjør at nettet klarer å løse oppgaver.
Vekter og aktiveringsfunksjoner
Som illustrert i figuren er nodene koblet sammen med hverandre, slik at verdien til nodene i det skjulte laget er avhengig av verdiene som kommer fra input-laget. y₁ vil for eksempel være gitt av:
y₁= σ ( w₁₁x₁+w₂₁x₂+w₃₁x₃ )
Der w₁₁ representerer hvor mye man i y₁ vekter verdien i x₁, w₂₁ er hvor mye man i y₁ vekter verdien i x₂ osv.
σ er en aktiveringsfunksjon og sørger for at vi får ulineariteter i nettverket slik at det blir i stand til å gjenkjenne mer komplekse mønstre. Det finnes mange forskjellige typer aktiveringsfunksjoner. De kan for eksempler være step-funksjoner, sigmoidfunksjoner eller tanh-funksjoner, for å nevne noen.
Videre vil outputlaget være avhengig av verdiene i det skjulte laget, slik at:
z₁= σ ( v₁₁y₁+v₂₁y₂+v₃₁y₃ )
Her representerer v-ene vekter mellom det skjulte laget og output laget slik som w representerte vekter mellom input- og det skjulte laget.
Dersom du setter inn uttrykket for y₁, y₂ og y₃ inn i z₁ og z₂ får du et uttrykk for outputen basert på inputen.
Basert på dette uttrykket kan vi justere vektene i nettet (w-ene og v-ene) når nettet trenes, og det er disse som gjør at nettet blir i stand til å gjenkjenne mønstre.
Gradient descent-metoden
Når nettet skal justere vektene brukes ofte det som kalles gradient descent-metoden. Veldig kort forklart går det ut på å regne ut en gradient som forteller deg hvilken retning og hvor raskt vektene bør endres for å minimere feilen i output laget. Når vi mater nettet med mye data, hvor vi allerede vet hva riktig output er, kan nettet over mange iterasjoner tune vektene slik at det blir så effektivt som mulig til å gjenkjenne de mønstrene vi ønsker.
Dype Nevrale Nettverk
Det nevrale nettverket tegnet i figuren over er neppe i stand til å gjenkjenne særlig komplekse mønstre siden det bare har ett gjemt lag med bare tre noder. Skal vi løse komplekse oppgaver, som for eksempel klassifisering av bilder, trenger vi flere gjemte lag og gjerne mange flere noder i hvert lag. Når et kunstig nevralt nettverk har flere gjemte lag kaller vi det et dypt nevralt nettverk og det er dette som er dyplæring.
For å gjøre disse nettverkene så effektive som mulig finnes det en lang rekke variasjoner av kunstige nevrale nettverk, smarte teknikker for å bygge lagene og ulike måter å trene nettverket på. Noen nevneverdige eksempler er Convolutional Neural Nettworks (CNN) og Recurrent Neural Networks (RNN), men vi vil ikke gå dypere inn på disse i dette innlegget.
Vil du lære mer?
Ønsker du å vite mer om maskinlæring?
Meld deg på morgenseminar om maskinlæring i digital produktutvikling, eller ta en titt på ett av våre andre blogginnlegg.
Vi hjelper deg med å digitalisere din bedrift – book et møte med oss!