Werking van de CAM-Brain machine - Ghent...

108
Universiteit Gent Faculteit Toegepaste Wetenschappen Vakgroep Electronica en Informatiesystemen Voorzitter: Prof. Dr. Ir. J. VAN CAMPENHOUT Analyse van de CAM-Brain Machine door Pieter Van Der Helst Promotor: Prof. Dr. Ir. J. VAN CAMPENHOUT Thesisbegeleider: Dr. Ir. H. VAN MARCK SCRIPTIE ingediend tot het behalen van de academische graad van licentiaat informatica Academiejaar 2000-2001

Transcript of Werking van de CAM-Brain machine - Ghent...

Page 1: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

Universiteit Gent

Faculteit Toegepaste Wetenschappen

Vakgroep

Electronica en Informatiesystemen

Voorzitter: Prof. Dr. Ir. J. VAN CAMPENHOUT

Analyse van de CAM-Brain Machine door

Pieter Van Der Helst

Promotor: Prof. Dr. Ir. J. VAN CAMPENHOUT

Thesisbegeleider: Dr. Ir. H. VAN MARCK

SCRIPTIE ingediend tot het behalen van de academische graad van licentiaat informatica

Academiejaar 2000-2001

Page 2: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

Deze scriptie zou nooit tot stand gekomen zijn zonder de hulp van zowel de promotor,

Prof. Dr. Ir. J. Van Campenhout als de thesisbegeleider, Dr. Ir. H. Van Marck.

Ik zou dan ook beiden willen bedanken voor de vele richtlijnen en hulp die ze boden.

De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen

van de scriptie te kopiëren voor persoonlijk gebruik.

Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met

betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van de

resultaten uit deze scriptie.

28 mei 2001

Page 3: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

Analyse van de CAM-Brain Machine door

Pieter Van Der Helst SCRIPTIE ingediend tot het behalen van de academische graad van licentiaat informatica Academiejaar 2000-2001 Promotor: Prof. Dr. Ir. J. VAN CAMENHOUT Thesisbegeleider: Dr. Ir. H. VAN MARCK Faculteit Toegepaste Wetenschappen Universiteit Gent Vakgroep Elektronica en Informatiesystemen Voorzitter: Prof. Dr. Ir. J. VAN CAMPENHOUT

Samenvatting

De CAM-Brain Machine is een hardware implementatie van een neuraal netwerk. Deze scriptie geeft een schatting van de rekenkracht van deze machine, meer bepaald hoeveel sneller deze hardware implementatie is ten opzichte van een simulatie van deze machine in een Pentium computer. In het eerste hoofdstuk wordt de logische werking van de machine uitgelegd. In een volgend hoofdstuk wordt een methode ontwikkeld om een schatting te kunnen maken van de benodigde rekenkracht. Er wordt een onder- en bovengrens berekend en hieruit blijkt dat de rekenkracht sterk afhankelijk is van het programma dat draait op de machine. In het derde hoofdstuk worden een aantal patroonherkenners gebouwd voor deze machine, en de rekenkracht nodig om deze patroonherkenners te simuleren wordt berekend. Op deze manier wordt een beeld gegeven van de rekenkracht die men kan verwachten wanneer deze machine in de praktijk gebruikt wordt. Er wordt aangetoond dat de rekenkracht van de CAM-Brain, in tegenstelling tot wat zijn makers beweren, onder de 10.000 Pentiums ligt. En er worden inzichten gegeven voor het bouwen van handgeschreven machines in de CAM-Brain. Trefwoorden:

CAM-Brain, neuraal netwerk, patroonherkenner

Page 4: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

1. DOELSTELLING ........................................................................................................ 1

2. WERKING VAN DE CAM-BRAIN MACHINE ...................................................... 32.1. WAT IS EEN NEURAAL NETWERK? ........................................................................... 32.2. DE CAM-BRAIN ..................................................................................................... 52.3. OPBOUW VAN EEN MODULE .................................................................................... 7

2.3.1. Axon ............................................................................................................... 92.3.2. Neuron .......................................................................................................... 102.3.3. Invoer- en uitvoercellen ............................................................................... 12

2.4. IMPLICATIES VAN DE OPBOUW ............................................................................... 15

3. BEREKENING VAN DE REKENKRACHT .......................................................... 173.1. DE COMPILER ........................................................................................................ 17

3.1.1. Een Axon ...................................................................................................... 203.1.2. Een Neuron .................................................................................................. 22

3.2. ONDERGRENS ........................................................................................................ 253.3. BOVENGRENS ........................................................................................................ 26

4. PATROONHERKENNER ........................................................................................ 284.1. INLEIDING ............................................................................................................. 284.2. EERSTE MACHINE .................................................................................................. 31

4.2.1. Geheugen ..................................................................................................... 314.2.2. Klokpuls ....................................................................................................... 324.2.3. Het patroon vergelijken met de invoerstroom .............................................. 334.2.4. Aantal overeenkomsten tellen ...................................................................... 344.2.5. De waarde van de accumulator uitlezen ...................................................... 36

4.2.5.1. De waarde uitlezen en accumulator weer op nul zetten ....................... 364.2.5.2. Uitleeswaarde onderscheiden van andere uitvoer en vice versa .......... 39

4.2.6. Volledige machine ........................................................................................ 484.2.7. Rekenkracht analyse van deze machine ....................................................... 49

4.2.7.1. Geheugen ............................................................................................. 494.2.7.2. Leespuls ............................................................................................... 504.2.7.3. Patroon vergelijken met invoerstroom ................................................. 504.2.7.4. Aantal overeenkomsten tellen .............................................................. 504.2.7.5. Rekenkracht analyse ............................................................................ 51

4.2.8. Analyse van de eerste patroonherkenner ..................................................... 544.3. TWEEDE MACHINE ................................................................................................. 55

4.3.1. De pulstrein splitsen ..................................................................................... 564.3.2. De waarde van de accumulator uitlezen ...................................................... 594.3.3. Volledige machine ........................................................................................ 634.3.4. Rekenkrachtanalyse van deze machine ........................................................ 68

4.3.4.1. De pulstreinsplitser .............................................................................. 684.3.4.2. Aantal overeenkomsten tellen .............................................................. 704.3.4.3. Rekenkracht analyse ............................................................................ 72

4.4. DERDE MACHINE ................................................................................................... 754.4.1. De klem ........................................................................................................ 764.4.2. De leespuls ................................................................................................... 774.4.3. De pulstrein splitsen ..................................................................................... 784.4.4. De waarde van de accumulator uitlezen ...................................................... 794.4.5. Volledige machine ........................................................................................ 86

Page 5: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

4.4.6. Rekenkrachtanalyse van deze machine ........................................................ 874.4.6.1. Pulstreinsplitser .................................................................................... 874.4.6.2. Aantal overeenkomsten tellen .............................................................. 874.4.6.3. Rekenkracht analyse ............................................................................ 89

4.5. MACHINES ZONDER GEHEUGEN ............................................................................. 91

5. CONCLUSIE .............................................................................................................. 93

APPENDIX A: BENADERINGEN VOOR MACHINE 2 ........................................ 95

APPENDIX B: STRUCTUUR VAN DE .GNT FILE ................................................ 97

APPENDIX C: INHOUD VAN DE CD-ROM ......................................................... 100

Page 6: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

1

1. Doelstelling In dit afstudeerwerk ga ik proberen de rekenkracht van de CAM-Brain te analyseren. In

een document over de CAM-Brain wordt er gezegd dat “CBM’s*

Deze omschrijving dient uiteraard opgevat te worden als een zeer grove en waarschijnlijk

optimistische schatting, en heeft ongetwijfeld meer zin als marketinguitspraak dan als

wetenschappelijke stelling.

computational power in

implementing cellular automata based neural networks is on the order of 10.000 Pentium

III 500 Mhz. computers running identical algorithms in software”.[1]

In het eerste deel van dit eindwerk (Hoofdstuk 2) ga ik uitleggen wat de CAM-Brain is en

hoe deze machine logisch gezien werkt, gevolgd door de implicaties die zijn structuur heeft

op het bouwen van machines en het berekenen van zijn rekenkracht.

In het tweede deel (Hoofdstuk 3) wordt een methode voorgesteld om de rekenkracht van de

CAM-Brain met die van een PC te vergelijken. En er wordt een boven- en ondergrens

berekend. Er zal blijken dat deze rekenkracht zeer sterk afhankelijk is van de machine, die

beschouwd wordt.

Daarom ga ik in het derde deel (Hoofdstuk 4) een aantal machines (patroonherkenners)

bouwen en de rekenkracht van deze machines analyseren.

* CBM = Cam Brain Machine

Page 7: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

2

Legende bij de tekeningen

Page 8: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

3

2. Werking van de CAM-Brain machine

2.1. Wat is een neuraal netwerk? Neurale netwerken zijn gegroeid uit het artificiële intelligentie domein, in een poging om

de fouttolerantie en leercapaciteit van biologische neurale systemen na te bootsen. Dit

wordt bekomen door het modelleren van het brein op een laag niveau.

Het brein bestaat uit een zeer groot aantal neuronen, die zeer sterk geconnecteerd zijn

(typisch tien miljard neuronen, met een gemiddelde van vele duizenden interconnecties per

neuron).

Een neuron is een gespecialiseerde cel, die een elektrochemische puls kan propageren. Een

neuron heeft een vertakte invoerstructuur (de dendrieten), een cel-lichaam, en een vertakte

uitvoerstructuur (de axonen). De axonen van een cel zijn verbonden met de dendrieten van

een andere via synapsen.

Als een neuron actief is vuurt het via zijn axonen, door de synapsen, in de andere neuronen

waarmee het verbonden is. Deze neuronen kunnen op zich dan weer vuren. De sterkte van

het vuursignaal, dat een neuron ontvangt (en dus de kans dat het zelf vuurt) hangt af van de

doeltreffendheid van de synapsen.

Donald Hebb*

beweerde dat leren in principe neerkomt op het wijzigen van de “sterkte”

van de synaptische verbindingen. Met als typisch voorbeeld het Pavlov principe: de hond

associeert het belsignaal met eten, wat erop neerkomt dat de synaptische verbindingen

tussen het passende deel van de auditieve cortex en het gedeelte van het brein dat de

speekselklieren stuurt versterkt worden. Hierdoor begint de hond te kwijlen als de bel gaat,

nog voordat er eten aan te pas komt.

* Donald Hebb (°1904 †1985), een vooraanstaand wetenschapper op het gebied van neurologisch onderzoek met als belangrijkste werk The Organization of Behavior (1949)

Page 9: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

4

De essentie van deze biologische principes wordt gevat in een artificieel neuraal netwerk.

De basis van zo een artificieel neuraal netwerk is een artificieel neuron.

• Het neuron ontvangt een aantal signalen (ofwel van de originele data, ofwel

van een ander neuron).

• Elke invoer komt via een connectie met een zeker gewicht. Deze gewichten

komen overeen met de synaptische sterkte in een biologisch neuron. .

• De gewogen som van de ingangen wordt genomen

• Elk neuron beschikt ook over een drempelwaarde. Deze drempelwaarde

wordt van de gewogen som afgetrokken om de activatie*

• Dit activatiesignaal wordt aan de activatiefunctie doorgegeven om te

bepalen of het neuron vuurt of niet.

van het neuron te

bepalen.

De gewichten kunnen zowel positief als negatief zijn. Bij positieve gewichten spreekt men

van een versterkende synaps, in het andere geval spreekt men van een belemmerende

synaps.

De neuronen worden met elkaar verbonden en vormen zo een netwerk. Naast de neuronen

bevat zo een netwerk ook een aantal ingangen, respectievelijk uitgangen, die informatie

ontvangen uit, respectievelijk sturen naar de buitenwereld. In een biologisch systeem

komen de ingangen overeen met de zintuigen en de uitgangen met signalen, die naar de

spieren gestuurd worden.

Tot nu toe werden neurale netwerken vooral gesimuleerd. Een nadeel hierbij is dat

computers slechts over een beperkt, of geen, parallellisme beschikken, waar een biologisch

brein de vele miljarden neuronen in parallel evalueert. Dit heeft als gevolg dat de artificiële

neurale netwerken binnen een redelijke tijd slechts een beperkt aantal neuronen kunnen

evalueren.

De CAM-Brain probeert deze beperkingen, althans gedeeltelijk, op te lossen. Het is een

machine die een artificiëel neuraal netwerk in hardware implementeert, en die in staat is

om duizenden neuronen zeer snel in parallel te verwerken.

* Activatie wordt ook Post Synaptische Potentiaal genoemd (PSP)

Page 10: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

5

2.2. De CAM-Brain

De CAM-Brain machine bestaat uit zeven verschillende onderdelen

• de herconfigureerbare hardware module

• het fenotype / genotypegeheugen

• een eenheid die de invoer en uitvoer van een module regelt

• een eenheid om informatie tussen de verschillende modules door te geven

• een eenheid om de fitnessberekening te doen

• een centrale verwerkingseenheid

• een computer die als interface met de buitenwereld gebruikt wordt

Het neuraal netwerk wordt in een module opgeslagen en deze wordt geëvalueerd door de

hardware module.

De geheugencapaciteit laat toe om 64.640 fenotypes van een module op te slaan. De

hardware module kan echter slechts één zo een module tegelijk evalueren.

Page 11: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

6

Om netwerken van meerdere modules te evalueren wordt er gebruik gemaakt van time-

sharing. Een time-slice duurt 96 klokcycli.

Hier treed een eerste beperking op van de rekenkracht van de CAM-Brain. Als er twee

modules (A en B) na elkaar geëvalueerd worden, wordt tijdens de uitvoering van module

A, module B in het geheugen geladen. Dit heeft als gevolg dat de uitvoer van module A

niet als invoer voor module B kan gebruikt worden. De uitvoer is namelijk niet gekend op

het moment dat module B geladen wordt.

Dit kan enkel opgelost worden door er een lege module tussen te plaatsen, of een andere

module, die onafhankelijk is van module A.

In de rest van deze thesis wordt telkens binnen één module gewerkt.

Page 12: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

7

2.3. Opbouw van een module Elke module in de CAM-Brain bestaat uit verschillende cellen.

Er zijn twee soorten cellen. Enerzijds zijn er de neuronen, die in hoofdzaak de

berekeningen doen; anderzijds zijn er de axonen, die vooral gebruikt worden om signalen

van verschillende neuronen aan elkaar door te geven.*

Een module bevat 13.824 zulke cellen, geordend in een driedimensionele 24x24x24

matrix.

Niet elke cel kan de rol van neuron spelen. Er is slecht één neuron per twaalf cellen.

Namelijk elke cel met coördinaten x modulo 3 = 2, y modulo 2 = 1, z modulo 2 = 0.†

Elke cel heeft in dat rooster zes zijden (noord, zuid, top, bodem, west, oost). Een cel kan

verbonden worden met maximum zes naburige cellen via in- en uitgangen. Er zijn geen

grenzen aan een module. Dit wil zeggen dat bijvoorbeeld een cel aan de bovenkant (z-

coördinaat gelijk aan drieëntwintig) via zijn top-uitgang verbonden is met de cel met

dezelfde x- en y-coördinaten en z-coördinaat gelijk aan nul.

Elke cel kan slechts informatie doorgeven aan een aangrenzende cel als de ene cel een

ingang en de andere een uitgang heeft aan de zijde waar ze grenzen. Om dus informatie

door te geven tussen twee niet aangrenzende cellen moet de informate via andere cellen

doorgegeven worden. Er is geen verbinding tussen twee cellen als ze aan elkaar grenzen

via twee in- of uitgangen.

* In de CAM-Brain machine is er geen onderscheid tussen een axon en een dendriet, deze cellen zullen als axonen gerefereerd worden in de rest van deze thesis † De nummering van de cellen begint bij nul

Page 13: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

8

Alle cellen van een module werken in parallel. De machine beschikt over een klok. Bij

elke klokpuls wordt de toestand van elke cel aangepast door te kijken naar de ingangen van

de cel.

Bij het laden van een module wordt de configuratie van een module ingeladen. Deze

configuratie bepaalt welke rol elke cel zal spelen, en waar hij in- en uitgangen heeft. Ook

de invoer, die via de invoercellen aan de machine wordt doorgegeven, wordt bij het laden

van een module vastgelegd.

Een module wordt ondubbelzinnig beschreven door de toestanden van al zijn cellen

(inclusief invoer- en uitvoercellen) en een bepaald tijdstip in de evaluatie.

We gaan nu dieper in op het verschillende gedrag van axonen en neuronen.

Page 14: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

9

2.3.1. Axon Een axon kan zich in twee toestanden bevinden vuren of niet vuren. Als een axon vuurt zal

dit vuursignaal aan al zijn uitgangen doorgegeven worden.

De toestand van een axon wordt bepaald door de signalen die het ontvangt aan zijn

ingangen. Als een axon één vuursignaal ontvangt via één van zijn ingangen zal het axon in

de toestand vuren komen. In alle andere gevallen komt het in de toestand niet vuren.

In formulevorm*

:

{ }{ }

{ }

∈∀≠

==

∈∈

=−

=−

5,..,0 ,1:0

1:1

tijdstipopuitvoer 1 ,0 tijdstipop invoer 1 ,0

5

01

5

01

jI

IU

tUtiI

i

it

i

it

t

t

it

Merk op dat een axon in theorie zes ingangen kan hebben, maar aangezien een cel zonder

uitgangen geen invloed uitoefent op de rest van de machine dient zo een cel niet

geëvalueerd te worden.

Er wordt in dit eindwerk geen onderscheid gemaakt tussen dendrieten en axonen. In

sommige verhandelingen in verband met de CAM-Brain wordt dit onderscheid wel

gemaakt.[2]

Daar wordt een dendriet opgevat als een cel met vijf ingangen en één uitgang en een axon

als een cel met vijf uitgangen en één ingang. Aangezien er in de machines vaak cellen

voorkomen met bijvoorbeeld twee ingangen en drie uitgangen is dit onderscheid weinig

zinvol en zullen de cellen gewoon axonen genoemd worden.

* Een 1 komt overeen met een vuursignaal, een 0 met niet vuren

Page 15: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

10

2.3.2. Neuron Een neuron kan zich net zoals een axon in de toestanden vuren en niet vuren bevinden.

Echter, anders dan bij een axon, beschikt een neuron intern over een pijplijn. Als een

neuron zich in de toestand vuren bevindt zal het vuursignaal pas na twee tijdseenheden het

neuron verlaten, terwijl dat bij een axon al bij de volgende tijdseenheid het geval is.

De volgende toestand van het neuron wordt bepaald door accumulatie van de signalen die

het ontvangt. Daartoe beschikt het neuron intern over een accumulator, die een waarde

bevat tussen min acht en plus zeven. Het neuron kan zowel signalen met een positief als

signalen met een negatief gewicht ontvangen via zijn ingangen.

Als een neuron een vuursignaal met positief gewicht ontvangt wordt de waarde van zijn

accumulator met één verhoogd. Een vuursignaal met negatief gewicht zorgt ervoor dat de

waarde van de accumulator met één verlaagd wordt.

Als de waarde van de accumulator groter dan of gelijk aan twee is komt het neuron in de

toestand vuren, en zet het zijn accumulator terug op nul. Een neuron met waarde min acht

dat een negatief signaal krijgt zal zichzelf terug op nul zetten. (uiteraard zonder te vuren)

In formulevorm:

{ }{ }

{ }{ }

<≥

=

−<∨=

−≥∧≠+=

∈∈

−∈−∈

=−+

=−+−

2 :02 :1

81 :.

81 :.

tijdstipopuitvoer 1 ,0 tijdstipop invoer 1 ,0

tijdstipopr accumulato de van waarde 7 ,..,8 ingangmet rdgeassocieegewicht 1 ,1

2

2

5

011

5

0111

t

tt

itt

it

i

itt

it

it

t

t

it

t

i

AccAcc

U

AccUIw

AccUIwAccAcc

tUtiI

tAcciw

Page 16: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

11

Bij het laden van de configuratie van een module kunnen er zich speciale gevallen

voordoen. De accumulator van een neuron kan bijvoorbeeld de waarde zeven bevatten en

nog een positief vuursignaal ontvangen. In deze gevallen zal het neuron gewoon vuren en

zijn accumulator terug op nul zetten.

Ook de situatie waarbij de accumulator bijvoorbeeld de waarde min twee bevat en het

neuron het volgende tijdstip zal vuren kan zich voordoen bij het laden van de machine.

Deze ongewone situaties, die zich enkel bij het laden van de machine kunnen voordoen,

hebben verder geen consequenties, de CBM zal zich altijd na één tijdseenheid in een

consistente toestand bevinden.

Page 17: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

12

2.3.3. Invoer- en uitvoercellen Een module heeft 192 invoer- en uitvoercellen, die de verbinding met de buitenwereld

vormen. Vier van deze cellen zijn uitvoercellen. De andere 188 cellen zijn invoercellen.

Aangezien er geen grenzen aan een module zijn (een cel op de rand is verbonden met een

cel aan de andere kant), zijn er logisch gezien slechts drie vlakken aan een module. Elk van

deze vlakken beschikt over één uitgang en het XZ-vlak heeft één extra uitgang.

Elke invoercel vuurt telkens in twee cellen, en een uitvoercel krijgt zijn invoer van twee

cellen op voorwaarde dat er in- en uitgangen zijn in de richting van de in- en uitvoercellen.

De twee cellen waarmee een in- en uitvoercel verbonden is, zijn de twee cellen die aan

weerszijden van een module liggen.

Dit heeft als gevolg dat als een invoercel gebruikt wordt, en dus één van de aangrenzende

cellen een ingang heeft in de richting van de invoercel, de cel aan de andere kant van de

module ofwel ook dit invoersignaal zal ontvangen (als het een ingang heeft in de richting

van de invoercel) ofwel zal de cel een uitgang hebben in de richting van de invoercel, in dit

geval zal de cel dus ook vuren in de cel aan de andere kant van de module.

Page 18: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

13

De uitvoercellen zijn nu de cel met nummer vier, tweeëndertig, zesennegentig en

honderdzestig.

Oorspronkelijk was het de bedoeling om als uitvoer de cel nul, en telkens de cel in het

midden van een vlak te nemen (cellen met nummer zesendertig, honderd en

honderdvierenzestig), met als doel de verschillende uitvoercellen zo ver mogelijk uit elkaar

te positioneren. Maar bij de implementatie van de machine is er een fout gemaakt zodat de

uitvoercellen zich niet in het midden van elk vlak bevinden maar aan de rand.

Page 19: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

14

De coördinaten van de cellen, die aan de invoer- en uitvoercellen gehecht zijn, worden als

volgt bepaald:

(met i het nummer van de invoer/uitvoercel)

In het XZ-vlak:

x = 1 + 3.(i modulo 8)

y = 0 en y = 23

8 / i3. 1 z +=

In het YZ-vlak:

x = 0 en x = 23

y = 1 + 3.(i modulo 8)

8 / 64) - (i3. 1 z +=

In het XY-vlak:

x = 1 + 3.(i modulo 8)

8 / 128) - (i3. 1 y +=

z = 0 en z = 23

Page 20: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

15

2.4. Implicaties van de opbouw Door de plaatsing van de cellen in de CAM-Brain (op een driedimensionaal rooster) is de

lengte n van het pad tussen twee verbonden cellen, indien men enkel gebruik maakt van

axonen, gelijk aan de (kortste) afstand d tussen die twee cellen, plus een even getal 2.k (de

lengte van de omweg):

n = d + 2.k

met

n, d uitgedrukt in roosterspatiëring

en 212121 zzyyxxd −+−+−=

met (x1,y1,z1),(x2,y2,z2

) de coördinaten van de twee verbonden cellen

De vertraging die een signaal ondergaat door het doorlopen van een aantal cellen is dus

ook steeds onder de vorm d + 2.k. Als een vertraging van de vorm d + 2.k + 1 gewenst is,

kan dit niet bekomen worden door enkel gebruik te maken van axonen.

Page 21: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

16

Men moet dan gebruik maken van een neuron, aangezien deze intern over een pijplijn

beschikt, die een vuursignaal met één tijdseenheid vertraagt.

Als de puls van axon A naar axon B het pad van de roze lijn neemt, heeft de puls drie

tijdseenheden nodig om neuron B te bereiken.

Via het andere pad (de rode lijn) wordt de puls eerst gesplitst, waarna hij via twee

ingangen met een positief gewicht de accumulator van het neuron op twee zet (dit duurt

twee tijdseenheden). Daarna komt de puls, met nog een extra vertraging als gevolg van de

interne pijplijn, in neuron B. In totaal duurt dit dus vier tijdseenheden.

Deze eigenschap heeft als gevolg dat als een neuron gebruikt wordt, om welke reden ook,

andere signalen, die synchroon moeten lopen, ook via een ander neuron moeten passeren.

Aangezien de neuronen niet overal kunnen voorkomen maakt het gebruik van een neuron

het vaak noodzakelijk om vele extra cellen te gebruiken om de synchroniciteit te bewaren.

Page 22: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

17

3. Berekening van de rekenkracht Om de rekenkracht van de CAM-Brain te berekenen wordt er eerst een compiler

geïntroduceerd die een machine omzet naar Pentium assembler code. Op basis van deze

code wordt er dan een schatting gemaakt van de tijd, die de machine nodig heeft om

uitgevoerd te worden op een Pentium PC.

3.1. De compiler De invoer voor de compiler is een configuratie van een machine. Om het gedrag van de

CAM-Brain te kunnen simuleren moet de toestand van elk axon en neuron opgeslagen

worden.

Voor een axon wordt er ook een accumulator geïntroduceerd. Deze accumulator moet als

volgt opgevat worden: telkens een andere cel (neuron of axon) in het axon vuurt wordt de

accumulator met één verhoogd. Als de accumulator van het axon op één staat, zal het axon

de volgende tijdseenheid vuren. De accumulator van een axon wordt bij het begin van elke

tijdseenheid op nul gezet.

Aangezien een axon elke tijdseenheid maximaal zes vuursignalen kan ontvangen, en de

waarde van de accumulator dus altijd tussen nul en zes ligt, kan de accumulator in drie bits

opgeslagen worden.

De accumulator van een neuron is altijd tussen min acht en zeven, in principe zijn vier bits

dus voldoende. Maar aangezien er underflow kan optreden kan de waarde van de

accumulator, tijdens de evaluatie van een tijdseenheid, tot min dertien zakken. Er zijn dus

minimaal vijf bits nodig. Een neuron beschikt over een interne pijplijn, er moet dus ook

nog opgeslagen worden of het neuron de volgende tijdseenheid zal vuren of niet.

Zowel de accumulator als de byte, die bepaald of een neuron de volgende tijdseenheid zal

vuren, worden tweemaal opgeslagen. Dit is nodig omdat men niet elke cel in parallel kan

verwerken. Stel bijvoorbeeld dat cel (0,0,0) in cel (1,0,0) vuurt en cel (1,0,0) zich in de

toestand niet vuren bevindt. Indien nu cel (0,0,0) eerst verwerkt wordt, moet de

accumulator van cel (1,0,0) met één verhoogd worden. Cel (1,0,0) moet dan weten dat hij

Page 23: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

18

voor deze tijdseenheid niet vuurt en dat de waarde van zijn accumulator voor de volgende

tijdseenheid op één staat. Elke cel moet dus zijn toestand kennen voor twee tijdseenheden.

Voor een axon wordt één byte gebruikt, waar de eerste vier bits gebruikt worden voor de

ene tijdseenheid en de laatste vier bits voor de volgende tijdseenheid. Voor een neuron

wordt er voor de accumulator een byte gebruikt voor elke tijdseenheid, plus nog een extra

byte waarin opgeslagen wordt of het neuron de volgende tijdseenheid zal vuren of niet,

voor beide tijdseenheden.

De compiler genereert op basis van de configuratie code voor twee volledige

tijdseenheden.

Code voor een volledige tijdseenheid genereren heeft als voordeel dat er direkt van de

configuratie van elke individuele cel kan uitgegaan worden en er dus geen code nodig is

om te testen in welke richtingen een cel een in- en uitgang heeft.

Door code voor twee tijdseenheden te genereren wordt vermeden dat de informatie over de

accumulatoren moet gekopieerd worden. De code voor de eerste tijdseenheid kan

bijvoorbeeld kijken naar de eerste vier bits van de accumulator van een axon, en de code

voor de tweede tijdseenheid dan naar de laatste vier bits. Indien er slechts code voor één

tijdseenheid zou gegenereerd worden zouden de laatste vier bits telkens in de eerste vier

bits moeten gekopieerd worden tussen elke twee tijdseenheden. Dezelfde redenering geldt

uiteraard voor de bytes die gebruikt worden om de accumulator van een neuron in op te

slaan.

Er worden maximaal 13.824 cellen van een module gebruikt, waarvan er 1.152 de rol van

neuron kunnen spelen.

Er zijn dus ten hoogste 13824 + (2.1152) = 16.128 bytes geheugen nodig om de informatie

voor de verschillende cellen op te slaan. Aangezien de Pentium 3 over een datacache van

16 KB beschikt past de machine dus volledig in de cache.

Page 24: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

19

In de compiler zoals hierna beschreven wordt voor elke cel gekeken of hij zal vuren of

niet, en indien de cel vuurt wordt dit vuursignaal naar de buren waarin de cel vuurt

gepropageerd.

Een alternatieve benadering is om voor elke cel naar de buren te kijken die in deze cel

vuren en op basis van de naburige cellen te bepalen of deze cel zal vuren of niet.

Enerzijds zullen er in deze alternatieve benadering meer instructies per cel nodig zijn

indien ze meer dan één uitgang heeft, voor elke cel zal moeten nagegaan worden of ze

vuurt of niet. Anderzijds kan het in deze alternatieve benadering voorkomen dat niet alle

buren van een cel moeten geëvalueerd worden. Indien een axon twee vuursignalen

ontvangt, kan de evaluatie van dit axon gestopt worden aangezien het dan altijd niet vuurt.

Dit controleren vergt echter ook extra instructies.

Uit de machines die in hoofdstuk 4 gebouwd worden blijkt dat cellen met veel ingangen

zeer weinig voorkomen, bovendien vuren cellen veel vaker niet dan wel.

Er zullen wel zeer specifieke machines kunnen geconstrueerd worden waarvoor de

alternatieve benadering efficiënter is, maar in praktisch bruikbare machines zal ze

ongetwijfeld slechter presteren.

Page 25: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

20

3.1.1. Een Axon Een axon moet in elk van zijn uitgangen vuren als de waarde van zijn accumulator juist één

is. Er is bij het laden van de machine geweten in welke cellen elk axon vuurt. Nadat de

compiler geheugen heeft toegewezen voor elke cel, is geweten met welke

geheugenadressen elke cel, waarin het axon vuurt, overeenkomt en kan dit rechtstreeks in

de code ingeënt worden.

De accumulator wordt tweemaal opgeslagen, eenmaal in de eerste vier bits en eenmaal in

de laatste vier bits van de byte met adres Ai,j,k

voor axon (i, j ,k).

Eerst moet elk axon geïnitialiseerd worden. Dit gebeurt door twee MOV operaties.

MOV Ai,j,k

of MOV A

, 0 Indien de cel initiëel niet vuurt

i,j,k

, 1 Indien de cel initiëel wel vuurt

En voor elke cel Ai,j,k

met minstens één uitgang:

MOV AL, 15 (1)

AND AL, Aijk

CMP BYTE PTR AL, 1 (3)

(2)

AND Aijk

JNE volgende_cel (5)

, 240 (4)

ADD Axyz

INC BYTE PTR B

, 16 (6)

abc

DEC BYTE PTR B

(7)

abc

(8)

In lijn (1) en (2) wordt een logische en genomen van de byte die gebruikt wordt voor de

accumulator van het axon en de waarde 00001111, zodat enkel de laatste vier bits van de

accumulator gebruikt worden.

De volgende instructie zal kijken of het axon vuurt, enkel indien de waarde van de

accumulator exact één is zal het axon vuren.

Lijn (4) zal de waarde van de accumulator op nul zetten, dit wordt gedaan door de logische

en te nemen van de byte en 11110000.

Page 26: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

21

Op lijn (5) zal er naar de volgende cel gesprongen worden indien dit axon niet vuurt.

Indien het axon wel vuurt, zullen er nog een aantal lijnen volgen die het axon laten vuren

in de naburige cellen waarnaar het een uitgang heeft. Voor elk axon waarin het axon vuurt

komt regel 6 voor, door zestien (00010000) op te tellen bij de waarde van de accumulator

van het axon waarin gevuurd wordt, worden de eerste vier bits van de accumulator met één

verhoogd.

Indien het axon via een ingang met positief gewicht in een neuron vuurt wordt de

accumulator van het neuron met één verhoogd, indien het via een ingang met negatief

gewicht vuurt wordt de accumulator van dit neuron met één verlaagd.

De volgende tijdseenheid moeten de rollen omgedraaid worden, voor het neuron waarin

(eventueel) het axon eventueel vuurt, wordt de accumulator Aabc dan gebruikt in plaats van

de accumulator Babc

En de waarden één (00000001) en zestien (00010000) moeten omgewisseld worden,

alsook de waarden vijftien (00001111) en tweehonderdveertig (11110000).

.

Uit de code blijkt dat het aantal uitgangen die een axon heeft en of het axon vuurt of niet

bepalend zijn voor de uitvoeringstijd.

Een MOV, AND, CMP en JNE operatie duurt één klokcyclus en een ADD, INC en DEC

drie klokcycli in een Pentium.

De uitvoeringstijd van een axon kan dus als volgt samengevat worden.

Aantal uitgangen het axon vuurt het axon vuurt niet

1 8 5

2 11 5

3 14 5

4 17 5

5 20 5

Hoewel een axon met zes uitgangen theoretisch kan bestaan, kan deze enkel de eerste

tijdseenheid vuren, een goede compiler zal deze cellen verwijderen en indien ze de eerste

tijdseenheid vuren de initiële configuratie aanpassen.

Page 27: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

22

3.1.2. Een Neuron Een neuron wordt als volgt geïnitialiseerd: MOV Ai,j,k

MOV B , X (met –8 ≤ X ≤ 7)

i,j,k

MOV C , 0

i,j,k

, 0 of 1

Met X gelijk aan de initiële waarde van de accumulator. Bi,j,k bevat de waarde die per

tijdseenheid bij de accumulator wordt opgeteld en is dus initieel nul. Ci,j,k

is nul of één, al

naargelang het neuron de volgende tijdseenheid zal vuren of niet.

Een neuron evalueren gaat als volgt:

ADD Aijk, Bijk

MOV AL, A

(1)

ijk

CMP AL, 2 (3)

JL Underfl (4)

(2)

ADD Cijk

Underfl: CMP AL, -8 (7)

, 16 (5)

JMP Reset (6)

JGE Fire (8)

Reset: MOV BYTE PTR Aijk

Fire: MOV BL, 15 (10)

, 0 (9)

AND BL, Cijk

CMP BYTE PTR BL, 1 (12)

(11)

JNZ volgende_cel (13)

AND Cijk

# voor elke uitgang naar een cel (x,y,z)

, 240 (14)

ADD Axyz

, 16 (15)

Op lijn (1) wordt de accumulator aangepast met de waarden die het de vorige tijdseenheid

ontving van zijn buren.

Een neuron vuurt enkel indien de waarde van de accumulator groter dan of gelijk aan twee

is, lijnen (2) en (3) gaan na of het neuron de volgende tijdseenheid zal vuren.

Page 28: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

23

Indien het neuron zal vuren wordt de C-variabele verhoogt met 16 (00010000) (lijn (5)), zo

wordt aangegeven dat het neuron de volgende tijdseenheid zal vuren. Als het neuron vuurt

moet de waarde van de accumulator terug op nul gezet worden. (lijn (7))

Indien het neuron niet vuurt zou het kunnen dat de waarde van de accumulator kleiner dan

min acht is, ook in dit geval moet de waarde van de accumulator terug op nul gezet

worden. (lijnen (7) en (9))

Er moet altijd nagegaan worden of het neuron deze tijdseenheid vuurt. Het neuron zal

vuren als de C-variabele op één staat, met andere woorden als de vorige tijdseenheid de

waarde van de accumulator groter dan of gelijk aan twee was.

Of het neuron deze tijdseenheid vuurt wordt bepaald door de laatste vier bits van C. Om

deze bits te bekijken wordt een logische en genomen van C en vijftien (00001111). Indien

de waarde van C gelijk is aan één moeten de laatste vier bits terug op nul gezet worden. Dit

gebeurt door een logische en te nemen van C en tweehonderdveertig (11110000). Ook de

variabele van elk axon waarin het neuron vuurt moet aangepast worden. Deze laatste

operatie is identiek aan die van een axon dat vuurt in een ander axon.

Net zoals bij een axon moet in de code voor de volgende tijdseenheid de zestien

(00010000) uit lijnen 5 en 15 vervangen worden door een één (00000001). De vijftien

(00001111) uit lijn 10 moet tweehonderdveertig (11110000) worden en de

tweehonderdveertig uit lijn 14 een vijftien.

Een CMP- (register – constante), JL-, JGE-, JNZ-, AND- en MOV-instructie duurt één

klokcyclus en een ADD-instructie duurt drie klokcycli in een Pentium.

Aantal uitgangen het neuron vuurt het neuron vuurt niet*

1 17 12

2 20 12

3 23 12

4 26 12

5 29 12 * Indien de accumulator op min acht staat en de waarde van de accumulator terug op nul moet gezet worden zal dit 11 klokcycli duren.

Page 29: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

24

Merk op dat er in principe een onderscheid moet gemaakt worden tussen een cel die noch

deze tijdseenheid, noch de volgende vuurt; een cel die deze tijdseenheid niet vuurt maar de

volgende tijdseenheid wel; een cel die deze tijdseenheid vuurt maar de volgende niet en

een cel die beide tijdseenheden vuurt.

Maar voor elk neuron geldt uiteraard dat als ze op tijdstip t vuurt, ze op tijdstip t-1 de

volgende tijdseenheid ging vuren. Zodat, over verschillende tijdseenheden, twee

toestanden voldoende zijn: namelijk de cel vuurt of de cel vuurt niet.

Page 30: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

25

3.2. Ondergrens De machine die het minst aantal berekeningen vergt voor deze compiler is een lege

machine. Zo een machine zal compileren tot een leeg programma.

Een ondergrens voor het aantal Pentiums nodig om de CAM-Brain te simuleren is dus nul.

Page 31: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

26

3.3. Bovengrens Een machine die, voor de compiler uit 3.1, het hoogste aantal berekeningen vergt, is een

machine waarbij elke cel gebruikt wordt, elke cel vijf uitgangen heeft, elke cel elke

tijdseenheid vuurt en elk mogelijk neuron een neuron is.

Zo een machine kan in de praktijk niet bestaan, het is onmogelijk dat elke cel vijf

uitgangen heeft en het is onmogelijk dat elke cel elke tijdseenheid vuurt in een cel met

zoveel uitgangen.

In een machine heeft elke uitgang die gebruikt wordt als gevolg dat de naburige cel, waarin

de cel met de uitgang vuurt, een ingang heeft op deze plaats. Zodat een strictere

bovengrens bekomen wordt door het maximaal aantal uitgangen gedeeld door twee te

beschouwen.

Een cel zonder uitgangen heeft geen invloed op het gedrag van de machine, zodat deze

weggeoptimaliseerd worden. Elke cel moet dus minstens één uitgang hebben, voor elke

extra uitgang die een cel heeft, zijn er altijd drie klokcycli nodig in een Pentium, zowel

voor een axon als voor een neuron.

Om de rekenkracht te berekenen zal een machine beschouwd worden waarbij elke cel drie

uitgangen en drie ingangen heeft. Merk op dat een machine waar bijvoorbeeld de helft van

de cellen vijf uitgangen heeft en de andere helft één, exact evenveel rekentijd nodig heeft,

er bestaat met andere woorden geen machine met evenveel in- als uitgangen die meer

rekentijd nodig heeft dan de machine waar alle cellen drie in- en uitgangen hebben.

Het kan eenvoudig ingezien worden dat deze machine nog steeds niet kan bestaan in de

praktijk. Aangezien elke cel initieel vuurt en elke cel meer dan één ingang heeft zullen de

axonen de volgende tijdseenheid niet vuren.

Deze machine is echter wel zeker een bovengrens en het is niet eenvoudig om een machine

te vinden die in de praktijk kan bestaan en die zeker een bovengrens is.

Exhaustief zoeken is niet haalbaar. Om de redenering te vereenvoudigen wordt ervan

uitgegaan dat elke cel een axon is, neuronen gebruiken maakt het aantal machines die

moeten beschouwd worden enkel groter. Elke cel die gebruikt wordt kan zich in

Page 32: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

27

honderdachtentwintig initiële toestanden bevinden (vuren - niet vuren en aan elke zijde een

in- of uitgang), er zijn dus 12813824 mogelijke, volledig gevulde, machines. Om een

vergelijking te kunnen maken moet elke machine tot een tijdstip t geëvalueerd worden

zodat de toestand op tijdstip t dezelfde toestand is als op een tijdstip kleiner dan t.

Aangezien er 13824 cellen zijn en elke cel altijd vuurt of niet is t begrensd door 213824

Bovendien kan de bovengrensmachine evengoed een machine zijn waarin één of meerdere

cellen niet gebruikt worden, zodat het totaal aantal machines die moeten beschouwd

worden resulteert in

.

∑=

−−

13823

0

)13824()13824( 2.128.)!13824!.(

!13824i

ii

ii

Hoewel er in de praktijk minder machines zullen moeten geëvalueerd worden (het is

uitgesloten dat een machine waar bijvoorbeeld maar twee cellen gebruikt worden de

bovengrensmachine is), geeft deze formule toch aan dat exhaustief zoeken praktisch niet

haalbaar is.

De machine waarbij elke cel drie uitgangen heeft, en die elke tijdseenheid vuurt, zal wel

zeker een bovengrens vormen.

Deze machine zal dan 12672 . 14 + 1152 .22 = 202752 klokcycli nodig hebben voor het

verwerken van één tijdseenheid.

Om een vergelijking te maken tussen de CAM-Brain en een Pentium 3 zullen telkens tien

miljoen tijdseenheden beschouwd worden. Dit getal is arbitrair, zolang het maar groot

genoeg is, er wordt gekozen voor tien miljoen omdat de CAM-Brain signalen aan tien

megahertz verwerkt, en dus juist één seconde nodige heeft om tien miljoen tijdseenheden

te verwerken.

Voor deze theoretische machine resulteert dit dan in 202,752.1010

klokcycli, de

vergelijking wordt gemaakt met een vijfhonderd megahertz Pentium 3, zodat een Pentium

3 dus maximaal 4055,04 maal zo traag is als de CAM-Brain.

Page 33: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

28

4. Patroonherkenner

4.1. Inleiding Zoals reeds aangehaald is de vergelijking van de rekenkracht van de CAM-Brain met die

van een Pentium sterk afhankelijk van de machine die beschouwd wordt.

Er zijn drie factoren die een rol spelen voor de rekenkracht die nodig is om een machine te

simuleren, namelijk het aantal cellen die gebruikt worden, hoeveel cellen er als neuron

gebruikt worden en het aantal uitgangen waarin gevuurd wordt.

Er is geen monotoon verband tussen het aantal neuronen die gebruikt worden en de

rekenkracht die nodig is om een machine te simuleren. Een neuron heeft wel een grotere

rekenkracht nodig, zowel wanneer het vuurt als wanneer het niet vuurt, maar door het

verschillend gedrag dat een neuron heeft kan men niet met zekerheid zeggen dat een

machine waar meer cellen als neuronen gebruikt worden en waar de rest van de machine

identiek blijft, meer rekenkracht nodig heeft dan dezelfde machine waar minder neuronen

gebruikt worden.

Neem bijvoorbeeld een axon met twee ingangen en vier uitgangen waar de twee ingangen

om beurten vuren, dit axon zal elke tijdseenheid vuren in vier uitgangen. Indien dit axon

vervangen wordt door een neuron waarbij met de ene ingang een positief gewicht wordt

geassociëerd en met de andere ingang een negatief gewicht, dan zal dit neuron nooit vuren

en benodigde rekenkracht zal dus dalen.

Stel anderzijds dat beide ingangen elke tijdseenheid vuren, het axon zal nu nooit vuren.

Indien het axon vervangen wordt door een neuron en beide ingangen krijgen een positief

gewicht, dan zal het neuron elke tijdseenheid in vier uitgangen vuren. In dit geval is de

benodigde rekenkracht gestegen.

Aangezien er altijd rekenkracht nodig is om een cel te simuleren, zowel indien ze vuurt als

indien ze niet vuurt, zal de rekenkracht die nodig is om een machine te simuleren stijgen

indien het aantal cellen stijgt. Dit geldt uiteraard enkel indien de extra cellen niet tot gevolg

hebben dat vuursignalen elkaar opheffen en de machine dus minder vuurt.

Page 34: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

29

Een cel die in een uitgang, en dus in een andere cel, vuurt zal een invloed uitoefenen op de

benodigde rekenkracht. Indien het aantal uitgangen waarin gevuurd wordt stijgt zal de

benodigde rekenkracht stijgen.

Merk op dat enkel de combinatie vuren – uitgangen de benodigde rekenkracht doet stijgen.

Enkel het aantal uitgangen laten stijgen of enkel het aantal cellen die vuren leidt niet

noodzakelijk tot een grotere nodige rekenkracht om de machine te simuleren. Zowel het

aantal uitgangen laten stijgen als het aantal cellen die vuren kan tot gevolg hebben dat de

vuursignalen elkaar opheffen en er dus uiteindelijk in minder uitgangen gevuurd wordt en

er dus minder rekenkracht nodig is.

Omdat de berekende onder- en bovengrens uit hoofdstuk 3 sterk uit elkaar liggen zal ik een

“typische” applicatie ontwerpen en hiervoor de rekenkracht berekenen.

Er wordt gekozen voor een patroonherkenner, aangezien dit een applicatie is waarvoor

neurale netwerken traditoneel vaak gebruikt worden.

Uiteindelijk maakt de keuze van de applicatie niet zoveel uit. Het gedrag van de CAM-

Brain wordt toch gesimuleerd in de Pentium. Het is enkel belangrijk een indicatie te

krijgen van het aantal in- en uitgangen die elke cel heeft, hoeveel cellen er niet gebruikt

worden, hoeveel cellen er als neuron gebruikt worden, en hoe vaak een cel vuurt in een

typische CAM-Brain machine, aangezien dit de factoren zijn die een invloed hebben op de

vergelijking CAM-Brain – Pentium.

De patroonherkenner heeft een n-bit geheugen, waarin het patroon opgeslagen wordt. Het

patroon in dit geheugen kan geschreven worden bij het laden van de machine en nadien

gewijzigd worden via één van de invoercellen.

Via een andere invoercel komt de invoerstroom van bits binnen in de machine. Het patroon

zal elke n tijdseenheden met deze invoerstroom vergeleken worden.

De uitvoer zal bestaan uit n2log bits. Deze bits stellen een binair getal voor dat het

aantal overeenkomsten aangeeft tussen het patroon en de invoerstroom.

Page 35: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

30

Ik heb driemaal een dergelijke machine gebouwd. De eerste machine is een rechtsreekse

implementatie van deze patroonherkenner. Deze machine bleek vrij inefficiënt te zijn.

Door de inefficiënties in deze eerste machine te lokaliseren en te verbeteren ben ik tot een

tweede en derde machine gekomen, die efficiënter zijn.

Voor elk van de machines zullen telkens eerst de deelmachines besproken worden

(geheugen, patroon vergelijken, overeenkomsten tellen), waarna het samenstellen van deze

delen besproken wordt.

Page 36: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

31

4.2. Eerste machine

4.2.1. Geheugen

Een geheugen kan in de CAM-Brain gebouwd worden als een cyclische aaneenschakeling

van axonen met telkens één ingang en één uitgang. Een bitpatroon wordt dan voorgesteld

door een opeenvolging van vurende en niet-vurende cellen. Deze vuursignalen gaan dan

van de ene cel in de andere tot ze weer aan het begin komen.

Schrijven naar, respectievelijk lezen uit zo’n geheugen wordt bekomen door een extra

ingang, respectievelijk een extra uitgang aan één (of meerdere) cel(len) in het geheugen

aan te leggen.

Een geheugen, dat op deze manier gebouwd wordt, is altijd een geheugen dat een even

aantal bits bevat. Indien men een geheugen wil voor een oneven aantal bits dient men

gebruik te maken van een neuron.

Een geheugen voor een even aantal bits is minimaal vier bits groot; een geheugen voor een

oneven aantal bits minimaal zeven.

Merk op dat kleinere geheugens ook mogelijk zijn. Indien men bijvoorbeeld een geheugen

van drie bits wil bekomen kan men een zes bit geheugen gebruiken en hierin tweemaal

dezelfde drie bit sequentie opslaan. Het wijzigen van de inhoud van dit soort geheugens is

wel lastiger.

Page 37: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

32

4.2.2. Klokpuls We zullen vaak gebruik kunnen maken van een periodiek signaal, dat we een klokpuls

zullen noemen. Om een klokpuls te bekomen met periode n wordt er een geheugen

gemaakt van n bits, waarbij één bit in dit geheugen op één gezet wordt (of dus één cel in de

toestand vuren) en alle andere nul zijn.

Page 38: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

33

4.2.3. Het patroon vergelijken met de invoerstroom Dit kan in de CAM-Brain erg eenvoudig geïmplementeerd worden.

Een axon met slechts twee ingangen gedraagt zich als de inverse van een exclusieve of-

poort. Men dient dus gewoon het patroon en de invoerstroom in een axon te laten vuren en

nadien deze uitvoer te inverteren.

Dit inverteren kan dan gebeuren door een constante één pulstroom in een axon te laten

vuren tesamen met de te inverteren bitstroom.

Page 39: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

34

4.2.4. Aantal overeenkomsten tellen De invoer van deze deelmachine zal bestaan uit een continue pulstrein, waarin het aantal

vuursignalen (of dus het aantal overeenkomsten tussen de invoerstroom en het patroon) per

n-tijdseenheden moet geteld worden.

Het omzetten van deze pulstrein naar een binair getal dat het aantal overeenkomsten

voorstelt, kan gebeuren door deze pulstrein in een rij van neuronen te laten vuren.

Deze neuronen worden in serie geschakeld, waarbij elk neuron juist één ingang heeft met

positief gewicht.

Een neuron uit deze serie kan gezien worden als een 1-bit teller met carry, waarbij de carry

aan het volgende neuron doorgegeven wordt.

Als de waarde van de accumulator van de neuronen initieel op nul staat zal de waarde van

de accumulator van het eerste neuron op één staan indien er een oneven aantal

vuursignalen in dit neuron gevuurd hebben of m.a.w. de waarde van deze accumulator is

gelijk aan (x modulo 2), met x gelijk aan het aantal vuursignalen in de pulstrein die in dit

neuron gevuurd hebben.

De waarde van de accumulator van het tweede neuron zal één zijn indien het eerste neuron

een oneven aantal keer gevuurd heeft. De waarde van deze accumulator is dus gelijk aan

2mod2

x

Op een analoge manier kan ingezien worden dat de waarde van de accumulator van neuron

k in deze rij van neuronen voldoet aan:

2mod2

k

x

Page 40: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

35

Met andere woorden, de waarden van de accumulatoren van de neuronen in deze rij zullen

een binair getal vormen, dat het aantal overeenkomsten tussen het patroon en de

invoerstroom voorstelt. Waarbij de waarde van de accumulator van het laatste neuron in de

rij het meest significante bit voorstelt.

Om het aantal vuursignalen in een pulstrein van n bits te kunnen tellen moet het aantal

neuronen m voldoen aan nm 2log≥ .

Om deze constructie in de machine te kunnen gebruiken moet er nu nog een manier

gevonden worden om de waarde van deze neuronen uit te lezen. En het is dit deel dat

verschilt in de drie verschillende machines.

Page 41: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

36

4.2.5. De waarde van de accumulator uitlezen Het is de bedoeling een deelmachine te maken, die een vuursignaal als uitvoer heeft als de

waarde van de accumulator van een neuron één is en die niet vuurt in alle andere gevallen.

Na het uitlezen moet de waarde van de accumulator op nul staan, zodat een volgende

pulstrein kan verwerkt worden.

4.2.5.1. De waarde uitlezen en accumulator weer op nul zetten

We wensen de waarde van de accumulator van neuron 1 uit te lezen, waarbij deze waarde

altijd nul of één is. Dit kan gebeuren door een signaal via een ingang met positief gewicht

(via axon A) in het neuron te laten vuren. Indien de waarde van de accumulator één is, zal

het neuron vuren en zal de waarde van zijn accumulator op nul gezet worden. Indien de

waarde van de accumulator nul is, zal deze waarde op één gezet worden, zonder dat het

neuron vuurt.

Page 42: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

37

Dit heeft tot gevolg dat dit leessignaal direkt gevolgd moet worden door een signaal dat via

een ingang met negatief gewicht vuurt in neuron 1. Anders zal de waarde van de

accumulator van het neuron niet op een bepaald tijdstip uitgelezen worden maar over een

bepaald tijdsinterval.

Stel bijvoorbeeld dat de invoer voor het neuron bestaat uit 0 – 0 – 0 – 1 en dat men de

waarde van de accumulator van het neuron de derde tijdseenheid wenst uit te lezen. Op dat

moment zal de waarde van de accumulator gelijk zijn aan nul. De leespuls zal als gevolg

hebben dat deze waarde op één komt te staan.

Indien nu de vierde tijdseenheid geen signaal via een ingang met negatief gewicht in het

neuron vuurt, zal het vuursignaal van de invoer als gevolg hebben dat het neuron vuurt en

er dus verkeerdelijk een één wordt uitgelezen.

Om een puls op twee opeenvolgende tijdstippen in een cel te krijgen moet men gebruik

maken van een neuron*

Rekening houdend met de plaatsing van de neuronen in de CAM-Brain

. Een signaal vanuit axon C, via axon A, zal neuron 1 bereiken na

vier tijdseenheden. Via axon B zal dit signaal het neuron bereiken na vijf tijdseenheden.

Merk op dat dit enkel geldt in de Y- en Z-richting. Als men deze constructie in de X-

richting wil bouwen zullen er twee extra axonen nodig zijn, aangezien de neuronen in de

X-richting verder uit elkaar liggen.

, is de kleinst

mogelijke constructie om een neuron op een bepaald tijdstip te bekijken zoals aangegeven

in de figuur.

Het signaal dat in het neuron vuurt via een ingang met negatief gewicht heeft dan weer als

gevolg dat de waarde van de accumulator, indien er een één wordt uitgelezen, na het

uitlezen op min één komt te staan.

Om er voor te zorgen dat de waarde van de accumulator altijd op nul komt te staan na het

uitlezen moet men dus de uitvoer terugschakelen en weer in het neuron laten vuren via een

ingang met positief gewicht. Dit gebeurt door de uitvoer van het neuron via axon D en

axon A weer in het neuron te laten vuren.

Dit heeft dan weer tot gevolg dat het interval tussen twee opeenvolgende leespulsen meer

dan vijf moet zijn. Indien het de periode van de leespuls kleiner dan vijf is, is het neuron

nog niet terug in zijn begintoestand gezet. Indien de periode exact vijf is heffen de leespuls

* zie 2.4 Implicaties van de opbouw, pagina 15 † zie 2.3 Opbouw van een module, pagina 7

Page 43: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

38

en het teruggeschakelde signaal elkaar op in axon A. Dit laatste kan vermeden worden

door het signaal terug te schakelen via een andere ingang, maar indien de periode van de

leespuls groter dan vijf is, is deze methode efficiënter.

Deze eerste deelmachine zal de waarde van de accumulator correct uitlezen, en de waarde

van de accumulator van het neuron zal vier tijdseenheden na het uitlezen weer op nul staan.

Als we deze deelmachine echter nuttig willen gebruiken, zal het neuron dat we willen

uitlezen nog andere ingangen moeten hebben zodat er een waarde in het neuron kan

geschreven worden.

Nu stelt zich het probleem dat de waarden van axonen B en D altijd dezelfde waarde zullen

bevatten. Waar het de bedoeling is dat het neuron enkel zou vuren in axon B als gevolg van

een signaal afkomstig van axon A, en dat het enkel zou vuren in axon D als gevolg van een

signaal afkomstig uit axon C. De uitvoer dient m.a.w. op één of andere manier aan de

invoer gelinkt te worden.

Bovendien zal het neuron ook vuursignalen via axon B ontvangen als het vuurde als gevolg

van signalen afkomstig van axon C, m.a.w. de waarde van de accumulator wordt verhoogd

zonder dat dit nodig was. Deze constructie is dus in de praktijk niet bruikbaar.

Page 44: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

39

Om een onderscheid te kunnen maken tussen vuursignalen als gevolg van de leespuls en

vuursignalen als gevolg van pulsen via de andere ingang(en) wordt de volgende machine

gebouwd.

4.2.5.2. Uitleeswaarde onderscheiden van andere uitvoer en vice versa Neem als basis de constructie uit het vorige deel. De idee is nu als volgt: om de uitvoer van

het neuron aan de leespuls te linken worden beide tegelijkertijd naar een nieuw neuron

gestuurd.

Indien men ervoor zorgt dat zowel het vuursignaal van axon A als het vuursignaal van

neuron 1, dat een gevolg is van het vuursignaal van axon A, via een ingang met positief

gewicht in neuron 2 vuren, direkt gevolgd door een vuursignaal via een ingang met

negatief gewicht, dan zal neuron 2 enkel vuren indien neuron 1 vuurde als gevolg van een

puls afkomstig uit axon A.

Page 45: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

40

Er onderscheiden zich vier gevallen:

• Indien geen van beide vuurt, zal neuron 2 uiteraard ook niet vuren.

• Indien axon A vuurt en dit niet als gevolg heeft dat neuron 1 vuurt (de waarde van

de accumulator van neuron 1 was dus nul), dan zal de waarde van de accumulator

van neuron 2 op één gezet worden en de volgende tijdseenheid weer op nul gezet

worden. Neuron 2 zal dus niet vuren.

• Indien neuron 1 vuurt, niet als gevolg van een vuursignaal uit axon A maar als

gevolg van een andere invoer, zal de waarde van de accumulator van neuron 2 weer

op één gezet worden en nadien weer op nul gezet worden. En dus ook in dit geval

zal neuron 2 niet vuren

• Indien neuron 1 vuurt als gevolg van een vuursignaal uit axon A, zullen beide

tegelijkertijd in neuron 2 vuren. De waarde van de accumulator van neuron 2 wordt

dus twee en dit neuron zal dan vuren. De volgende tijdseenheid wordt de waarde

van de accumulator dan op min twee gezet.

Dit in de praktijk implementeren blijkt echter iets lastiger.

Om zowel axon A als neuron 1 in twee opeenvolgende tijdseenheden via een ingang met

positief en een ingang met negatief gewicht te laten vuren, is telkens een extra neuron

nodig.

Page 46: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

41

Nu moet nog axon A met axon D verbonden worden en neuron 1 met axon C op een

zodanige manier dat een signaal vertrekkend van axon A, dat via axon B en neuron 1 axon

C bereikt, er even lang over doet dan het signaal dat van axon A vertrekt en axon D

bereikt.

Indien er enkel axonen gebruikt worden om de verbindingen te maken bereikt een signaal

vanuit axon A axon C in 7+2k tijdseenheden, en bereikt dat signaal axon D in 4+2j

tijdseenheden. Er zal dus nog een extra neuron moeten toegevoegd worden.

Page 47: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

42

Als men de constructie gebruikt zoals in bovenstaande figuur zal een puls, vanuit axon A,

via axon D neuron 2 bereiken na 13 tijdseenheden. Dezelfde puls zal via axon B ook

neuron 2 bereiken in 13 tijdseenheden.

De deelmachine tot nu toe gebouwd, heeft reeds als eigenschap dat 15 tijdseenheden na het

vuren van de leespuls uit axon A, neuron 2 zal vuren indien de waarde van de accumulator

van neuron 1 gelijk was aan één, en dat neuron 2 niet zal vuren indien de waarde van deze

accumulator gelijk was aan nul.

De correcte waarde wordt dus reeds uitgelezen, maar na het uitlezen wordt deze

deelmachine nog niet terug in zijn begintoestand gezet (i.e. de waarden van de

accumulatoren van alle neuronen gelijk aan nul).

Indien de waarde van de accumulator van neuron 1 gelijk is aan nul, zullen na het uitlezen

van deze waarde alle accumulatoren de waarde nul bevatten. Ze hoeven met andere

woorden niet aangepast te worden.

Indien de waarde één wordt uitgelezen, zal na het uitlezen de waarde van de accumulator

van neuron 1 op min één staan, en die van neuron 2 op min twee.

Page 48: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

43

Dit kan opgelost worden door de uitvoer van neuron 2 terug te schakelen en tweemaal via

een ingang met positief gewicht in neuron 2 te laten vuren, en éénmaal via een ingang met

positief gewicht in neuron 1.

Het signaal van neuron 2 terugschakelen naar neuron 1 duurt zeven extra tijdseenheden,

zodat het in totaal tweeëntwintig tijdseenheden duurt om het neuron uit te lezen en de

deelmachine terug in zijn begintoestand te brengen.

De periode tussen twee leespulsen moet dus minstens tweeëntwintig zijn, anders is het niet

gegarandeerd dat er een correct resultaat wordt uitgelezen.

Deze deelmachine zal op een correcte manier de waarde van de acumulator van neuron 1

uitlezen. Indien er een extra ingang aan neuron 1 aangelegd wordt om dit neuron te

beschrijven, zal de machine enkel een puls als uitvoer hebben indien neuron 1 vuurt als

gevolg van een puls van axon A, en niet als gevolg van twee pulsen afkomstig van de

nieuwe ingang.

Deze deelmachine kan echter nog niet gebruikt worden in de rij van neuronen om de

waarden van deze neuronen uit te lezen. Niet alleen is er niet genoeg plaats rond neuron 1

om zowel een extra ingang als een extra uitgang aan te leggen, bovendien zal het uitlezen

van het neuron nog steeds interfereren met de signalen die de rij van neuron passeren.

Page 49: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

44

Om dit op te lossen is er gelukkig niet nog zo een deelmachine nodig. Het is veel

eenvoudiger (en dus efficiënter) om elke neuron uit de rij van neuronen te klonen en de

waarde van deze kloon uit te lezen.

De rij van neuronen bevindt zich op de as gevormd door de axonen E en F. Neuron 1 en

neuron 3 zijn klonen. Ze zullen altijd dezelfde waarde bevatten, zij het dat neuron 1 deze

waarde twee tijdseenheden later bevat.

Neuron 1 of neuron 3 uitlezen komt dus op hetzelfde neer, indien het uitlezen van neuron 1

relatief gezien twee tijdseenheden later gebeurt.

Indien een één wordt uitgelezen zal de accumulator van neuron 3 na het uitlezen nog steeds

de waarde één bevatten. Om dit neuron terug in zijn begintoestand te brengen wordt het

uitvoersignaal van neuron 2 verder teruggeschakeld naar neuron 3, waar het via een ingang

met negatief gewicht in vuurt. Indien de waarde van de accumulator nul was, en er dus een

Page 50: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

45

nul wordt uitgelezen, zal de waarde nul blijven. Indien de waarde één was, wordt ze op nul

gezet.

Hoewel deze deelmachine een correct gedrag vertoont wanneer ze gebruikt wordt om één

neuron te bekijken, loopt het mis als ze gebruikt wordt in de rij van neuronen.

De reden is dat informatie van verschillende pulsrijen van lengte n met elkaar interfereren.

Nadat de laatste puls van segment met lengte n het neuron 3 bereikt zal het drieëntwintig

tijdseenheden duren voordat neuron 3 terug in zijn begintoestand wordt gezet. Ondertussen

kunnen pulsen van het volgende segment reeds in dit neuron vuren en gaat er zich

verkeerde informatie door het netwerk propageren.

Stel bijvoorbeeld dat na een segment van n pulsen de waarde van neuron 3 gelijk is aan

één. Indien er nu een vuursignaal optreedt in de eerste drieëntwintig tijdseenheden van het

volgende segment, zal het neuron vuren, terwijl het correcte gedrag zou zijn dat de waarde

van de accumulator op één gezet wordt.

De eenvoudigste manier om dit op te vangen bestaat erin om de signalen die neuron 3

bereiken te vertragen met drieëntwintig tijdseenheden en dit tussen elke twee neuronen in

de rij van neuronen. De vertraging is oneven, dus er zal een neuron moeten gebruikt

worden om dit te bereiken.

Dit heeft dan weer als gevolg dat ook de leespuls moet vertraagd worden, aangezien deze

synchroon moet lopen met de pulstrein die door de rij van neuronen gaat. Er zijn twee

axonen tussen elk neuron in de rij van neuronen. Het neuron zelf vertraagt de puls nog met

één tijdseenheid (interne pijplijn). Het duurt dus vier tijdseenheden eer een puls van een

neuron naar een ander neuron kan gaan. Dan wordt de puls nog eens drieëntwintig

tijdseenheden vertraagd. In totaal moet de leespuls er dus zevenentwintig tijdseenheden

over doen om van het ene neuron naar het andere te gaan.

Page 51: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

46

Deze machine heeft nu nog één beperking. Indien er op het moment dat de leespuls neuron

1 bereikt er ook een vuursignaal van de invoerstroom in dit neuron vuurt kan de machine

verkeerde resultaten geven.

Dan is het namelijk mogelijk dat de waarde van de accumulator van neuron 1 op drie komt

te staan en dan zal de machine een identiek gedrag vertonen als wanneer de waarde van de

accumulator op twee komt te staan.

Afhankelijk van de interpretatie is de fout als volgt: indien men het signaal van de

invoerstroom beschouwt als een deel van de pulsrij die men wenst uit te lezen met de

leespuls, zal er verkeerdelijk een één worden uitgelezen. De waarde van de accumulator

stond op één en wordt met één verhoogd, m.a.w. de deelmachine moet een nul uitlezen.

Maar omdat het neuron vuurt op het moment dat de leespuls toekomt zal de deelmachine

als uitvoer een één hebben.

Page 52: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

47

Indien men het signaal van de invoerstroom beschouwt als een deel van de volgende pulsrij

zal het neuron correct een één uitvoeren, maar zal na het uitlezen de waarde van de

accumulator van neuron 1 verkeerdelijk op nul staan.

Dit kan niet eenvoudig binnen deze deelmachine opgevangen worden. Het is echter wel

redelijk eenvoudig om vooraf te testen of er op dat tijdstip een overeenkomst optreedt

tussen de invoerstroom en het patroon (en er dus een vuursignaal is) en dit signaal altijd op

nul te zetten.

De tweede en derde machine zullen dit probleem niet hebben.

Page 53: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

48

4.2.6. Volledige machine

Een deelcomponent van de laatste deelmachine (die gebruikt wordt om de waarde van de

accumulatoren van de neuronen uit de rij van neuronen uit te lezen) past in een 3x9x6 blok.

Aangezien deze deelcomponenten ook met elkaar moeten verbonden worden, en rekening

houdend met de plaatsing van de neuronen, passen er zes zo een deelcomponenten in de x-

richting. In de y-richting passen er twee en in de z-richting vier.

Deze deelmachine beperkt dus de grootte van het patroon dat kan vergeleken worden tot

2(6.2.4) = 248

Aangezien de CAM-Brain maar 24

bits. Nu moet er nog plaats gemaakt worden voor het geheugen en de leespuls.

Men kan ervan uitgaan dat de deelmachine die het patroon vergelijkt met de invoerstroom

past in de lege ruimte die gecreëerd is om de deelmachines die de neuronen uitlezen aan

elkaar te koppelen. 3

of 13824 cellen ter beschikking heeft, is het grootste

patroon dat kan vergeleken worden beperkt tot 6812 bits. (er zijn twee even grote

geheugens nodig, één voor het patroon en één voor de leespuls).

Indien de deelmachine die het aantal overeenkomsten telt met één deelcomponent

verkleind wordt, komt er één achtenveertigste of 288 cellen van de machine vrij, of dus

144 per geheugen. Het grootst mogelijk patroon die deze machine kan verwerken wordt

gegeven door i in de volgende vergelijking te minimaliseren.

ii .144248 ≥−

De grootst mogelijke i is 35, het grootst mogelijke patroon die de deelmachine, die het

aantal overenkomsten telt, kan verwerken is dan 213 of 8192 bits. Er zijn dan 5040 bits vrij

voor elk van de geheugens.

Page 54: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

49

4.2.7. Rekenkracht analyse van deze machine Zoals reeds aangehaald hangt de rekenkracht, die nodig is om een machine binnen een

Pentium te simuleren, onder andere af van het aantal uitgangen van elke cel en van het

aantal vuursignalen binnen de machine.

Elke tijdseenheid moet elke cel geëvalueerd worden. Indien deze cel vuurt zal ze echter

meer tijd in beslag nemen om gesimuleerd te worden in een Pentium, en dit afhankelijk

van het aantal uitgangen die de cel heeft. Daarom zal voor elk van de deelmachines

nagegaan worden hoe vaak elke cel vuurt en met hoeveel uitgangen.

Om de vergelijking te kunnen maken worden de volgende variabelen geïntroduceerd:

• A1 tot A5

• N

: tijd nodig om axonen te laten vuren in één tot vijf uitgangen

1 tot N5

• x: aantal overeenkomsten tussen de invoer en het patroon

: tijd nodig om neuronen te laten vuren in één tot vijf uitgangen

• y: aantal vuursignalen in het patroon

• n: aantal tijdseenheden

• g: grootte van het geheugen

Het aantal vuursignalen in de invoerstroom hebben ook een invloed, maar deze is zo

beperkt dat ze buiten beschouwing gelaten wordt. De invoerstroom vuurt namelijk slechts

in een zeer beperkt aantal cellen, en wordt direct vergeleken met het patroon, zodat vooral

het aantal overeenkomsten en het aantal vuursignalen in het patroon een rol spelen.

4.2.7.1. Geheugen Indien het geheugen bestaat uit g axonen, dan hebben g-1 axonen één uitgang, en enkel de

cel waar het patroon uitgelezen wordt heeft twee uitgangen. Voor n tijdseenheden

resulteert dit in

yAAggn ).).1(( 21 +−

Page 55: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

50

4.2.7.2. Leespuls De leespuls is identiek aan het geheugen voor het patroon. Alleen is er bij de leespuls

telkens slechts één cel die vuurt, m.a.w. y is gelijk aan één.

)).1(( 21 AAggn

+−

4.2.7.3. Patroon vergelijken met invoerstroom Het vier-bit geheugen met alle bits op één bestaat uit drie axonen met één uitgang en één

axon met twee uitgangen. Elk van deze vier cellen vuurt elke tijdseenheid.

Dan zijn er nog twee cellen die enkel vuren indien er een overeenkomst is tussen het

patroon en de invoerstroom.

2.A1.x + (4.A1 + A2

).n

4.2.7.4. Aantal overeenkomsten tellen De deelmachine die het aantal overeenkomsten telt bestaat uit twaalf deelcomponenten.

Elke component is opgebouwd uit zesentachtig axonen en acht neuronen.

Een signaal doet er zevenentwintig tijdseenheden over om van de ene component naar de

volgende te gaan. Voor elk vuursignaal zullen er per deelcomponent vierentwintig axonen

met één uitgang vuren, twee axonen met twee uitgangen en één neuron met één uitgang.

Dit resulteert in:

( ) xNAA ..2.24 121 ++

De eerste deelcomponent zal voor elke overeenkomst een vuursignaal ontvangen (dus x

vuursignalen). De tweede deelcomponent enkel voor elke twee vuursignalen die de eerste

component passeren, enzovoort.

In totaal:

∑=

++

12

0121 ).2.24.(

2ii NAAx

Page 56: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

51

Elk tweede vuursignaal dat in een deelcomponent toekomt heeft al gevolg dat het neuron

en een aantal andere cellen zullen vuren. Meer bepaald zullen er acht axonen met één

uitgang vuren, één axon met twee uitgangen en drie neuronen met één uitgang.

∑=

+++

12

01211 ).3.8.(

2ii NAAx

Per leespuls zullen er vierendertig axonen met één uitgang vuren, zeven axonen met twee

uitgangen en drie neuronen met één uitgang. Een leespuls treed elke g tijdseenheden op.

Indien er een één wordt uitgelezen komen daar nog zestien axonen met één uitgang, vier

axonen met twee uitgangen en drie neuronen met één uitgang bij. Er wordt een één uit de

eerste deelcomponent uitgelezen indien x modulo 2 gelijk is aan één, enzovoort*

)).3.4.16).(2mod2

().3.7.34.(( 121

12

0121 NAAxNAA

gn

ii ++

+++

∑=

4.2.7.5. Rekenkracht analyse Al de voorgaande formules geven de extra rekenkracht aan die nodig is wanneer de cellen

vuren. Er is ook nog rekenkracht nodig wanneer een cel niet vuurt, het aantal axonen en

neuronen in de machine moet dus ook gekend zijn.

Zowel het geheugen voor het patroon als het geheugen voor de leespuls bestaan uit g

axonen. De deelmachine die het patroon vergelijkt met de invoerstroom bestaat uit zeven

axonen.

Een deelcomponent van de deelmachine die het aantal overeenkomsten telt bestaat uit

achtentachtig axonen en acht neuronen. In de machine zoals ze hier gebouwd werd is g

gelijk aan 5040 en zijn er dertien deelcomponenten, zodat er in totaal dus 11231 axonen en

104 neuronen gebruikt worden.

* zie 4.2.4 Aantal overeenkomsten tellen, pagina 34

Page 57: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

52

Er zijn uiteraard ook nog een aantal axonen nodig om al de verschillende deelcomponenten

met elkaar te verbinden, maar aangezien dit telkens axonen met één uitgang betreft, en hun

aantal beperkt is, worden ze buiten beschouwing gelaten.

De rekenkracht is afhankelijk van twee veranderlijken: x, het aantal overeenkomsten tussen

de invoer en het patroon en y, het aantal vuursignalen in het patroon.

Aangezien een cel die vuurt altijd meer rekenkracht nodig heeft dan een cel die niet vuurt

zal de machine een minimum bereiken indien zowel x als y nul zijn, en een maximum

indien ze beiden 5040 zijn.

Voor zowel x als y nul is de rekenkracht van 1142,187 Pentiums nodig om deze machine te

simuleren. Indien ze beide 5040 zijn is er een rekenkracht van 1442,25 nodig.

0

500

1000

1500

Aantal Pentiums

Machine 1

1000-1500500-10000-500

Uit de grafiek valt vooral op dat de x-waarde slechts een zeer kleine rol speelt. Uit de

berekeningen blijkt dat voor een gelijke y en enerzijds x gelijk aan nul en anderzijds x

gelijk aan 5040, de toename in aantal Pentiums slechts 0,003 is.

Merk op dat y enkel een rol speelt binnen het geheugen voor het patroon, waar x vooral een

rol speelt bij de eenheid die het aantal overeenkomsten telt.

Page 58: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

53

Indien de rekenkracht bekeken wordt in functie van de vier grote delen in de machine,

namelijk het geheugen voor het patroon, het geheugen voor de leespuls, de

patroonvergelijker, en de eenheid die het aantal overeenkomsten telt, dan bekomt men

gemiddeld het volgende.

Totaal: 1292,218

51%39%

0% 10%

PatroonLeespulsVergelijkenTellen

Hoewel deze verhoudingen variëren in functie van x en vooral y, geeft het gemiddelde een

goede indicatie.

Uit deze grafiek blijkt dat de eenheid die het aantal overeenkomsten telt, het deel

afhankelijk van x, toch een significant deel van de rekenkracht bepaald.

De discrepantie tussen het aandeel van dit deel in het totaal (10%) en de zeer beperkte

invloed van de variatie van x (0,0002%) op het totaal kan verklaard worden uit het feit dat

dit deel een zeer constant gedrag vertoont.

De meeste cellen in dit deel vuren het grootste deel van de tijd niet, en als ze vuren is dit

vaak een gevolg van de (constante) leespuls.

Page 59: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

54

4.2.8. Analyse van de eerste patroonherkenner Zowel het geheugen, de klokpuls als de deelmachine die het patroon vergelijkt zijn vrij

efficiënt. Om deze machine te optimaliseren zal dan ook vooral het laatste deel (dat een

neuron uitleest) moeten geoptimaliseerd worden.

Het valt direct op dat een aantal van de neuronen enkel gebruikt worden om een vertraging

van één tijdseenheid te bekomen (vijf van de acht neuronen). Dit heeft als gevolg dat er

een flink aantal cellen nodig zijn als verbinding met deze neuronen, als gevolg van de

ligging van de neuronen.

Dit alles maakt de deelmachine relatief groot, zodat het ook een flink aantal tijdseenheden

duurt vooraleer de deelmachine in zijn begintoestand kan gezet worden. Dit heeft dan weer

tot gevolg dat er een aanzienlijk aantal cellen nodig zijn om zowel de pulstrein als de

leespuls te vertragen.

Dit alles is een gevolg van het feit dat de timing van de verschillende signalen erg strikt is.

Indien de verschillende pulsen, die eerst via een ingang met positief gewicht en de

volgende tijdseenheid via een ingang met negatief gewicht in een neuron vuren, dit ook

twee tijdseenheden later zouden mogen doen, zou de machine al veel minder cellen

gebruiken aangezien er dan geen neuronen meer nodig zijn om de vertragingen te

bekomen. Dit zal in de volgende machine uitgewerkt worden.

Page 60: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

55

4.3. Tweede machine Het is de bedoeling een machine te bouwen, die een vergelijkbaar gedrag vertoont als de

eerste machine, maar die dit efficiënter implementeert. Zowel het geheugen, de leespuls als

de patroonvergelijker zijn hetzelfde. Deze machine zal enkel van de eerste machine

verschillen in het deel, dat het aantal overeenkomsten telt, meer bepaald het deel dat de

waarde van de accumulator van een neuron uitleest. Er wordt dus nog altijd gebruikt

gemaakt van een rij van neuronen om het aantal overeenkomsten te tellen.

Zoals reeds aangehaald zou de machine veel efficiënter zijn indien de vertragingen van één

tijdseenheid niet nodig zouden zijn. Dit kan bekomen worden door ervoor te zorgen dat er

tussen elke twee pulsen een tijdseenheid niets is.

Het is niet mogelijk om op bepaalde tijdstippen de pulstrein te laten wachten. Dit kan

echter wel bekomen worden door de pulstrein te splitsen.

Page 61: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

56

4.3.1. De pulstrein splitsen

Deze deelmachine heeft als invoer een pulstrein en de uitvoer bestaat uit twee (of

meerdere) pulstreinen. Stel dat de uitvoer uit n pulstreinen bestaat, dan heeft elke pulstrein

i op positie i + k.n een nul of één, gelijk aan de waarde die de oorspronkelijke pulstrein

had op die positie. De overige n-1 posities zijn dan nul.

Stel bijvoorbeeld dat de invoer bestaat uit 1 – 1 – 0 – 1 – 0 – 0 – 1, en dat deze pulstrein in

drie delen wordt opgesplitst.

De eerste pulstrein bevat dan: 1 – 0 – 0 – 1 – 0 – 0 – 1

De tweede pulstrein: 0 – 1 – 0 – 0 – 0 – 0 – 0

De derde pulstrein: 0 – 0 – 0 – 0 – 0 – 0 – 0

Om dit te bekomen wordt de pulstrein eerst gekloond. Dit kan gebeuren door een axon met

één ingang en meerdere uitgangen.

Nadien wordt bij elke kloon per n signalen er één doorgelaten.

Page 62: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

57

Axon A bevat (de kloon van) de pulstrein. Deze vuurt, met behulp van een neuron, op twee

opeenvolgende tijdseenheden in neuron 1. Eerst via een ingang met positief gewicht,

gevolgd door een puls via een ingang met negatief gewicht.

Axon D krijgt van een klein geheugen elke n tijdseenheden een puls. (in de tekening elke

acht tijdseenheden). Deze puls vuurt dan ook in twee opeenvolgende tijdseenheden via een

ingang met positief gewicht en een ingang met negatief gewicht in neuron 1.

Enkel wanneer zowel axon D als axon A tegelijkertijd een puls bevatten zal neuron 1

vuren, m.a.w. elke n tijdseenheden zal neuron 1 vuren, en enkel indien axon A vuurde.

Indien axon A geen vuursignaal bevat op het moment dat axon D vuurt zal de waarde van

de accumulator van neuron 1 na het doorlaten van deze nul op nul staan. Indien beide

tegelijkertijd vuren zal nadat het vuursignaal werd doorgelaten de waarde van de

accumulator van neuron 1 op min twee staan.

Page 63: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

58

De uitvoer wordt dan teruggeschakeld naar neuron 1 en vuurt tweemaal via een ingang met

positief gewicht in dit neuron. Op deze manier wordt het neuron terug in zijn begintoestand

gezet. Dit duurt zeven tijdseenheden, deze machine kan dus enkel gebruikt worden om een

pulstrein in zeven of meer delen te splitsen.

Voor machine drie zal een andere pulstrein splitser gebouwd worden die dit probleem niet

heeft

Door een pulstreinsplitser te gebruiken verandert het gedrag van de machine. De uitvoer

zal nu niet langer een binair getal zijn, dat het aantal overeenkomsten weergeeft maar een

aantal binaire getallen, voor elk gesplitst deel één, waarvan de som het aantal

overeenkomsten weergeeft.

Page 64: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

59

4.3.2. De waarde van de accumulator uitlezen Het principe is identiek aan dat uit de eerste machine. Het neuron waarvan de waarde

wordt uitgelezen wordt eerst gekloond. Deze kloon wordt uitgelezen met een leespuls en

de uitvoer van de kloon wordt dan naar een nieuw neuron gestuurd, hetwelk enkel zal

vuren indien de kloon vuurde als gevolg van de leespuls.

De rij van neuronen bevindt zich op de as gevormd door axon A en neuron 3. Zoals in de

eerste machine wordt de inhoud van neuron 3 gekloond in neuron 1, en zal deze kloon

uitgelezen worden.

Er kunnen zich twee gevallen voordoen: er wordt een één uitgelezen of er wordt een nul

uitgelezen. Om de bespreking te vereenvoudigen worden de beide gevallen apart

besproken.

In het eerste geval, waar er een één wordt uitgelezen, zal de waarde van de accumulator

van neuron 1 en van neuron 3 initieel gelijk zijn aan één. De waarde van de accumulator

van neuron 2 is gelijk aan nul.

Page 65: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

60

De leespuls komt de deelmachine binnen via axon B en zal vuren in neuron 1, en zo de

waarde van de accumulator van dit neuron op twee zetten. Eén tijdseenheid later zal

neuron 1 in de toestand vuren komen en dus zal de waarde van de accumulator van neuron

1 op nul gezet worden. Tegelijkertijd bevindt het vuursignaal vanuit axon B zich in de

axonen C, D en F. De volgende tijdseenheid vuurt axon D in neuron 2 via een ingang met

positief gewicht en zet zo de waarde van de accumulator van neuron 2 op één.

Tegelijkertijd zal neuron 1 in axon E vuren. Op dit moment zal ook axon C in neuron 1

vuren via een ingang met negatief gewicht en zal zo de waarde van de accumulator van dit

neuron op min één zetten.

Eén tijdseenheid later zal axon E in neuron 2 vuren, en de waarde van zijn accumulator op

twee zetten, en zal het ook in axon G vuren. Op hetzelfde moment zal axon H een

vuursignaal ontvangen (vanuit axon B via axon F).

De volgende tijdseenheid zal neuron 2 in de toestand vuren komen. Het vuursignaal vanuit

axon H zal de waarde van de accumulator van neuron 2 op min één zetten en het signaal

vanuit axon G komt in axon H.

De tijdseenheid daarna zal neuron 2 in axon I vuren (er wordt dus een één uitgelezen) en

zal het vuursignaal vanuit axon H de waarde van de accumulator van neuron 2 op min twee

zetten.

In het tweede geval zal de waarde van de accumulator van zowel neuron 1, neuron 2 als

neuron 3 nul zijn.

Axon B vuurt in neuron 1 en zal zo de waarde van de accumulator op één zetten.

Twee tijdseenheden later zal de waarde van de accumulator van dit neuron weer op nul

gezet worden, via axon C. Tegelijkertijd zal het vuursignaal via axon D de waarde van

accumulator 2 op één zetten.

Merk op dat hoewel de waarde van accumulator 1 twee tijdseenheden op één staat als

gevolg van de leespuls, dit niet als gevolg heeft dat de waarde van dit neuron over een

tijdsinterval wordt uitgelezen, aangezien de pulstrein die via axon A deze deelmachine

bereikt gesplitst was en er dus één (of meer) nullen tussen elk vuursignaal voorkomen.

Nog twee tijdseenheden later zal het vuursignaal vanuit axon B via axon F en H in neuron

2 vuren via een ingang met negatief gewicht en zo de waarde van de accumulator van dit

neuron weer op nul zetten.

Er is dus een nul uitgelezen en de waarde van de accumulatoren van de drie neuronen is

telkens nul.

Page 66: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

61

Het kan eenvoudig ingezien worden dat deze deelmachine enkel zal vuren als gevolg van

een leespuls. Indien axon A meerdere malen in neuron 1 vuurt (met telkens minstens een

nul tussen elke twee vuursignalen, aangezien de pulstrein gesplitst is), zal neuron 1 in

neuron 2 vuren. Telkens langs axon E via een ingang met positief gewicht, twee

tijdseenheden later gevolgd door een puls lang axon H via een ingang met negatief

gewicht.

Aangezien er minstens drie nullen zijn tussen twee opeenvolgende pulsen vanuit neuron 1

zal neuron 2 dus nooit vuren. (Opdat neuron 1 tweemaal zou vuren moet het vier

vuursignalen ontvangen. Tussen elk vuursignaal vanuit axon A is er minstens één nul,

zodat er minstens drie nullen zijn tussen elk vuursignaal vanuit neuron 1)

Nu moeten de neuronen nog terug in hun begintoestand geplaatst worden indien er een één

wordt uitgelezen. Dit gebeurt weer door het uitvoersignaal terug te schakelen.

Page 67: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

62

De uitvoer van neuron 2 vuurt via axon I en axon D en J tweemaal in neuron 2 via een

ingang met positief gewicht en zet zo de accumulator van dit neuron terug op nul indien dit

neuron vuurde.

Via axon K vuurt de uitvoer via een ingang met positief gewicht in neuron 1 en via axon L

vuurt de uitvoer via een ingang met negatief gewicht in neuron 3, zodat de accumulatoren

van alle neuronen terug op nul komen te staan.

Hetzelfde probleem als bij de eerste machine doet zich weer voor: de invoerstroom moet

vertraagd worden zodat verschillende pulsrijen van n bits niet met elkaar interfereren.

Een signaal, dat via axon A de deelmachine binnenkomt, doet er vijftien tijdseenheden

over om door de deelmachine verwerkt te worden en teruggeschakeld te worden via axon I

en axon L naar neuron 3.

De vertraging, die het signaal vanuit axon A moet ondergaan vooraleer het neuron 3

bereikt, hangt in deze machine echter ook af van hoe de oorspronkelijke pulstrein gesplitst

was. Indien de pulstrein in n delen gesplitst was zullen er telkens minimum n-1 nullen

voorkomen tussen twee vuursignalen, zodat het signaal vanuit axon A telkens 15-(n-1) of

dus 16-n tijdseenheden moet vertraagd worden.

De leespuls moet weer evenveel vertraagd worden om synchroon te blijven met de

invoerstroom.

Het probleem waar de invoerstroom en de leespuls tegelijkertijd in neuron 1 vuren treed

hier ook op. Men kan het op dezelfde manier opvangen als bij de eerste machine, maar

indien men ervoor zorgt dat de periode van de leespuls een veelvoud is van het aantal delen

waarin de invoerstroom gesplitst werd, kan men er eenvoudig voor zorgen dat beide nooit

tegelijkertijd in neuron 1 aankomen.

Page 68: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

63

4.3.3. Volledige machine

Bij de deelcomponent, die een waarde van een accumulator uitleest, moeten er nog extra

cellen toegevoegd worden voor de vertragingen, afhankelijk van het aantal delen waarin de

pulstrein gesplitst wordt. Zoals reeds aangehaald is dit minimaal in zeven delen (anders

werkt de splitser niet correct). Indien de invoerstroom in zestien of meer delen gesplitst

wordt is een vertraging niet meer nodig.

Wanneer men de deelcomponent uit 3.3.2 opvat als een 3x2x6 blok is er geen plaats vrij

voor deze vertraging. Er moeten hiervoor dus nog extra cellen gereserveerd worden. Zowel

de leespuls als de invoerstroom moeten vertraagd worden. Door de plaatsing van de cellen

binnen de deelcomponent is het niet mogelijk om de machine in de Z-richting uit te

breiden en de vertragingen binnen deze vrijgekomen cellen te plaatsen.

Indien de deelcomponent in de Y-richting wordt uitgebreid wordt de dimensie van de

deelcomponent minstens 3x4x6, dit als gevolg van de plaatsing van de neuronen. Er komen

m.a.w. zesendertig cellen vrij. Aangezien de vertraging 16-n is (met n het aantal delen

waarin de pulstrein wordt gesplitst) en de pulstrein minimum in zes delen moet gesplitst

worden, is dit genoeg om de vertragingen in te passen, onafhankelijk van het aantal delen

waarin de pulstrein wordt gesplitst.

Indien de deelcomponent in de X-richting wordt uitgebreid wordt de dimensie 6x2x6. Er

komen dan ook zesendertig cellen vrij voor de vertraging.

Indien we met een 3x4x6 deelcomponent werken, passen er in de X-richting acht zulke

componenten in de CAM-Brain, in de Y-richting zes en in de Z-richting vier. In totaal dus

8.6.4 of honderdtweeënnegentig deelcomponten. Indien er gebruik gemaakt wordt van een

6x2x6 passen er in de X-richting vier componenten, in de Y-richting twaalf en in de Z-

richting vier. In totaal dus 4.12.4 of ook honderdtweeënnegentig deelcomponenten.

De vertragingen in de X- of Y-richting plaatsen maakt dus geen enkel verschil voor de

mogelijkheden van de machine. Er wordt gekozen voor een uitbreiding in de Y-richting.

Page 69: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

64

Elke aaneenschakeling van deelcomponenten, die één deel van de pulstrein verwerkt moet

even lang zijn. Het is zo dat in hoe minder delen de pulstrein gesplitst wordt, hoe meer bits

de machine kan verwerken; aangezien men dan de verschillende deelmachines langer kan

maken en het aantal bits dat elke deelmachine verwerkt exponentieel stijgt in functie van

de lengte, terwijl het aantal bits dat verwerkt kan worden slechts lineair stijgt in functie van

het aantal deelmachines.

Het aantal delen waarin de pulstrein gesplitst wordt heeft ook een invloed op de

rekenkracht van de machine in vergelijking met een Pentium.

Enerzijds dalen het aantal cellen die gebruikt worden indien men de pulstrein in meerdere

delen splitst, aangezien er dan minder cellen voor de vertraging nodig zijn. Anderzijds

hebben meer delen tot gevolg dat de leespuls meerdere malen door de machine

gepropageerd wordt.

Merk op dat wanneer de pulstrein in zestien of meer delen gesplitst wordt er weliswaar

geen cellen voor vertragingen nodig zijn, dit heeft als gevolg dat een deelcomponent in een

3x2x6 blok past, en er dus meer deelcomponenten in de machine passen. Het aantal cellen

die gebruikt worden daalt dus niet langer wanneer de pulstrein in zestien of meer delen

wordt gesplitst.

Elk deel bestaat uit een pulstreinsplitser gevolgd door een aantal deelcomponenten. Indien

dit aantal gelijk aan d gesteld wordt, kan elke deelmachine 2d – 1 bits verwerken. De

volledige machine kan dan (2d

Er moet nu, voor elke s, een d gevonden worden zodat de machine zo goed mogelijk

gevuld is en er nog genoeg plaats over is voor de geheugens.

– 1).s bits verwerken.

Voor s gelijk aan zes tot vijftien geldt dezelfde redenering. De splitser zelf past in een

3x6x5 blok, een deelcomponent in 3x4x6. In de X- en Z-richting hebben ze met andere

woorden ongeveer dezelfde dimensie. Daarom zullen de deelcomponenten in de Y-richting

aan elkaar geschakeld worden. Er passen acht deelcomponenten in de X-richting. In de Y-

richting passen een splitser en vier deelcomponenten. In elke volgende rij (in de Y-

richting) passen er dan zes deelcomponenten.

In de Z-richting passen vier deelcomponenten.

Page 70: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

65

Om nu d te kunnen vinden moet er eerst nagegaan worden hoeveel bits de machine kan

verwerken voor elke s (geen rekening houdend met de ruimte nodig voor de geheugens).

Waarna er ruimte kan vrijgemaakt worden voor de geheugens door d te verminderen.

Aangezien alle s aaneenschakeling van deelcomponenten even lang moeten zijn is het niet

altijd mogelijk om de volledige machine op te vullen met deelcomponenten.

Er passen tweeëndertig rijen van aaneenschakelingen van deelcomponenten in de CAM-

Brain, zodat het aantal rijen die elk deel maximaal kan gebruiken gegeven is door

Aantal rijen per deel =

s32

Waarbij de eerste rij bestaat uit vier deelcomponenten en elke volgende rij uit zes.

Het aantal lege cellen wordt dan gegeven door de rest na deling van tweeëndertig door s

vermenigvuldigd met het aantal cellen in een rij. Een rij heeft als dimensie 3x24x6 er

passen met andere woorden 432 cellen in een rij.

Het aantal bits die elke machine maximaal kan verwerken, zonder rekening te houden met

de geheugens, is dan

+

12.132.64

ss

Er wordt in deze formule, terecht, vanuitgegaan dat er minstens een rij kan gevormd

worden voor elk deel.

Om nu plaats te maken voor de geheugens moeten de verschillende rijen van

deelcomponenten ingekort worden. Indien ze één deelcomponent korter gemaakt worden

komen er, aangezien elke rij even lang moet zijn, s.(3.4.6) of 72.s cellen vrij.

Page 71: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

66

De correcte waarde voor d kan dan gevonden worden door in de volgende vergelijking i te

maximaliseren.

s

is Ciss +≥

+

..3612.132.64

Met Cs

het aantal lege cellen als gevolg van het feit dat het niet altijd mogelijk is de

volledige machine op te vullen met deelcomponenten.

Indien de pulstrein in zestien delen gesplitst wordt verloopt de redenering anders. De

splitser neemt nog steeds een 3x6x5 blok in, maar een deelcomponent neemt nu slechts een

3x2x6 blok in. Zodat er in de eerste rij een splitser en acht deelcomponenten passen en in

elke volgende rij twaalf deelcomponenten.

De formule wordt dan (met s gelijk aan zestien)

ii .57616214 ≥−−

De volgende tabel geeft de resultaten aan voor de verschillende waarden van s. Naast het

aantal bits (i.e. 36.s.i + Cs

) die verwerkt wordt, wordt ook het aantal deelcomponenten in

elke deelmachine vermeld. Deze waarde wordt later gebruikt bij het berekenen van de

rekenkracht.

Page 72: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

67

Aantal delen Aantal bits Aantal deelcomponenten

7 3888 10

8 3736 9

9 3348 9

10 2951 9

11 2566 9

12 2592 9

13 2232 8

14 1872 8

15 1497 8

16 1728 7

Uit de tabel blijkt dat er geen monotoon verband is tussen het aantal delen waarin de

pulstrein gesplitst wordt en het aantal bits die kunnen verwerkt worden. Dit is een gevolg

van het feit dat alle s de deelmachines die het aantal overeenkomsten tellen even lang

moeten zijn. Het aantal deelcomponenten in elke deelmachine daalt dus niet noodzakelijk

indien het aantal delen waarin gesplitst wordt stijgt.

Page 73: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

68

4.3.4. Rekenkrachtanalyse van deze machine Dezelfde afkortingen als in 4.2.7 worden gebruikt.*

Er komt echter een nieuwe variabele bij:

• s: aantal delen waarin de pulstrein gesplitst wordt

Aangezien zowel het geheugen, de leespuls als de patroonvergelijker identiek zijn aan die

uit de eerste machine zullen ze ook dezelfde rekenkracht vereisen. Uiteraard dient wel de

waarde van g, met name de grootte van het geheugen, aangepast te worden.

4.3.4.1. De pulstreinsplitser

De pulstreinsplitser, zoals beschreven in 4.3.1, is niet echt een splitser. Het is namelijk niet

zo dat deze deelmachine als invoer een pulstrein krijgt en als uitvoer verschillende andere

pulstreinen genereert.

Indien men een pulstrein in s delen wenst te splitsen zijn er s zo’n splitsers nodig.

Het is het eenvoudigst om alle s pulstreinsplitsers tesamen te beschouwen. Dan kan er

uitgegaan worden van het aantal overeenkomsten tussen de pulstrein en het patroon

(m.a.w. x), onafhankelijk van de positie waarop de overeenkomsten voorkomen.

De grootte van het gedeelte met het s-bit geheugen en de cellen die dit verbinden met het

neuron dat het splitsen doet is uiteraard afhankelijk van s.

Aantal delen Axonen Neuronen

6 12 1

7 20 1

8 14 1

9 24 1

10 16 1

11 28 1

* zie 4.2.7 Rekenkracht analyse van deze machine. pagina 49

Page 74: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

69

12 18 1

13 32 1

14 20 1

15 36 1

16 22 1

Door dit gedeelte zal slechts elke s tijdseenheden een vuursignaal passeren, aangezien er

slechts één van de s bits uit het geheugen op één staat.

Er zijn echter s pulstreinsplitsers zodat dit reeds resulteert in

).3).3(( 121 NAAAn s ++−

Met As

Van het resterende gedeelte zal er door het deel voor het neuron dat het splitsen doet voor

elke overeenkomst een vuursignaal passeren, en dit voor alle s de pulstreinsplitsers. Door

het deel voorbij het neuron zal, voor alle s pulstreinsplitsers tesamen, er voor elke

overeenkomst één vuursignaal passeren.

gelijk aan het aantal axonen in de tabel.

)).2.4.(.2.3( 121121 NAAsNAAn +++++

Page 75: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

70

4.3.4.2. Aantal overeenkomsten tellen

Er zijn s identieke deelmachines, die elk bestaan uit een aantal deelcomponenten, stel dat

dit aantal gelijk is aan ks

Het is voor deze machine niet langer mogelijk om exacte formules op te stellen voor het

aantal axonen en neuronen die vuren in functie van het aantal overeenkomsten.

(deze waarde is afhankelijk van s).

De posities van de vuursignalen hebben een invloed op het aantal axonen en neuronen die

vuren. Stel bijvoorbeeld dat er negen overeenkomsten zijn, dat de periode van de leespuls

zestien is en dat de invoerstroom in vier delen gesplitst wordt. Dan is het mogelijk dat er in

het eerste en tweede deel vier overeenkomsten zijn, in het derde deel één overeenkomst en

in het laatste deel geen enkele, dan bevatten de verschillende deelmachines de waarden:

100, 100, 001, 000. Er heeft dan zes maal een deelcomponent twee vuursignalen ontvangen

en er worden drie enen uitgelezen. Indien er echter in de eerste drie delen drie

overeenkomsten voorkomen en in het laatste geen, dan bevatten de verschillende

deelmachines de waarden: 011, 011, 011, 000. Dan hebben de deelcomponenten tesamen

drie maal twee vuursignalen ontvangen en worden er zes enen uitgelezen.

Om toch een analyse te kunnen geven van deze machine onafhankelijk van de precieze

invoer worden er benaderingen gebruikt.

Per vuursignaal zullen er in één van de deelmachines twee axonen met één uitgang vuren,

één axon met twee uitgangen en nog 16 – s axonen met één uitgang (deze vormen de

vertraging).

∑=

+−

sk

ii AAsx

021 )).18.((

2

Deze formule is analoog aan die voor machine 1, ze veronderstelt met andere woorden dat

er slechts één deelmachine is. Voor i = 0 is ze correct, aangezien voor elke overeenkomst

één van de deelmachines dit signaal zal ontvangen. Voor alle andere waarden van i is het

slechts een benadering, maar wel zeker een bovengrens.

Dat het een bovengrens is kan eenvoudig ingezien worden. De x signalen worden over s

deelmachines verdeeld, stel dat elke deelmachine xi

Aangezien steeds geldt dat

signalen ontvangt, met 1 ≤ i ≤ s.

Page 76: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

71

∑∑==

=

s

iki

s

iki

k

xxx11 222

met k en elke xi

natuurlijke getallen, zal de gebruikte formule dus een bovengrens zijn.

Per twee vuursignalen die een deelcomponent ontvangt komen daar nog eens twee axonen

met één uitgang, één axon met twee uitgangen en één neuron met één uitgang bij.

Het aantal keer dat een deelcomponent twee vuursignalen ontvangt wordt benaderd door

het aantal te gebruiken dat men bekomt indien de pulstrein niet gesplitst wordt. Met andere

woorden hetzelfde aantal als in machine 1.

Dit aantal is weer een bovengrens, en dit kan op dezelfde manier ingezien worden als bij

de vorige formule.

).2.(2 121

01 NAAxsk

ii ++

=+

Per leespuls zal er één axon met drie uitgangen vuren, één axon met twee uitgangen, zes

axonen met één uitgang en nog een 16 – s axonen met één uitgang als gevolg van de

vertraging. Een leespuls komt elke g tijdseenheden voor, in elk van de s deelmachines.

∑=

++−

sk

iAAAs

gxs

0321 )).22.((.

Deze formule is onafhankelijk van de verdeling het aantal overeenkomsten over de

verschillende deelmachines en is dus geen benadering maar een exacte weergave van het

aantal axonen die vuren.

Indien er een één wordt uitgelezen komen daar nog eens twee neuronen met één uitgang

bij, vier axonen met twee uitgangen en zeven axonen met één uitgang bij.

Page 77: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

72

Een voldoende goede benadering voor het aantal enen die uitgelezen worden is gegeven

door*

+ )1(log. 2 s

xs

Deze benadering is altijd een bovengrens voor het aantal enen dat zal uitgelezen worden.

Gebruik makend van deze benadering bekomt men dan:

)247).()1(log.( 1212 NAAsxs ++

+

De fout die gemaakt wordt door beide benaderingen te gebruiken in plaats van de exacte

waarden is relatief klein, en speelt geen grote rol zoals zal blijken uit de berekening van de

rekenkracht van deze machine.

4.3.4.3. Rekenkracht analyse Al de voorgaande formules geven de extra rekenkracht aan die nodig is wanneer de cellen

vuren. Er is ook nog rekenkracht nodig wanneer een cel niet vuurt, het aantal axonen en

neuronen in de machine moet dus ook gekend zijn.

Zowel het geheugen voor het patroon als het geheugen voor de leespuls bestaan uit g

axonen. De deelmachine die het patroon vergelijkt met de invoerstroom bestaat uit zeven

axonen.

Het aantal cellen in de pulstreinsplitser is afhankelijk van het aantal delen waarin de

pulstrein wordt gesplitst†

Een deelcomponent van de deelmachine die het aantal overeenkomsten telt bestaat uit

negenentwintig axonen en drie neuronen. Het aantal deelcomponenten per deelmachine is

, er zijn s zulke pulstreinsplitsers in de machine.

* zie appendix A voor de uitwerking van deze formule, pagina 95 † zie 4.3.4.1 De pulstreinsplitser, pagina 68

Page 78: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

73

afhankelijk van het aantal delen waarin de pulstrein wordt gesplitst. Voor elk deel waarin

de pulstrein gesplitst wordt is er een deelmachine.

Aantal delen Axonen Neuronen

7 10023 231

8 9760 240

9 9360 270

10 8782 300

11 8432 330

12 8664 360

13 8039 351

14 7426 378

15 7179 405

16 6942 354

Voor machine 2 wordt een maximum bereikt indien de de invoer in zeven delen gesplitst

wordt en zowel x als y maximaal zijn (i.e. gelijk aan 3888). Dan is er de rekenkracht van

1278,259 Pentiums nodig om de machine te simuleren.

Een minimum voor deze machine wordt bereikt indien de invoer in zestien delen wordt

gesplitst en indien x en y gelijk zijn aan nul. In dat geval is er een rekenkracht van 908,52

Pentiums nodig om de machine te simuleren.

De rekenkracht die nodig is om de machine te simuleren is, min of meer, omgekeerd

evenredig met het aantal delen waarin de invoer gesplitst wordt. Het is namelijk zo dat in

hoe minder delen de invoer gesplitst wordt, hoe meer cellen er nuttig gebruikt kunnen

worden (zie bovenstaande tabel). En dus zal ook de nodige rekenkracht hoger liggen als de

invoer in minder delen gesplitst wordt, voor een gelijke x en y.

Indien de invoer in zeven delen gesplitst wordt, en de rekenkracht in functie van x en y

berekend wordt, bekomt men de volgende grafiek.

Page 79: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

74

0

200

400

600

800

1000

1200

1400

Aantal Pentiums

Machine 2

1200-14001000-1200800-1000600-800400-600200-4000-200

Net zoals bij machine 1 is er weer nauwelijks variatie in functie van x.

Indien de rekenkrachtverdeling voor de verschillende deelmachines bekeken wordt, blijkt

dat het grootste deel van de rekenkracht nodig is om het geheugen en de leespuls te

simuleren, die beiden onafhankelijk van x zijn.

Totaal: 1164,23

51%39%

0% 10% 0%PatroonLeespulsVergelijkenTellenSplitser

De verdeling is identiek aan die uit machine 1, alleen is er nu ook een deel dat de invoer

splitst. De bijdrage van dit deel is zeer klein.

Page 80: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

75

4.4. Derde machine Hoewel de tweede machine reeds efficiënter is dan de eerste kampt ze nog steeds met het

probleem dat een aanzienlijk aantal cellen gebruikt worden om zowel de invoerstroom als

de leespuls te vertragen.

Dit kan enkel vermeden worden door de machine compacter te maken, of dus door minder

neuronen te gebruiken.

Deze derde machine zal geen gebruik meer maken van neuronen om een neuron in de rij

van neuronen uit te lezen en dit met behulp van een nieuwe deelmachine: de klem.

Deze deelmachine zal ook kunnen gebruikt worden om zowel de klokpuls als het splitsen

van een pulstrein efficiënter te maken.

Page 81: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

76

4.4.1. De klem De klem is een zeer kleine machine, slechts vier axonen, en laat toe om signalen in een

pulstrein al dan niet door te laten.

De klem zelf wordt gevormd door de axonen A, B, C en D. Indien een signaal axon A

bereikt, zal dit zich splitsen in de axonen B en C. De volgende tijdseenheid zullen beide

axonen in axon D vuren, zodat dit axon altijd twee vuursignalen ontvangt en het dus niet

zal vuren, onafhankelijk van wat axon E doet.

Page 82: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

77

4.4.2. De leespuls Deze klem kan, in sommige gevallen, een leespuls efficiënter maken.

In plaats van één n-bit geheugen te gebruiken waarbij één cel vuurt, worden nu twee

kleinere geheugens gebruikt van k en m bits waarbij kgv(m,k) = n. In één van deze twee

kleinere geheugens vuurt één cel (stel: geheugen van m bits). In het andere geheugen vuurt

één cel niet (stel: geheugen met k bits).

Indien men het geheugen waar één cel niet vuurt via een klem verbindt met een uitvoer van

het andere geheugen, zal er slechts elke k tijdseenheden een signaal doorgelaten worden.

Het andere geheugen vuurt echter slechts elke m tijdseenheden zodat de totale deelmachine

elke kgv(m,k) tijdseenheden zal vuren.

Deze manier van werken wordt pas efficiënter als n groot genoeg is (in de figuur worden er

bijvoorbeeld meer dan twaalf cellen gebruikt). Bovendien dient opgemerkt te worden dat

een klem gebruiken voor dit doeleinde enkel efficiënter is voor de CAM-Brain (er worden

minder cellen gebruikt). Aangezien er veel meer cellen vuren zal het simuleren van deze

deelmachine in een Pentium minder efficiënt zijn dan wanneer een n-bit geheugen waarbij

één cel vuurt gesimuleerd wordt.

Page 83: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

78

4.4.3. De pulstrein splitsen De klem kan ook gebruikt worden om een efficiëntere pulstreinsplitser te bouwen.

De pulstrein die men wenst te splitsen loopt langs axon A. De klem vanuit axon B op A zal

ervoor zorgen dat er slechts elke n tijdseenheden een vuursignaal wordt doorgelaten.

Dit wordt bekomen door een geheugen van n bits met axon B te verbinden, waarbij in dit

geheugen slechts één axon niet vuurt.

Aangezien deze deelmachine geen gebruik maakt van een neuron en er dus ook geen

neuron terug in zijn begintoestand moet gezet worden en aangezien er geheugens voor elk

mogelijk aantal bits mogelijk zijn zal deze deelmachine, in tegenstelling tot de

pulstreinsplitser van machine twee, een pulstrein in elk mogelijk aantal nieuwe pulstreinen

kunnen splitsen.

Page 84: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

79

4.4.4. De waarde van de accumulator uitlezen

Het uitlezen van de waarde van een neuron, indien deze waarde nul of één is, kan

eenvoudig gebeuren door een signaal aan een positieve ingang aan te leggen. Het neuron

zal vuren indien de waarde van zijn accumulator één was, en zal niet vuren indien het nul

was. M.a.w. de uitvoer is gelijk aan de waarde van de accumulator.

Binnen de gehele machine dient men dit deel als volgt te situeren: de as A-B is de as

waarop de verschillende neuronen liggen, die gebruikt worden om het aantal vuursignalen

te tellen in de bitstroom die voor elke overeenkomst tussen het patroon en de invoer een

één bevat. Aan axon C wordt de leespuls aangelegd. Axon D zal de uitleeswaarde bevatten.

Er zijn verscheidene redenen waarom deze eenvoudige constructie niet rechtstreeks

bruikbaar is.

Vooreerst worden de verschillende axonen, waarin een neuron vuurt niet gelinkt aan een

invoer. De axonen B en D zullen altijd dezelfde waarde bevatten, waar het de bedoeling is

dat de waarde van axon B enkel één is als een gevolg van twee vuursignalen afkomstig van

axon A (en niet als gevolg van een vuursignaal afkomstig van axon C).

Page 85: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

80

En axon D mag enkel de waarde één bevatten als de accumulator van het neuron op één

staat en het een vuursignaal ontving van C (en dus niet als gevolg van twee vuursignalen

afkomstig van axon A)

Daarnaast zal de waarde van de accumulator van het neuron na het uitlezen niet altijd op

nul staan. En dus kan men deze constructie niet meerdere malen na elkaar gebruiken.

Om het eerste probleem op te lossen wordt gebruik gemaakt van de klem.

Indien axon E vuurt, zal de uitvoer van het neuron in axon B drie tijdseenheden later altijd

nul zijn. (een axon dat meer dan één vuursignaal ontvangt heeft altijd nul als uitvoer).

Als het neuron vuurt als gevolg van een vuursignaal in axon C, zal dit vuursignaal axon B

drie tijdseenheden later bereiken. (door de extra vertraging binnen een neuron).

Dus indien axonen C en E altijd dezelfde waarde bevatten, zal axon B enkel een

vuursignaal ontvangen als gevolg van twee vuursignalen van axon A, op voorwaarde dat

axon C niet gelijktijdig vuurt met axon A.

Page 86: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

81

Dit stelt echter een nieuw probleem. Er ligt namelijk geen enkele cel op gelijke afstand van

C en E indien men enkel gebruik maakt van axonen. Het is dus enkel mogelijk om een

signaal gelijktijdig in beide cellen te laten toekomen door gebruik te maken van een

neuron.

Een extra neuron gebruiken is spijtig genoeg een erg kostelijke ingreep. De plaatsing van

de neuronen maakt dat het signaal dan erg vertraagd wordt voor het de axonen C en E

bereikt. Dit heeft dan weer als gevolg dat de signalen op de as A-B ook vertraagd dienen te

worden, om de synchroniciteit te bewaren.

Het is namelijk zo dat de leespuls in axon C voor elk van de neuronen in de rij van

neuronen relatief ten opzichte van de bitstroom op de as A-B op hetzelfde moment moet

toekomen. Anders is er niet gegarandeerd dat de waarde van de accumulatoren van de

verschillende neuronen de juiste waarde bevatten.

Om deze problemen te omzeilen heb ik ervoor gekozen om de leespuls tweemaal mee te

sturen met de rij van neuronen. De leespuls wordt via twee assen evenwijdig aan de as A-

B, één as door axon C en één door axon D, meegestuurd met de rij van neuronen. Op deze

manier is er slecht één extra neuron nodig, aan het begin van de rij. En treedt er dus ook

slecht één maal een vertraging op.

Om ervoor te zorgen dat axon D enkel de waarde één kan krijgen als gevolg van een

vuursignaal uit axon C wordt een gelijkaardige constructie gebruikt.

Page 87: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

82

De cyclus gevormd door de axonen G, H, I en J vormen een vier bit geheugen, waarvan

alle bits op één staan. Hierdoor krijgt de klem vanuit axon G op axon D constant

vuursignalen, zodat axon D constant twee éénsignalen ontvangt en dus nooit zal vuren.

Om er nu voor te zorgen dat een signaal als gevolg van een vuursignaal in axon C toch

doorgelaten wordt moet deze vuurcyclus onderbroken worden. Dit gebeurt met behulp van

een vuursignaal, dat via axon F twee tijdseenheden later axon G bereikt. Dit vuursignaal

zal axon G in de toestand niet vuren brengen (G had twee vuursignalen als invoer, een van

axon F afkomstig, en één afkomstig van axon J) Nog eens twee tijdseenheden later zal

axon D dan geen vuursignalen van de klem ontvangen.

Een vuursignaal afkomstig van axon F heeft dus als gevolg dat vier tijdseenheden later het

uitvoersignaal van het neuron doorgelaten wordt.

Er is reeds aangehaald dat axon C en E steeds op hetzelfde moment dienen te vuren (opdat

de uitvoer in axon B correct zou zijn). Het vuursignaal in E zal één tijdseenheid daarvoor

zich in axon F bevinden. Een vuursignaal van axon C zal axon D na drie tijdseenheden

bereiken (twee cellen afstand en één extra tijdseenheid vertraging door de interne pijplijn

van het neuron).

Page 88: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

83

De uitvoer van het neuron in axon D zal dus enkel doorgelaten indien deze uitvoer

ontstond op het moment dat axon C vuurde.

Nu bevat het geheugen gevormd door de axonen G, H, I en J wel drie énen en één nul.

Vanaf nu zal met andere woorden elke vier tijdseenheden de uitvoer in axon D doorgelaten

worden.

Dit wordt opgelost door het signaal vanuit axon F via axon K in het geheugen te laten

vuren. Een vuursignaal vanuit axon F via axon G heeft vijf tijdseenheden nodig om axon J

te bereiken. Hetzelfde vuursignaal via axon K heeft ook vijf tijdseenheden nodig om axon

J te bereiken. Het geheugen zal dus weer vier énen bevatten en er zal slechts één signaal

doorgelaten worden.

Daarmee is de uitvoer in axon B respectievelijk axon D reeds gelinkt aan axon A

respectievelijk axon C. Nu dient de waarde van de interne accumulator op nul gezet te

worden na het uitlezen van deze waarde.

Indien de waarde één uitgelezen wordt zal de waarde van de accumulator nadien op nul

staan en indien de waarde nul uitgelezen wordt zal de waarde van de accumulator nadien

op één staan.

De waarde wordt nu op nul gezet door altijd een vuursignaal via een ingang met negatief

gewicht in het neuron te laten vuren en de uitvoer van het neuron via een ingang met

positief gewicht te laten vuren.

Page 89: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

84

Het vuursignaal in axon E zal via een ander axon in het neuron vuren via een ingang met

negatief gewicht. Aangezien axon C en E telkens op hetzelfde moment vuren zal dit

signaal met negatief gewicht één tijdseenheid na het signaal vanuit axon C toekomen.

Indien het neuron nu vuurt als gevolg van een vuursignaal van axon C en dus de

accumulator van het neuron op min één kwam door het signaal met negatief gewicht, zal

axon D vuren, en via axon L en C de accumulator weer op nul zetten.

Dit gebeurt zes tijdseenheden na het vuursignaal van axon C, dat het vuren van het neuron

als gevolg had.

Dit heeft als bijkomend gevolg dat er op de as gevormd door axon C en N een extra puls

komt. Deze as is één van de twee assen langs dewelke de leespuls met de rij van neuronen

meegestuurd wordt.

Om te voorkomen dat het volgende neuron in de rij van neuronen een extra leespuls krijgt

wordt de uitvoer van axon D via axon M naar axon N geleid. De afstand van D tot N via

axon L en via axon M is telkens drie, zodat beide vuursignalen elkaar zullen opheffen.

Wanneer men al deze componenten samenvoegt, ziet deze deelmachine er als volgt uit:

Page 90: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

85

Deze machine heeft een aantal inherente beperkingen.

Vooreerst mag er nooit een signaal vanuit axon A en vanuit axon C op hetzelfde moment

het neuron bereiken. Indien dit wel gebeurt, zal het neuron altijd vuren (want de waarde

van de accumulator wordt twee of drie, of dus zeker groter dan of gelijk aan twee) en

nadien zal dus de waarde van de accumulator altijd op nul staan. Er wordt dus geen

onderscheid gemaakt tussen de situatie waar de waarde van de accumulator nul was, en de

situatie waar deze waarde één was.

Dit kan opgelost worden door het signaal te splitsen alvorens het naar deze rij van

neuronen te sturen. En dan deze gesplitste pulstreinen in parallel te verwerken.

Daarnaast moet de periode van de leespuls groter dan of gelijk aan zes zijn, aangezien deze

constructie ten hoogste zes tijdseenheden nodig heeft om de waarde van de accumulator

van het neuron te herstellen indien dit neuron vuurde.

Het feit dat de waarde van de accumulator gedurende zes tijdseenheden verkeerd is, legt

geen beperking op aan de pulstrein vanuit axon A.

Bovendien dient opgemerkt te worden dat deze deelmachine niet rechtstreeks in serie kan

geschakeld worden. Aangezien een neuron intern over een pijplijn beschikt zullen de

signalen op de as A-X en de as C-Y niet synchroon lopen.

Synchroniciteit forceren tussen deze twee assen zou vereisen dat de signalen op de as C-Y

(en op de andere as met de leespuls, gevormd door E-F) per neuron dat ze passeren één

tijdseenheid vertraagd worden. Een signaal één tijdseenheid vertragen kan enkel door

gebruik te maken van een neuron en dit is, zoals reeds aangehaald, een erg dure operatie.

Daarom werd ervoor gekozen om te zorgen dat er tussen elke pulstrein zeker twee nullen

voorkomen, zodat men twee tijdseenheden de tijd heeft om de waarde van de accumulator

van het neuron uit te lezen. Dan dient de leespuls per twee neuronen twee tijdseenheden

vertraagd te worden. Dit kan eenvoudig gebeuren door gebruik te maken van twee axonen.

Garanderen dat er twee nullen tussen elke pulstrein voorkomen kan weer gebeuren door

het signaal te splitsen.

Page 91: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

86

4.4.5. Volledige machine

Om de deelmachine uit 4.4.4 te kunnen gebruiken moet de pulstrein minimum in drie delen

gesplitst worden. De pulstrein in meer delen splitsen zal enkel leiden tot een machine die

minder bits kan verwerken, aangezien minder delen als gevolg heeft dat elk deel langer kan

gemaakt worden en het aantal bits dat kan verwerkt worden exponentieel stijgt in functie

van de lengte van de deelmachine.

In tegenstelling tot machine 2 zijn er nu geen cellen nodig voor een vertraging, zodat de

dalende trend van het aantal bits die kunnen verwerkt worden zich hier gewoon zou

doorzetten en niet zou verdwijnen indien men de pulstrein in een specifiek aantal delen

splitst.

Eén deelcomponent van de deelmachine, die het aantal overeenkomsten telt, past nu in een

3x4x4 blok indien men de verschillende deelcomponten in de X-richting in serie schakelt.

De deelcomponenten in de Y- of Z-richting aan elkaar schakelen heeft als gevolg dat er

een 4x4x4 blok nodig is, omwille van de plaatsing van de neuronen. Er wordt dus gekozen

om ze in de X-richting te schakelen. De pulstreinsplitser past in een 3x2x2 blok. Zodat de

eerste rij bestaat uit een pulstreinsplitser gevolgd door zeven deelcomponenten en elke

volgende rij bestaat uit acht deelcomponenten. Zowel in de Y- als Z-richting passen zes

rijen, met andere woorden zesendertig rijen in totaal of dus twaalf rijen per deel.

In totaal bestaat een rij dus maximaal uit 11.8 + 7 of 95 deelcomponenten. Aangezien nu

ook elke rij even lang moet zijn, zal de rijen verkorten met één deelcomponent als gevolg

hebben dat er 3.(3.4.4) of 96 cellen vrij komen.

Het aantal bits, die deze machine maximaal kan verwerken, wordt dan gegeven door i te

maximaliseren in de volgende vergelijking

ii .48)12.(3 95 ≥−−

Voor i gelijk aan vierentachtig wordt er een maximum bereikt. De machine kan dus

maximaal 4032 bits verwerken.

Page 92: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

87

4.4.6. Rekenkrachtanalyse van deze machine

4.4.6.1. Pulstreinsplitser Aangezien de pulstrein in drie delen gesplitst wordt is er een zes bit geheugen nodig

waarin constant vier axonen vuren*

De klem bestaat uit twee axonen met één uitgang en één axon met twee uitgangen. Elke

drie tijdseenheden zullen deze cellen tweemaal vuren.

. Per drie tijdseenheden zullen er twee tijdseenheden

drie axonen vuren met één uitgang en één axon met twee uitgangen en één tijdseenheid

vier axonen met één uitgang.

De draad die de pulstrein bevat die gesplitst wordt bestaat uit drie axonen met één uitgang.

( ) ( )( ) 121121 ..2.2.4.3.2.3

AyAAAAAn+++++

4.4.6.2. Aantal overeenkomsten tellen

Het is, net zoals bij machine 2, niet mogelijk formules op te stellen die enkel uitgaan van

het aantal overeenkomsten, onafhankelijk van de posities in de pulstrein van deze

overeenkomsten.

Daarom worden er weer benaderingen gebruikt, die analoog zijn aan die uit machine 2.

Per vuursignaal dat een van de deelmachines ontvangt zullen er twee axonen met één

uitgang vuren.

1..2 Ax

Per twee vuursignalen die één van de deelmachines ontvangt zal in deze deelmachine één

neuron met één uitgang vuren. Het aantal keer dat dit gebeurt kan niet exact afgeleid

worden uit het aantal overeenkomsten x (analoog aan machine 2)†

* zie 4.2.1 Geheugen, pagina 31 en 4.4.3 De pulstrein splitsen, pagina 78

† zie 4.3.4.2 Aantal overeenkomsten tellen, pagina 71

Page 93: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

88

Er wordt een gelijkaardige benadering gebruikt aan die uit machine 2, i.e. de waarde die

men bekomt indien de pulstrein niet gesplitst wordt, wordt gebruikt. Dit is, net zoals bij

machine 2, een bovengrens.

∑=

11

11.

2ii Nx

Per leespuls zullen er acht axonen met één uitgang vuren, vier axonen met twee uitgangen

en één axon met drie uitgangen. De leespuls komt in alle drie de deelmachines voor, elke g

tijdseenheden.

).4.8.(.3 321 AAAgn

++

Indien er een één wordt uitgelezen vuren er vijf axonen met één uitgang, één axon met

twee uitgangen en één axon met drie uitgangen.

Er wordt weer dezelfde benadering gebruikt als voor machine 2, zie appendix A voor

details.

).5.(13

log.3 3212 AAAx++

+

In elke deelcomponent zijn er ook nog een aantal cellen die bijna constant vuren, met name

het kleine geheugen en de klem die ervoor zorgen dat enkel de uitleeswaarde doorgelaten

wordt.

Dit gedeelte bestaat uit drie axonen met één uitgang en twee axonen met twee uitgangen,

ze zullen elke tijdseenheid vuren, behalve als er een leespuls in de deelcomponent vuurt,

dan zal als gevolg van deze leespuls elke cel één tijdseenheid niet vuren.

( )21 .2.3..11.3 AAgnn +

Page 94: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

89

4.4.6.3. Rekenkracht analyse Al de voorgaande formules geven de extra rekenkracht aan die nodig is wanneer de cellen

vuren. Er is ook nog rekenkracht nodig wanneer een cel niet vuurt, het aantal axonen en

neuronen in de machine moet dus ook gekend zijn.

Zowel het geheugen voor het patroon als het geheugen voor de leespuls bestaan uit 4032

axonen. De deelmachine die het patroon vergelijkt met de invoerstroom bestaat uit zeven

axonen.

Een pulstreinsplitser bestaat uit twaalf axonen, er zijn drie zulke splitsers in de machine, in

totaal dus zesendertig axonen.

Er zijn drie identieke deelmachines om het aantal overeenkomsten te tellen, elke

deelmachine bestaat uit elf deelcomponenten. Een deelcomponent bestaat uit vijfentwintig

axonen en één neuron. In totaal dus 825 axonen en 33 neuronen.

Alles tesamen geeft dit 8932 axonen en 33 neuronen.

Er zijn uiteraard ook nog een aantal axonen nodig om al de verschillende deelcomponenten

met elkaar te verbinden, maar aangezien dit telkens axonen met één uitgang betreft, en hun

aantal beperkt is, worden ze buiten beschouwing gelaten.

Voor machine 3 wordt weer een minimum bereikt voor x en y gelijk aan nul. In dat geval is

er de rekenkracht van 1091,77 Pentiums nodig om de machine te simuleren. Het

maximum, voor x en y gelijk aan 4032, resulteert in een rekenkracht van 1331,837

Pentiums.

0

500

1000

1500

Aantal Pentiums

Machine 3

1000-1500500-10000-500

Page 95: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

90

Het aantal Pentiums nodig om de machine te simuleren in functie van x en y is volledig

analoog aan machine 1 en 2. Weer heeft x een zeer beperkte invloed op deze waarde, en er

geldt dezelfde verklaring.

Totaal: 1212,467

50%

40%

0% 10% 0%PatroonLeespulsVergelijkenTellenSplitser

Ook de relatieve bijdragen van de verschillende delen zijn analoog met die uit machine 1.

Al is er bij machine 3 uiteraard ook een deel dat de invoer splitst, dit deel is zeer klein en

oefent nauwelijks een invloed uit op de benodigde rekenkracht.

Page 96: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

91

4.5. Machines zonder geheugen De drie patroonherkenners hebben elk de eigenschap dat een groot deel van de machine als

geheugen gebruikt wordt. Uit de rekenkrachtanalyse blijkt bovendien dat deze geheugens

een zeer groot deel van de benodigde rekenkracht om de machine te simuleren op zich

nemen.

Een geheugen in de CAM-Brain heeft als eigenschap dat de vullingsgraad honderd procent

is, dat elke cel een axon is en dat elke cel juist één uitgang heeft.*

Zoals blijkt uit de opbouw van de andere delen van de machines zijn dit alles behalve

typische eigenschappen voor machines in de CAM-Brain.

Omdat er ongetwijfeld vele zinvolle machines kunnen bedacht worden voor de CAM-

Brain die geen (groot) geheugen nodig hebben, is het interessant om een idee te hebben

van de rekenkracht die nodig is om een machine zonder geheugen te simuleren.

Om een beeld te kunnen vormen van deze benodigde rekenkracht hebt ik voor de drie

machines enkel het deel beschouwd dat het rekenwerk doet, en deze delen geëxtrapoleerd

naar een volledige machine.

Ik beschouw met andere woorden machines die volledig gevuld zijn met de deelmachines

die het rekenwerk verrichten.

Omdat deze machines in de praktijk niet (zinvol) werken, is het ook onmogelijk om een

invoer te beschouwen en de rekenkracht in functie van deze invoer te berekenen zoals

gedaan werd in de voorgaande hoofdstukken.

Daarom wordt er voor elke machine berekend wat de benodigde rekenkracht is indien geen

enkele cel vuurt, en wat de benodigde rekenkracht is indien elke cel elke tijdseenheid

vuurt.

* zie 4.2.1 Geheugen, pagina 31

Page 97: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

92

Voor de drie machines worden dan de volgende waarden bekomen

Minimum Maximum

Machine 1 856,74 1421,65

Machine 2 1013,76 1774,08

Machine 3 617,47 1110,53

Uit de tabel blijkt dat zelfs indien elke cel elke tijdseenheid vuurt de benodigde

rekenkracht voor machine 1 en 3 nog lager ligt dan bij de machines met geheugen.

De reden kan gevonden worden bij de minima, die enkel afhangen van de vullingsgraad en

het aantal neuronen, machines zonder geheugen halen een veel kleinere vullingsgraad en

om ze te simuleren is dus minder rekenkracht nodig.

Page 98: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

93

5. Conclusie

Indien de CAM-Brain gesimuleerd wordt op een Pentium heeft hij duidelijk niet een

rekenkracht die vergelijkbaar is met tienduizend Pentiums.

In hoofdstuk 3 is aangetoond dat de theoretische bovengrens rond de vierduizend Pentiums

ligt. In hoofdstuk 4 werd een indicatie gegeven dat de rekenkracht van machines die in de

praktijk gebruikt worden veeleer rond de duizendvijfhonderd Pentiums ligt.

Het grote verschil tussen de berekende bovengrens en de rekenkracht bij de ontworpen

machines kan verklaard worden door te kijken naar de drie factoren die een rol spelen voor

de rekenkracht, namelijk het aantal cellen die als neuron gebruikt worden, de vullingsgraad

en het aantal uitgangen waarin gevuurd wordt.

Het aantal cellen die als neuron gebruikt worden heeft geen noemenswaardige invloed op

de rekenkracht. Vooreerst is het aantal mogelijke neuronen beperkt (slechts 1152 van de

13824 cellen) en bovendien is ook de extra rekenkracht die een neuron vereist ten opzichte

van een axon eerder klein.

De vullingsgraad speelt wel een rol, maar in de praktijk haalden de machines een

vullingsgraad van 70 – 80%. De vullingsgraad geeft dus geen verklaring voor het grote

verschil tussen de rekenkracht die nodig is om machines te simuleren en de berekende

bovengrens.

De rol van de vullingsgraad is eerder indirekt, gemiddeld zal een machine die meer cellen

bevat ook meer uitgangen bevatten waarin gevuurd wordt.

Het gemiddeld aantal uitgangen waarin gevuurd wordt, ligt wel veel lager bij de

zelfgebouwde machines dan bij de bovengrens. Er dient opgemerkt te worden dat deze

bovengrens louter theoretisch is (i.e. een machine kan in de praktijk nooit in zoveel

uitgangen vuren), maar dit geeft slechts een gedeeltelijke verklaring.

Het gedrag van een axon speelt een grote rol, een axon dat meer dan één vuursignaal

ontvangt zal zelf niet vuren, dit maakt het onwaarschijnlijk dat in een machine met veel

axonen die gemiddeld veel uitgangen hebben, de cellen vaak vuren.

Page 99: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

94

De zelf gebouwde machines bevestigen dit, het overgrote deel van de axonen heeft slechts

één ingang; axonen met drie ingangen zijn al zeer uitzonderlijk en axonen met vier en vijf

ingangen kwamen niet voor.

Bij het bouwen van machines viel vooral op dat het gebruik van een neuron best zo veel

mogelijk vermeden wordt. Hoewel de interne pijplijn van een neuron de mogelijkheden

van de CAM-Brain verhoogt (oneven vertragingen zijn mogelijk), heeft ze vaak tot gevolg

dat de synchroniciteit van twee signalen die met elkaar interageren verloren gaat.

Dit leidt dan weer tot de noodzaak om voor het andere signaal een neuron te gebruiken en,

omwille van de plaatsing van de neuronen, een aantal extra axonen. Extra cellen gebruiken

heeft dan weer tot gevolg, zoals geïllustreerd in machine 1, dat de verwerking van signalen

meer tijd in beslag neemt en de machine weer in zijn begintoestand brengen vereist dan

ook meer cellen.

Page 100: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

95

Appendix A: Benaderingen voor machine 2

Het is de bedoeling een benadering te vinden voor het aantal enen, die uitgelezen worden

in machine 2 en voor het aantal keer er twee enen in een deelcomponent vuren en dit

gebaseerd op x*

Deze x zal door de machine voorgesteld worden als s

onafhankelijk van de positie van de overeenkomsten.

verschillende binaire getallen, zodat

de som van deze s getallen gelijk is aan x.

Het aantal enen in deze binaire getallen is het aantal enen die uitgelezen worden.

Indien elk van deze getallen van de vorm 2n

Dat het een bovengrens is kan eenvoudig ingezien worden. Indien men het aantal enen van

deze getallen wil laten stijgen moeten er meer enen toegevoegd worden dan er verwijderd

worden. Aangezien de getallen van de vorm 2

– 1 is en n zo gekozen wordt dat de som van

deze getallen groter dan of gelijk aan x is zal s.n een goede benadering zijn van het aantal

enen, die uitgelezen worden (indien n geminimaliseerd wordt) en zal het bovendien een

bovengrens zijn voor dit aantal.

n

– 1 zijn, hebben ze de n minst significante

bits op één staan. Door enen op bepaalde posities weg te laten en op andere posities toe te

voegen zal de som van s getallen altijd stijgen, en aangezien s.n reeds groter dan of gelijk

aan x is, kan het ontbinden van x in s binaire getallen dus nooit leiden tot getallen die

tesamen meer enen bevatten dan s.n.

Elk van de getallen is van de vorm 2n

– 1 en de som van deze getallen moet groter dan of

gelijk aan x zijn, met andere woorden:

+=⇒

+≥⇔

≥−

1log

1log

)12.(

2

2

sxn

sxn

xs n

* x: aantal overeenkomsten tussen het patroon en de pulstrein † s: aantal delen waarin de pulstrein gesplitst is

Page 101: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

96

Merk op dat s per definitie altijd positief is, en aangezien n een natuurlijk getal is geeft de

laatste vergelijking het minimum voor n waarbij aan de voorwaarde voldaan is.

Het aantal enen is dan:

+1log. 2 s

xs

Page 102: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

97

Appendix B: Structuur van de .gnt file

Een configuratie van de CAM-Brain wordt beschreven in een .gnt*

bestand.

# commentaar begint met # en loopt door tot het einde # van een regel Module Data File Format <n> Fill Zero NumModules <n> StartModule # 24x24x24 NumCells <n>

met <n> telkens een natuurlijk getal.

De eerste regel geeft aan welke versie van het gnt bestandsformaat gebruikt wordt. Alle

machines die ik gebouwd heb zijn geschreven in formaat 1.

De tweede regel geeft aan hoe de machine moet opgevuld worden, i.e. hoe cellen die niet

expliciet beschreven zijn moeten geïnterpreteerd worden. Voor de handgeschreven

machines die ik gemaakt heb gebruik ik steeds “Zero”, dit geeft aan dat alle bits die de cel

beschrijven op nul gezet worden. Andere opties zijn Random, One en Blank.

De derde regel geeft aan uit hoeveel modules de machine bestaat. De machines in deze

thesis zijn telkens binnen één module geconstrueerd.

De vierde regel geeft de start van de module aan. Na het commentaar teken volgt de

dimensie. Dit is enkel van belang binnen simulatoren. De dimensie van een module in de

CAM-Brain is altijd 24x24x24, maar binnen een simulator kan uiteraard voor een andere

dimensie geopteerd worden. Deze dimensie moet dan expliciet vermeld worden.

Aangezien er geen grenzen zijn aan een module kan een machine die bijvoorbeeld in een

6x6x6 module past een ander gedrag vertonen binnen een 6x6x6 module dan binnen een

24x24x24 module.

De vijfde regel geeft het aantal cellen aan die expliciet beschreven worden.

Nadien volgt er een regel voor elke cel waarin deze cel expliciet beschreven wordt.

Voor een axon ziet die er als volgt uit. x 2 y 0 z 0 000000 001000 0

* gnt komt van genotype

Page 103: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

98

De x, y en z gevolgd door een nummer geven de coördinaten van de cel aan. Nadien volgen

er zes bits die enkel van belang zijn voor de genetische groeieenheid, en die dus voor

handgeschreven machines altijd op nul staan.

De volgende zes bits geven aan in welke richtingen de cel een ingang of uitgang heeft. Een

1 duidt op een uitgang, en een 0 op een ingang. De zes richtingen worden in de volgorde

Noord – Zuid – Top – Bodem – West – Oost beschreven.

De laatste bit geeft aan of het axon zich initiëel in de toestand vuren bevindt of niet. Een 0

duidt op niet vuren, een 1 op vuren.

Voor een neuron komen er een aantal extra bits bij

x 2 y 1 z 0 000000 110000 0 010000 1 0 0000 000000

Het eerste gedeelte is identiek aan een axon.

De volgende zes bits geven het gewicht aan voor de verschillende ingangen. Indien er een

1 staat heeft de neuron een positief gewicht op deze positie. Een 0 duidt op een negatief

gewicht.

De volgende bit geeft aan of deze cel al dan niet als neuron moet opgevat worden. Een 1

geeft aan dat ze een neuron is.

De volgende bit geeft aan of het neuron de volgende tijdseenheid zal vuren, dit heeft

hetzelfde effect als wanneer de accumulator hoger dan twee gezet wordt en deze bit is dus

eigenlijk redundant.

De vier bits daarna worden gebruikt om de accumulator een initiële waarde te geven. De

laatste drie bits komen overeen met een decimale waarde van nul (000) tot zeven (111).

Indien de eerste bit een 1 is moet er acht afgetrokken worden van deze waarde. Op deze

manier komen deze vier bits steeds overeen met een waarde tussen min acht en zeven.

De volgende zes bits geven aan of het neuron de volgende tijdseenheid een vuursignaal zal

ontvangen of niet, deze zijn enkel van belang binnen de hardware. In de machines die ik

geschreven heb en die binnen een simulator geëvalueerd werden, staan ze steeds op nul.

Page 104: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

99

Aangezien er in het gnt formaat geen beschrijving mogelijk is voor in- en uitvoercellen en

aangezien een simulator meer mogelijkheden biedt dan de machine, heb ik een aantal extra

definities zelf toegevoegd.

Elk van deze regels beginnen met een dubbel comentaarteken (##), zodat deze bestanden

correct zullen geïnterpreteerd worden in de machine of in andere simulators.

## I <n> <bitrij>

Een regel die begint met ## I duidt op een invoercel, <n> geeft het nummer van de invoer

aan. <bitrij> bestaat uit een serie nullen en enen. <bitrij> moet minstens uit één 0 of 1

bestaan en wordt afgesloten door een newline karakter.

## O <n>

Deze regel geeft aan dat de uitvoer <n> gebruikt wordt, en dat de simulator dus de bitrij

die deze uitvoer passeert moet uitvoeren.

## CW x <n> y <n> z <n>

CW, afkorting voor ‘Cell Watch’, wordt gebruikt om de cel met coördinaten x,y en z als

uitvoer op te vatten. In een simulator kan men, in tegenstelling tot de machine, uiteraard de

toestand van elke cel over het gehele tijdsverloop bekijken.

Deze instructie is vooral nuttig bij het debuggen van machines.

Page 105: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

100

Appendix C: Inhoud van de CD-ROM

De CD-ROM bevat een aantal .gnt bestanden die de configuratie van de verschillende

(deel)machines uit deze thesis bevatten, samen met de .wrl bestanden die een 3D-

voorstelling van deze machines bevatten in VRML. Om deze .wrl bestanden te bekijken is

een browser nodig met een VRML plug-in.*

De volledige machines hebben geen .wrl bestand. Deze bestanden zijn vrij groot en mijn

computer crashte steeds toen ik ze probeerde te openen. Een van de programma’s die ik

geschreven heb, zet .gnt bestanden om in .wrl bestanden. Dus u kan eenvoudig zelf de .wrl

bestanden aanmaken en ze proberen te openen.

Naast de verschillende .gnt en .wrl bestanden voor de verschillende machines bevat de CD-

ROM ook een aantal programma’s die geschreven zijn voor deze thesis.

Alle programma’s zijn console-applicaties geschreven in C++. De gebruiker van de

programma’s wordt niet echt ‘beschermd’. (Indien er bijvoorbeeld een uitvoerbestand

gespecifieerd wordt, wordt er niet gecontroleerd of dit bestand reeds bestaat, maar wordt

het automatisch overschreven). Opletten dus.

Simulator (Cbm) De simulator genereert op basis van een .gnt file, met de modificaties zoals beschreven in

appendix B, een uitvoerfile waar de waarden van de verschillende (uitvoer)cellen die

bekeken worden voor het gehele tijdsverloop in uitgeprint worden.

De simulator is vooral geschreven met het oog op ontwerpen en debuggen van machines en

dus niet met snelheidsoverwegingen in het achterhoofd.

Het algoritme dat gebruikt wordt is vrij eenvoudig. Voor elke cel wordt een accumulator

bijgehouden, alsook in welke richting ze in- en uitgangen heeft en of ze de volgende

tijdseenheid zal vuren of niet. Voor neuronen wordt, omwille van de interne pijplijn,

tweemaal bijgehouden of het zal vuren of niet.

De CAM-Brain zelf wordt voorgesteld als een driedimensionale matrix van cellen.

* een VRML plug-in kan gratis afgehaald worden op bijvoorbeeld http://www.parallelgraphics.com/products/cortona

Page 106: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

101

Een tijdseenheid evalueren gebeurt in twee fasen. In een eerste fase wordt elke cel van de

CAM-Brain bekeken. Indien de cel gebruikt wordt, worden de accumulatoren van al zijn

buren aangepast indien de cel vuurt.

In de tweede fase wordt naar elke cel die gebruikt wordt gekeken en indien de cel de

volgende tijdseenheid moet vuren wordt de variabele, die aangeeft of de cel zal vuren,

aangepast.

De functies die aangeven waar de invoer- en uitvoercellen zich bevinden, zitten in een

aparte file. De reden is dat er verwarring bestond over de precieze locatie van deze invoer-

en uitvoercellen op het moment dat ik dit programma schreef.*

Op deze manier kon het

programma eenvoudig aangepast worden.

Gnt bestanden samenstellen (CbmMix) Dit programma kan gebruikt worden om twee (of meerdere) .gnt bestanden samen te

voegen tot één .gnt bestand. En er is de mogelijkheid om de verschillende .gnt bestanden te

verschuiven in de CAM-Brain.

Dit programma werd gebruikt om, vertrekkende van de verschillende deelmachines, de

volledige machines op te bouwen.

Gnt bestanden omzetten naar Wrl bestanden (CbmVrml) Het programma heeft als invoer een .gnt bestand en als uitvoer een .wrl bestand. Waar dit

wrl bestand een 3D voorstelling is van de machine beschreven in het gnt bestand.

Indien er op een cel of een verbinding tussen twee cellen geklikt wordt in de vrml

voorstelling, dan wordt de component doorzichtig gemaakt.

Verder kan in de statusbalk gezien worden wat de coördinaten van een cel zien indien de

muis over een cel stilgehouden wordt.

* zie 2.3.3 Invoer- en uitvoercellen, pagina 13

Page 107: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

102

Twee cellen verbinden in een Gnt bestand (GntConnect) Dit programma heeft als invoer een gnt bestand en de coördinaten van twee cellen in dit

bestand. Het probeert de twee cellen met elkaar te verbinden.

De twee cellen die verbonden worden, moeten gedefinieerd zijn in het gnt bestand. Het

programma is niet bijster intelligent. Indien er altijd een omweg moet gemaakt worden om

de twee cellen te verbinden zal het programma er niet in slagen en aangeven waar er een

obstakel was. Dit kan omzeild worden door zelf een derde cel in te voegen en dan beide

cellen met deze derde cel te verbinden.

Er gebeurt slechts weinig controle in dit programma. De gebruiker moet er bijvoorbeeld

voor zorgen dat er geen cellen aan deze nieuwe verbinding grenzen die een uitgang hebben

naar deze verbinding. Standaard staat een in- of uitgang steeds als ingang (een nul), zodat

deze aangrenzende cellen ook in de verbinding zullen vuren, waar dit niet de bedoeling is.

In de praktijk is dit niet echt een probleem, bij het bouwen van de machines wordt in

principe een uitgang enkel gedefinieerd indien hij effectief gebruikt wordt. Cellen hebben

normaal steeds nullen (en dus ingangen) in de richtingen van cellen die (nog) niet gebruikt

worden.

Een geheugen bouwen (GntGeh) Dit programma krijgt als invoer de coördinaten van twee cellen, die de overstaande hoeken

van een kubus definiëren. Het programma zal deze kubus zo goed mogelijk opvullen met

een geheugen (cyclische aaneenschakeling van cellen met telkens één in- en uitgang)

Page 108: Werking van de CAM-Brain machine - Ghent Universitylib.ugent.be/fulltxt/RUG01/000/685/115/RUG01-000685115_2010_0001_AC.pdf · Deze scriptie zou nooit tot stand gekomen zijn zonder

103

Bibliografie

[1] M. KORKIN, G. FEHR, G. JEFFERY, Evolving Hardware on a Large Scale.

[2] F. GERS, H. DE GARIS, M. KORKIN, “CoDi 1-bit” A Cellular Automata based

neural net model simple enough to be implemented in evolvable hardware

[3] F. GERS, H. DE GARIS, M. KORKIN, CoDi-1Bit: A Simplified Cellular

Automata Based Neuron Model

[4] F. GERS, H. DE GARIS, Evolution of Neural Structures Based on Cellular

Automata

[5] F. GERS, H. DE GARIS, CAM-Brain: A New Model for ATR’s Cellular Automata

Based Artificial Brain Project

[6] H. DE GARIS, F. GERS, M. KORKIN, A. AGAH, N. NAWA, Building an

Artificial Brain Using an FPGA Based “CAM-Brain Machine”

[7] M. KORKIN, H. DE GARIS, F. GERS, H. HEMMI, “CBM (CAM-Brain

Machine)” a Hardware Tool which Evolves a Neural Net Module in a Fraction of a

Second and Runs a Million Neuron Artificial Brain in Real Time

[8] M. KORKIN, Programming the CAM-Brain Machine

[9] M. KORKIN, CBM Tool Suit Tutorial

[10] Z. MICHALEWICZ, Genetic Algorithms + Data Structures = Evolution Programs,

3th edition, Springer-Verlag (1999)

[11] S. RUSSEL, P. NORVIG, Artificial Intelligence; a Modern Approach, Prentice

Hall (1995)