Hva er nevrale nettverk? (Del 1)

Kunstige nevrale nettverk er en etterligning av nervecellene våre i hjernen. De skal brukes til å gjøre datamaskiner like flinke til å lære som mennesker og dyr. Dette gjøres ved å herme etter hvordan hjernen er bygd opp.

Nevrale nettverk er noe som har blitt forsket på helt siden 1940-tallet, men det er først de siste årene at bruken av disse har skutt fart. Årsaken er en kombinasjon av økt datakraft, behovet for å analysere enorme mengder informasjon på internett og at mer avanserte nettverk har blitt oppfunnet. Senest i fjor annonserte Facebook at de ved hjelp av nevrale nettverk hadde klart å lage et dataprogram som var bedre til å gjenkjenne ansikt i bilder enn et gjennomsnittlig menneske.

Hjernen består av mange forskjellige celler. De mest spennende er nervecellene som kan lede elektriske signaler over store avstander. Når signalene skal overføres mellom nervecellene dusjer de hverandre med kjemikalier som igjen danner elektriske signaler i mottakercellene.

Synapse
I synapsene dusjer nervecellene hverandre med kjemikalier for å overføre signaler.

Det er kommunikasjonen mellom nervecellene vi forsøker å etterligne når vi lager kunstige nevrale nettverk. Det kan gjøres på mange forskjellige måter, avhengig av hvor mye informasjon vi er ute etter. I forskningen jeg gjør med kollegaene mine forsøker vi å få med veldig mange av detaljene i kommunikasjonen mellom nerveceller. Slik som hvilke ionekanaler som er avgjørende for å få overført de rette signalene. Og hva formen på nervecellene har å si for hvordan de fungerer. Når Facebook, Google og Microsoft prøver å skape kunstig intelligens er disse tingene derimot ikke fullt så viktige. Da er det eneste målet at nettverket som helhet gjør den samme jobben som nervecellene i hjernen. Nemlig at de er i stand til å lære – og huske det de har lært.Det betyr at kunstige nevrale nettverk kan være svært enkle i forhold til de vi finner i våre egne hjerner. En fordel med enkle nettverk er at datamaskinen kan gjøre beregninger mye raskere enn om vi tok med alle detaljene.I de enkleste modellene av nevrale nettverk ser vi på hver nervecelle som et punkt som kan få input fra andre nerveceller og sende signaler videre. Vi forenkler med andre ord det som egentlig er en svært detaljert struktur i bildet til venstre, til en veldig enkel modell uten detaljer:

simplified-neuron
VI forenkler de ellers så detaljerte nervecellene til punkter som kan motta og sende signaler.

Hver nervecelle kan ha flere koblinger til andre nerveceller og sammen danner disse koblingene et nettverk:

Nevralt nettverk
Et nettverk av forenklede nerveceller.

Nettverket over er bare koblet sammen lagvis: Det er tre lag i dette nettverket, og hvert lag er kun koblet til det neste. I hjernen er også nervecellene inndelt lagvis, men det finnes også tilbakekoblinger mellom lagene. Ved å kun tillate lagvise koblinger er det likevel mye enklere å trene opp nettverket på en datamaskin. Men det brukes også tilbakekoblinger i kunstige nettverk, spesielt til problemer der disse har en større nytte, slik som når man skal lære ett nettverk opp til å forstå ting som endres over tid.

Hva gjør de enkelte nervecellene?

Dette er det første i en serie av innlegg jeg kommer til å skrive om nevrale nettverk. Jeg har så langt bare sagt litt om hva ideen er bak nettverkene og litt kort om veien fra detaljerte nerveceller til punktene vi bruker i våre modeller. I de neste innleggene vil jeg si litt mer om hvordan vi tenker oss at disse enkle nervecellene skal fungere og hvordan dette kan hjelpe oss med å skape en kunstig intelligens og en datamaskin som kan lære av seg selv.

Ny CINPLA-logo som helgeprosjekt

Da jeg fikk jobben som stipendiat ble jeg med i en gruppe ved navn CINPLA. Gruppen er dannet for å kombinere eksperimenter og simuleringer innen hjerneforskning.

I helgen bestemte jeg meg for å teste ut en idé til en CINPLA-logo som vi har diskutert på kontoret den siste tiden:

cinpla-logo-brain

Tanken bak logoen er at venstre del representerer den biologiske delen av arbeidet som gjøres i gruppa. Den høyre delen representerer simuleringer. Sistnevnte er den typen arbeid jeg selv er involvert i. Logoen skal brukes på plakater og i foredrag som holdes av personer i gruppa, i tillegg til nettsider og denslags.

Logoen er laget i Inkscape, som forøvrig er et herlig verktøy til denne typen grafisk arbeid. Det er fri programvare og fungerer utmerket til vektorgrafikk i Ubuntu.

Logoen kommer i flere formater på CINPLA sin presseside snart. Den skal bare ut på prøve der den vurderes av gruppa og et par andre først.

Intro-video

Når jeg var ferdig kunne jeg selvfølgelig ikke dy meg, og åpnet i samme slengen 3D-programmet Blender for å se om jeg kunne gjøre noe artig med logoen der. Ved bruk av SVG-importering kunne jeg laste inn det nye bildet jeg hadde laget, men jeg ville også se hvordan det ville være med en skikkelig modell av en hjerne. En slik modell fant jeg på brainder.org, hvor A.M. Winkler har vært så grei at han har lagt ut resultatet av en MR-avbildning av en hjerne i åpne formater.

Jeg lastet denne 3D-modellen inn i Blender, plasserte ting på riktig plass og animerte kameraet slik at jeg endte opp med følgende video:

Jeg aner ikke hva vi skal bruke en slik video til, men kanskje CINPLA begynner med spillefilmer en dag. Da vil det sikkert passe fint å kjøre denne videoen som en intro.

Siden 3D-modellen har en er delt med en Creative Commons Attribution-ShareAlike 3.0 Unported License er naturlig nok denne videoen det også.

Simuleringer av hjernen

For et par dager siden lå jeg våken i sengen og innså at dette var en av de nettene hvor jeg ikke kom til å få sove. Heldigvis sovner jeg alltids til slutt, men det går fort noen timer fra jeg legger meg til jeg faktisk sovner. Andre ganger sovner jeg umiddelbart, litt som en lysbryter som skrus av akkurat klokka 22:04.

Denne gangen ble jeg liggende å tenke på hva som gjorde at jeg ikke fikk sove. Er det på grunn av noe jeg leste rett før jeg la meg? Stresser jeg for mye? Eller er det fordi jeg minnet meg selv på at jeg noen ganger ikke får sove?

Hvorfor det er slik, fascinerer meg. Av egen erfaring vet jeg at det er stor variasjon i hvor fort vi mennesker sovner. Noen av mine venner forteller at de opplever det samme som meg fra tid til annen. Andre er alltid stuptrøtte når klokka passerer 22, og sovner på et blunk. Akkurat hva som gjør det, har jeg ikke funnet svar på ennå. Jeg skulle også gjerne visst hva som kunne fått meg til å sove når jeg stresser over at jeg må tidlig opp dagen etter.

På veien til å bli hjernefysiker

Grubling har sannsynligvis mye av skylden for at jeg ikke alltid sovner. Det er nok også fordi jeg grubler at jeg endte opp med å studere realfag: først nanoteknologi og så fysikk. Jeg har alltid forundret meg over hvorfor verden er som den er. Og jeg elsker å finne svar på det litt etter litt.

Jeg endte altså opp som fysiker. I hverdagen lager jeg dataprogrammer som simulerer verden. Det vil si, deler av den. Det er programmer som etterligner enkelte av de tingene vi omgir oss med. Slik som havbølger som slår inn mot land. Hvordan strømmen finner veien gjennom ledningen og blir til lys når du trykker på bryteren. Hvordan atomer bindes sammen til molekyler. Eller noe så enkelt som hvordan en ball blir kastet opp i luften og faller mot bakken litt lenger borte.

Nå har jeg kastet meg ut i et felt som jeg kan langt mindre om, og det er nevrovitenskap. Jeg begynte for omtrent to måneder siden i en stipendiatstilling der jeg skal studere hjernen sammen med et team av andre forskere. En del av oss skal lage dataprogrammer som etterligner nervecellene hjernen er bygget opp av, for å forstå bedre hvorfor den fungerer som den gjør.

Fordi hjernen består av milliarder av nerveceller, hver med koblinger til tusener av andre, blir vi i forskerteamet nødt til å konsentrere oss om bare en liten del av gangen. Akkurat som med simuleringene jeg har gjort tidligere. Enkelte ting kan vi likevel finne svar på bare ved å studere noen få nerveceller. For eksempel har mange kommet langt i å forstå hvordan vi lærer, hvorfor vi husker, hvordan vi glemmer, og hvordan vi sover. Alt bare ved å se på en brøkdel av hjernen.

Blogging om hjerneforskning

Hvorfor vi sover er derimot fortsatt svært omdiskutert, selv om vi vet at det finnes mange gode grunner til å få nok søvn. Blant annet er det viktig for å holde oss friske. Russell Foster er en hjerneforsker med et fantastisk foredrag på TED der han forklarer hvorfor vi bruker nærmere 32 år av livet på å sove. Hvis du, som jeg, stadig vekk sluntrer unna den optimale søvnlengden, anbefaler jeg å ta en titt på denne:

Akkurat hvorfor jeg selv noen ganger ikke får sove, må jeg nok likevel vente med å finne svar på. I mellomtiden har jeg planer om å lære en del spennende nye ting om hjernen, og hva vi kan forstå ved å etterligne den på en datamaskin.

På bare et par korte måneder har jeg kommet over utrolig mye kult, og jeg har lyst til å vise fram flere av de interessante og spennende tingene som foregår i hjernen. En del av det jeg lærer kommer jeg til å skrive om her fremover. I tillegg har jeg planer om å dele mer av det andre som også fascinerer og interesserer meg, slik som programmering, grafikk, politkk og fysikk.

PS: De av dere som (av en eller annen grunn) skulle savne mine tidligere blogginnlegg om hvordan du fikser obskure programmeringsfeilmeldinger, har disse nå havnet i en egen kategori.