Skip to main content
Search
Menu

Om hjärnan vore en dator...

Martin Nilsson, Docent 

This article is written in Swedish.

Anta för ett ögonblick att hjärnan är en dator. I så fall skulle datorns hårdvara motsvara hjärnans neuroner. Men vad skulle datorns mjukvara motsvara? Stora resurser har satsats på att ta reda på hur neuronerna är kopplade till varandra (“connectomics”), men satsningarna på att disassemblera hjärnans programvara är försumbara. Ändå bryr sig de flesta av oss ganska lite om hårdvaran när vi köper en ny dator eller mobiltelefon, och desto mer om vilken mjukvara eller vilka appar vi kan köra på den. Utgående från vad vi vet om hjärnan och om datorer i allmänhet, vad skulle vi kunna gissa oss till om hjärnans arkitektur och mjukvara? 

Figur 1: Hjärnans viktigaste komponenter och deras motsvarigheter i en dator.

Kommunikation 

Låt oss ta avstamp i hjärnans interna kommunikation, spekulera och se vart detta kan leda oss. Nyligen klarlades i detalj hur enskilda neuroner i centrala nervsystemet (CNS) kodar information i form av pulsfrekvensmodulerade spiktåg [1]. En bidragande orsak till att denna upptäckt har tagit tid är att det länge funnits ett underförstått antagande att nervsystemet endast använder en typ av kodning, vilket har lett till motsägelser och kontroverser. Nu verkar det emellertid som att minst två olika kodningssystem används i nervsystemet. En indikation på det är att signalerna i närliggande axoner i perifera nervsystemet (PNS) ofta är starkt korrelerade, medan signalerna i CNS är relativt okorrelerade. På väg från PNS till CNS komprimeras signalerna och konverteras till en kompaktare representation. Med neurofysiologisk jargong kallas det “konvergens”. 

Neuroner är i allmänhet organiserade gruppvis i lager eller kärnor, där de ingående neuronerna har snarlik funktion. Hur sådana grupper kommunicerar med spiktåg som bärare (“carrier”) är ännu inte klarlagt men deras kommunikation tycks vara synkroniserad på något sätt. 

Cykeltid/klockfrekvens 

Hjärnan (fig. 1) har en huvudslinga (“main loop”) med ett massivt dataflöde från hjärnbarken (cortex) till thalamus [18] och sedan tillbaka till cortex [2]. Kretsfördröjningen för denna slinga ligger på ungefär 25 millisekunder (ms) motsvarande en “klockfrekvens” på ca 40 hertz och passage av storleksordningen ett tiotal neuronlager per varv. Frekvensen råkar också vara karakteristisk för den av hjärnans elektriska oscillationer som kallas gammarytmen [3]. Intressant är att denna frekvens ligger nära den högsta frekvens där vi kan uppfatta en sekvens av bilder som separata. För högre frekvenser (videofrekvensen) får vi i stället intrycket att föremål på bilderna rör sig. 

En gissning som ligger nära till hands är därför att 25 ms ungefärligen motsvarar exekveringstiden av en “instruktion” i hjärnans programvara. Det är en lång tid i jämförelse med en dator, men hjärnan kompenserar för detta genom att instruktionerna utför mycket arbete per cykel genom parallellism på instruktionsnivå (“instruction-level parallelism”). 

Datarepresentation 

Medan en maskininstruktion i en modern dator för det mesta representeras av ett binärt ord med 32 eller 64 bitar är hjärnans instruktioner extremt breda. De levereras av nervbuntar med tusentals till miljontals axoner. Man skulle därför kunna se instruktionerna som en extremvariant av VLIW (very long instruction word) med en enorm instruktionsnivå-parallellism som kompenserar för den långa cykeltiden, men det finns även andra skäl till att använda så bred representation. 

Representationen av instruktionerna i en dator har historiskt utgått från att vara så kompakt som möjligt för att spara utrymme eftersom minne varit dyrbart. En nackdel med kompakt representation är dock att det blir svårare att avkoda instruktionen, och en kompakt representation blir felkänslig vilket ställer till problem i biologiska system. Har man gott om utrymme blir avkodningen mycket enklare eftersom man kan ha ett separat fält i instruktionen för varje potentiell operation datorn ska utföra.  

Ett relaterat och minst lika viktigt skäl till att man vill ha en bred representation är för att kunna utnyttja gleshet (“sparsity” [10]). Gleshet går ut på att om representationen av en instruktion är en N-dimensionell vektor så går det att koda in ett exponentiellt (i N) antal instruktioner vars vektorer alla är nästan ortogonala. Här betyder “nästan ortogonala” att två godtyckliga olika vektorers skalärprodukt nästan alltid är nära noll. Detta är en konsekvens av Johnson-Lindenstrauss lemma [4], en banbrytande matematisk sats som publicerades så sent som 1984. Ortogonaliteten hos glesa representationer är en oerhört användbar egenskap som innebär stora fördelar för biologiska system. Genom att nollställa många komponenter i representationen reducerar neuronerna metabolismen och sparar energi. De kan lätt åstadkomma en sådan nollställning via den mjuka tröskling (“soft thresholding”) som sker med neuronernas aktiveringsfunktion. 

Det är inte långsökt att dra paralleller mellan representationen av hjärnans instruktioner och de inbäddningarna (“embeddings” [15]) som blivit vanliga i AI-sammanhang. En sådan inbäddning kan ses som en automatiskt genererad vektor av viktiga egenskaper (“feature vector”) som är lättare att hantera (eller tolka/avkoda) än ursprungsdata. Att sådana representationer kan spela en viktig roll i gränslandet mellan neurobiologi och kognition har påpekats av den svenske AI-forskaren Peter Gärdenfors som kallar detta relativt okända område för det “konceptuella rummet” [5]. 

Hjärnans maximala minneskapacitet ligger på omkring 1 petabyte, beräknat som synapsvikternas totala entropi. Det är visserligen mycket, men inte omöjligt mycket, med tanke på att man idag kan köpa 10 terabyte-minne i 2,5-tums-format off-the-shelf. Att vi inte har listat ut hur hjärnan fungerar än kan vi alltså knappast skylla på hårdvaran, utan det är vår kunskap om representation, mjukvara och algoritmer som verkar utgöra det största hindret. 

Program kontra data 

Det är oklart vad som är att betrakta som data respektive program av de meddelanden som strömmar genom centrala nervsystemet. Man kan associera till programspråket Forth, där ett program består av en ström av instruktioner, “words”. I Forth är även data (“literals”) kommandon som betyder “lägg detta datum på minnet (dvs Forth-stacken)”. På liknande sätt skulle meddelandet “äpple” i hjärnan kunna vara en instruktion som betyder “tänk på ett äpple”. Det verkar rimligt att hjärnans instruktioner tolkas i sin lokala kontext. Om till exempel “äpple” skickas till en del av hjärnan som styr talet kommer det kanske att tolkas som en instruktion att uttala ordet “äpple”. 

I den klassiska von Neumann-arkitekturen utförs aritmetiken av en “central aritmetisk del” (CA) [6], eller som den nuförtiden kallas, den aritmetisk-logiska enheten (ALU). I hjärnan motsvarar ALUn thalamus, men thalamus fungerar enbart som en demultiplexer som styr dataflödet till olika delar av hjärnan. “Beräkningarna” utförs istället i cortex, där olika delar har ytterligare, differentierad funktionalitet. Det finns faktiskt en klass av nyare datorarkitekturer som fungerar på detta sätt, så kallad “Near-Memory Computing” (NMC) [7]. En annan snarlik term som har använts är “processing in memory” (PIM) [9]. I denna typ av arkitektur är det minnet istället för ALUn som sköter beräkningarna. Om till exempel två tal ska adderas skickas de till den del av minnet som kan utföra addition. En fördel är att en mycket högre grad av parallellism kan uppnås på detta sätt då många olika delar av minnet kan arbeta samtidigt. I princip finns endast en enda instruktion (“move”) och det är kompilatorns uppgift att planera adresseringen så att data skickas till rätt adressrymd. 

Adressering och subrutinanrop 

Det finns inga tecken på att hjärnan skulle innehålla någon stack, i alla fall inte av någon väsentlig storlek. Möjligheten för hjärnan att anropa subrutiner och återvända till anropspunkten är därför begränsad. Det lutar mer åt att hjärnan använder någon form av associativ adressering och att varje instruktion medför en nyckel till vad som kan vara lämplig nästa instruktion, vilket påminner om Fortrankompilatorer från 1960-talet. Ett mer positivt sätt att se det är att instruktionerna borde innehålla någon typ av “continuations” [14] som till exempel i programspråket Pop-11. 

Primitiver 

Men vad gör egentligen hjärnans instruktioner? Har hjärnan något som liknar ett assembly-språk? Det är ungefär där forskningsfronten befinner sig idag. Matematiskt kan man se en grupp neuroner som en operator, där ett enkelt exempel på utförande är en matrismultiplikation. Ett lite intressantare exempel är att vissa kärnor även tycks kunna beräkna pseudoinverser [13]. Det kanske inte låter så imponerande isolerat, men konfigurerad i ett nät i kombination med andra operationer kan det bli en oerhört kraftfull primitiv. 

Vi kan konstatera med någorlunda säkerhet är att hjärnan är väl anpassad att arbeta med linjär algebra. Man skulle kunna säga att begrepp som linjer, plan och skärningspunkter mappar direkt på hårdvaran. 

Figur 2: Två klassiska exempel på gestaltning. Första exemplet uppfattar man som en rektangel trots att man bara ser fyra hörn. Det andra exemplet är en haikudikt, där utmaningen är att med precis 5+7+5 stavelser frammana en så subjektivt detaljrik upplevelse som möjligt.

Gestaltning

Man kan fråga sig om lågnivåegenskaperna hos hjärnans programspråk på något sätt reflekteras på en högre, kognitiv nivå, kanske till och med en medveten nivå? Ur detta perspektiv är det ursprungligen psykologiska begreppet “gestalt” [11] särskilt intressant. Det innebär att hjärnan bygger upp en detaljerad scen trots att den bara fått några få antydningar (“cues”) (fig. 2), och detta sker så automatiskt att vi ofta är övertygade om att hela scenen är verklig, även om det bara är hjärnan som fyllt i hålen i vår perception. En av pionjärerna inom gestaltpsykologin var psykologen och fysikern Wolfgang Köhler (1887-1967) [12]. Han var en central deltagare i de berömda Macy-seminarierna inom cybernetik [8] i New York 1946-53 som samlade många namnkunniga forskare, inklusive John von Neumann, Claude Shannon, Norbert Wiener, Warren McCulloch och Walter Pitts. Seminarierna hade målsättningen att lägga grunden till “a general science of the workings of the human mind“.  

Hur passar då gestaltning in på hjärnans programspråk? Nyckeln ligger i att neuronernas överföringskapacitet är begränsad trots den breda representationen. Det är inte möjligt för hjärnan att överföra ett helt begrepp, säg, en scen med alla sinnesintryck, med en enda “instruktion”. Hjärnan behöver ekonomisera, och det som går att överföra effektivt är antydningar. Så länge antydningarna överför den väsentliga informationen kan detaljerna i scenen hämtas vid behov från en “default”-prototyp lagrad exempelvis i associativa cortex. Mindre viktig information kapas bort och vi får en gles representation som är nästan lika bra som den ursprungliga. Och det verkar vara just det som sker. När vi uppfattar en komplex scen med våra sinnen destilleras den automatiskt ned till en uppsättning antydningar (konvergens!) innan den processas av CNS. Vid behov hämtas detaljer fram ur minnet för hur det “brukar” vara, vilket kanske inte alltid stämmer med verkligheten, utan blir som vi tror baserat på vår erfarenhet, eller elakare uttryckt, våra förutfattade meningar. Gestaltningen, som är nära förknippad med gleshet, innebär alltså stora effektivitetsvinster för hjärnan, eftersom det endast är oförutsedda signaler som kostar energi. Signaler som hjärnan kunnat förutse behöver inte representeras utan kan filtreras bort.   

Men vad är egentligen skillnaden mellan hjärnan och en dator?

Mycket längre än så kan vi inte komma med spekulationerna för tillfället. Uppenbarligen finns det mycket kvar att upptäcka. Men för att återvända till vårt ursprungsantagande: Hur rimligt är det egentligen att anta att hjärnan är en dator? Helt klart är förstås att hjärnan kan göra samma saker som en dator. Vi kan förstå vad ett datorprogram kommer att göra genom att läsa koden. Rent strukturellt kan man dessutom dra ganska långtgående paralleller mellan hjärnan och en dator. Vi har redan nämnt cortex (minne) och thalamus (ALU/demux). Den centrala styrenheten (CC eller “central control part” i [6]) motsvaras i hjärnan av de basala ganglierna [16] (fig. 1) som mottar ett flöde av instruktioner från cortex. De basala ganglierna påverkar alltså hjärnans arbete genom att styra informationsflödet genom thalamus. På så vis kan basala ganglierna bl.a. starta och stoppa programsekvenser. Patienter med Parkinsons sjukdom får problem med just detta, eftersom sjukdomen bryter ned celler i basala ganglierna som skickar styrsignaler till thalamus, dvs. förstör instruktionsavkodaren. De basala ganglierna har också stor betydelse för att syntetisera nya sekvenser, och hur hjärnan använder styrenheten för att “bootstrappa” sin egen programmering. När vi föds har vi bara en rudimentär förmåga att lära oss, men förmågan förbättras oerhört snabbt till en enastående kapacitet. Hur denna bootstrapping går till är en av dagens mest spännande forskningsfrågor! 

Analogin kan drivas en bra bit vidare. Det är exempelvis inte särskilt kontroversiellt att se hippocampus [17] som ett cacheminne av write-back-typ som skriver tillbaka till cortex på natten. Höger och vänster hjärnhalva utgör ett symmetriskt dubbelprocessorsystem med en imponerande förmåga att överta varandras arbetsuppgifter. Styrningen av vitala lågnivåfunktioner som andning och hjärtverksamhet (“BIOS”) sitter i förlängda märgen, som kan sägas motsvara “southbridge”. 

Men hjärnan har förstås också egenskaper som saknas hos datorer. Viktigast är kanske att hjärnan sitter i en kropp (“embodiment”). Detta har många väsentliga konsekvenser. Mest utmärkande är att en dator måste programmeras av någon, medan hjärnans drivs av motivation, som bland annat styrs av grundläggande behov och genereras av kroppens sensorer (hunger, rädsla, osv), och kommer som input till basala ganglierna.  

Sammanfattningsvis, utan en väldigt specifik definition av vad en dator är, kan man lugnt utgå från att hjärnan innehåller en dator, låt vara av senaste NMC-modell med symmetrisk dubbelprocessor. Världen har sett betydligt konstigare förslag på datorarkitekturer än hjärnan. Det lutar även åt att hjärnan faktiskt har en sorts assembler, även om den är ganska olik de vi är vana vid. En fascinerande utmaning just nu är hur detta programspråk används i hjärnan för att komponera algoritmer för inlärning och annan högnivåfunktionalitet. Om man skärskådar hjärnans hårdvara ser man snabbt att evolutionen utvecklat fullkomligt geniala lösningar mer än 200 miljoner år innan vi människor fåfängt skickade ansökningar för desamma till Patentverket. Vad borde då inte gälla för hjärnans mjukvara?  

Referenser

+
Martin Nilsson
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

* Mandatory By submitting the form, RISE will process your personal data.