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 zon
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.
-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. Zon 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).
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 verblijft.
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: zon
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 commandos 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 !!!!!
|