1
BACHELORTHESE
CREËREN VAN
CLUSTERS BINNEN BOEKENDATABASES MET BEHULP VAN EEN NEURAAL NETWERK
Janina Torbecke
GEDRAGSWETENSCHAPPEN
HUMAN FACTORS & MEDIA PSYCHOLOGY (HFM) AFSTUDEERCOMMISSIE
Prof. dr. F. van der Velde (1e begeleider)
Dr. M. L. Noordzij (2e begeleider)
11-01-2013
3 Samenvatting
Samenvatting
In dit onderzoek werd gekeken naar een mogelijkheid om het verkopers in boeken-,
spellen- en dvd-winkels gemakkelijker te maken om hun klanten te adviseren over nieuwe
artikelen. Omdat hierbij de persoonlijke voorkeur van klanten een grote rol speelt, kan een advies
niet gebaseerd worden op de kwaliteit van de artikelen zoals dat bij veel andere producten het
geval is. Op basis van een kunstmatig neuraal netwerk dat ontwikkeld werd door Rumelhart
(1986) werden drie netwerken geconstrueerd die getraind werden om eigenschappen van boeken
te leren. Door in de trainingsfase alle eigenschappen te relateren aan een bepaalde context in de
vorm van inputneuronen in de netwerken, konden de netwerken bepaalde eigenschappen
clusteren. Uit het onderzoek bleek dat de netwerken ook in staat zijn om eigenschappen met
verschillende contexten met elkaar in verband te brengen. Bijvoorbeeld konden bepaalde auteurs
gerelateerd worden aan bepaalde onderwerpen waarover zij vaak boeken hebben geschreven. Uit
de analyse van de netwerken bleek dat zij al redelijk goed in staat zijn om zulke verbanden te
leggen. Echter zal verder onderzoek gedaan moeten worden en zullen de netwerken verbeterd
moeten worden voordat zij in de praktijk gebruikt kunnen worden. Door het bijhouden van
eigenschappen van boeken in een dergelijk neuraal netwerk zou het voor verkopers in de
toekomst mogelijk kunnen zijn om snel te weten te komen welke boeken (of andere producten)
in zijn winkel lijken op een door de klant gewaardeerd boek.
5 Inhoudsopgave
Inhoudsopgave
Inleiding ... 7
Methoden ... 14
Resultaten ... 21
Netwerk A ... 21
Netwerk B ... 24
Netwerk C ... 27
Conclusie ... 31
Discussie ... 33
Referenties ... 37
Bijlage ... 38
Trainingsdata netwerk A ... 38
Parameters van neuronen en links in netwerk A ... 40
7 Inleiding
Inleiding
Winkels hebben er veel baat bij als zij hun klanten optimaal kunnen adviseren en hen daardoor tevreden kunnen stellen. Dit speelt vooral in boeken-, spellen- of dvd-winkels een grote rol. Het advies van de verkoper kan in deze winkels minder gebaseerd worden op de kwaliteit van het artikel en is sterker afhankelijk van de persoonlijke voorkeur van de klanten. Om de toch een advies te kunnen geven kunnen de artikelen gegroepeerd worden op basis van verschillende kenmerken. Bijvoorbeeld kan kunnen boeken die geschreven zijn door dezelfde auteur een groep vormen. Het gewenste resultaat van deze groepering is dat de artikelen binnen een groep met betrekking tot minstens een kenmerk op elkaar lijken. Met andere woorden: De artikelen worden toegekend aan verschillende categorieën. Als bekend is dat een klant van boeken van een bepaalde auteur houdt dan kan door het maken van categorieën worden gekeken welke boeken die auteur verder heeft geschreven. Veel interessanter is het echter om te kijken naar meer dan een categorie. Schrijft de auteur bijvoorbeeld vaak boeken over hetzelfde onderwerp? Vind de klant misschien vooral dat onderwerp interessant en leest hij daarom vaan boeken van dezelfde auteur? Om hier achter te komen moeten de artikelen in een winkel op meer kenmerken dan alleen de auteur of regisseur worden gegroepeerd.
In het verleden zijn er verschillende theorieën over menselijke semantische cognitie
ontwikkeld. Collins en Quillian (1969) stelden dat concepten hiërarchisch worden geordend en
dat gebruik wordt gemaakt van proposities. Zij ontwikkelden het hierarchical propositional model. De
concepten zijn in hun model op een zodanige manier geordend dat de categorieën waaronder zij
vallen van boven naar beneden steeds specifieker worden. In figuur 1 is een voorbeeld van hun
model te zien met als onderwerp levende ‘dingen’ (‘living things’). Iedere lijn representeert een
propositie en alle punten representeren categorieën zoals plant, dier, boom of vogel
(respectievelijk plant, animal, tree and bird). De pijlen wijzen naar bepaalde concepten zoals groot
(big), bewegen (move) of groeien (grow). Volgens Collins en Quillian zijn proposities in het model
8 Inleiding
altijd geldig voor alle concepten die lager staan in de hiërarchie. Zo kunnen alle levende dingen groeien (grow) en alle vogels kunnen vliegen (fly). Om te bepalen of een propositie geldt voor een bepaald concept, kan daarom eerst worden gekeken of die propositie opgeslagen is bij dat concept. Bijvoorbeeld kan gekeken worden naar de propositie ‘vogel kan bewegen’ (bird can move).
De propositie is in de figuur niet opgeslagen bij het concept ‘vogel’ (bird). De volgende stap is daarom om hoger in de hiërarchie te zoeken naar de propositie ‘kan bewegen’. In het voorbeeld wordt de propositie bij het concept ‘dier’ (animal) gevonden. Omdat het concept ‘vogel’ lager in de hiërarchie staat dan ‘dier’, geldt dat alle vogels kunnen bewegen. Over het algemeen geldt voor dit model dat specifieke eigenschappen dicht bij een concept opgeslagen zijn (bijv. ‘vogel kan vliegen’) en algemenere eigenschappen verder van het concept vandaan liggen (bijv. ‘vogel is levend’ – ‘bird is living’).
Dit feit leidt tot twijfels aan het model. Als het model klopt dan zouden mensen specifieke eigenschappen sneller aan een concept moeten kunnen toekennen dan algemene eigenschappen, aangezien de afstand tussen het concept en algemene eigenschappen groter is.
Figuur 1 Het hierarchical propositional model van Collins en Quillian (1969)
9 Inleiding
Een dergelijk verschil kon echter niet worden aangetoond in onderzoek (McCloskey, Glucksberg, 1979; Murphy, Brownell, 1985).
Een model dat semantische cognitie beter benadert is het door Rumelhart (1986) ontwikkelde parallel distributed processing model (PDP). Het model van Rumelhart is niet hiërarchisch opgebouwd zoals het model van Collins en Quillian, maar het bevat neuronen en connecties tussen deze neuronen. De neuronen worden afhankelijk van een activatie functie (activation function) geactiveerd en de connecties hebben een bepaald gewicht dat de activatie van neuronen
Figuur 2 Het parallel distributed processing model (PDP) van Rumelhart (1986)
10 Inleiding
beïnvloedt. Door het veranderen van het gewicht van connecties tussen neuronen kunnen verbanden worden gelegd tussen concepten en eigenschappen. Het model bestaat uit input-, hidden en outputneuronen (figuur 2). De inputneuronen representeren verschillende concepten (bijv. ‘vogel’ of ‘plant’) en relaties (bijv. ‘is’ of ‘heeft’). Deze inputneuronen staan in de figuur aan de linkerkant (groepen ‘relation’ en ‘item’). De outputneuronen (groep ‘attribute’ in de figuur) staan aan de rechterkant. Alle andere neuronen zijn hidden neuronen. De connecties tussen de neuronen lopen van links naar rechts. De neuronen binnen dezelfde groep zijn niet met elkaar verbonden.
Zoals boven al genoemd kan het gewicht van connecties tussen neuronen veranderen. Dit gebeurt door het netwerk te trainen met een aantal voorbeelden van juiste combinaties van input- en outputneuronen. Bijvoorbeeld kan getraind worden dat de activatie van de inputneuronen
‘kanarie’ en ‘kan’ moet leiden tot een activatie van de outputneuronen ‘groeien’, ‘bewegen’,
‘vliegen’ en ‘zingen’. In de figuur wordt dit voorbeeld aangetoond door de donkergroene cirkels (‘canary’, ‘can’, ‘grow’, ‘move’, ‘fly’, ‘sing’). Tijdens het trainingsproces ontstaat in de lagen met hidden neuronen een patroon (combinatie van gewichten en activaties van connecties en neuronen) dat het mogelijk maakt om tot de gewenste output te leiden. De gewichten worden veranderd tot het moment dat het netwerk alle voorbeelden van input/output-combinaties heeft geleerd. Het leerproces wordt gerealiseerd door herhaaldelijk de activatie van de hidden neuronen en de gewichten van de connecties te berekenen en aan te passen. Ieder neuron krijgt een bepaalde input van andere neuronen of – in het geval van de inputneuronen – een externe input. Deze input is afhankelijk van de activatie van de andere neuronen en het gewicht van de connecties tussen deze neuronen en het neuron waarvoor de activatie berekend moet worden.
De output van een neuron N wordt met behulp van de volgende formule berekend:
11 Inleiding
Hierbij is de output ofwel activation van het neuron N. is een bepaalde activatie functie die gevarieerd kan worden. Een voorbeeld is . Dit zou betekenen dat de output van N gelijk is aan zijn input . , de input, is de som van de activaties van alle inputneuronen van N vermenigvuldigd met het gewicht van hun connecties met het neuron N. Figuur 3 laat dit proces grafisch zien. t/m zijn de inputneuronen die verbonden zijn met neuron N. t/m zijn de gewichten van de connecties tussen de inputneuronen en neuron N. Vervolgens wordt de som van alle inputneuronen, vermenigvuldigd met het gewicht van hun connectie met N berekend: . Ten slotte wordt door de activatie functie de output bepaald. In de figuur is bovendien een bias afgebeeld. Daarop zal hier niet in worden gegaan.
Nadat deze berekening voor alle neuronen minstens een keer werd uitgevoerd hebben ook de outputneuronen bepaalde activatiewaarden. Op basis van het verschil tussen de activatie van een outputneuron en zijn ‘doelactivatie’, de activatie die door de voorbeelden in de trainingsfase vastgelegd is, wordt het gewicht van de connecties en/of de activatie van hidden neuronen veranderd die verbonden zijn met dat outputneuron. Deze methode is bedoeld om het verschil tussen de feitelijke activatie en de doelactievatie, de error, te verkleinen. Na een succesvolle training is de error gelijk aan nul. Er is dan geen verschil meer tussen de activatie van outputneuronen en het gewenste resultaat.
Figuur 3 Activatie van een neuron (Sakla, & Ashour, 2005)
12 Inleiding
Het berekenen van activaties van links naar rechts – van input- over hidden naar outputneuronen wordt ‘forward propagation of activation’ en het aanpassen van gewichten en activaties op basis van de error wordt ‘backpropagation of error’ genoemd. Deze twee stappen worden herhaald totdat de error gelijk is aan nul en daarom geen connectiegewichten of activaties meer veranderd hoeven te worden.
Rumelhart liet zien dat een getraind netwerk geleerde samenhangen ook kan toepassen op nieuwe concepten. Hij voegde aan een getraind netwerk een extra inputneuron toe dat een ‘mus’
(‘sparrow’) representeerde en dat verbonden was met de hidden neuronen die in figuur 2 in tot de groep ‘representation’ behoren. Vervolgens trainde hij het netwerk met het voorbeeld ‘mus–
ISEEN– vogel/dier/levend ding’ (‘sparrow–ISA–bird/animal/living thing’). Tijdens de trainingsfase mochten in dit geval echter alleen de nieuwe connecties worden veranderd die het nieuwe neuron met de representation-neuronen verbonden. Toen het netwerk opnieuw getraind was ging Rumelhart hem testen door voor het netwerk onbekende combinaties van inputneuronen te activeren. Hij testte de combinaties ‘mus–KAN’ (‘sparrow–CAN’), ‘mus–
HEEFT’ (‘sparrow–HAS’) en ‘mus–IS’ (‘sparrow–IS’). Er bleek dat in elk geval outputneuronen geactiveerd werden die overeenkomen met eigenschappen van andere vogels.
In dit onderzoek wordt gekeken of het netwerk van Rumelhart toegepast kan worden op
boeken. Er wordt getest of een dergelijk neuraal netwerk in staat is een aantal eigenschappen en
kenmerken van boeken te leren. Vervolgens wordt onderzocht welke mogelijkheden er door het
toevoegen van een extra neuron en het herhaalde trainen van het netwerk ontstaan. Het extra
neuron representeert in dit onderzoek een fictief boek. De hypothese is dat als het netwerk leert
dat het boek geschreven is door bijvoorbeeld auteur A, dat er dan automatisch verbanden gelegd
worden met bijvoorbeeld een bepaald onderwerp of categorie. In het voorbeeld van Rumelhart
met de mus ontstond er automatisch een verband tussen het mus-neuron en onder andere
vliegen, omdat het netwerk geleerd heeft dat een mus een vogel is en omdat vogels kunnen
vliegen. Met betrekking tot boeken is dit verband minder triviaal. Een auteur hoeft niet altijd over
13
hetzelfde onderwerp te schrijven en prijzen worden niet altijd gewonnen voor boeken van dezelfde uitgever. Doel van dit onderzoek is om te kijken of er desondanks verbanden tussen het nieuwe neuron en eigenschappen ontstaan die niet getraind worden.
Als dergelijke verbanden door het netwerk kunnen worden gelegd, zou dat nieuwe
mogelijkheden kunnen bieden voor verkopers van boeken, spellen of dvd’s. Als bekend is dat een
klant vaak boeken van auteur A leest zou een kunstmatig neuraal netwerk gekoppeld kunnen
worden aan de database van de verkoper en met behulp van dat netwerk gekeken kunnen worden
of die auteur in verband kan worden gebracht met andere eigenschappen van boeken zoals het
onderwerp of gewonnen prijzen. Op basis van de uitkomsten zouden vervolgens boeken
aanbevolen kunnen worden die aan dezelfde criteria voldoen als boeken van auteur A.
14 Methoden
Methoden
Voor dit onderzoek werd gebruik gemaakt van het programma MemBrain waarmee neurale netwerken gesimuleerd kunnen worden. Met behulp van MemBrain werden gedurende het onderzoek drie verschillende neurale netwerken gemaakt die gebaseerd zijn op het neurale netwerk van Rumelhart (Rumelhart 1990; Rumelhart & Todd 1993). Net zo als in het model van Rumelhart bestaat elk netwerk uit meerdere lagen:
- item-laag met input neuronen - relation-laag met input neuronen - representation-laag met hidden neuronen - extra laag met hidden neuronen - attribute-laag met output neuronen
In tegenstelling tot het model van Rumelhart lopen de connecties in de drie gemodelleerde netwerken van boven naar onderen in plaats van links naar rechts. De inputneuronen bevinden zich boven in het netwerk en de outputneuronen beneden. Een schematische weergave van de netwerken is te zien in figuur 4. De reden voor de andere opbouw
van de netwerken vergeleken met het netwerk van Rumelhart is de representatie van neuronen in MemBrain. De inputlinks zijn in het programma altijd aan de bovenkant van een neuron en de
Figuur 4 Schematische weergave van de gemodelleerde netwerken
15 Methoden
outputlinks aan de onderkant. Om de netwerken zo overzichtelijk mogelijk te houden werd daarom voor dit design gekozen.
Aangezien de netwerken in dit onderzoek toegepast werden op boeken, representeren de input neuronen in de item-laag bepaalde boektitels. De inputneuronen in de relation-laag geven de context van de outputneuronen in de attribute-laag aan met betrekking tot de input neuronen in de item-laag. Een voorbeeld hiervan is de context ‘geschreven door’ die de relatie tussen een auteur en een boek beschrijft. In het vervolg zullen de neuronen in de item-, relation-, representation- en attribute-laag respectievelijk item-, context-, representatie- en attribuutneuronen worden genoemd.
Later zal per neuraal netwerk worden uitgelegd welke input en output neuronen er precies zijn.
Als activatie functie voor alle neuronen in het netwerk werd ‘identical 0 to 1’ gebruikt. Deze functie ziet er als volgt uit:
Omdat de activatie van een neuron bij de activatie functie ‘identical 0 to 1’ per definitie minimaal 0 is en maximaal 1, is en . In figuur 5 is deze functie grafisch te zien.
De drie in MemBrain gemodelleerde netwerken verschillen in hun complexiteit. Het eerste netwerk bevat alleen basisinformatie over boeken om te kunnen testen of het netwerk werkt zoals gewenst.
De twee andere netwerken zijn complexer dan het eerste. Dit betekent dat zij vergeleken met het eerste netwerk meer neuronen en connecties bevatten. Er werd onderzocht of het netwerk ook een grote
Figuur 5 Curve van de identical (0 to 1)
activatie functie
16 Methoden
hoeveelheid boeken en hun eigenschappen kan leren en deze kan koppelen aan de contextneuronen.
Om de verschillende netwerken te testen werd gebruik gemaakt van fictieve boeken. Dit betekent dat de netwerken niet met eigenschappen van bestaande boeken werden getraind, maar met eigenschappen van fictieve boeken. Het voordeel hiervan is dat het onderzoek daardoor op een heel structurele en gecontroleerde manier uitgevoerd kon worden. De gegevens van alle boeken konden zo veranderd worden als het op dat moment nodig was. Er is bewust voor gekozen om de boeken, auteurs, enzovoort geen namen te geven om te voorkomen dat bij de analyse op een subjectieve manier verbanden gelegd worden tussen de boektitels en de verschillende outputneuronen. In tabel 1 staan alle vijf boeken met bijbehorende eigenschappen die voor netwerk A werden gebruikt. Hier is te zien dat dit netwerk alleen de boektitels, de auteurs en de onderwerpen van de boeken bevat. De eerste twee boeken (titel1 en titel2) werden geschreven door auteur1 en gaan over onderwerp1. De overige drie boeken werden geschreven door auteur2. Titel3, het derde boek, gaat over onderwerp1 en titel4 en titel5 zijn geschreven over onderwerp2.
Tabel 1 Boeken netwerk A
Het tweede netwerk, netwerk B, werd naast boektitel, auteur en onderwerp ook getraind met betrekking tot de uitgever van een boek en de door een boek gewonnen prijzen. Tabel 2 laat tien verschillende boeken zien, waarbij de eerste vier geschreven zijn door auteur1, de daaropvolgende drie boeken door auteur2 en de laatste drie door auteur3. Drie van de boeken van auteur1 zijn uitgegeven door uitgever1. Het vierde boek en alle boeken van de andere auteurs zijn uitgegeven door uitgever2. Alle boeken van auteur1 gaan over onderwerp1 en auteur2 heeft alleen boeken over onderwerp2 geschreven. Auteur3 heeft boeken over beide onderwerpen
Boektitel Auteur Onderwerp
Titel1 Auteur1 Onderwerp1
Titel2 Auteur1 Onderwerp1
Titel3 Auteur2 Onderwerp1
Titel4 Auteur2 Onderwerp2
Titel5 Auteur2 Onderwerp2
17 Methoden
geschreven: Zijn eerste boek gaat over onderwerp1 en de andere twee boeken gaan over onderwerp2. Verder hebben de boeken 1, 2, 3, 7 en 10 prijzen gewonnen zoals te zien in de tabel.
Boektitel Auteur Uitgever Onderwerp Gewonnen
prijzen
Titel1 Auteur1 Uitgever1 Onderwerp1 Prijs1
Titel2 Auteur1 Uitgever1 Onderwerp1 Prijs1, Prijs2
Titel3 Auteur1 Uitgever1 Onderwerp1 Prijs1
Titel4 Auteur1 Uitgever2 Onderwerp1
Titel5 Auteur2 Uitgever2 Onderwerp2
Titel6 Auteur2 Uitgever2 Onderwerp2
Titel7 Auteur2 Uitgever2 Onderwerp2 Prijs2
Titel8 Auteur3 Uitgever2 Onderwerp1
Titel9 Auteur3 Uitgever2 Onderwerp2
Titel10 Auteur3 Uitgever2 Onderwerp2 Prijs3
Tabel 2 Boeken netwerk B
In netwerk C werden ten slotte nogmaals drie eigenschappen toegevoegd: het geslacht van de auteurs, een categorie van de boeken en een doelgroep. In tabel 3 is te zien dat de helft van de boeken geschreven is door een man en de andere helft door een vrouw. Verder valt de helft van de boeken onder de categorie vrije tijd en de andere helft onder de categorie kennis. De gebruikte doelgroepen voor de boeken zijn kinderen, tieners en volwassenen. Naast de genoemde veranderingen werd het aantal auteurs in dit netwerk verhoogd naar zes.
Boektitel Auteur Geslacht auteur
Uitgever Categorie Onderwerp Doelgroep Gewonnen prijzen Titel1 Auteur1 man Uitgever1 VrijeTijd Onderwerp1 Kinderen Prijs1 Titel2 Auteur1 man Uitgever1 VrijeTijd Onderwerp1 Kinderen Prijs1 Titel3 Auteur2 vrouw Uitgever2 VrijeTijd Onderwerp2 Tieners
Titel4 Auteur2 vrouw Uitgever2 VrijeTijd Onderwerp2 Tieners Titel5 Auteur3 man Uitgever1 VrijeTijd Onderwerp1 Kinderen Titel6 Auteur3 man Uitgever1 Kennis Onderwerp1 Kinderen
Titel7 Auteur4 vrouw Uitgever1 Kennis Onderwerp2 Tieners Prijs2 Titel8 Auteur4 vrouw Uitgever2 Kennis Onderwerp3 Volwassenen Titel9 Auteur5 man Uitgever2 Kennis Onderwerp2 Volwassenen Titel10 Auteur6 vrouw Uitgever1 Kennis Onderwerp3 Volwassenen Prijs2
Tabel 3 Boeken netwerk C
Tijdens het gehele onderzoek werden in totaal zeven verschillende contextneuronen gebruikt. In tabel 4 is te zien met welke outputneuronen elk contextneuron geassocieerd wordt.
Een X in de kolommen netwerk A, netwerk B en netwerk C geeft aan dat het netwerk een
bepaald contextneuron bevat.
18 Methoden
Context-neuron Netwerk A Netwerk B Netwerk C Associatie
geschrevenDoor X X X Auteur
X Geslacht auteur
uitgegevenDoor X X Uitgever
inCategorie X X X Categorie
gaatOver X X X Onderwerp
voorLeeftijdsgroep X Doelgroep
heeftGewonnen X X Gewonnen prijzen
is X X X Boektitel
Tabel 1 Context-neuronen in alle netwerken
Voor alle drie netwerken werden vervolgens zogenaamde ‘lessons’ (les) aangemaakt. Door een lesson wordt bepaald hoe een netwerk getraind wordt en wat het netwerk in het ideale geval gaat leren. In drie csv-bestanden
1werden de lessons voor de drie netwerken gemaakt door verschillende input- en bijbehorende outputpatronen aan te geven. Elk patroon bevat alle input- en outputneuronen van het netwerk, waarbij telkens andere neuronen geactiveerd ofwel gedeactiveerd worden. Een gedeactiveerd neuron wordt gerepresenteerd door een 0 en een geactiveerd neuron door een 1. Voor boek1 in netwerk A werden bijvoorbeeld drie input/outputpatronen (I/O-patronen) aangemaakt zoals te zien in tabel 5.
Input Output
T ite l1 T ite l2 T ite l3 T ite l4 T ite l5 is Ge sc hr eve n Door ga atO ve r T ite l1 T ite l2 T ite l3 T ite l4 T ite l5 A ute ur 1 A ute ur 2 Onderwe rp1 Onderwe rp2
1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0
1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0
Tabel 2 Deel van de lesson van netwerk A
Aan de linkerkant van de tabel staan alle inputneuronen van het netwerk en aan de rechterkant alle outputneuronen. Door iedere rij representeert precies een I/O-patroon dat getraind werd. Een activatie van de inputneuronen titel1 en is (in de eerste rij gekenmerkt met een 1) zal na een succesvol afgeronde trainingsfase leiden tot een activatie van het
1
Het csv-bestand van netwerk A is als tabel te vinden in de bijlage. De overige csv-bestanden kunnen verkregen
worden bij de auteur.
19 Methoden
outputneuron titel1 en een deactivatie van alle andere outputneuronen. Op een dergelijke manier werden de eigenschappen van alle boeken in de drie netwerken ingevuld in de csv-bestanden.
Het maximale aantal I/O-patronen in de csv-bestanden is in dit onderzoek per netwerk
, waarbij het aantal boeken in het netwerk is en
het aantal gebruikte contextneuronen.
Omdat niet voor ieder boek gebruik wordt gemaakt van alle contextneuronen, is het precieze aantal I/O-patronen gelijk aan: