Courses  

VI. MacGregor neuronen

A. Biologisch plausibele neuronen

Inleiding

Niemand kan met droge ogen beweren dat knopen in connectionistische netwerken in hun werking lijken op neuronen. Hoe meer bekend wordt over neuronen, hoe ingewikkelder ze blijken en hoe duidelijker het wordt dat ze niet functioneren als eenvoudige optellers en doorgevers van inputs.

Knopen hoeven ook niet te lijken op biologische neuronen. Nog afgezien van dat het niet de ambitie van elke connectionist is om het brein te simuleren, is realisme op het niveau van het neuron misschien niet nodig om realisme op het niveau van het hersendeel te bereiken. Er zijn ook kosten verbonden aan het simuleren van realistische neuronen. Het kost zoveel rekenwerk om neuronen realistisch te modelleren dat het vaak onmogelijk is grote netwerken te bouwen. Bovendien wordt het simuleren met zulke neuronen al snel zo ingewikkeld dat resultaten nauwelijks meer te interpreteren zijn. Als modelleerder heb je hier dus een trade-off: hoe meer detail in het neuron hoe realistischer een simulatie kan worden. Hoe minder detail, hoe makkelijker het is om grote netwerken te bouwen en hoe uitgebreider je simulatie kan zijn.

Toch wordt steeds vaker getracht om netwerkknopen zo veel mogelijk te laten lijken op neuronen. Dat heeft veel te maken met de explosie van de neurowetenschappen: de laatste decennia is er zoveel nieuwe kennis beschikbaar geworden over het brein, van het biochemische niveau tot aan het niveau van de twee hemisferen, dat het niet meer onmogelijk is om bijvoorbeeld een stukje hippocampus na te bouwen. Onder de noemer ‘computationele neurowetenschap’ bloeit een heel veld op waarin breindelen gesimuleerd worden met behulp van neurale netten.

Soms zijn deze modellen netwerken met klassieke knopen, en is enkel in de structuur van het netwerk informatie over breinanatomie verwerkt. Vaak echter wordt ook getracht te werken met zo realistisch mogelijke ‘neuronen’. In de model-neuronen worden expliciet membraanpotentialen, ionenstromen, ‘spike’-eigenschappen en de werking van verschillende neurotransmitters gesimuleerd op een realistische tijdsschaal van milliseconden. Meestal wordt het gedrag van zulke model-neuronen bepaald door een ingewikkeld stelsel van differentiaalvergelijkingen.

Een voorbeeld van zo’n model-neuron is de MacGregor-eenheid (MacGregor & Oliver, 1974). Oorspronkelijk bedoeld voor het begijpen van electrofysiologische data (opnames van membraanpotentialen van individuele neuronen), wordt dit model nu regelmatig gebruikt voor connectionistische simulaties. MacGregor-neuronen zijn overigens nog relatief eenvoudig vergeleken met meer recente modellen (Hasselmo, Bradley, Wyble, & Wallenstein, 1996; Jensen & Lisman, 1996).

Het MacGregor-paradigma

In Nutshell hebben we het MacGregorparadigma geïmplementeerd met een paar vereenvoudigingen voorgesteld door Murre en Raffone (subm.). Een beschrijving van hun modelneuronen is hier opgenomen als appendix 4.

-Open Nutshell, en open een “MacGregor”-workspace.

-Klik op Insert Layer om een layer aan te maken van grootte 1 bij 1.

- -Kijk naar de laagparameters (zie appendix 1 voor uitleg van parameterkijken). Kijk onder het "Help" menu, dan "Help Topics", dan "Paradigms" (klik op het vierkantje met een kruisje voor deze optie), dan "Paradigm Specific Methods and Parameters", en dan op "Open Help Files" in het linker menu. Een aantal parameters hebben te maken met tijd: met bijvoorbeeld de snelheid waarmee kalium het neuron weer ‘insijpelt’ tijdens de relatieve refractaire periode. Er is er ook eentje die bepaalt of de laag inhiberend (vinkje) dan wel exciterend (geen vinkje) is, d.w.z. of alle knopen in de laag inhiberende connecties leggen of exciterende.7

-Klik op een knoop, en kijk naar de parameters. ‘Membrane’ is het membraanpotentiaal, ‘Potas’ (van Potassium) een afgeleide van de kaliumuitstroom. Fires is een binaire variabele: vinkje betekent dat de knoop in de huidige iteratie vuurt. ‘Clamped’ en ‘deactivated’ hebben hun gebruikelijke betekenissen.

-Verander de activatie in de knoop van 0 naar 4. Run een aantal iteraties zonder leren (klik hiervoor op de knop voor de functie ‘ActCycle’). Kijk na elke iteratie naar de variabelen.

Na 1 iteratie zie je dat de knoop vuurt: de activatie is immers boven de ‘threshold’ van 1. Verder zie je dat de kaliumwaarde,‘Potas’, omhoog is geschoten. De activatie is inmiddels gezakt, omdat in elke iteratie het membraanpotentiaal iets terug gaat naar het rustpotentiaal (gelijk aan 0). In connectionistische termen heet dit dat MacGregorneuronen ‘leaky integrators’ zijn: ze integreren input die binnenkomt door de tijd heen, maar op elke tijdsstap ‘lekt’ er ook een gedeelte van de activatie weg.

In de tweede en derde iteratie zal de knoop nog steeds vuren en zal de kaliumwaarde nog verder stijgen. Het membraanpotentiaal (‘Membrane’) zal inmiddels onder de ‘threshold’ zitten. Niet alleen is er weer activatie ‘weg gelekt’, de kaliumwaarde zorgt voor een verder verlaging van het membraanpotentiaal. Dit is een belangrijke eigenschap van zowel echte als MacGregorneuronen. De kaliumuitstroom nadat een neuron gevuurd heeft zorgt voor een verlaging van het membraanpotentiaal, waardoor het moeilijker wordt voor het neuron om meteen weer te vuren. Dit zorgt voor de refractionaire periode die een neuron doormaakt na gevuurd te hebben.

De knoop die we nu onder handen hebben zal hierdoor in de vierde of vijfde iteratie niet meer kunnen vuren. Veel neuronen vertonen zulk gedrag: ze vuren een aantal malen achtereen in een ‘burst’, waarna ze een tijd lang moeilijker te exciteren zijn. Als je de knoop nog verder in de tijd volgt zal je zien dat zowel het membraanpotentiaal als de kaliumwaarde weer terug gaan naar hun uitgangswaarde, 0.

-Bekijk in Appendix 4 de formule voor de activatie, formule 1, uit Murre & Raffone (in prep.). Dit is een zogenaamde differentiaalvergelijking. Zo’n vergelijking geeft de verandering van een bepaalde variabele (dU/dt) als functie van o.a. de huidige waarde van de variabele (U). De U uit de eerste vergelijking is het membraanpotentiaal, de variabele die bepaalt of het neuron gaat vuren. Gk(Uk-U), uit de tweede vergelijking, is de bijdrage van de kaliumuitstroom aan het membraanpotentiaal (Gk geeft ongeveer de ‘openheid’ van het membraan ).

Om differentiaalvergelijkingen te kunnen gebruiken voor een simulator moet je ze integreren (tegengestelde van differentiëren). Je kunt hun gedrag echter ruw benaderen door ze als discrete stappen te zien. Je neemt dan de waarden van U en andere variabelen (bijv. Gk) om hun verandering uit te rekenen (bijv. DU), telt die op of trekt die af van de uitgangswaarden om de waarden in de volgende tijdsstap te berekenen. Vervolgens bereken je weer de verandering in die volgende tijdsstap, etc. Zou je dit doen voor een pyramidale neuron met op t=0: U = 4 (of U=-15 als je de millivoltagewaarden wilt gebruiken), en Gk = 0, dan zou je hetzelfde gedrag zien als bij de knoop hierboven. De term “(U-U0)/tu” regelt het ‘weglekken’ van activatie: op elke tijdsstap wordt er een ‘1/tu’ gedeelte van het verschil tussen U en het rustpotentiaal van U afgetrokken. De resterende termen in de eerste formule geven het effect van de input, zowel exciterend als inhiberend, en van de kaliumuitstroom weer.

In de tweede formule is geregeld dat, de kaliumopenheid, Gk, omhoog schiet op het moment dat een cel vuurt (als S=1). Daarnaast gaat ook de kaliumwaarde terug naar de evenwichtswaarde 0, via de term ‘-Gk / tGk’. De kaliumwaarde heeft, via de eerste differentiaalvergelijking, een negatief effect op U: het verschil tussen U en het evenwichtspotentiaal voor kalium (-1, oftewel -90 millivolt) wordt voor een 1/tu gedeelte van U afgetrokken. Nadat een neuron heeft gevuurd en kalium de cel uit stroomt, daalt dus het membraanpotentiaal, wat het moeilijker maakt nog eens te vuren.

De Hebb-regel stelt dat een verbinding wordt gevormd als de pre- en postsynaptische neuron tegelijk vuren. Zo is het niet in realiteit en zo is het ook niet bij MacGregorneuronen. In realiteit moet de presynaptische neuron vuren iets voor dat de postsynaptische vuurt, anders treedt geen LTP op. In het nutshell-paradigma moet de presynaptische knoop 1 iteratie voor de postsynaptische vuren, tenminste als je de functie gebruikt die zowel de activatie update als laten leren (de functie ‘Cycle’)8. Als je even snel een patroon wilt leren, kan je ook de functie ‘Learn’ gebruiken: dan wordt er geleerd tussen de op dat moment vurende knopen. Voorwaarde bij beiden methodes is zoals altijd dat er en verbinding moet zijn tussen de knopen.

Voorbeeld van een toepassing: Short-term memory

Het korte-termijngeheugen is een concept dat de meesten van jullie al wel opgepikt zullen hebben in jullie studie. Het gaat hier om het korte tijd (enkele seconden tot minuten) actief houden van een paar items in het geheugen. Vaak wordt de beroemde frase van Miller geciteerd: “the magical number seven, plus or minus five” (bijv. Jensen, Idiart et al. 1996), maar als de omvang van het korte-termijngeheugen op andere manieren wordt onderzocht dan rijtjes opzeggen, blijkt het meestal om een capaciteit voor iets als vier ‘chunks’ te gaan.

Hoe werkt korte-termijngeheugen in het brein? Connectionisten namen al in de jaren zeventig aan dat de activatie in hun netwerk gelijk stond aan korte-termijngeheugen, terwijl de gewichten gelijk stonden aan lange-termijngeheugen. En ja, zo lijkt het te zijn. Vooral in de frontale lob –maar ook elders- blijken cellen aanwezig die vuren gedurende het interval waarin een item in het korte-termijngeheugen verblijft9.

Een recent idee is dat de neuronen in de frontale cortex die betrokken zijn bij het korte-termijngeheugen sterke, specifieke, reciproke verbindingen hebben met neuronen in de thalamus. Met andere woorden: zo’n neuron in de frontale cortex zou zo sterke connecties hebben met een cel in de thalamus en vice versa, dat ze elkaars vuren zouden kunnen onderhouden in een ‘loop’: de frontale neuron vuurt, dat laat de thalamusneuron vuren, die zorgt dat de frontale neuron weer vuurt, etc. Gelfand, Gullapalli et al. (1997) hebben deze gedachte uitgebouwd tot een connectionistisch model waarmee ze het korte-termijngeheugen simuleren. Dit model, net een tikje simpeler, gaan jullie hier, nu, nabouwen.

Open het bestand ‘MacScript’. Open de Visual Basic-code. Run het script “MacGregor1” (in de module “MacGregor1”). Je zult zien dat het script een ‘MacGregor’-workspace opent, een model erin tekent, en dan bij een “breakpoint” stopt (een ‘breakpoint’ is een onderbreker van de code). Stop de code helemaal (je kunt hiervoor ‘Reset’ in het ‘Run’-menu aanklikken of het blauwe vierkant in de taakbalk. Klik naar Nutshell en kijk naar het model.

Het model heeft drie lagen: een ‘frontale’ laag van 6 knopen (“Front.” geheten), een thalamuslaag van 3 knopen (“Thal.”), en een Globus Palliduslaag van 1 knoop (“Pally”). De Globus Palliduslaag is een ‘resetter’: de laag is inhibitoir; activiteit ervan zorgt ervoor dat de thalamuslaag gedeactiveerd wordt, zodat de thalamocorticale ‘loop’ onderbroken wordt.

De eerste twee frontale knopen moeten verbonden raken (=de connectie moet een groot gewicht krijgen) met thalamusknoop nr. 1, terwijl de derde en vierde frontale knopen met de tweede thalamusknoop verbonden moeten raken, knoop 5 en 6 met de derde thalamusknoop. De connecties van de thalamus terug naar de frontale laag zijn hetzelfde: van Thal. 1 naar Front 1 & 2, etcetera. Zo kunnen zich drie losse, onafhankelijke thalamocorticale loops vormen. De Pallidusknoop moet sterke verbindingen krijgen met alledrie de Thalamusknopen.

Het model werkt als volgt: in alle frontale knopen komen zo af en toe sterke ‘random’ inputs binnen van buiten het model binnen (dit is ingesteld via de parameters chanceOtherInput en weightOtherInput, en stelt de ‘input’ uit de posterieure neocortex voor). Dit zorgt ervoor dat op een gegeven moment een frontale knoop zal vuren. Dit laat de verbonden thalamusknoop vuren, waarop de thalamocorticale loop zichzelf in stand zal houden.

De thalamocorticale knoop kan op twee manieren onderbroken worden. Ten eerste wordt in elke iteratie waarin een knoop vuurt de kaliumwaarde hoger. Op een gegeven moment zal deze zo hoog zijn dat knopen niet meer kunnen vuren, ook al krijgen ze input binnen in hun ‘loop’. Aangezien, als de ene zijde van de ‘loop’ stopt met vuren de andere geen input meer krijgt, zal de hele ‘loop’ stoppen met vuren. De tweede mogelijkheid is dat het organisme zijn aandacht verlegt en zijn interesse in het in STM vastgehoudene verliest. Op hier niet onderzochte wijze zal dat leiden tot activatie van de globus pallidus-knoop. Die zal de thalamus-knopen allemaal inhiberen, wat de actieve thalamocorticale ‘loops’ zal onderbreken.

B. Opdracht 5: MacGregor

5.1 Modelbouw

Schrijf in de module “MacGregor1” een stukje script-code dat alle verbindingen aanlegt beschreven in het bovenstaande. Voorbeelden voor de commando’s die je hiervoor nodig hebt staan in appendix 1. Dit kan je rechtstreeks doen door de gewichten aan een zekere waarde gelijk te stellen, of je kunt alle knopen die je wilt verbinden laten vuren, de leerparameter in de te veranderen connecties op de door jou gewenste gewichtssterkte zetten (en alle andere leerparameters op 0) en 1 keer het commando ‘learn’ in de code geven, dan alle lagen te resetten en de knopen voor een andere verbinding aan te zetten. Omdat dit een flinke lap code wordt moet je dit alles in de speciale subprocedure ‘SetAllWeights’ doen die in de hoofdprocedure wordt aangeroepen. Tips voor de gewichtssterktes zijn aanwezig in de subprocedure. Als je alles handig cut ’n paste is het niet veel werk. Test je werk door het script te runnen en de gewichten te controleren.

Nu dat alle gewichten er zijn kan je testen of het model werkt. Test de volgende sequentie: bij 1 knoop in de frontale laag stel jij in zodat hij vuurt. Vervolgens laat je het model een heel stel iteraties de activatie updaten (commando ‘ActCycle’). Als het goed is wordt de loop waar de frontale knoop deel van is actief. Deze blijft actief net zo lang tot het opgebouwde kalium een knoop ‘velt’. Schrijf een stuk code in het script dat de frontale knoop actief maakt en het model laat ‘ActCyclen’. Omdat je wel moet kunnen zien wat je doet zijn hier ook aanwezig het workspace.update commando en het “wait”-commando uit opdracht 4. Je kunt deze commando's (in deze volgorde) overal zetten waar je wat langer wilt kijken wat er gebeurt. "Secs" bepaalt hoeveel seconden het wachten duurt. Ook is er een commando waarmee je in het outputvenster (zie Werken met Nutshell) kunt zetten welke iteratie bezig is.

a) Hoeveel iteraties duurt het voor de ‘loop’ stopt?

b) Welke laag geeft het eerst op? Waarom?

5.2 Het vasthouden van inputs.

Dit is een opdracht waar je meer vrijheid hebt als bij de voorgaanden. Wacht niet te lang met om raad vragen als je vast zit!

a) Open de module “MacGregor2”, en ‘paste’ de code die je voor 5.1 hebt geschreven op de juiste plaats in het script. Er zijn nu twee globale constanten bij gekomen, eentje die de hoeveelheid ‘random’ inputs aan de frontale laag regelt, en eentje die hun sterkte regelt. Verander deze constante van 0 naar een waarde die een knoop echt kan laten vuren. Schrijf een stuk code in het script dat het volgende doet: minstens veertig iteraties lang moet de activatie geupdate worden. Tijdens elke iteratie moet de activatie van alledrie de thalamusknopen in de resultatenmatrix worden weggeschreven. Stel dat je de variabele die het aantal iteraties aanwijst “it” noemt. Stel in elke iteratie results(it,0) gelijk aan de activatie van knoop 1, results(it,1) aan knoop 2, results(it,2) aan knoop 3.

Hint: dit is het moment om je aan een ‘For…Next’-loop te wagen.

Run het script; als het goed is wordt er nu een Excel sheet aangemaakt waarin de activatie van de drie thalamusknopen (en dus de drie thalamocorticale loops) in de tijd wordt uitgezet. Bespreek de resultaten.

b) Verzin zelf nog iets dat je met het model wilt testen. Schrijf er code voor.

Suggestie: doe iets met de Pallidusknoop.

c) Een model probeert iets in de werkelijkheid te modelleren. Meestal wordt dit aangeduid met ‘het systeem’; in het bovenstaande is het korte-termijngeheugen het te modelleren systeem, of misschien het biologische substraat van het korte-termijngeheugen.

Er zijn heel veel maatstaven waaraan je modellen kunt beoordelen. Barbara Webb geeft, naast een aantal anderen, de volgende criteria (Webb, In press).

  • Relevantie: is het model relevant voor de empirische wetenschap? Zegt het model iets over een bestaand systeem in de werkelijkheid? Genereert het toetsbare hypotheses over dat systeem?

  • Algemeenheid: voor hoeveel systemen (diersoorten bijvoorbeeld) is het model relevant?

  • Match: reproduceert het model het gedrag van het te modelleren systeem correct?

  • Structurele accuraatheid: is het model een correcte afspiegeling van het te modelleren systeem? Heeft het model dezelfde structuur als het systeem? Is de structuur van het model wel plausibel?

Deze criteria overziend, is het model van het kortetermijngeheugen waaraan je gesleuteld hebt een goed model? Motiveer je antwoord (in tussen ¼ en ½ A4). Lever met je verslag de file ‘MacScript’ in met je veranderingen aan de scripts.



!!!!! DENK AAN DE DEADLINE !!!!!



7 Hier niet relevant maar wel leuk: de Layer parameters “k” en “threshold” maken het mogelijk om het netwerk heel verschillend te laten functioneren. “Threshold” is het (omgerekende) membraanpotentiaal waarboven knopen gaan vuren. “K” is het maximale aantal knopen dat in een gegeven iteratie (tegelijkertijd dus) mag vuren. Uitgangssituatie is een threshold van 1 en een “k” gelijk aan het aantal knopen in de laag, zodat alle knopen in de laag kunnen vuren als hun membraanpotentiaal maar boven de threshold uitkomen. Je kunt “k” ook gelijk zetten aan een lagere waarde. Als er minder dan “k” knopen een membraanpotentiaal boven de threshold hebben, zullen ze nog steeds allemaal vuren. Als er echter meer dan “k” over de threshold komen, zullen enkel de k knopen met de hoogste activatie vuren. Je kan ook de threshold gelijk stellen aan –1, de minimumwaarde van het membraanpotentiaal. Nu zullen alle knopen een membraanpotentiaal boven de threshold hebben, en zullen dus altijd de “k” met het hoogste membraanpotentiaal vuren. Zo is je layer veranderd in een k-Winner-Take-All netwerk.

8 Een andere voorwaarde is dat het vuren van de postsynaptische knoop veroorzaakt moet zijn doordat het membraanpotentiaal boven de ‘threshold’ uit kwam. Als je de knoop laat vuren door alles een vinkje achter ‘Fires’ te zetten zal er niet geleerd worden als je ‘Cycle’ gebruikt.

9 Gegevens hierover komen vooral uit apenonderzoek. Apen moesten taken verrichten waarin het nodig was om items in het korte-termijngeheugen te houden, zoals de zogenaamde “Delayed Non-Matching To Sample” taak. Ondertussen werd de activiteit van een aantal neuronen gevolgd met behulp van electroden. Zo werden neuronen gevonden die actief werden als een item gepresenteerd werd dat de aap moest onthouden, en actief bleven gedurende het hele retentie-interval maar niet langer (Fuster, 1989).


University of AmsterdamUniversity of Amsterdam
Department of Psychology
Page last modified: 2013-10-27. Validate html.
Copyright © 2000-2009 NeuroMod Group. Send us Feedback!