Et nevralt nettverk er en samlebetegnelse for datastrukturer, med tilhørende algoritmer, som er inspirert av måten nervecellene i en hjerne er organisert på.

Slike datastrukturer er egnet til å identifisere sammenhenger hvor det er vanskelig å formulere klare matematiske sammenhenger, for eksempel bilde- og talegjenkjenning. De kan også benyttes til å klassifisere mennesker ut fra handlingsmønstre, til etterretningsvirksomhet eller for å anslå hvorvidt en bestemt person vil reagere positivt på reklame.

Nevrale nettverk er bygget opp av dataelementer (nevroner) som kan motta og sende tallverdier til hverandre.

Et tidlig eksempel på et slikt nevron er perceptronet, som ble oppfunnet av den amerikanske psykologen Frank Rosenblatt på 1950-tallet. Et perceptron mottar ja/nei-verdier, kodet som enere og nuller, fra andre nevroner eller fra omgivelsene, fatter en ja/nei-beslutning på grunnlag av disse, og sender denne beslutningen videre til andre nevroner eller ut til omgivelsene.

Beslutningene fattes på samme måte som vi selv gjør det. Nevronet veier argumentet og motargumentet opp mot hverandre og ender til slutt opp med enten ja eller nei, avhengig av hva som veier tyngst.

Disse avveiningene foregår ved hjelp av vekting. Verdiene nevronet mottar blir multiplisert med positive/negative vekter avhengig av hvilke egenskaper de representerer. Disse produktene blir så lagt sammen. Hvis totalsummen overstiger en bestemt minimumsverdi, blir svaret ja. Hvis ikke, blir det nei. Denne verdien kaller vi nevronets skjevhet (engelsk bias). Jo høyere skjevhet, desto vanskeligere blir det å oppnå et ja-svar.

Eksempel: Skal jeg gå på kino?

Et nevron som etterligner en beslutning om å gå og se en bestemt film på kino kan se slik ut:

Egenskap Ja/nei Vekt Verdi
Godt selskap 1 +10 +10
Grei billettpris 0 +7 0
Bra film 1 +8 +8
Sum +18

Skjevhet: 10

I dette eksempelet blir beslutningen basert på tre faktorer: (1) godt selskap, (2) grei billettpris og (3) bra film. Viktigheten av disse faktorene vil variere fra person til person. I dette eksempelet ser det ut til at personen er mest opptatt av å ha godt selskap. 

Hun går heller ikke på hva som helst. Dette uttrykkes ved at totalsummen må være minst 10 for å ta en positiv beslutning. I eksempelet vil hun allikevel ende opp med å gå på kino selv om billettprisen ikke er helt grei.

Figur 1: Et enkelt nevralt nettverk som består av perceptroner

av Henrik Dvergsdal. CC BY SA 3.0

Dette enkle nettverket er illustrert i figur 1. Kolonnen til venstre kalles for inngangslaget (input layer). Disse nevronene henter verdier inn i nettverket.

Kolonnen til høyre (foreløpig bare med ett nevron) kalles for utgangslaget (output layer). Nevronene i dette laget tar den endelige beslutningen og formidler resultatet ut av nettverket.

Legg merke til at figuren ikke sier noe om vekter eller skjevheter. Et viktig poeng med nevrale nettverk er nemlig at de er tilpasningsdyktige. Vi kan endre og forbedre nettverket ved å endre vekter og skjevheter. Ved å variere på vektene i kinonevronet vårt, kan vi for eksempel imitere kinovanene til mange forskjellige mennesker.

Dette nettverket er imidlertid nokså unyansert. Hva som regnes som «godt selskap» vil variere fra person til person. Det samme gjelder hva som er en «grei billettpris» og «god film». Disse nyansene kan vi fange opp ved å innføre et skjult lag i nettverket (engelsk hidden layer), altså et lag som ikke er synlig fra utsiden.

En typisk tenåring kan for eksempel vurdere en bestemt film på denne måten:

Egenskap Ja/nei Vekt Verdi
Gode anmeldelser 1 +7 +7
Kjente skuespillere 1 +5 +5
Fin plakat 0 +9 0
Action 0 +13 0
Fantasy 0 +19 0
Dogmefilm 1 –27 –27
Sum –15

Vi ser av tabellen at dogmefilmer ikke står særlig høyt i kurs hos denne ungdommen. Slike filmer vil skåre lavt, selv med gode anmeldelser og kjente skuespillere.

Hva som regnes som godt selskap vil også variere. Tenåringen vår vil kanskje vurdere situasjonen slik:

Egenskap Ja/nei Vekt Verdi
Med foreldre 1 –23 –23
Med venner 1 +13 +13
Med kjæreste 0 +50 0
Sum –10

Her hjelper det altså ikke med gode venner hvis også foreldrene er med. Det hadde imidlertid blitt et helt annet resultat hvis han hadde fått med kjæresten.

Et nettverk med et slikt skjult lag er vist i figur 2. Selv om den overordnede logikken er den samme, vil dette nettverket gi et mer nyansert bilde av vurderingene som blir gjennomført. Derfor vil det antagelig også være mer treffsikkert enn det første.

Hvis et nevralt nettverk skal ende opp med korrekte beslutninger, er det viktig at vi treffer godt med vekter og skjevheter. I kinoeksempelet handler dette om å finne ut hvordan hver enkelt vektlegger ulike egenskaper ved situasjonen når de tar beslutninger.

I prinsippet kan vi kartlegge vektene, for eksempel ved å intervjue personene og så legge dem inn manuelt.

Hvis vi har tilgang på informasjon om hvilke beslutninger som ble tatt i konkrete situasjoner, vil det imidlertid være mulig å lære opp nettverket automatisk. Dette foregår slik:

  1. Opplæringen begynner med at vi setter inn mer eller mindre tilfeldige utgangsvekter i nettverket.
  2. Deretter tester vi nettverket ved å mate inn informasjon om hver enkelt situasjon og sammenligner beslutningen nettverket kom frem til med det som faktisk ble fattet i hver av situasjonene.
  3. Hvis resultatet er for dårlig, gjør vi en liten endring i en av vektene og tester treffsikkerheten på nytt.
  4. Denne prosessen gjentar vi på en systematisk måte helt til nettverket fungerer bra eller til vi antar at forbedringspotensialet er uttømt.

Hvis vi (1) har truffet godt med inngangskategoriene og samvirket mellom disse i det skjulte laget, og (2) har informasjon om tilstrekkelig mange beslutningssituasjoner til å trene opp nettverket, vil vi til slutt ende opp med et nettverk som tar korrekte beslutninger i de fleste tilfellene.

Selv om vi treffer godt med inngangskategoriene, kan det godt tenkes at sammenhengene i det skjulte laget varierer. For eksempel kan det tenkes at enkelte ungdommer vil være mer positivt innstilt til foreldrenes medvirkning hvis de også betaler billetten. Figur 3 viser et nettverk som tar hensyn til denne muligheten. 

For å ta høyde for dette, er det vanlig å starte læringsprosessen uten å binde koblingene til og fra nevronene i det skjulte laget. I stedet lar vi alle nevronene være koblet til hverandre, både mellom inngangslaget og det skjulte laget og mellom det skjulte laget og utgangslaget.

Irrelevante koblinger kan så fjernes ved at de vektes til null. På denne måten blir det mulig å identifisere nye, individuelle sammenhenger som vi ikke kjente til fra før og kanskje ikke engang kan sette navn på. Dette øker mulighetsrommet og dermed også sannsynligheten for å ende opp med et treffsikkert nettverk. Det innebærer imidlertid også at omfanget av læringsprosessen øker dramatisk.

Figur 4 viser et nettverk med slike alle-til-alle-koblinger. Den illustrerer også hvordan man kan ha flere enn ett nevron i utgangslaget og dermed åpne for flere mulige utfall.

Etter hvert som vi har fått kraftigere maskinvare, har perceptronet blitt erstattet med nevroner som opererer med kontinuerlige inn- og utgangsverdier, ikke bare ja/nei-signaler. Dette øker mulighetene for nyansering i modellene, men den viktigste fordelen er at det åpner for mer effektive læringsprosesser.

I et perceptron vil endringer i en vekt enten (1) ikke påvirke utgangsverdien eller (2) endre den drastisk. Med så grovkornede tilbakemeldinger vil læringsprosessen stort sett handle om prøving og feiling. Man må variere alle vektene gradvis og systematisk helt til man oppnår en kombinasjon som gir tilstrekkelig treffsikkerhet.

Når man opererer med kontinuerlige verdier, kan man sørge for at små endringer i vektene også fører til små endringer i signalene som sendes ut. Dette gir større muligheter for intelligent styring av læringsprosessen. For eksempel kan man anslå når en vekt har blitt såpass lav/høy at ytterligere reduksjoner/økninger bare vil redusere treffsikkerheten. På den måten kan man unngå å forfølge muligheter som neppe vil bidra til forbedringer.

  • Michael Nielsen: Neural Networks and Deep Learning. Gratis nettbok
  • Frank Rosenblatt: The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain. Psychological Review, 1958. Lenke til artikkelen.

Foreslå endringer i tekst

Foreslå bilder til artikkelen

Kommentarer

Har du spørsmål om artikkelen? Skriv her, så får du svar fra fagansvarlig eller redaktør.

Du må være logget inn for å kommentere.