Basic Brain Test — lokaal model lab

Bouw een brein als wolk van neuronen in plaats van als stapel lagen, laat het een klein spel spelen, en kijk welke structuur het uit zichzelf vormt. Verbindingen groeien, versterken en vervagen tijdens het spelen — er is geen backpropagation.

Brein — neuronen 16 in · 4 uit

Het aantal neuronen waarmee de wolk begint tussen de 16 invoer-nodes en de 4 uitvoer-nodes. Tijdens het trainen kunnen er neuronen bijkomen (zie "Leren & plasticiteit"). Meer is niet automatisch beter: een grote wolk heeft veel meer verbindingen nodig voordat er iets zinnigs doorheen loopt.
Invoer-neuronen
in: alleen invoer-nodes · uit: vrij
Worker-neuronen
in: vrij · uit: vrij — moet de meerderheid zijn
Reflex-/instinct-neuronen
in: uitsluitend invoer-neuronen · uit: uitsluitend uitvoer-nodes
Geheugen-neuronen
in: vrij · uit: eerst zichzelf, daarna vrij
streng: invoer-nodes mogen alleen aan invoer-neuronen hangen
Uit (standaard) mogen worker- en geheugen-neuronen ook rechtstreeks aan een invoer-node hangen; het kortste pad is dan twee bogen en een reflexboog (drie bogen) is juist de langere weg. Aan loopt élk signaal via een invoer-neuron en is de reflexboog wél het kortste pad dat bestaat.
Gemiddeld aantal uitgaande verbindingen per neuron bij de start. Dit is veruit de belangrijkste knop. Uitgemeten met 60 neuronen: bij dichtheid 15 haalt het brein ongeveer 40% van de doelen, bij 25 zo'n 70%, en bij 35 ruim 80% — daarboven stijgt de trainingsscore nog wel, maar de score op onbekende werelden niet meer. Meer paden van zintuig naar knop betekent meer waar de beloning iets aan kan toeschrijven. Alle 16 invoer-nodes en alle 4 uitvoer-nodes worden hoe dan ook aangesloten — dat is de enige harde eis.
Het zaad waaruit de startstructuur geloot wordt: welk neuron welk type krijgt en welke verbindingen er in het begin liggen. Samen met het wereldzaad (rechts, bij Wereld & spel) ligt een training daarmee volledig vast — dezelfde twee zaden geven dezelfde leercurve, tot op het laatste cijfer. Laat je het leeg, dan wordt er bij elk nieuw brein een zaad geloot en hier ingevuld, zodat je het altijd kunt teruglezen.

Leren & plasticiteit

Hoe sterk beloning de verbindingen bijstelt. Te hoog = het brein gooit alles om na één toevalstreffer.
Hoe lang een verbinding "onthoudt" dat hij net actief was. Hoog = beloning wordt ver terug uitgesmeerd, maar ook over stappen die er niets mee te maken hadden.
Na elke poging zakt elk gewicht een klein beetje naar nul. Wat niets bijdraagt, vervaagt vanzelf en wordt uiteindelijk gesnoeid.
Harde bovengrens. Bovendien wordt elke aanpassing geremd naarmate een gewicht die grens nadert: niet oneindig versterken.
Niet abrupt: geen enkele verbinding mag in één stap meer dan dit verschuiven.
Alleen voor geheugen-neuronen: hoe snel hun inhoud ververst. Laag = houdt lang vast, en dat werkt beter — bij 0.15 blijft ongeveer 85% van de vorige toestand staan.
Hoe ver een signaal binnen één spelstap door de wolk reist. Bij 1 kost elke verbinding een tijdstap, zodat een kort pad ook echt sneller reageert dan een lange omweg; dat blijkt ook het best te werken. Hoger maakt het brein sneller van begrip maar vlakt het verschil tussen kort en lang uit.
De vier knoppen worden geloot uit hun eigen kans; deze regelaar bepaalt hoe grillig die loting is, plus hoeveel ruis er in de wolk zit. Nooit helemaal nul — zonder exploratie komt er geen leersignaal meer binnen.
leersnelheid meeschalen met de exploratie
toestandsafhankelijke criticus (TD(0))
Uit: de basislijn is een lopend gemiddelde over spelstappen, dus in een toestand die van zichzelf al beter of slechter is dan gemiddeld wordt élke actie beloond of gestraft. Aan: een kleine lineaire schatter V(s)=w·s+b op de zestien sensoren, apart getraind met TD(0); het leersignaal wordt dan r + γV(s′) − V(s). De schatter staat naast de graaf, niet erin — er wordt niets door het netwerk teruggepropageerd.
categorisch beleid (negen elkaar uitsluitende acties)
Uit: de vier knoppen zijn onafhankelijke Bernoulli's, dus "op+neer" en "alle vier" zijn mogelijke acties die zichzelf opheffen. Aan: één softmax over acht richtingen plus stilstaan, gescoord met de som van de bijbehorende knopingangen.
Welk deel van de wolk per tik verstoord wordt. De variantie van node-perturbatie groeit met het aantal knopen dat je tegelijk verstoort; minder tegelijk verstoren is de standaardtruc daartegen. Bij 1.00 is dit precies de oude regel.

structurele plasticiteit (snoeien & nieuwe verbindingen)
neuronen mogen van soort veranderen
Het systeem kijkt naar de bedrading die een neuron feitelijk heeft en geeft het de soort die daar het beste bij past. Verbindingen die door de nieuwe regels verboden worden, verdwijnen — dus een verandering kost iets.
Een al toegewezen neuron wisselt alleen van soort als er bijna geen gewicht verloren gaat. Neutrale neuronen wisselen altijd — die hebben nog niets te verliezen.
nieuwe neuronen laten bijgroeien (komen neutraal binnen)
alleen als het brein niet meer vooruitgaat
Een nieuw neuron komt neutraal binnen: het mag alles, hoort nergens bij, en krijgt bij de eerstvolgende ronde een soort toegewezen op grond van de verbindingen die het inmiddels heeft.

Training

Op turbo wordt de wereld niet meer per stap getekend en rekent hij zo snel als je machine toestaat.
automatisch opslaan zodra de training klaar is
elke 20 pogingen toetsen op 20 onbekende werelden (zonder leren)
streng toetsen: altijd de waarschijnlijkste knop in plaats van het geleerde beleid

Het brein — levende structuur

invoer-node invoer-neuron worker reflex geheugen neutraal uitvoer-node versterkend remmend
neuronen 0 verbindingen 0 gem. |w| 0.00 sterk (>50% van de zwaarste) 0 gesnoeid 0 nieuw 0 neuronen bij 0 omgetypt 0
Klik een neuron aan om alleen zijn verbindingen te zien.

De wereld

karakter doel obstakel sensorstraal
poging 0/0 stap 0 beloning 0.00 afstand tot doel botsingen 0 ruis klaar om te starten
▲ omhoog
▼ omlaag
◀ links
▶ rechts

Leercurves

succes % (laatste 20) beloning per poging stappen tot doel toets op onbekende werelden

Structuur in de tijd

aantal verbindingen gemiddeld |w| aantal neuronen

Prestatie

pogingen gedaan0
doel bereikt0 (0%)
succes laatste 200%
toets op onbekende werelden
gem. stappen bij succes
gem. beloning (laatste 20)
beste poging
botsingen per poging
rekentijd
Nog niets gemetenGenereer een brein en druk op start.

Wereld & spel

Spel 2 is een heel andere taak: geen ruimte en geen navigatie, maar acht seinlampen, een wissel en vier handels, met zes regels die door elkaar heen lopen — van "reageer deze tik" tot "onthoud dit tachtig tikken". Elke regel wordt apart gescoord. De instellingen hieronder over obstakels, stappen en het knipperende doel doen in spel 2 niets; die over het brein, de leerregel en de structurele plasticiteit wél.

Spel 3 is de proeftuin: elke tik komt er één voorwerp langs met een kleur, een beweging, een grootte en een geur, en het moet in één van vier bakken. De zestien kanalen blijven in elke fase precies dezelfde — alleen de betekenis verandert. Fase A gaat op kleur, fase B op kleur met omgewisselde antwoorden, fase C op kleurgroep maal beweging, fase D op geur maal grootte, en fase A′ weer op kleur. Zes van de zestien kanalen zijn afleiders die nooit ergens over gaan; zij zijn de ruisbodem van de maat onderin de tekening. Elk voorwerp begint met een schone wolk, dus propagatiestappen moet minstens 2 zijn — anders kan het signaal de knoppen binnen één voorwerp niet bereiken en scoort elk net nul. Het kiezen van spel 3 zet die schuif daarom omhoog.
Op 1 geldt alleen de eerste regel, op 6 alle zes. De groeiende dienstregeling van stap 18 zet deze knop tijdens één leven omhoog.
Welke regel er nu geldt. De zintuigen veranderen niet mee: dezelfde zestien kanalen, een andere betekenis.
Het plafond op het aantal verbindingen — de metabole kost. Erbij bouwen kan dan alleen wat het snoeien heeft vrijgemaakt, zodat de proef meet of een net zijn capaciteit kan verplaatsen en niet of méér plasticiteit altijd beter is. Op 0 is er geen plafond en verandert er niets aan spel 1 en 2.
Op 0 is dit het spel zoals het altijd was. Zet je hem op bijvoorbeeld 20, dan is het doel tien stappen te zien, twintig stappen niet, tien stappen wel, enzovoort. De obstakels blijft het brein gewoon zien en de beloning verandert niet mee — alleen de wáárneming valt weg. Het brein moet de richting dus over de donkere periode heen vasthouden, en dat is precies waar terugkoppeling voor dient. Op 0 valt er niets te onthouden, en dat is de reden dat alle metingen tot september 2026 niets over geheugen zeggen.
De zwaardere variant: het doel gaat op de gekozen stap uit en komt niet meer terug. Dat vraagt geen geheugen maar koppelnavigatie — blind een punt raken — en dat blijkt veel te moeilijk: bij 80 zakt het brein naar een paar procent. Gebruik het knipperen hierboven als je geheugen wilt testen; deze schuif staat er als uiterste van de schaal.
Start en doel liggen elke wereld tegen twee andere randen — links→rechts, boven→onder, en alles daartussen — met de obstakels in het midden. Zet je dit hoog, dan traint het brein lang in dezelfde wereld: de klassieke manier om te laten zien hoe iets een route uit z'n hoofd leert zonder te snappen wat het doet.
poging stopt na een botsing

Beloningen

Het brein krijgt alleen deze getallen te zien — geen voorbeeldroutes, geen kaart. Zet "dichter bij doel" op 0 en je ziet meteen hoe lastig leren wordt als er alleen aan het eind beloning is.

Wat heeft het brein gebouwd?

Nog geen brein.

Sensorgebruik

Hoeveel gewichtsmassa er vanaf elke invoer-node richting de uitvoer loopt. Sensoren onderaan worden door dit brein feitelijk genegeerd.

Opslaan

nog geen map gekozen — kies de map resultaten-brein in je projectmap.

Herhalen & inladen

Een resultaatbestand bevat alle instellingen én de volledige eindstructuur. Instellingen zet alle knoppen en beide zaden terug en maakt daarmee een vers brein; brein laadt het getrainde netwerk zelf terug, zodat je het kunt doortrainen of opnieuw kunt toetsen.

Breinen vergelijken 0 breinen

breinneuronensamenstelling (start → eind)verb. succeslaatste 20toetsstappenbeloninglussenreflexomgetypttijd
Elke afgeronde training komt hier vanzelf bij te staan én wordt als los JSON-bestand in resultaten-brein gezet. De viewer brein-resultaten.html leest die map en tekent de netwerken opnieuw.

Vergelijking in beeld

Nog geen breinen toegevoegd.

Experimentloper niets gedraaid

Draait een lijst condities × zaden achter elkaar af zonder te tekenen, en schrijft per run een JSON weg plus één regel in experimenten/runs.csv. Een conditie is een naam met een stel afwijkingen van de huidige instellingen; alles wat je niet noemt komt uit de pagina zoals die nu staat. De spreiding tussen zaden is ongeveer 0,10 — reken op minstens twaalf zaden per conditie voordat een verschil iets betekent.
Sleutels zijn de namen uit de configuratie: nNeurons, density, nObs, maxSteps, worldEvery, seed, lr, lam, decay, wmax, stepMax, memLeak, prop, noise0, lrAnneal, structOn, structEvery, pruneT, sprout, growOn, growStagnant, growMax, growN, newLinks, retypeOn, retypeN, retypeCost, rGoal, rProg, rCol, rStep, rIdle, nEpisodes, evalOn, evalMode, inputOnlySens, traceOud, benchOn, benchN, benchReps. Met "layered": true plus "layerSizes": [150] draait dezelfde leerregel op een gelaagd netwerk in plaats van op de wolk — de basislijn die laat zien wat de graafstructuur toevoegt; zet daar "structOn": false bij, anders blijft er van de lagen niets over. Types uitzetten kan met "types.mem.on": false. traceOud:true zet de foutieve postsynaptische eligibility-trace van vóór 9 september 2026 terug — alleen bedoeld als ablatie. Sinds stap 7 ook criticOn, criticLr, criticGamma, perturbFrac, catPolicy, perturbGain: de vier ingrepen in de leerregel, elk los aan en uit te zetten zodat ze ook als ablatie meetbaar zijn.
toetsen op onbekende werelden meelopen
ook per run een volledige JSON wegschrijven
aan het eind meten op de vaste benchmarkset, in beide beleidsvormen
De benchmark is een vaste verzameling werelden uit een eigen zaad, los van de trainingswerelden en van de twintig toetswerelden die tijdens het leren meelopen. Zij wordt nooit gebruikt om instellingen te kiezen. Omdat het beleid geloot wordt, telt pas het gemiddelde over meerdere keren spelen.
nog geen map gekozen — kies de map experimenten in je projectmap, of gebruik de downloadknop.
conditiezaadsucceslaatste 20toetsbench gelootbench argmaxneuronenverb.actiefreflexlussenpadtijd
Hoe dit brein werkt — en waarom het geen lagen heeft

Invoer (16 nodes)

Acht sensoren meten in acht richtingen (N, NO, O, ZO, Z, ZW, W, NW) de afstand tot het dichtstbijzijnde obstakel of de wereldrand; de waarde loopt van 0 (niets in de buurt) tot 1 (er staat iets vlak voor je). Acht andere sensoren doen hetzelfde voor het doel: hoe dichterbij het doel ligt en hoe beter die richting naar het doel wijst, hoe hoger de waarde. Meer krijgt het brein niet — geen coördinaten, geen kaart, geen geheugen van de wereld.

Uitvoer (4 nodes)

Vier knoppen: omhoog, omlaag, links, rechts. Elke knop met een waarde boven de drempel wordt ingedrukt; twee tegelijk levert een diagonaal. Niets indrukken mag ook — dat kost wel beloning.

De wolk ertussen

Geen lagen. Je bepaalt hoeveel neuronen er beschikbaar zijn en van welk type, en de verbindingen worden willekeurig gelegd binnen de regels per type. Daarna is alles dynamisch: er is geen minimum of maximum aantal verbindingen per neuron. De enige harde eis is dat elke invoer-node ergens naartoe gaat en elke uitvoer-node ergens vandaan komt.

  • Invoer-neuron — mag als invoer alléén invoer-nodes hebben; zijn uitgang is vrij.
  • Worker-neuron — mag alles met alles; moet altijd de meerderheid van de wolk vormen.
  • Reflex-/instinct-neuron — krijgt alleen invoer-neuronen binnen (of invoer-nodes, tenzij je "streng" aanzet) en gaat alleen naar uitvoer-nodes. Dat is een korte boog van zintuig naar spier: sneller dan elke omweg door de wolk.
  • Geheugen-neuron — heeft altijd een verbinding naar zichzelf, waardoor het z'n waarde vasthoudt over de tijd; verder mag het van en naar alles.

Leren zonder backpropagation

Elke verbinding houdt een spoor bij: was ik net actief terwijl mijn doelneuron ook actief was? Dat spoor vervaagt met λ. Komt er beloning binnen, dan wordt elk gewicht bijgesteld met Δw = η · beloning · spoor. Drie remmen zorgen dat het niet ontspoort: de aanpassing per stap is begrensd (niet abrupt), de aanpassing wordt kleiner naarmate een gewicht zijn plafond nadert (niet oneindig versterken), en alles zakt elke stap een beetje naar nul (vervagen). Dit heet reward-gemoduleerde Hebbiaanse plasticiteit; het is hoe leren in echte zenuwstelsels grofweg beschreven wordt, en het werkt ook in netwerken vol lussen — waar backpropagation vastloopt.

Neutrale neuronen, groei en van soort veranderen

De wolk ligt niet vast. Loopt het leren vast, dan mogen er nieuwe neuronen bijgroeien; die komen neutraal binnen — ze horen nog nergens bij, mogen alles, en krijgen een paar willekeurige verbindingen. Bij de eerstvolgende opruimronde bepaalt het systeem welke soort het beste past bij de bedrading die zo'n neuron inmiddels heeft: hangt het alleen aan invoer-nodes, dan wordt het een invoer-neuron; zit het tussen invoer-neuronen en knoppen, dan een reflex; zit het in een lus, dan geheugen; en anders worker.

Ook bestaande neuronen mogen van soort wisselen, maar alleen als dat bijna geen gewicht kost — de verbindingen die door de nieuwe regels verboden worden, moeten immers weg. Zo verandert de samenstelling geleidelijk mee met wat het brein werkelijk doet, in plaats van vast te liggen op wat jij vooraf hebt ingesteld. Een neuron dat al zijn verbindingen kwijtraakt, wordt weer neutraal: vrij materiaal om opnieuw in te zetten. De meerderheidsregel voor workers blijft altijd gelden, en jouw minima en maxima per soort zijn de grenzen waarbinnen dit gebeurt.

Structurele plasticiteit

Om de zoveel pogingen wordt opgeruimd: verbindingen die te lang te zwak zijn verdwijnen, en er groeien nieuwe verbindingen bij op plekken waar weinig zit — altijd binnen de typeregels, en nooit zo dat een invoer- of uitvoer-node losraakt. Daardoor is de structuur die je aan het eind ziet niet degene die je hebt ingesteld, maar degene die het brein zelf overgehouden heeft.

Waar je op moet letten

Interessant is niet alleen of het doel gehaald wordt, maar wát er is ontstaan: hoeveel reflexbogen (sensor → reflex → knop), hoeveel lussen door geheugen-neuronen, welke sensoren volledig genegeerd worden, en of het kortste pad van invoer naar uitvoer twee stappen is of zes. Een brein dat het in de trainingswereld goed doet maar op de toetswerelden instort, heeft de route uit z'n hoofd geleerd in plaats van te leren navigeren — precies dezelfde faalvorm als een te klein of te lang doorgetraind taalmodel.

Alles draait lokaal in je browser; er gaat niets naar buiten. Resultaten komen als één JSON-bestand per brein in de map resultaten-brein in deze projectmap — kies die map één keer via "kies resultatenmap" (Chrome/Edge onthouden hem daarna), of gebruik de downloadknop. Open de pagina bij voorkeur via start-server.cmd.