Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot...

101
Faculteit Toegepaste Wetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: Prof. dr. ir. J. Van Campenhout Pulstreincodering en training met meerdere datasets op de CBM. door Benjamin Schrauwen Promotor: Prof. dr. ir. J. Van Campenhout Thesisbegeleider: ir. H. Eeckhaut Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Computerwetenschappen, optie: Computerarchitectuur Academiejaar 2001–2002

Transcript of Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot...

Page 1: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Faculteit Toegepaste Wetenschappen

Vakgroep Elektronica en Informatiesystemen

Voorzitter: Prof. dr. ir. J. Van Campenhout

Pulstreincodering en training met

meerdere datasets op de CBM.

door Benjamin Schrauwen

Promotor: Prof. dr. ir. J. Van Campenhout

Thesisbegeleider: ir. H. Eeckhaut

Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk

Ingenieur Computerwetenschappen, optie: Computerarchitectuur

Academiejaar 2001–2002

Page 2: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Toelating tot bruikleen

De auteur geeft de toelating dit afstudeerwerk voor consultatie beschikbaar te stellen

en delen van het afstudeerwerk te copieren 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 resultaten uit dit

afstudeerwerk.

Benjamin Schrauwen 19 juni 2002

i

Page 3: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Dankwoord

Graag zou ik iedereen willen bedanken die heeft bijgedragen tot de verwezenlijking van

dit eindwerk, in het bijzonder dank ik:

• mijn promotor Prof. dr. ir. J. Van Campenhout

• mijn thesisbegeleider ir. H. Eeckhaut waarmee ik samen een heel jaar lang de CBM

heb ontdekt, en die mij ontzettend hielp bij het voltooien van deze thesis

• ir. P. Rombouts voor de vele halve uren dat hij mij probeerde de theorie van de

∆Σ-modulatoren bij te brengen

• ir. J. Dambre voor het, ondanks alle stress, nalezen en corrigeren van deze thesis

• mijn vriendin die mij gedurende het vermoeiende proces van het schrijven van deze

thesis steeds heeft gesteund

ii

Page 4: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Pulstreincodering en training met meerdere datasets op de CBM.

door

Benjamin Schrauwen

Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-

terwetenschappen, optie: Computerarchitectuur

Academiejaar 2001–2002

Universiteit Gent

Faculteit Toegepaste Wetenschappen

Promotor: Prof. dr. ir. J. Van Campenhout

Begeleider: ir. H. Eeckhaut

Samenvatting

De CAM-brain neurale computer, een parallelle hardware-implementatie van een groot

neuraal netwerk, is een experimentele machine waar reeds enkele jaren onderzoek naar

gebeurt. Recent is de universiteit in het bezit gekomen van /’e/’en van deze computers,

waarvan er wereldwijd slechts vier bestaan. Het is echter nog steeds niet mogelijk om

complexe problemen op te lossen met deze afwijkende computerarchitectuur, ondanks vele

onderzoeksinspanningen. Twee belangrijke problemen die het onderzoek momenteel hin-

deren zijn: een beperkt inzicht in de interne voorstelling van de signalen en de beperkingen

van de bijgeleverde sofware om complexere problemen te trainen.

Het doel van dit afstudeerwerk is om deze twee problemen aan te pakken. We onderzoeken

de bestaande technieken voor het coderen van de interne informatie. We breiden deze uit

en introduceren een aantal nieuwe methoden. Voor het tweede probleem implementeren

we het concept van meerdere datasets op de CAM-brain computer. We tonen aan dat het

met deze techniek mogelijk wordt om complexere problemen op te lossen.

In dit afstudeerwerk wordt eerst de werking, opbouw en architectuur van de CAM-brain

neurale computer beschreven. Dan volgt een hoofdstuk over de codering van de interne

signalen en een hoofdstuk dat de methode van de meerdere datasets bespreekt. Tot slot

komt er een algemeen besluit. In de bijlagen worden een aantal nieuwe bestandsformaten

besproken die geıntroduceerd werden voor de beschrijving van nieuwe functionaliteiten.

Trefwoorden: CAM-brain machine (CBM), pulstreincodering, meerdere datasets.

iii

Page 5: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Inhoudsopgave

1 Inleiding 1

1.1 Doel van deze thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Inhoud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 De CAM-Brain machine 3

2.1 Het logisch model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.1.1 Artificiele neurale netwerken . . . . . . . . . . . . . . . . . . . . . . 3

2.1.2 CoDi-1-bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2 Genetisch algoritme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3 De machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.3.1 Cellulaire ruimte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.2 Fasen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3.3 Ondersteunende onderdelen . . . . . . . . . . . . . . . . . . . . . . . 18

2.3.4 Cijfergegevens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.4 Genetische lus op de CBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 Pulstreincodering 26

3.1 Pulstreincodering volgens de neurobiologie . . . . . . . . . . . . . . . . . . . 26

3.1.1 Frequentiecodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.1.2 Pulscodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.2 De oude methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.2.1 SIIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.2.2 HSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.3 Het filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.4 De nieuwe methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.4.1 HSA – herbezocht . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.4.2 BSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.4.3 ∆Σ-modulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.5 Resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.6 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

iv

Page 6: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

4 Training met meerdere datasets 51

4.1 Het oude CBM-model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.2 Combinatie van geschiktheden . . . . . . . . . . . . . . . . . . . . . . . . . . 53

4.3 A priori methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

4.3.1 Lineaire combinatie . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

4.3.2 Niet-lineaire combinatie . . . . . . . . . . . . . . . . . . . . . . . . . 55

4.3.3 Lexicografische ordening . . . . . . . . . . . . . . . . . . . . . . . . . 56

4.4 A posteriori methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.4.1 Paretobemonstering . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.5 Het nieuwe CBM-model met meerdere datasets . . . . . . . . . . . . . . . . 60

4.6 Resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4.6.1 Oud model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4.6.2 Nieuw model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4.6.3 Berekeningscomplexiteit . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.7 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

5 Besluit 78

A Nieuw GAC formaat 79

B Nieuw SPT formaat 82

C Nieuw MSK formaat 84

v

Page 7: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Lijst van figuren

2.1 De werking van het analoog neuraal netwerk . . . . . . . . . . . . . . . . . . 3

2.2 Voorwaartse en teruggekoppelde verbindingen . . . . . . . . . . . . . . . . . 4

2.3 Een biologische pulstrein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.4 In A ziet u een biologische actiepotentiaal, en in B een vereenvoudigde

pulstrein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.5 Reactie ηi op het overschrijden van de drempelwaarde . . . . . . . . . . . . 6

2.6 Een typische εij . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.7 Het antwoord op verschillende inkomende pulsen volgens het SRM model . 7

2.8 Het CoDi-1-bitmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.9 Het CoDi-1-bitmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.10 Het genetisch algoritme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.11 De recombinatie-operaties . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.12 De CAM-Brain neurale computer . . . . . . . . . . . . . . . . . . . . . . . . 14

2.13 De 3x2x2 basiscellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.14 De ingangen en uitgagen van een CBM module . . . . . . . . . . . . . . . . 16

2.15 De werking van de evolutiemodus en de uitvoeringsmodus . . . . . . . . . . 17

2.16 Een pulstrein op de CBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.17 De netlijsteenheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.18 Het pulstreingeheugen en netlijst tijdens de uitvoeringsmodus . . . . . . . . 20

2.19 Het pulstreingeheugen en netlijst tijdens de evolutiemodus . . . . . . . . . . 21

2.20 De genetische lus van de CBM . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.1 Pulstreinconversie en -reconstructie voor de CBM . . . . . . . . . . . . . . . 26

3.2 Een (klein) aantal neuronen uit de cortex . . . . . . . . . . . . . . . . . . . 27

3.3 De tijd-ruimte-informatie van 30 naburige neuronen [38] . . . . . . . . . . . 27

3.4 Het zoeken van een filter geschikt voor stimulusreconstructie [38] . . . . . . 29

3.5 Een voorbeeld van het SIIC-algoritme . . . . . . . . . . . . . . . . . . . . . 30

3.6 Een voorbeeld van het HSA-algoritme . . . . . . . . . . . . . . . . . . . . . 31

3.7 Het originele filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.8 Het nieuwe filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

vi

Page 8: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

3.9 Optimale drempelwaarde voor HSA bij sinussen met verschillende amplitu-

de en periode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.10 De SNR die we behalen door middel van HSA met verschillende drempel-

waarden. Er is een curve waar we gebruik gemaakt hebben van het originele

filter, en een waar we gebruik gemaakt hebben van het nieuwe filter . . . . 37

3.11 Optimale drempelwaarde voor BSA bij sinussen met verschillende amplitu-

de en periode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.12 De SNR die we behalen door middel van BSA met verschillende drempel-

waarden. Er is een curve waar we gebruik gemaakt hebben van het originele

filter, en een waar we gebruik gemaakt hebben van het nieuwe filter . . . . 39

3.13 1ste orde ∆Σ-modulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.14 Het gelineariseerde model van de 1ste orde ∆Σ-modulator . . . . . . . . . . 40

3.15 2de orde ∆Σ-modulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.16 Benadering van de SNR van de ∆Σ-modulator voor verschillende ordes en

overbemonsteringsgraden. Het deel in stippelijn komt niet uit de literatuur,

maar is een extrapolatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.17 SNR van de ∆Σ-modulator voor verschillende ordes en overbemonsterings-

graden. De dikke stippelijn geeft de best haalbare SNR weer als we 6 bit

per filterwaarde gebruiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.18 Eerste soort testfuncties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.19 SNR ten opzichte van de amplitude voor de eerste soort van testfuncties . . 44

3.20 SNR ten opzichte van periode voor de eerste soort van testfuncties . . . . . 46

3.21 Tweede soort testfuncties . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3.22 SNR ten opzichte van amplitude voor de tweede soort van testfuncties . . . 48

3.23 SNR ten opzichte van periode voor de tweede soort van testfuncties . . . . 49

4.1 De oude genetische lus op de host-machine . . . . . . . . . . . . . . . . . . . 52

4.2 De nieuwe genetische lus op de host-machine . . . . . . . . . . . . . . . . . 61

4.3 De nieuwe indeling van het pulstreingeheugen . . . . . . . . . . . . . . . . . 61

4.4 Een deel van de verschillende datasets die gebruikt werden voor het trainen

van het XOR probleem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

4.5 De geconvolveerde antwoordpulstreinen op het XOR probleem (omgekeerde

volgorde ten opzichte van figuur 4.4) . . . . . . . . . . . . . . . . . . . . . . 66

4.6 De geschiktheidsgrafiek van het XOR probleem . . . . . . . . . . . . . . . . 66

4.7 De geschiktheidsgrafiek van het XOR probleem . . . . . . . . . . . . . . . . 67

4.8 De gewenste- en antwoordpulstreinen van de frequentiedeler met perfecte

overeenkomst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4.9 De gewenste- en antwoordpulstreinen van de frequentiedeler met een ver-

keerde vertraging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

vii

Page 9: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

4.10 De geschiktheidgrafiek van het frequentiehalveringsprobleem . . . . . . . . . 69

4.11 De geschiktheidsgrafiek van het frequentiehalveringsprobleem . . . . . . . . 69

4.12 Het antwoord van de uiteindelijke oplossing op de verschillende datasets

voor de aanschakelbare golfvormgenerator . . . . . . . . . . . . . . . . . . . 70

4.13 Het antwoord van de uiteindelijke oplossing op de verschillende datasets

voor de aanschakelbare golfvormgenerator . . . . . . . . . . . . . . . . . . . 70

4.14 De geschiktheidgrafiek van de aanschakelbare golfvormgenerator . . . . . . 71

4.15 De geschiktheidsgrafiek van de aanschakelbare golfvormgenerator . . . . . . 71

4.16 De letters T, C, L en X zoals de CBM ze te zien krijgt . . . . . . . . . . . . 73

4.17 De geschiktheidgrafiek van het TCLX probleem . . . . . . . . . . . . . . . . 74

4.18 De geschiktheidgrafiek van het TCLX probleem . . . . . . . . . . . . . . . . 74

4.19 Een deel van de uitgangspulstreinen voor een zeer goede oplossing van het

TCLX probleem (door middel van lineaire combinatie gevonden) . . . . . . 74

4.20 De tijd die de datasetlus inneemt afhankelijk van het aantal individuen en

het aantal timeslices. Het aantal datasets is 1. . . . . . . . . . . . . . . . . . 75

4.21 De tijd die de datasetlus inneemt per individu, afhankelijk van het aantal

timeslices. Het aantal datasets is 1. . . . . . . . . . . . . . . . . . . . . . . . 76

A.1 Een voorbeeld van een .gac-bestand . . . . . . . . . . . . . . . . . . . . . . 79

B.1 Een voorbeeld van een .spt-bestand . . . . . . . . . . . . . . . . . . . . . . . 82

C.1 Een voorbeeld van een .msk-bestand . . . . . . . . . . . . . . . . . . . . . . 84

viii

Page 10: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Lijst van tabellen

2.1 Technische specificaties van de CAM-Brain Machine . . . . . . . . . . . . . 23

3.1 Eigenschappen van de verschillende codeersystemen voor de eerste soort

van testfuncties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3.2 Eigenschappen van de verschillende codeersystemen voor de tweede soort

van testfuncties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.1 Complexiteit van paretorangordes . . . . . . . . . . . . . . . . . . . . . . . . 58

ix

Page 11: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Lijst van gebruikte afkortingen

CA Cellulaire Automaat

CAM Cellulaire Automaat Machine

CBM CAM-Brain Machine

EA Evolutionair Algoritme

GA Genetisch Algoritme

SIIC Spike Interval Information Coding

HSA Hough Spiker Algoritme

BSA Ben’s Spiker Algoritme

∆Σ Delta-Sigma

CoDi Collect and Distribute

FPGA Field Programmable Gate Array

NN Neuraal Netwerk

PNN Pulserend neuraal netwerk

SRM Spike Response Model

3D 3 Dimensionaal

SID Spiketrain ID

NID Netlijst ID

FEU Fitness Evaluation Unit

MEC Modular Evolvable Capacity

SNR Signal Noise Ratio

FIR Finite Impulse Response

x

Page 12: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Hoofdstuk 1

Inleiding

Neurale netwerken zijn welbekend voor hun positieve kenmerken bij toepassingen zoals

patroonherkenning en generalisering. Het zijn netwerken van eenvoudige eenheden, neu-

ronen, die met mekaar verbonden zijn. In deze neuronen gebeurt een zeer eenvoudige

bewerking. Het resultaat van zo een bewerking wordt via verschillende verbindingen naar

andere neuronen gestuurd die deze informatie verder verwerken. De meest gebruikte neu-

rale netwerken werken intern met analoge signalen en worden meestal op een gewone

computer doorgerekend. Dit wil zeggen dat alle neuronen sequentieel uitgerekend moeten

worden. Er wordt dus geen gebruik gemaakt van het parallelle karakter van de netwerk-

architectuur.

Een andere manier om informatie uit te wisselen tussen de verschillende neuronen is

door middel van 1-bitsignalen. Dit is ook de manier waarop informatie in de hersenen

wordt gecodeerd. Netwerken die enkel 1-bitsignalen uitwisselen zijn zeer geschikt om een

hardware-implementatie van te maken. Op die manier worden alle neuronen parallel uit-

gerekend, en kan men ten volle de capaciteit van een neuraal netwerk benutten. Men

zou denken dat het communiceren met aparte bits zorgt voor een veel kleinere informa-

tiedichtheid. Echter kan door de snelle hardware-implementatie de stroom aan bits groot

genoeg zijn om evenveel informatie te kunnen transporteren als bij de neurale netwerken

met analoge waarden. De CAM-brain machine (CBM) is zo een performante hardware-

implementatie van gepulste neurale netwerken.

1.1 Doel van deze thesis

De CAM-brain machine is ondanks jaren onderzoek nog steeds niet ten volle benut. Er

zijn verschillende redenen hiervoor. Twee belangrijke redenen zijn:

• Onvoldoende inzicht in de wijze waarop de signalen binnen de CAM-brain verwerkt

worden en wat deze signalen voorstellen

• Problemen met het trainingsalgoritme

1

Page 13: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Deze thesis heeft tot doel beter inzicht te creeren in wat de interne signalen voorstellen

en hoe we externe informatie kunnen voorstellen via pulstreinen. Het is de bedoeling

bestaande methoden te onderzoeken en verbeteren, en nieuwe methoden te introduceren.

Verder willen we de huidige software van de CAM-brain machine zo uitbreiden dat het

mogelijk wordt veel complexere problemen te trainen. Dit doen we door het concept van

meerdere datasets te introduceren.

1.2 Inhoud

Dit afstudeerwerk bestaat uit twee grote delen: pulstreincodering en training met meerdere

datasets. In hoofdstuk 2 geven we een introductie van de CAM-brain machine en het

model dat intern gebruikt wordt. In het 3de hoofdstuk bespreken we de problemen rond

pulstreincodering. In hoofdstuk 4 behandelen we training met meerdere datasets.

2

Page 14: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Hoofdstuk 2

De CAM-Brain machine

In dit hoofdstuk bespreken we de CAM-Brain Machine (CBM). Deze machine is gebouwd

door GenoByte inc. (http://www.genobyte.com) naar de ideeen van H. de Garis [7, 8]. De

bespreking delen we op in een logisch model en een fysisch model. Verder zullen we ook

iets dieper ingaan op het genetische trainingsalgoritme.

2.1 Het logisch model

De CBM is geen normale Turingmachine. Het is een hardware implementatie van een op

de hersenen gebaseerd artificieel neuraal netwerk. In deze sectie zullen we de algemene

neurale netwerkmodellen voorstellen en zien hoe deze aangepast worden om een model te

creeren dat in digitale hardware implementeerbaar is.

2.1.1 Artificiele neurale netwerken

i

iijyw

3

2

1

y

y

y

Figuur 2.1: De werking van het analoog neuraal netwerk

In onze hersenen zijn een groot aantal neuronen aanwezig. Elk neuron vormt een vrij

eenvoudige rekeneenheid. In de hersenen is elk neuron verbonden met ongeveer 10.000

andere neuronen. De kracht ligt dus niet in de rekenkracht van het neuron, maar in

het grote aantal neuronen (geschat op 1012 in de hersenen), en het nog groter aantal

interconnecties (in onze hersenen zijn dat er ongeveer 1016). Hierdoor zijn de hersenen

zo robuust. De informatie is gedistribueerd en met veel redundantie opgeslagen in de

verbindingen tussen de neuronen.

Neurale netwerken zijn wiskundige modellen van echte neuronen en hun verbindingen.

Een veelgebruikt neuraal netwerk (NN) is het analoog neuraal netwerk [41, 29] (zie figuur

3

Page 15: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

2.1). Het bestaat uit een groep neuronen die met elkaar verbonden zijn door middel van

verbindigen. Elk neuron wordt aanzien als een berekeningseenheid die ingangssignalen

krijgt van andere neuronen via een verbinding tussen beide. Deze inkomende verbindingen

worden de dendrieten genoemd. Het neuron zal van alle inkomende signalen een gewogen

som nemen. Deze som zal dan via een drempelfunctie omgezet worden in een signaal aan

de uitgang van het neuron, dat op zijn beurt weer verbonden is met andere neuronen.

Deze uitgaande verbindingen worden de axonen genoemd. We kunnen de uitgang van een

neuron schrijven als de functie

yj = θ

(∑i

wijyi

)

waar yi het ingangssignaal is van neuron i, en wij het gewicht is van de verbinding tus-

sen neuron i en neuron j. De functie θ is een drempelfunctie. Een drempelfunctie is

bijvoorbeeld

θ(x) =

0 x < β

1 x ≥ β

waar β de drempelwaarde is. De meest gebruikte dempelfunctie is de sigmoidefunctie

θ(x) =1

1 + e−x.

Deze functie is glooiender van vorm.

Figuur 2.2: Voorwaartse en teruggekoppelde verbindingen

De neuronen kunnen op grofweg twee manieren met elkaar verbonden worden: in

voorwaartse richting of met terugkoppeling (zie figuur 2.2). De meest gebruikte vorm is

de voorwaartse richting. Hierbij is het neurale netwerk onderverdeeld in lagen. Neuronen

van een laag hebben enkel ingangen van de vorige laag en uitgangen naar de volgende laag.

Er is dus zeker geen terugkoppeling mogelijk binnen het netwerk. Er bestaan zeer goede

trainingsalgoritmen voor dit type netwerken (zoals terugpropagatie [55]). Een algemenere

topologie is mogelijk als men terugkoppeling toelaat. Voor dit type netwerken bestaan

er amper analytische trainingsmethoden (zoals terugpropagatie er een is), en ze worden

daardom meestal door middel van meer heuristische algoritmen getraind. In [28] worden

bijvoorbeeld evolutionaire algoritmes (EA) gebruikt (zie ook verder in deze thesis).

4

Page 16: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Figuur 2.3: Een biologische pulstrein

Figuur 2.4: In A ziet u een biologische actiepotentiaal, en in B een vereenvoudigde pulstrein

Een exacter model voor de biologische neuronen kunnen we bereiken door gebruik te

maken van gepulste neurale netwerken (PNN) (in het Engels ‘Pulsing Neural Network’ of

’Spiking Neural Networks’) [38]. In de hersenen gebeurd de communicatie tussen de neu-

ronen immers via pulstreinen. Pulstreinen zijn sequenties van stereotype gebeurtenissen

(zoals een verhoogde potentiaal aan het axon van een biologisch neuron). In figuur 2.3 en

2.4 zien we een biologische pulstrein. De exacte vorm van de gebeurtenissen is onbelang-

rijk, enkel het tijdstip waarop de gebeurtenis zich voordoet is van belang. Een pulstrein

kunnen we dus volledig karakteriseren door de verzameling van alle vuurtijdstippen

Fi = t(1)i , t

(2)i , ..., t

(n)i ,

waar t(f)i het f -de tijdstip aangeeft waarop neuron i vuurt. Als we de stereotype ge-

beurtenissen modelleren als Dirac δ-functies1, kunnen we de pulstrein in het tijdsdomein

schrijven als

Si(t) =∑

t(f)i ∈Fi

δ(t − t(f)i ).

Hoe we deze pulstreinen moeten interpreteren zullen we bespreken in hoofdstuk 3.

Nu definieren we een zeer algemeen model voor pulserende neuronen, namelijk het

pulsantwoordmodel (‘Spike Response Model’ of SRM), geıntroduceerd in [25]. De toe-

standsvariabele van neuron i noteren we als ui. Het neuron zal vuren (een puls genereren)1δ(s) = 0 als s = 0 en

∫ ∞−∞ δ(s)ds = 1

5

Page 17: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

als ui een bepaalde grenswaarde ϑ bereikt. Deze gebeurtenissen bepalen dus de tijdstippen

t(f)i waarop het neuron vuurt. De verzameling van vuurtijdstippen kunnen we noteren als

Fi = t | ui(t) = ϑ.

-

-

Figuur 2.5: Reactie ηi op het overschrijden van de drempelwaarde

Er zijn twee processen die de toestandsvariabele ui veranderen. Onmiddellijk na het

vuren van het neuron zal ui worden ‘gereset’. Dit doen we door een negatieve functie

ηi(t− t(f)i ) op te tellen bij de variabele ui. In figuur 2.5 zien we een typische golfvorm voor

deze ηi. We zien dat deze ‘reset’-functie maar tijdelijk is. Na 20ms is het neuron vergeten

dat hij eens puls heeft gestuurd en is de toestand terug hersteld tot die voor de uitgaande

puls.

Figuur 2.6: Een typische εij

Het tweede proces komt voor als het neuron een puls binnenkrijgt van een van de

neuronen waarmee het verbonden is. Deze neuronen noteren we als

Γi = j | neuron i krijgt input van neuron j.

Als neuron j ∈ Γi vuurt op tijdstip t(f)j , dan zal de toestandsvariabele ui van neuron i

veranderen door wijεij(t − t(f)j ) er bij op te tellen. Het gewicht wij drukt hier weer het

relatieve belang van de verbinding uit. Figuur 2.6 toont een typische εij . Hier zien we

dat de reactie op inkomende pulsen ook tijdelijk van aard is. Dat verklaard waarom de

‘reset’-functie tijdelijk van aard was. Het neuron vergeet inkomende pulsen namelijk ook

een zekere tijd.

6

Page 18: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Nu kunnen we de toestandsvariabele ui uitdrukken in de tijd als

ui(t) =∑

t(f)i ∈Fi

ηi(t − t(f)i ) +

∑j∈Γi

∑t(f)j ∈Fj

wijεij(t − t(f)j ).

ηi en εij worden steeds zo gekozen dat ze nul zijn voor t ≤ 0 en naar nul gaan voor t → ∞.

εij komt dus overeen met de reactie van het neuron op een externe impuls (onafhankelijk

van het gewicht van de verbinding). ηi kunnen we aanzien als de reactie van het neuron

op zijn eigen impulsen.

De transportvertraging van een verbinding kan gemodelleerd worden door een extra

vertraging bij εij te introduceren. Dit kan men duidelijk zien in figuur 2.6. Door gebruik

te maken van juist gekozen ηi en εij is het mogelijk het Hodgkin-Huxley model (wat een

biologisch zeer correct model is) sterk te benaderen [38]. In figuur 2.7 zien we nog een

overzichtsvoorbeeld van het SRM.

Figuur 2.7: Het antwoord op verschillende inkomende pulsen volgens het SRM model

In [Maas] wordt bewezen dat onder zeer algemene voorwaarden (εij moet aan een

bepaalde eis voldoen):

Theorema 1 Elk voorwaarts of teruggekoppeld analoog neuraal netwerk met n neuronenkan arbitrair correct gesimuleerd worden door een pulserend neuraal netwerk met n + cpulserende neuronen (c een kleine constante). Dit is zelfs mogelijk indien er ruis aanwezigis.

Verder wordt er ook aangetoond dat:

Theorema 2 Indien men een bepaalde basiseigenschap (hier niet verder vermeld) van eenpulserend neuron met n inputs wil simuleren door middel van een analoog neuraal netwerk,dan heeft men minstens n−4

2 analoge neuronen nodig.

Hier merkt men een duidelijk asymmetrie tussen de berekeningskracht van analoge neurale

netwerken (zelfs met terugkoppeling) en pulserende neurale netwerken: een analoog neu-

raal netwerk kan gesimuleerd worden door een net iets groter pulserend neuraal netwerk,

7

Page 19: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

maar bepaalde pulserende netwerken kunnen enkel gesimuleerd worden door een zeer veel

groter analoog netwerk.

Voor analoge neurale netwerken is er een eigenschap bekend die zegt dat elke continue

functie F : [0, 1]n → [0, 1]m met een gewenste precisie kan benaderd worden door een

voorwaarts analoog neuraal netwerk met voldoende lagen. Wegens voorgaande uiteenzet-

ting kunnen we nu dus ook stellen dat elke continue functie F met een gewenste precisie

door een pulserend neuraal netwerk benaderd kan worden . De uitgangen worden wel

verondersteld op een bepaalde manier gecodeerd te zijn (zie hoofdstuk 3).

De enige voorwaarde waaraan εij(t) moet voldoen is dat εij(t) benaderd lineair stijgt

(of daalt) voor t tussen 0 en een waarde R. De meeste biologisch geınspireerde εij hebben

deze eigenschap. Dit zien we ook in figuur 2.6.

2.1.2 CoDi-1-bit

CoDi staat voor ‘Collect and Distribute’ (verzamel en verdeel) en is geıntroduceerd door

Gers, de Garis en Korkin in [23]. Na deze initiele publicatie heeft het model nog wel

een paar aanpassingen ondergaan voordat het effectief gebruikt werd in de CBM. Deze

onderhuidse veranderingen van het model zijn echter helemaal niet duidelijk aangegeven

in de literatuur waardoor geregeld zeer verwarrende situaties ontstaan.

De naam ‘Collect and Distribute’ staat voor het algemene gedrag van een neuron, na-

melijk om informatie te vergaren, deze informatie bewerken en deze later weer te verdelen

naar andere neuronen. De 1 bit slaat op het feit dat alle communicatie tussen neuro-

nen gebeurt met 1-bitsignalen. De nadruk bij het CoDi-1-bitmodel ligt op de eenvoudige

implementeerbaarheid ervan in hardware. Hierdoor zijn er zeer vele vereenvoudigingen

ingevoerd waardoor het model sterk afwijkt van de eerder besproken neurale netwerk mo-

dellen. Het eerste grote verschil met de voorgaande modellen is dat de tijd discreet is. Bij

elke tijdstap zal het ganse netwerk in parallel naar een nieuwe toestand overgaan.

axoncellendendrietcellen

wij

wij

yi

ij

Figuur 2.8: Het CoDi-1-bitmodel

8

Page 20: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Het CoDi-1-bitmodel zien we in figuur 2.8. De uitgang op tijdstip k van neuron i

noteren we yi(k). Deze heeft een binaire waarde, dus yi(k) ∈ 0, 1. Het gewicht van de

verbinding van neuron j naar neuron i noteren we als wij . De gewichten hebben ook een

binaire waarde, maar deze zijn van de vorm wij ∈ −1, 1. Is het gewicht 1 dan noemen we

de verbinding exciterend, is het gewicht −1 dan noemen we ze inhiberend. Intern houdt

een neuron een accumulator ui(k) bij. Bij elke tijdstap telt het daarbij de gewogen som

van de ingangen op. Dit kunnen we noteren als

ui(k) = ui(k − 1) +∑j∈Γi

wijyj(k).

De uitgang van een neuron zal vuren (1 worden) als ui(k) een drempelwaarde ϑ over-

schrijdt. Als een neuron vuurt, wordt zijn interne accumulator op nul gezet.

yi(k) =

1 als ui(k) ≥ ϑ

0 anders.

Met het oog op de implementatie in hardware heeft men ervoor gekozen om het vuren

van het neuron met een klokpuls te vertragen. Dit zullen we echter modelleren als een

extra transportvertraging. Verder is er ook een ondergrens van de accumulator voorzien,

de drempelwaarde . Als ui(k) ≤ dan wordt ui(k) op nul gezet zonder te vuren. In

figuur 2.9 zien we hier een voorbeeld van.

ingangspulstrein met positief gewicht:

ingangspulstrein met negatief gewicht:

t

u

uitgangspulstrein

Figuur 2.9: Het CoDi-1-bitmodel

De verbindingen tussen verschillende neuronen worden gerealiseerd door een aaneen-

schakeling van cellen die de pulstreinen zullen transporteren van neuron naar neuron. Er

9

Page 21: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

zijn twee types cellen, axoncellen, en dendrietcellen. Axoncellen krijgen van een axoncel

of een neuron een puls binnen en transporteren deze puls naar 1 of meerdere andere cellen

(axon of dendriet) met een vertraging van 1 klokpuls. Dendrietcellen krijgen van 1 of

meerdere cellen (axoncel of dendrietcel) een puls binnen en transporteren deze dan door

(met een delay van 1 klokpuls) naar een neuron of een andere dendrietcel. Een extra

eigenschap van de dendrietcellen is de pulsblokkering. Als er gelijktijdig meer dan 1 puls

binnenkomt in een dendriet zal de cel blokkeren en geen puls uitsturen. Dit fenomeen is

ook in de natuur waargenomen [45]. In de verdere bespreking zullen we dit effect echter

verwaarlozen omdat het ons iets te ver zou leiden in de zeer interessante materie van de

pulssynchronisatie tussen neuronen [38].

De axon- en dendrietcellen vormen boomstructuren met als wortel een neuron. De

axon- en dendrietbomen van verschillende neuronen kunnen elkaar raken (dendrietboom

raakt axonboom) en op die manier pulstreinen transporteren tussen de neuronen. Elke

verbinding tussen twee neuronen kunnen we dus ondubbelzinnig modelleren door de trans-

portvertraging van de verbinding. Deze transportvertraging, ∆ij , is gelijk aan het aantal

cellen dat de puls passeert voordat het het ander neuron bereikt, plus een, en dit wegens de

vuurvertraging van het neuron. Het is mogelijk dat er verschillende verbindingen bestaan

tussen twee neuronen, en dat deze verbindingen een andere vertraging en gewicht bezitten.

In de verdere bespreking zullen we dit echter verwaarlozen om een eenvoudige notatie te

behouden, dit echter zonder verlies aan algemeenheid. Het uitbreiden van het model naar

meerdere verbindingen is enkel notationeel verschillend met het hieropvolgende.

We gaan nu het CoDi-1-bitmodel voorstellen in het gediscretiseerde SRM. Eerst en

vooral noteren we een discrete versie van het SRM.

ui(k) =∑

k(f)i ∈Fi

ηi(k − k(f)i ) +

∑j∈Γi

∑k(f)j ∈Fj

wijεij(k − k(f)j ).

met

Fi = k | ui(k) ≥ ϑ = k | yi(k) = 1.De respons van CoDi-1-bit op een impuls komende van een ander neuron is het verhogen

van de interne teller met +1 en -1 (afhankelijk van het gewicht) . Dit komt overeen met

εij(k) = H(k), hier is H de discrete eenheidsstap. Als we ook de transportvertraging van

de verbinding in rekening willen brengen, krijgen we

εij(k) = H(k − ∆ij).

De reactie van CoDi-1-bit op een eigen impuls is het op 0 zetten van de accumulator.

Dit is niets anders dan puls gelijk aan de huidige waarde van ui af te trekken van de

accumulator. De ηi zal niet meer constant blijven, maar afhankelijk zijn van de tijd, en

wel het ogenblik waarop het neuron vuurt. Dit noteren we als

ηk(f)i

i (k) = −ui(k(f)i )H(k).

10

Page 22: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Hier komen we in wiskundige moeilijkheden omdat ηk(f)i

i (k) niet 0 is voor k = 0. Dit

betekent dat ui(k) afhankelijk is van zichzelf! Deze puur theoretische situatie is echter

enkel aanwezig in de formules en verdwijnt als je deze formule recursief benaderd. Om

geen problemen te krijgen met de causaliteit kunnen we dit doen door een infinitesimale

tijdstap δ in rekening te brengen per iteratie van de recursie. Heel deze constructie is

echter een zuiver wiskundige kunstgreep die niets aan het resultaat verandert.

De functies εij(k) en ηi(k) gaan niet naar nul voor k → ∞. Dit betekent dat als er

geen signalen meer binnenkomen in de neuronen, deze hun huidige toestand voor altijd

zullen bewaren. De neuronen onthouden hun oude toestand zolang ze niet vuren.

We merken op dat εij geen initieel lineair stijgende/dalende functie is. Daarom kunnen

we theorema 1 niet toepassen. We kunnen dus niet zonder meer stellen dat het CoDi-

1-bitmodel equivalent is met het analoog neuraal netwerkmodel. We kunnen dus niet

besluiten welke functies allemaal voorstelbaar zijn met CoDi-1-bitnetwerken.

We besluiten dat mits een kleine wijziging in het model (ηi niet meer constant) het

mogelijk is CoDi-1-bit te modelleren door middel van het ‘Spike Response Model’. Echter,

het CoDi-1-bitmodel is niet equivalent met algemene PNNen of NNen2.

2.2 Genetisch algoritme

In deze sectie gaan we iets dieper in op het genetisch algoritme dat door de CBM ge-

bruikt wordt om CoDi-1-bitnetwerk te zoeken die voldoen aan onze functionele eisen. Dit

zoekproces wordt vaak training genoemd.

Genetische Algoritmes (GA) vormen een klasse van stochastische optimalisatie-algoritmes.

Ze zijn ook bekend als Evolutionaire Algoritmes (EA). Deze term omvat echter een iets

bredere verzameling van algoritmes. Het voornaamste kenmerk is dat ze ideeen uit de

evolutionaire biologie gebruiken, zoals natuurlijke selectie en het genetische coderen in

chomosomen.

Genetische algoritmes zijn reeds lange tijd aanwezig in de literatuur [30, 26], maar zijn

nog steeds niet 100% begrepen. Toch wordt algemeen aanvaard dat genetische algoritmes

zeer robuste algoritmes zijn, toepasbaar op een breed scala van problemen, zelfs deze met

zeer vele variabelen. Een nadeel van het relatief slechte begrip van GAs is dat ze meestal

als redelijk heuristisch overkomen (dit wegens de brede waaier aan mogelijke uitbreidingen,

en de bijbehorende parameters).

Het GA codeert de parameters van een te optimaliseren probleem (bijvoorbeeld als

een bitrij). De gecodeerde parameters noemt men het genotype, chromosoom of genoom.

Als we het genotype decoderen bekomen we het fenotype. Het GA werkt enkel op de

gecodeerde vorm van de parameters, niet op de parameters zelf. Er wordt gewerkt met

een verzameling van mogelijke oplossingen, die we de populatie noemen. De leden van de2Volgens de stelling van Maas. Dit is echter nog niet algemeen aangetoond.

11

Page 23: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

populatie noemen we individuen. Dit zijn de kandidaatoplossingen (waarvan we er dus

altijd een aantal bijhouden).

Initialiseer de populatieEvalueer de populatie

Pas selectie toe

Pas recombinatie toe om eennieuwe populatie te maken

Figuur 2.10: Het genetisch algoritme

De algemene lus van een GA zien we in figuur 2.10. Het algoritme start met het

initialiseren van de populatie met willekeurig gegenereerde individuen. Daarna evalueren

we elk van deze individuen. Het evalueren van een individu komt neer op het decoderen

van het genotype tot het fenotype, en dit fenotype te interpreteren als de parameters

van ons probleem. We definieren een maat voor hoe goed het probleem voldoet aan onze

wensen. Deze maat noemen we de geschiktheid (fitness in het Engels). De functie die de

parameters afbeeldt op hun geschiktheid noemt men de geschiktheidsfunctie. Deze functie

is van de vorm f(x) ∈ R met x de vector met de parameters (dus het fenotype).

Vervolgens selecteren we individuen, met een kans proportioneel met hun geschiktheid.

Deze individuen recombineren we om zo de nieuwe populatie te vormen. De recombinatie-

operaties zijn overkruisen (crossover) en mutatie (figuur 2.11). Deze operaties zullen met

een bepaalde probabiliteit toegepast worden. Bij het overkruisen worden er nieuwe indivi-

duen gecreeerd door genetische informatie uit twee individuen (de ouders) te combineren.

De nieuwe individuen worden de kinderen genoemd. Er zijn verschillende vormen van

overkruising mogelijk (zie fig 2.11). Zo is er de uniforme overkruising waar elke positie in

het genoom met even grote kans van elk van de ouders kan komen. Er is ook eenpunts-

overkruising. Hier worden beide genomen op dezelfde positie in twee stukken geknipt, en

worden de twee achterste stukken van de twee genomen omgewisseld. Er worden dus twee

kinderen gemaakt. Meestal wordt er willekeurig een van de twee gekozen. De mutatie-

operator tenslotte zal op een willekeurige positie van het genoom de waarde veranderen.

Na het vormen van de nieuwe populatie door de recombinatie operatoren zal de nieuwe

populatie geevalueerd worden. Al deze stappen worden herhaald tot er aan een bepaald

stopcriterium is voldaan.

Na een aantal iteraties (een iteratie noemt men een generatie), zal de populatie con-

vergeren. Hiermee bedoelen we dat alle individuen in de populatie ongeveer dezelfde

geschiktheid bereikt hebben en dat het evolutionaire proces beeindigd is3. Meestal wordt3Dit kunnen we alleen met zekerheid zeggen als het globale optimum is bereikt. In het andere geval is

12

Page 24: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Uniforme Overkruising

Een-punts Overkruising

1 0 0 0 1 0 1 1 0

0 1 1 0 0 1 0 0 1Ouder 2:

Ouder 1:

Kind:

1 0 0 0 1 0 1 1 0

0

1 1 0 0 0 0 0 0 1

1 2 1 1 2 2 2 21Masker:

Ouder:

Kind:

Mutatiepunt:

1 0 0 0 0 1 1 0

1 0 0 0 1 0 1 1 0

0 1 1 0 0 1 0 0 1Ouder 2:

Ouder 1:

Kind:

Overkuisingspunt:

1 0 0 0 1 1 0 0 1

Mutatie

Figuur 2.11: De recombinatie-operaties

deze convergentie gebruikt als eis voor het stoppen van het algoritme. Het is ook mogelijk

te stoppen na een vaste tijd, maar dan weet men niets over het al dan niet optimaal zijn

van de waarde op dat moment.

De parameters van een standaard GA bestaan dus uit: het type van coderen, de grootte

van de populatie, de kans op overkruising en op mutatie en het type van overkruising.

2.3 De machine

Voor het fysisch implementeren van het CoDi-1-bit neuraal model gebruikt men een drie-

dimensionale cellulaire ruimte die geımplementeerd is met herconfigureerbare hardware,

met name ‘Field Programmable Gate Arrays’ (FPGA’s). In deze sectie zullen we wat

dieper ingaan op de implementatie van de CBM. De originele beschrijving vindt men in

[36]. In figuur 2.12 ziet men de CBM en zijn interne delen.

er nog een kleine kans dat na een zekere tijd de populatie toch verder op zoek zal gaan naar het globaleoptimum.

13

Page 25: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Figuur 2.12: De CAM-Brain neurale computer

2.3.1 Cellulaire ruimte

Het CoDi-1-bit logisch model is geımplementeerd in een driedimensionale (3D) cellulaire

ruimte. Elke cel heeft 6 buren: achter, voor, boven, onder, links en rechts (dit noemt

men ook de von Neumann omgeving). In de CBM noteren we deze richtingen als N(orth),

S(outh), T(op), B(ottom), W(est), E(ast); deze volgorde wordt ook conventioneel gebruikt

om de configuraties van de cellen aan te geven. Alle verbindingen tussen de cellen zijn dus

lokaal (enkel met de buren van een cel). Elke cel bezit een (lokaal) configuratiewoord dat

aangeeft hoe de cel zal reageren om mogelijke inputsignalen.

Cellen In het logisch model zijn er drie types van cellen: axon-, dendriet- en neuroncel-

len. Bij de implementatie zijn er 2 types van cellen: gewone cellen en universele cellen.

Een gewone cel heeft tot doel de axon- en dendrietcellen te implementeren. Het confi-

guratiewoord van zulke cellen bestaat uit 6 bits die aangeven welke van de connecties met

de buren inputs zijn, en welke outputs. Een 0 in de eerste 6 bits staat voor een uitgang,

een 1 voor een ingang. Er zal pas effectief een verbinding zijn tussen twee naburige cellen

als de ene een ingang en de andere een uitgang heeft op die verbinding. Een in-in of uit-uit

combinatie zorgt dus niet voor een verbinding4. Een cel met bijvoorbeeld een configuratie

010000 zal een axonwerking hebben (1 ingang en 5 uitgangen), en de uitgang zal zich

vooraan (Zuid) bevinden. Is de configuratie 111011, dan hebben we te maken met een

dendrietcel (1 uitgang en 5 ingangen) die zijn uitgang langs onder heeft. We zullen verder

aantonen dat er via een groeifase voor gezorgd wordt dat enkel axon- en dendrietcellen4Dit wil niet zeggen dat er nooit signalen zullen binnenkomen of buitengaan via die zijde van de cel.

Zie module in- en uitgangen.

14

Page 26: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

voorkomen. Dus geen cellen met bijvoorbeeld 3 ingangen en 3 uitgangen, wat eigenlijk

wel mogelijk is binnen het cellulaire model (de hardware implementatie), maar niet past

in het neurale model.

Een universele cel zal ofwel een neuron implementeren ofwel als gewone cel dienen. Het

configuratiewoord van een neuron is dus een uitbreiding van dat van de gewone cel. Zo

worden onder andere de gewichten van de connecties opgeslagen, de interne huishouding

van het neuron, enzovoort. Welke de in- en uitgangen van het neuron zijn, wordt door de

eerste 6 bits aangegeven. Verder zijn er bij de huidige implementatie een aantal factoren

van het CoDi-1-bitmodel vast gekozen. Zo is de drempelwaarde ϑ voor alle neuronen gelijk

aan 2. Ook is de ondergrens van de accumulator vast gesteld op -8.

Het is mogelijk dat een gewone of universele cel niet gebruikt wordt (leeg is). Lege

cellen interageren niet met hun naburige cellen. Dit gebeurt indien alle connecties ingangen

zijn (111111) of als ze allemaal uitgangen zijn (000000).

Z

X

Y

neuron 0-7

neuron 8-15

neuron 16-23

neuron 24-31

neuron 88-95

neuron 1056-1063

neuron 1144-1151

Universele cel

Figuur 2.13: De 3x2x2 basiscellen

De gewone en universele cellen zijn gelijkmatig verdeeld in de ruimte volgens een

patroon van 3x2x2. In figuur 2.13 zien we hoe de basiscellen in de module verdeeld

zijn. De universele cel zit rechts achter onderaan, de andere cellen zijn gewone cellen.

15

Page 27: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Modules De 3D cellulaire ruimte wordt onderverdeeld in modules met een afmeting van

24x24x24 (zie figuur 2.14). De CBM kan gelijktijdig een module volledig parallel simuleren.

Een module vormt een toroıdale ruimte (voorvlak is verbonden met achtervlak, bovenvlak

met ondervlak, en linker vlak met rechter vlak). Dit noemt men ook ‘wrap around’.

Bijvoorbeeld signalen die de module lijken te verlaten via het bovenvlak, komen binnen

in het ondervlak.

Z

X

Y

0 1 2 3 4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23

24 25 26 27 28 29 30 31

32 33 34 35 36 37 38 39

40 41 42 43 44 45 46 47

48 49 50 51 52 53 54 55

56 57 58 59 60 61 62 63

128-135

136-143

184-191

64-71

72-79

Input

Output

80-87

88-95

96-103

104-111

112-119

120-127

144-151

176-183

168-175

160-167

152-159

Figuur 2.14: De ingangen en uitgagen van een CBM module

Een module bevat ook een aantal externe verbindingen om van buitenaf signalen in de

module te kunnen injecteren (externe ingangen van de module) en signalen uit de module

te kunnen uitlezen (uitgangen). Deze in- en uitgangen hebben vaste posities die we zien

in figuur 2.14. Deze externe verbindingen liggen op de verbindingen tussen twee wrap

around vlakken. Er zijn 4 uitgangen en 188 ingangen per module. Een uitgang zal vuren

als minstens een van de beide cellen vuurt (als beide cellen vuren is er geen verbinding

tussen de cellen). Het zelfde geldt voor de ingangen. Een extern ingangssignaal wordt aan

de cellen doorgegeven indien de cellen aan die kant een ingang hebben.

2.3.2 Fasen

De CBM heeft 2 werkingsmodi: de evolutiemodus (ook evolution mode, zie figuur 2.15)

en de uitvoeringsmodus (ook run mode, zie figuur 2.15). Tijdens de evolutiemodus zal via

een genetisch algoritme gepoogd worden om een module te trainen voor een opgegeven

probleem. De evolutiemodus bestaat uit de volgende drie fasen: de groeifase, de signaal-

fase, en de genetische fase. Tijdens de uitvoeringsmodus kan men meerdere modules in de

16

Page 28: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Evolutiemodus

Elke generatie

Zet de CBM in genetische modus

Verwerk alle individuen

Zet de CBM in groeimodus

Verwerk alle individuen

Zet de CBM in signaalmodus

Verwerk alle individuen voor alle timeslices

Uitvoeringsmodus

Zet de CBM in signaalmodus

Voor elke timeslice

Verwerk alle modules gedurende 1 timeslice

Figuur 2.15: De werking van de evolutiemodus en de uitvoeringsmodus

CBM inladen en deze met elkaar verbinden om zo complexere problemen op te lossen (de

modules worden dan een voor een uitgevoerd ). De uitvoeringsmodus gebruikt enkel de

signaalfase.

Nu worden de drie fasen iets uitgebreider besproken. Voor een volledige bespreking

van de werking van de verschillende fasen verwijzen door naar [36].

Groeifase De groeifase zal ervoor zorgen dat er in de module mooie axon- en dendriet-

bomen groeien. Dit doen we door vanuit de neuronen groeisignalen te sturen om zo vanuit

elk neuron een aantal axon- en dendrietbomen te laten groeien (axonboom aan uitgang

van neuron, dendrietboom aan ingang van neuron). Dit blijven we doen tot er geen bomen

meer groeien (alle axontakken raken aan dendriettakken). Bomen zullen nooit verbindin-

gen maken met bomen van hun eigen soort (axon-axon of dendriet-dendriet verbindingen).

De externe in- en uitgangen zullen ook bomen laten groeien om op die manier goede

connectiviteit met de module te bekomen. Op die manier wordt er ook voor gezorgd dat

ingangen enkel verbonden worden met dendrietbomen, en uitgangen met axonbomen. Niet

gebruikte in-uitgangen zullen dit niet doen.

De manier waarop de takken groeien wordt gestuurd door de genetische informatie van

de cellen. De groeifase zal dus het chromosoom (genotype) van een module omgezetten

naar zijn configuratiewoord (fenotype).

Het is gebleken dat de groeifase er in slaagt de zoekruimte te verkleinen. Men kan dit

intuıtief aanvoelen door te kijken naar de kans dat een pad ontstaat tussen twee neuronen.

Als er geen groeifase is, moet een aaneenschakeling van willekeurige cellen een verbinding

vormen (deze kans is klein). Als er echter een groeifase aanwezig is, gaat elk neuron vanzelf

op zoek naar naburige neuronen (de axon-dendrietbomen om correct te zijn) om mee te

connecteren.

17

Page 29: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Signaalfase Tijdens de signaalfase zal voor een bepaalde tijd een volledige module in de

CBM verwerkt worden (verwerken komt hier overeen met het simuleren van het CoDi-1-

bitmodel). De CBM gebruikt tijdsmultiplexering om grotere netwerken te simuleren. Elke

module wordt gedurende 96 klokpulsen gesimuleerd. De uitgangen van de module worden

bewaard, en vervolgens wordt een nieuwe module ingeladen.

Deze manier van werken zorgt ervoor dat circulaire connecties tussen modules steeds

een minimale vertraging van 96 klokpulsen hebben. Hierdoor is het eerder aangewezen elke

module te aanzien als verwerkingseenheid die met andere verwerkingseenheden verbonden

is (weinig terugkoppeling tussen modules, dus vertraging mag groot zijn, als ze maar op

voorhand gekend is), en niet als een groot neuraal netwerk (veel terugkoppeling tussen

modules, waarbij de vertraging eerder klein is).

Genetische fase Tijdens de genetische fase worden door middel van een genetisch al-

goritme nieuwe kandidaten gegenereerd die dan door een nieuwe groei- en signaalfase

geevalueerd worden. De uitvoer van elke module wordt vergeleken met een gewenst uit-

gangssignaal. Op die manier berekenen we de geschiktheid van een module. De geschikt-

heid is een getal dat aangeeft hoe goed een module de gevraagde taak uitvoert.

Een deel van de genetische fase zal op de computer gebeuren die de CBM aanstuurt.

Dit is een gewone PC en noemen we de host-computer5. In 2.4 zullen we hier dieper op

ingaan.

2.3.3 Ondersteunende onderdelen

Er zijn ook een aantal hulpeenheden aanwezig in de CBM die de verwerking van de signalen

mogelijk maken. Wij bespreken hier enkel diegene die verder in deze thesis nodig zijn.

Voor een diepergaande bespreking verwijzen door naar [36].

Modulegeheugen Op de CBM is een grote hoeveelheid gedistribueerd geheugen aan-

wezig. In dit geheugen zitten de modules gedistribueerd opgeslagen. De beschrijving van

een module bevat niet enkel het genotype, maar ook alle toestanden van de cellen. Hier-

door is de beschrijving van een module nogal groot (91.008 bits). Omdat er veel geheugen

aanwezig is, is het mogelijk om zeer veel modules (64.640) ‘tegelijk’ te simuleren. De

modules worden een voor een uit het geheugen gehaald, voor 96 klokcycli gesimuleerd, en

daarna opnieuw in het geheugen gestoken. Wegens de grootte van de beschrijving van de

module moeten dus zeer veel gegevens getransporteerd worden van het geheugen naar de

FPGAs en omgekeerd. Wegens de beperkte bandbreedte van het geheugen (dit is al deels

opgelost door het gedistribueerde karakter) duurt dit dus een zekere tijd. Via pijplijnen5Dit omdat de host-computer effectief door de gebruiker wordt bediend, en de CBM als een uitbreiding

van de host-computer wordt aanzien (coprocessor).

18

Page 30: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

wordt ervoor gezorgd dat tijdens het simuleren van de huidige module de gegevens van de

vorige module worden weggeschreven, terwijl de volgende reeds worden ingelezen.

In [50] is ook duidelijk naar voor gekomen dat vooral bandbreedteproblemen bepalend

zijn voor de tijdsduur van een timeslice. Indien het geheugen sneller zou zijn (of de

beschrijving van een module kleiner), dan zou een module sneller ingeladen kunnen worden,

waardoor we sneller naar een nieuwe module zouden kunnen overschakelen. Door het

verkleinen van de duur van een timeslice zou het negatieve effect van het niet parallel

uitvoeren van de verschillende modules verminderd kunnen worden.

0 50 100 150 200 250 300 350 400 450 500

Spi

ke

Time

Figuur 2.16: Een pulstrein op de CBM

Pulstreingeheugen en netlijsteenheid Alle communicatie van en naar modules, en

alle communicatie tussen modules onderling, gebeurt via het pulstreingeheugen. Een

pulstreineenheid is 96 klokcycli6 lang. In figuur 2.16 zien we een typische pulstrein op de

CBM. Deze eenheden zijn adresseerbaar met hun Pulstrein Identificatie (SID van Spike-

train ID). De lengte van een eenheid komt overeen met de lengte van een timeslice. Wil

men langere ingangspulstreinen voor de CBM gebruiken, dan zullen deze uit meerdere

timeslices bestaan (en daardoor ook in verschillende stukken gesimuleerd worden).

uitganspulstreineningangs- en doelpulstreinen

voor intern gebruik door de gebruiker bepaald

NID:

SID:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1918

220221190320170 354190190220221227225170 170310 342

Figuur 2.17: De netlijsteenheid

De pulstreinen zelf worden door middel van de netlijsteenheid aan een module gekop-

peld. De netlijst is dus een grote tabel waarin staat welke pulstreinen met welke in- of

uitgangen van de module zijn verbonden. In de netlijsteenheid zijn verschillende netlijs-

ten aanwezig. Elk van deze netlijsten heeft een Netlijst Identificatie (NID). Een netlijst

bestaat uit 196 SIDs: 4 ingangspulstreinen, 188 uitgangspulstreinen en 4 doelpulstreinen,6In deze thesis gebruiken we het woord pulstrein ook voor pulstreinen met willekeurige lengte. De

context geeft meestal aan wat we bedoelen.

19

Page 31: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

elk aan een vaste ingang of uitgang van de module gekoppeld. Dit zien we verduidelijkt

in figuur 2.17.

Sommige (de eerste) NIDs zijn vast en door het systeem bepaald. Ze worden ofwel

niet gebruikt, ofwel dienen ze om de groeifase te sturen. De andere netlijsten worden

door de gebruiker bepaald. Er zijn twee modi waarin de CBM gebruikt kan worden: de

evolutiemodus en de uitvoeringsmodus. Elk van deze modi heeft zijn eigen manier om de

netlijsten te gebruiken.

0

219220221222223224225

pulstreinen voor intern gebruik

timeslice van de 1ste pulstrein van 1ste moduletimeslice van de 2de pulstrein van 1ste moduletimeslice van de 3de pulstrein van 1ste moduletimeslice van de 1ste pulstrein van 2de moduletimeslice van de 2de pulstrein van 2de moduletimeslice van de 1ste pulstrein van 3de module

...

PID

01234

netlijsten voor intern gebruik

netlijst voor module 1netlijst voor module 2netlijst voor module 3

...

NID

Figuur 2.18: Het pulstreingeheugen en netlijst tijdens de uitvoeringsmodus

In de uitvoeringsmodus is het mogelijk om verschillende modules ‘tegelijk’ te simuleren.

In figuur 2.18 zien we een voorbeeld van het pulstreingeheugen en de netlijst in deze

modus. Er zijn 3 modules ingeladen, module 1 heeft 3 pulstreinen, module 2 heeft er

2, en module 3 heeft 1 pulstrein. Elk van de pulstreinen is maar 1 timeslice lang. Elke

module heeft zijn eigen netlijst. In deze netlijst zitten de SIDs die ervoor zorgen dat de

module verbonden kan worden met andere modules (communicatie tussen modules gebeurt

via het pulstreingeheugen), en de SIDs die verwijzen naar in- en uitgangspulstreinen die

de gebruiker heeft opgegeven. Interconnectie tussen twee modules komt tot stand door

een uitgangspulstrein van een module als ingangspulstrein voor een andere module te

kiezen (zelfde SID). Het aantal pulstreinen dat een module benut is afhankelijk van het

aantal verbindingen met de rest van het netwerk als ook van de hoeveelheid externe in-

en uitgangen. Nadat de 96 klokcycli van de module doorlopen zijn, wordt de huidige

NID met een verhoogd zo dat we de volgende netlijst hebben. Deze netlijst is van de

nieuwe module, die nu gesimuleerd kan worden. De host-machine krijgt dan de kans

om de uitgangspulstreinen van de vorige timeslice (en de vorige module) uit te lezen.

De host-machine krijgt dus geleidelijk aan, pulstreineenheid per pulstreineenheid, data

binnen van elk van de modules. Omdat er telkens per timeslice wordt gesimuleerd is

er maar een timeslice van elke pulstrein aanwezig in het geheugen van de CBM. Na het

uitvoeren van een timeslice moet de nieuwe timeslice van de ingangspulstreinen naar de

CBM gekopieerd worden. Dus na het simuleren voor een duur van 96 klokcycli worden

20

Page 32: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

alle ingangspulstreinen ververst, en alle uitgangspulstreinen uitgelezen. Hierdoor is het

mogelijk om de CBM als een ware-tijd I/O systeem te gebruiken.

0

219220221222223224225

pulstreinen voor intern gebruik

1ste timeslice van de 1ste pulstrein2de timeslice van de 1ste pulstrein3de timeslice van de 1ste pulstrein1ste timeslice van de 2de pulstrein2de timeslice van de 2de pulstrein3de timeslice van de 2de pulstrein

...

PID

01234

netlijsten voor intern gebruik

netlijst voor timeslice 1netlijst voor timeslice 2netlijst voor timeslice 3

...

NID

Figuur 2.19: Het pulstreingeheugen en netlijst tijdens de evolutiemodus

Tijdens de evolutiemodus zijn er ook meerdere modules aanwezig in de CBM. Nu maken

ze echter allemaal deel uit van een populatie die een bepaald doel probeert te bereiken door

optimalisatie met een GA. Het is niet nodig om voor elk van de modules een aparte NID te

voorzien. Dit omdat we dezelfde in- en uitgangspulstreinen bij elk van de individuen gaan

gebruiken. Het is nu echter wel mogelijk om een module gedurende meerdere timeslices in

de CBM te simuleren. Hierdoor kunnen we langere pulstreinen aanleren. Figuur 2.19 toont

hoe de pulstreinen en de netlijsten in de evolutiemodus georganiseerd worden. Er zijn 3

pulstreinen ingeladen, van elk 3 timeslices. De organisatie is als volgt: de gegevens van

de langere pulstrein slaan we op in het pulstreingeheugen. De opeenvolgende tijdsdelen

krijgen opeenvolgende SIDs. Bij uitvoering worden de NIDs nog steeds verhoogd na elke

96 klokcycli, maar nu zal de module niet vervangen worden. De nieuwe netlijst zal de

SIDs bevatten van de volgende timeslice (maar wel van dezelfde pulstreinen). Pas nadat

alle netlijsten zijn doorlopen (evenveel netlijsten als timeslices) zal een nieuwe module

ingeladen worden.

De eerste 220 pulstreinen zijn voor intern gebruik gereserveerd (zoals in figuur 2.19

aangegeven). Deze pulstreinen bestaan onder andere uit een lege pulstrein (allemaal nul-

len) om aan ongebruikte ingangen te koppelen, 188 ‘afval’ pulstreinen om aan ongebruikte

uitgangen te hangen (een open uitgang is hardwarematig niet mogelijk), pulstreinen voor

het implementeren van het groeialgoritme en ook een aantal ongebruikte pulstreinen (voor

mogelijke uitbreidingen).

Geschiktheidsevaluatie-eenheid Om een snel trainingsalgoritme mogelijk te maken,

worden de verschillende kandidaatoplossingen door de CBM zelf geevalueerd. Dit gebeurt

door de geschiktheidsevaluatie-eenheid (FEU van ‘Fitness Evaluation Unit’). Tijdens het

simuleren van een module zal de FEU de uitgangen van de module aftappen en deze verge-

lijken met de gewenste (opgegeven) waarde. Het vergelijken gebeurt niet door de Hamming

21

Page 33: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

afstand tussen de twee pulstreinen te berekenen, maar wel door eerst beide pulstreinen

om te zetten naar hun gequantiseerde analoge waarde (zie hoofdstuk 3). Dan wordt de

fout tussen beide signalen bepaald. De waarde van deze fout zal dan de geschiktheid van

de module bepalen.

Omdat het omzetten van de pulstreinen in hardware gebeurt is de manier waarop we

dit kunnen doen redelijk beperkt. In hoofdstuk 3 komen we hier zeker nog op terug. Daar

zullen we aanduiden hoe deze eenheid eventueel verbeterd kan worden (dit is mogelijk

omdat ook de FEU op een FPGA is geımplementeerd).

CBM centrale verwerkingseenheid De CBM is niet enkel een neuraal netwerk, maar

ook een echte computer met een verwerkingseenheid (CPU), en niet slechts een, maar zelfs

twee. Elk van deze CPUs zorgt voor een ander deel van de besturing van de CBM. Een voor

het besturen van de cellulaire ruimte, en een voor de besturing van de FEU, de netlijsteen-

heid en het pulstreingeheugen. Deze CPU’s zijn wel geen algemene verwerkingseenheden,

want ze doen geen rekenwerk. Zo is het niet mogelijk om te vermenigvuldigen en derge-

lijke. De CPUs zijn eerder eindige automaten die gebruikt worden voor de verschillende

eenheden van de CBM te besturen en te voorzien van de nodige informatie om de verwer-

king van signalen mogelijk te maken. Toch bestaat er een heuse assembler-taal voor elk

van deze processoren met een instructieset van ongeveer 45 instructies.

De opdracht om de CBM een bepaalde taak te laten uitvoeren, bestaat dus uit 2

programma’s die naar de CBM worden gestuurd vanuit de host-machine. Op de CBM

zullen beide programma’s , elk op een van de CPU’s, uitgevoerd worden en zo de gewenste

opdracht vervullen.

2.3.4 Cijfergegevens

In tabel 2.1 zien we enkele belangrijke cijfergegevens van de CBM samengevat.

De cellulaire ruimte is geımplementeerd op 72 kaarten, met op elke kaart een FPGA

(Xilinx XC6264) en wat geheugen (16 Megabyte). Elke kaart implementeert een deel van

de cellulaire ruimte. Al deze kaarten zitten op een moederbord dat zorgt voor de interne

verbindingen tussen de verschillende delen van de ruimte.

Het pulstreingeheugen is 2 Megabyte groot, dus is er plaats voor 131.000 pulstreinen.

De netlijsteenheid is 64 Megabyte groot, daarin passen 65.000 netlijsten.

2.4 Genetische lus op de CBM

In deze sectie worden een aantal uitbreidingen van het standaard GA toegelicht die door

de CBM gebruikt worden.

• Er zijn twee types van selectie voorhanden, de reeds vernoemde geschiktheidspropor-

tionele selectie, en de rangordeselectie. Bij de rangordeselectie worden de individuen

22

Page 34: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Totaal aantal cellen per module 13.824 (24x24x24)Max. aantal neuronen per module 1.152Aantal ingangen per module 4Aantal uitgangen per module 188Lengte van een tijdsdeel 96 klokcycliMax. aantal modules 64.640Max. aantal cellen (totaal) 893.583.360Max. aantal neuronen (totaal) 74.465.280Max. aantal cellaanpassingen per seconde 152 miljard cellen/sMin. aantal cellaanpassingen per seconde 114 miljard cellen/sMax. datadoorvoersnelheid op neuronen niveau 13,5 Gigabyte/sMax. datadoorvoersnelheid op cellen niveau 40,8 Gigabyte/sMax. datadoorvoersnelheid tussen modules 74 Megabyte/sAantal FPGA kaarten 72Totaal genotype/fenotype geheugen 1,18 GigabyteChromosoom lengte 91.008 bits (11.376 bytes)Stroomverbruik 1,5 Kilowatt (5 V, 300 A)

Tabel 2.1: Technische specificaties van de CAM-Brain Machine

in de populatie gesorteerd volgens hun geschiktheid. Daarna wordt door middel

van een functie (meestal lineair, maar kan ook exponentieel zijn) een (oplopende)

rang toegekend aan elk van de individuen in de gesorteerde volgorde. Er wordt dan

selectie toegepast proportioneel met de rang van het individu7. De reden waarom

men deze selectie gebruikt is om vroegtijdige convergentie te voorkomen. Veronder-

stel dat redelijk vroeg in het GA proces een individu wordt gevonden met een veel

hogere geschiktheid dan de rest van de populatie. In het geval van geschiktheidspro-

portionele selectie is de kans zeer groot dat na korte tijd de hele populatie bestaat

uit dit beste individu. Dit kan ervoor zorgen dat het algoritme in een sub-optimale

oplossing vastloopt. De rangordeselectie zorgt ervoor dat de plotse uitschieters niet

proportioneel veel selectieprobabiliteit krijgen, maar een maximale selectieprobabi-

liteit gegeven door de rangordefunctie. Hierdoor kan het gevaar van vroegtijdige

convergentie (deels) vermeden worden.

• Er is de mogelijkheid voorzien om elites te definieren. Elites zijn de beste individuen

van de populatie die zonder meer naar de nieuwe populatie mogen migreren. Ze zijn

dus niet onderhevig aan selectie of genetische operatoren. Elites zorgen ervoor dat

de beste oplossingen niet per ongeluk (door het selectieproces) verloren gaan. De

elites in de oude populatie zullen echter wel nog meedoen aan het selectieproces om

de rest van de nieuwe populatie op te vullen.7Deze proportionele selectie kan vergeleken worden met een roulette wiel waarop ieder individu een

aantal hokjes krijgt omgekeerd evenredig met zijn rang. Als er dan aan het rad wordt gedraaid en hetballetje valt in het hokje van een bepaald individu, dan selecteren we dat individu.

23

Page 35: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

• In de CBM zal het evolutionaire proces pas stoppen na een vast aantal generaties.

Er wordt niet getest op convergentie.

Groei-

fase

Signaal-

fase

Genetische

fase

Selectie

CBMHost

Genotypes

Fenotypes

Fenotypes

Geschiktheid

Geschiktheidsdata

Genetische

algoritmes

Genotypes

Kinderen

Figuur 2.20: De genetische lus van de CBM

De genetische lus wordt niet volledig door de CBM afgehandeld, maar gebeurt ook

deels op de host-computer. In figuur 2.20 zien we hoe deze verdeling gebeurt.

De host-machine staat in voor het willekeurig initialiseren van de populatie en de

verschillende maskers. Deze maskers worden op de CBM gebruikt om overkruising en

mutatie te implementeren. Deze maskers moeten op voorhand door de host-machine

gemaakt worden omdat de CBM geen willekeurigegetallengenerator bevat8.

De host-machine maakt het programma aan voor de CBM waarin beschreven staat

wat de CBM moet doen tijdens de volgende generatie.

De CBM zal zelf de verschillende individuen in de populatie evalueren. Daarna stopt

het programma, en kan de host-machine de geschiktheidswaarden van de verschillende

individuen uitlezen. De host-machine zal dan de selectieoperator gebruiken om te bepalen

hoe de nieuwe populatie opgebouwd moet worden. Met deze informatie wordt een nieuw

programma samengesteld voor de CBM en de CBM zal dit nieuwe programma uitvoeren.

In het programma wordt de CBM eerst in de genetische fase gezet waarna de huidige popu-

latie door middel van overkruising en mutatie omgevormd wordt tot de nieuwe populatie.

Dan schakelt de CBM over naar groei- en signaalfase om de nieuwe populatie te evalue-8Als hij wel een willekeurige generator zou bevatten, zou deze ook parallel geımplementeerd moeten

worden om geen bottleneck te vormen.

24

Page 36: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

ren. Tenslotte leest de host-computer terug de geschiktheidswaarden uit, en herhaalt het

volledige proces zich.

Dit proces wordt tussen de CBM en de host-machine verdeeld uit snelheidsoverwegin-

gen. De genetische operaties van zeer lange chromosomen kunnen sneller gebeuren op de

parallelle architectuur van de CBM, terwijl de sequentiele aard van een sorteeralgoritme

veel sneller kan op sequentiele hardware zoals de processor van de host-machine.

25

Page 37: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Hoofdstuk 3

Pulstreincodering

CBManaloog pulstrein pulstrein analoog

Figuur 3.1: Pulstreinconversie en -reconstructie voor de CBM

De CBM werkt intern volledig met 1-bitsignalen (pulstreinen). De antwoordpulstreinen

van een module bestaan dus uit sequenties van nullen en enen. De gebruiker wil deze

bitstroom echter niet als een bitstroom bekijken, maar als een analoge golfvorm. De vraag

is dan hoe we de output moeten interpreteren. Een tweede probleem is dat de meeste

signalen die men als input aan de CBM wil aanleggen ook meestal analoge golfvormen

zijn. Maar hoe doen we best een conversie van analoge golfvorm naar pulstrein? In dit

hoofdstuk zullen we een antwoord geven op beide vragen.

We beginnen met een introductie uit de neurobiologie. In deze wetenschapstak is men

immers reeds lange tijd bezig met het probleem van pulstreinconversie en -reconstructie.

Daarna bespreken we de oude methodes die op de CBM gebruikt werden voor pulstreinco-

dering. Daarna verbeteren we deze methodes en introduceren een aantal nieuwe concepten.

We eindigen met een qualitatieve vergelijking van de verschillende conversiemethodes.

3.1 Pulstreincodering volgens de neurobiologie

Neurobiologen doen reeds lange tijd onderzoek naar de neurale code van onze hersenen.

In deze tak van de wetenschap is men al ver gevorderd. [45] geeft een zeer goede beschrij-

ving van de verschillende manieren om de biologische neurale code te ontcijferen. In [38]

worden dezelfde methodes besproken, maar nu echter met als doel ze te gebruiken voor

berekeningen. De belangrijkste van deze methodes zullen we nu bespreken.

Het algemene idee achter pulstreinconversie is om gebruik te maken van de aanwezige

informatie, en deze te correleren met de gecodeerde informatie. De informatie zit zowel in

het tijds- als in het ruimtedomein. Een enkele verbinding tussen 2 neuronen voert tijdsin-

26

Page 38: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Figuur 3.2: Een (klein) aantal neuronen uit de cortex

Figuur 3.3: De tijd-ruimte-informatie van 30 naburige neuronen [38]

formatie, maar verschillende naburige verbindingen die een deel van de informatie dragen

zorgen voor de ruimtedimensie. In figuur 3.4 zien we een grafiek van de uitgangspulstrei-

nen van 30 naburige reele neuronen (we zien dat er een duidelijk verband bestaat tussen

de uitgangspulstreinen van sommige neuronparen). Er is dus niet alleen informatie opge-

slagen in de pulstrein zelf, maar ook in de verbanden tussen de pulstreinen van naburige

verbindingen.

3.1.1 Frequentiecodes

Bij de frequentiecodes (in het Engels rate codes) wordt niet gekeken naar individuele

pulsen, maar naar het gemiddelde gedrag van de neuronen of de gemiddelde vuursnelheid.

Er zijn verschillende manier waarop men de gemiddelde vuursnelheid kan definieren.

27

Page 39: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Gemiddelde over de tijd Men spreekt hier ook over het temporeel gemiddelde. Dit is

traditioneel de meest gebruikte methode. Het temporele gemiddelde wordt gedefinieerd

als

ν =nsp(T )

T

met T een vast tijdsinterval en nsp(T ) het aantal pulsen dat voorkomt in dat tijdsdeel.

Bij reele neemt men T meestal van de orde 100 a 500 milliseconden. De eenheid van het

temporele gemiddelde is Hz.

Deze methode is reeds meer dan 80 jaar in gebruik en heeft tot zeer mooie resultaten

geleid. Ze houdt echter totaal geen rekening met het exacte ogenblik waarop de pulsen

optreden. De grootste kritiek op deze methode is de grote vertraging die geıntroduceerd

wordt. Een vlieg kan reageren op visuele stimuli binnen de 30-40 ms. Het is dus onmogelijk

dat de neuronen een tijdgemiddelde gaan berekenen voor ze een beslissing nemen, daardoor

zouden ze veel te traag worden.

Het temporele gemiddelde werkt wel zeer goed voor signalen die constant zijn of niet te

snel veranderen. Dit type signalen komt misschien veel voor in experimentele opstellingen

(zoals veel van de goede resultaten die met deze methode bekomen zijn), maar in de ‘echte

wereld’ moeten de netwerken op veel kleinere tijdsschalen kunnen werken.

Gemiddelde over verschillende uitvoeringen Bij deze methode worden dezelfde sti-

muli verschillende keren aangelegd. De resulterende pulstreinen worden dan uitgemiddeld

over de verschillende uitvoeringen. Hier introduceren we ook een kleine ∆t waarbinnen we

de pulsen ook temporeel uitmiddelen. Deze ∆t kan nu echter veel kleiner zijn waardoor

we veel snellere veranderingen kunnen waarnemen.

Het grote nadeel bij deze methode is dat ze enkel in experimentele opstellingen enig nut

heeft, en zeker niets vertelt over hoe de neuronen intern werken. Een verbetering zou zijn

als er verschillende identieke neuronen in het systeem aanwezig waren. In plaats van uit te

middelen over verschillende uitvoeringen kunnen we nu uitmiddelen over de verschillende

neuronen. Dit brengt ons tot de derde methode.

Gemiddelde over verschillende neuronen Bij deze methode wordt ervan uitgegaan

dat er populaties van neuronen bestaan met zeer gelijkaardige karakteristieken. Men

definieert de populatie activiteit als:

A(t) =nact(t; t + ∆t)

N∆t

met N het aantal neuronen in de populatie en ∆t een kleine tijd waarover we uitmiddelen.

nact(t; t + ∆t) geeft het aantal neuronen dat actief is tussen tijd t en t + ∆t.

In de natuur zijn populaties van neuronen met vergelijkbare eigenschappen gevonden.

Op deze neuronen kan dit systeem dus toegepast worden. Deze populaties zijn echter

klein, en wijken nog sterk af van de homogeniteitseis die verondersteld werd.

28

Page 40: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

3.1.2 Pulscodes

De pulscodes werken direct met de timing van de verschillende pulsen. Hierdoor is er

veel meer informatie beschikbaar. Men kan kijken naar de tijd tussen twee pulsen en de

correlatie tussen pulsen van verschillende neuronen. We bespreken echter enkel de methode

van stimulusreconstructie.

Figuur 3.4: Het zoeken van een filter geschikt voor stimulusreconstructie [38]

Stimulusreconstructie In plaats van uit te middelen in de tijd of in de ruimte, kunnen

we ook uitmiddelen over verschillende herhalingen van dezelfde stimulus. We gaan op

zoek naar een stimulussequentie die ervoor zorgt dat het neuron vuurt. Wat we doen is

een bepaald tijdsvenster van de stimulus voor de vuurtijdstippen uitmiddelen. Dit proces

kunnen we zien in figuur 3.4. Men noemt dit omgekeerd correleren. In de literatuur is

gebleken dat de bekomen stimulus gebruikt kan worden voor lineaire reconstructie van sti-

muli. Dit wil zeggen dat men, door de bekomen stimulusvensters uit te middelen telkens

een puls optreedt, de originele stimulus met redelijk fout kan benaderen. Het uitgemiddel-

de stimulusvenster kan dus aanzien worden als een filter. Door convolutie van de pulstrein

met de het filter bekomt men een benadering van de stimulus.

De stimulusreconstructiemethode kan eigenlijk aanzien worden als een frequentiecode,

maar dan met een zeer ingenieus gekozen tijdsvenster waarbinnen de pulsen uitgemiddeld

worden. Dit is slechts een voorbeeld, maar algemeen geldt dat de grens tussen frequentie-

en pulscodes dikwijls zeer vaag is.

3.2 De oude methode

Op de CBM is het mogelijk om analoge stimuli om te zetten naar een pulstrein, en een

pulstrein terug naar een ‘stimulus’ (eerder een analoge uitgang). De stimulus en uitgang

van de CBM bestaan uit gediscretiseerde en gequantiseerde golfvormen.

29

Page 41: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

3.2.1 SIIC

SIIC (Spike Information Interval Coding) werd geıntroduceerd in [37]. Het is een algo-

ritme om een pulstrein om te zetten in een golfvorm. Zoals we in de vorige sectie gezien

hebben, kan dergelijke stimulusreconstructie gebeuren door middel van een convolutie van

de pulstrein met een goed gekozen filter. Hier zullen we echter het filter vast kiezen, en de

conversie van de stimuli naar de pulstreinen doen met dit filter in het achterhoofd. Om-

dat we nu spreken over gediscretiseerde data zullen we voor de reconstructie een discrete

convolutie moeten gebruiken (en natuurlijk ook een discreet filter). SIIC is dus eigenlijk

niet anders dan voor discrete filtering. Deze convolutie noteren we als:

x(n) =N∑

k=0

f(k)u(n − k)

met f het filter, u de pulstrein en x de gereconstrueerde golfvorm. N is de lengte van het

filter. In de digitale signaalverwerking is dit ook gekend als een FIR1 filter. Voor de CBM

ligt N vast op 24 (dit omdat SIIC in hardware geımplementeerd is; het wordt namelijk

gebruikt bij de geschiktheidsevaluatie).

Zeer belangrijk bij deze methode is de keuze van het filter. Dit zal namelijk bepalen

welke bandbreedte effectief doorgelaten kan worden. Het filter zal ook bepalen wat de

quantisatiefactor van de ingangs- en uitgangsgolfvormen is. Hier komen we op terug in

3.3.

1 0 1 1 1 1 0 0 1 11 2 3 2 1

0 0 0 0 01 2 3 12

1 2 3 2 11 2 3 2 1

1 32 2 10 0 0 0

0 0 01 2

11 2 4 5 7 8 8 6 4 4

pulstrein

filter

resultaat

Figuur 3.5: Een voorbeeld van het SIIC-algoritme

In figuur 3.5 zien we het SIIC-algoritme aan het werk. Als ingang hebben we de

pulstrein 1011110011, het filter is 12321, en als uitgang bekomen we 1245788644. Het

algoritme gaat als volgt: kijk naar de eerste sample van de pulstrein, is deze een, noteer

dan het filter beginnende van deze positie, is het een nul, noteer dan niets (of allemaal

nullen). Schuif door naar de volgende sample van de pulstrein. Doe hier hetzelfde. Blijf1FIR staats voor Finite Impulse Response. Het is een klasse van filters met een eindig impulsantwoord.

30

Page 42: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

dit doen tot alle samples van de pulstrein zijn overlopen. Sommeer nu alle filterwaarden

die onder elkaar geschreven staan. Het resultaat is de uitgang van het SIIC-algoritme.

3.2.2 HSA

HSA (Hough Spiker Algorithm) werd geıntroduceerd in [33]. Dit algoritme heeft conver-

teert een stimulusgolfvorm naar een pulstrein die dan door de CBM kan verwerkt worden.

Dit type van algoritmes komt niet voor in de neurobiologische literatuur (omdat men daar

de neurale code wil begrijpen, niet een nieuwe code maken). Het is een heuristisch algorit-

me dat wel doet wat het zou moeten doen, maar dat ons geen diepere inzichten oplevert

in de wijze waarop de codering echt gebeurt.

1 2 4 5 7 8 68 4 41 2 3 2 1

1 2 3 12

1 2 3 2 1

1 2 3 2 1

1 2 3 2 1

1 2 3 2 1

1 2 3 2

1 2 3

1 2

1

0 0 1 3 6 8 8 46 4

4 4

4 4

4 4

4

6

6

80 0

0

0

0 0 0 0

000

0 0

1 3 6 8

1 3 6 7

1 3 5 5

10 2 3 3

0 0 0 00 0 0 0

0 0 0 0 0 0 0 0

0 0 0 00 0 0 0

00000000

0 0 0 00 00 0 0 0

0

1 3

1 3

1 3

1

stimulusfilter

na het aftrekken

filter is kleiner dan stimulus dus puls

filter is groter dan stimulus dus geen puls

1

0

1

1

1

1

0

0

1

1

pu

lstr

ein

filter is groter dan stimulus dus geen puls

filter is groter dan stimulus dus geen puls

filter is kleiner dan stimulus dus puls

filter is kleiner dan stimulus dus puls

filter is kleiner dan stimulus dus puls

filter is kleiner dan stimulus dus puls

filter is kleiner dan stimulus dus puls

filter is kleiner dan stimulus dus puls

Figuur 3.6: Een voorbeeld van het HSA-algoritme

Het idee achter HSA is om het omgekeerde te doen van wat SIIC doet. In figuur 3.6

zien we hier een voorbeeld van. Het resultaat dat we daarnet bekomen hebben bij het

voorbeeld van SIIC proberen we nu terug om te zetten naar een pulstrein. Omdat we net

het omgekeerde van SIIC willen doen, zullen we in plaats van progressief de filterwaarden

op te tellen tot we het uiteindenlijke signaal bekomen, nu progressief filterwaarden van

het signaal aftrekken totdat er uiteindelijk slechts een nulsignaal overblijft.

In het voorbeeld zien we dat we het filter vooraan onder het signaal hebben geschre-

ven. Als het filter in elke filterwaarde kleiner is dan of gelijk is aan de overeenkomstige

signaalwaarde, dan kunnen we veronderstellen dat SIIC op dit ogenblik een puls zag, en

31

Page 43: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

een maal de filter optelde bij het signaal. We kunnen dus een puls uitsturen, en het filter

van het signaal aftrekken. Het resulterende signaal zullen we nu opnieuw op deze manier

verwerken. We schuiven een sample op, noteren het filter onder het signaal en kijken of

het kleiner is dan het signaal. We zien nu dat het filter in de eerste 2 waarden groter is dan

het signaal, we sturen dus geen puls uit, en laten het signaal onveranderd. Dit blijven we

doen tot het einde van het signaal. De resulterende pulstrein (1011110011) komt perfect

overeen met wat het SIIC algoritme origineel als ingang kreeg.

We zien dus dat HSA effectief de omgekeerde berekening kan uitvoeren van SIIC. We

zijn er hier echter wel van uitgegaan dat we geen fouten moeten maken. Alle informatie die

in het signaal zat, hebben we kunnen omzetten naar de pulstrein. In de meeste realistische

signalen is dit echter niet zo, en zullen we een bepaalde fout maken. Deze moet natuurlijk

zo klein mogelijk zijn.

Het HSA algoritme zelf is een kleine variant van het voorgaande voorbeeld. Daarbij

wordt de fout van het signaal ten opzichte van het filter berekend. Door middel van een

drempelwaarde kunnen we dan beslissen of we een puls sturen of niet. Het algoritme gaat

als volgt:

Voor elke sample iZet de fout op nulVoor elke filtersample j

Als de sample (i+j) kleiner is dan filtersample jDan tel het verschil (filter-sample) op bij de fout

Als de fout kleiner of gelijk is aan de drempelwaardeStuur een puls uitVoor elke filtersample jTrek filtersample j af van sample (i+j)

In ons voorbeeld was de drempelwaarde gelijk aan nul. Dit is in de literatuur en bij de

implementatie van de CBM steeds stilzwijgend aangenomen [33]. In 3.4.1 zullen we echter

zien dat deze veronderstelling niet optimaal is. Nul is enkel een goede keuze voor de

drempelwaarde indien we weten dat de conversie foutloos kan (zoals in het voorbeeld).

Als we echter fouten moeten maken (alle reele signalen) , is het beter een andere waarde

voor de drempelwaarde te kiezen.

3.3 Het filter

Het filter dat standaard op de CBM gebruikt wordt, werd door een GA gevonden [16]. Als

geschiktheidsmaat maakte men gebruik van twee arbitrair gekozen functies die zo goed

mogelijk benaderd moesten worden. We kunnen reeds op voorhand twee zaken stellen

over dit filter. Het filter is niet optimaal en bevat nog ruis. Ten tweede werkt het filter

beter bij functies waarvoor het getraind is dan bij andere. Deze twee stellingen zullen we

verder bespreken.

32

Page 44: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Eerst moeten we nog een aantal beperkingen vermelden. De geschiktheidsevaluatie ge-

beurt intern in de CBM. De geschiktheid van een module is het verschil tussen de analoge

golfvormen van de gewenste en de eigenlijke uitvoer van de module. De CBM werkt echter

met pulstreinen, dus moet de conversie (SIIC) binnen de CBM kunnen gebeuren. Er zijn

twee redenen waarom men gekozen heeft voor deze aanpak. Een eerste is een snelheids-

overweging. Als, na elke generatie, alle antwoordpulstreinen van al de modules naar de

host-computer gestuurd moeten worden, zou dit een sterke vertraging introduceren. Een

tweede reden is dat het filteren van de pulstreinen voor men ze vergelijkt het GA helpt

bij de evolutie. Dit komt omdat het geschiktheidslandschap dan veel glooiender wordt.

Men kan dit intuıtief inzien door te kijken wat er gebeurd als men de fout tussen twee

pulstreinen zou bepalen door middel van de Hamming-afstand. Als een bepaalde puls een

kleine vertraging heeft ten opzichte van de gewenste puls, dan is deze puls fout, ongeacht

de geıntroduceerde vertraging. Als we de pulstreinen filteren, en dan vergelijken, smeren

we de pulsen eigenlijk uit. Als twee pulsen perfect overeenkomen, is de fout nul. Als er

echter een vertraging is op de antwoordpulstrein, dan zal de fout stijgen met de lengte van

de vertraging. Op die manier is er geen goed-fout vergelijking van de pulstreinen, maar

eerder een geleidelijke vergelijking. De fout vermindert gradueel naarmate de pulstreinen

beter en beter overeenkomen. Dit soort geschiktheidsfuncties zijn zeer geschikt voor GAs.

Het GA krijgt gedurende de evolutie reeds geschiktheidsinformatie, zelfs al voldoet de

oplossing nog niet volledig aan wat we precies wensen.

Als intermezzo passen we dit idee even toe op het evolutionaire algoritme van de CBM.

Bij het GA op de CBM hebben we geen partiele geschiktheidsinformatie over de routering

van de module. Doordat de geschiktheid van een module pas berekend kan worden als

de module effectief al output genereert, wordt de evolutie niet geholpen bij het zoeken

naar modules die een output genereren. Eigenlijk gebeurt de hele optimalisatie van de

routering zo goed als blind. Het GA krijgt geen geschiktheidsinformatie over hoe goed

een bepaalde module gerouteerd is om een probleem op te lossen, zolang de module geen

output genereert (die ongeveer in de buurt komt van wat we wensen). Pas als de routering

er is, kan de module geevalueerd worden. Op die manier optimaliseert het GA vooral de

berekening, en niet de routering van een module. Dit is een van de grote problemen bij

de huidige implementatie van het GA op de CBM.

Omdat SIIC in hardware is geımplementeerd, zijn volgende beperkingen van kracht:

het filter heeft maximaal 24 filterwaarden, elke filterwaarde is een geheel getal tussen 0

en 63. Negatieve getallen zijn dus niet mogelijk. Een ander probleem is dat de integraal

van het filter de maximale waarde van het uitgangssignaal bepaalt. Veronderstel een

pulstrein met allemaal eentjes. Als we daar SIIC op toepassen krijgen we als uitgang een

constante waarde, namelijk de som van alle filterwaarden. De som van alle filterwaarden (of

integraal van het filter) bepaalt dus de quantisatie die we op het uitgangssignaal behalen.

Hoe kleiner de filterwaarden, hoe groter de quantisatieruis. We moeten dus proberen de

33

Page 45: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

filterwaarden zo groot mogelijk te kiezen.

0 5 10 15 20 250

10

20

30

40

50

60

70

tijd

(a) tijdsdomein

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5-100

0

100

200

300

400

500

600

700

800

frequentie

(b) frequentiedomein

Figuur 3.7: Het originele filter

0 5 10 15 20 250

10

20

30

40

50

60

70

tijd

(a) tijdsdomein

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5-5

0

5

10

15

20

25

30

35

frequentie

(b) frequentiedomein

Figuur 3.8: Het nieuwe filter

Eerst en vooral hebben we het bestaande filter onderzocht. Het filter en zijn fourierge-

34

Page 46: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

transformeerde zien we in figuur 3.7. We zien duidelijk dat het filter niet symmetrisch is en

dat er behoorlijk wat ruis aanwezig is. In het frequentiedomein zien we dat het filter een

laagdoorlaatfilter is; maar echter geen stapfunctie, wel een driehoeksfunctie. We hebben

deze driehoeksfunctie een beetje gezuiverd, en de inverse fouriertransformatie toegepast

om zo het verbeterde filter te bekomen. We hebben de resulterende filter wel nog moeten

quantiseren (om ervoor te zorgen dat enkel de waarden van 0 tot 63 gebruikt worden).

Het bekomen filter, en zijn fouriergetransformeerde zien we in figuur 3.8. De som van de

filterwaarden is 765. Deze quantisatie beperkt de signaal-ruisverhouding (ook SNR)2. De

best mogelijke SNR is ongeveer 20log10(768) = 57, 7dB. Tijdens het gebruik is gebleken

dat het nieuwe filter een verbetering van 5dB op de SNR ten opzichte van het oude filter

oplevert.

Vervolgens zijn we op zoek gegaan naar andere filters. Door middel van standaard

FIR-filter constructietechnieken [43] hebben we in eerste instantie verschillende filters ge-

construeerd. Een groot probleem is echter dat de meeste filters ook negatieve coefficienten

nodig hebben, en deze zijn echter niet voorstelbaar.

Het oude filter laat slechts een beperkte signaalband door. We zouden echter een zo

groot mogelijke bandbreedte aan signalen willen voorstellen. Als we het filter echter iets

breder maken dan het oude filter, krijgen we direct een filter met negatieve coefficienten.

We zouden ook willen dat het filter een zo steil mogelijke flank heeft tussen doorlaatband

en stopband. Als we het filter echter iets steiler maken, krijgen we negatieve coefficienten,

of wordt de som van de filterwaarden beduidend kleiner. Hierdoor krijgen we dus een

grotere quantisatiefout.

Door de hardwarebeperkingen is het niet mogelijk om binnen de gegeven randvoor-

waarden enige relevante verbeteringen aan te brengen aan het oude (opgepoetste) filter.

Mochten we de hardware-implementatie veranderen, dan zouden we het meeste winst ha-

len uit 1 bit meer per filterwaarde. Deze zou dan kunnen gebruikt worden als tekenbit, om

negatieve getallen te kunnen stellen. Dan zouden we willekeurige 24-taps filters kunnen

maken. Het introduceren van negatieve filterwaarden zou er dan wel voor zorgen dat de

som van de filtercoefficienten daalt, waardoor de quantisatiefout zal toenemen. We zou-

den ook betere filtereigenschappen bekomen indien we een filter zouden hebben met meer

filterwaarden. Daardoor zouden we scherpere filters kunnen construeren. Hierdoor zou

ook de som van de filtercoefficienten stijgen, waardoor de quantisatiefout daalt. Ook een

toenemend aantal bits per filtercoefficient zou de quantisatiefout ten goede komen.2De SNR is gedefinieerd als 20log10(

signaalruis

). Het drukt dus de verhouding van het signaal ten opzichtevan de ruis uit in decibel (dB). Hoe hoger de SNR, hoe beter de kwaliteit.

35

Page 47: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

3.4 De nieuwe methodes

In deze sectie verbeteren we de oude methode voor pulstreinconversie en introduceren we

een nieuwe methode.

3.4.1 HSA – herbezocht

In de literatuur is men er steeds van uitgegaan dat de drempelwaarde van HSA nul moet

zijn. In vorige sectie hebben we reeds intuıtief laten aanvoelen dat dit waarschijnlijk fout

is. We zullen dit nu aantonen.

Voor het zoeken naar de optimale drempelwaarden hebben we een exhaustief zoekal-

goritme geımplementeerd. Het probeert alle drempelwaarden uit, en neemt deze waarmee

de kleinste fout gemaakt wordt. We zullen dit algoritme optimale-HSA noemen. Eenmaal

we dit algoritme hebben, kunnen we het toepassen op verschillende functies. Voor elk van

de functies bekomen we dan een optimale drempelwaarde. We hopen daarbij dat we voor

een zo breed mogelijk gamma aan functies een zo goed als constante drempelwaarde vin-

den. Als dit zo is kunnen we het optimale-HSA algoritme terug vervangen door het HSA

algoritme, maar dan met de nieuwe drempelwaarde (verschillend van nul). Deze drempel-

waarde wordt bekomen door het gemiddelde te nemen van al de optimale drempelwaarden

voor de verschillende testfuncties.

-100

0

100

200

300

400

500

50 100 150 200 250 300 350

Opt

imal

e dr

empe

lwaa

rde

van

HS

A

Amplitude

periode 507090

110130150170190

Figuur 3.9: Optimale drempelwaarde voor HSA bij sinussen met verschillende amplitude en periode

Als testfuncties hebben we een aantal sinusfuncties genomen met verschillende fre-

quenties en amplitudes. De resultaten zien we in figuur 3.9. We zien dat er voor de

verschillende testfuncties een zekere spreiding zit op de optimale drempelwaarde. Deze

spreiding is echter beperkt. Als we alle optimale waarden uitmiddelen krijgen we een

gemiddelde drempelwaarde van 37. In 3.5 zullen we optimale-HSA en HSA met deze ge-

middelde drempelwaarde met elkaar vergelijken. Figuur 3.9 is bekomen door gebruik te

36

Page 48: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

maken van het in 3.3 gevonden filter. Als we een ander filter gebruiken, worden andere

drempelwaarden bekomen.

0

5

10

15

20

25

30

35

0 200 400 600 800 1000

Res

ulte

rend

e S

NR

[dB

]

HSA drempelwaarde

origineel filternieuw filter

Figuur 3.10: De SNR die we behalen door middel van HSA met verschillende drempelwaarden.Er is een curve waar we gebruik gemaakt hebben van het originele filter, en een waar we gebruikgemaakt hebben van het nieuwe filter

In figuur 3.10 zie we de SNR die optreedt wanneer we een bepaalde sinus (periode 200,

amplitude 200, offset 382) via HSA omzetten naar een pulstrein, en deze daarna terug

omzetten naar een analoge golfvorm. We hebben deze SNR berekend voor verschillende

waarden van de drempelwaarde. Er is een curve waar we gebruik maken van het originele

filter, en een waar we gebruik maken van het nieuwe filter. Voor andere sinussen vinden

we vergelijkbare curven. We zien dat de curven een maximum hebben, en dat dit in de

buurt van 0 ligt. Zoals we vroeger ook al gezien hebben, presteert het nieuwe filter beter

dan het oude. Dit is echter niet het geval voor het achterste deel van de curve. Maar

daar is de SNR niet optimaal, dus zullen we de drempelwaarde nooit daar kiezen. We zien

ook dat de curve rond het optimum zeer grillig is. Dit betekent dat indien we een vaste

drempelwaarde kiezen - en de eigenlijke optimale drempelwaarde wijkt er maar een beetje

van af - we toch grote schommelingen in de SNR zullen waarnemen. We kunnen toch

besluiten dat rond het optimum van deze curve een gebied bestaat waar de SNR dicht bij

het optimum ligt. We kunnen de optimale drempelwaarde dus vervangen door een vaste

zonder al te veel af te wijken van de optimale SNR.

3.4.2 BSA

Zelfs na het oplossen van het probleem met de drempelwaarde bleven er een aantal vragen

rond het HSA algoritme. Zo is het niet duidelijk wat het algoritme precies doet. Daarom

werd een ander algoritme bedacht. Het werd BSA (Ben’s Spiker Algorithm) gedoopt. Het

idee achter BSA is dat op elke tijdstap een beslissing genomen wordt (puls sturen of niet)

37

Page 49: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

zo dat we een zo klein mogelijke fout maken. Net zoals bij HSA gaan we progressief het

filter aftrekken van de analoge waarde. Het signaal dat overblijft (de residuele samples),

moet zo klein mogelijk zijn. Dit komt omdat de residuele samples de fouten zijn die we

maken. Het algoritme zal op elke tijdstap proberen de residuele samples die het op dat

ogenblik kan veranderen (binnen het tijdsvenster van het filter) te minimaliseren.

Het algoritme zelf gaat als volgt:

Voor elke sample iZet de fout1 en fout2 op nulVoor elke filtercoefficient jTel de absolute waarde van het verschil (sample-coefficient) op bij fout1Tel de absolute waarde van sample op bij de fout2

Als fout1 kleiner is dan of gelijk is aan (fout2-drempelwaarde)Stuur een puls uitVoor elke filtercoefficient j

Trek filtercoefficient j af van sample (i+j)

Opnieuw hebben we een drempelwaarde moeten introduceren. Voor het bepalen van

de drempelwaarde gaan we op dezelfde manier te werk als bij HSA. In figuur 3.11 zien

we de curven voor de verschillende sinussen. De gemiddelde drempelwaarde is 713. We

kunnen dus wederom de optimale variant van het algoritme vervangen door een algoritme

met een vaste drempelwaarde zonder een al te grote fout te introduceren.

0

200

400

600

800

1000

50 100 150 200 250 300 350

Opt

imal

e dr

empe

lwaa

rde

van

BS

A

Amplitude

periode 507090

110130150170190

Figuur 3.11: Optimale drempelwaarde voor BSA bij sinussen met verschillende amplitude en pe-riode

In figuur 3.12 zien we de SNR curven voor verschillende drempelwaarden. Ook hier

zien we een optimum. Deze keer is de curve rond het optimum wel veel glooiender dan

bij HSA. Dit wil zeggen dat, als we met de vaste drempelwaarde afwijken van de optimale

drempelwaarde, de fout nog beperkter blijft. Ook nu zien we dat de curve voor het nieuwe

filter een betere SNR haalt dan de curve voor het oude filter. Dit is wel vooral zo bij de

38

Page 50: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

0

5

10

15

20

25

30

35

40

45

-200 0 200 400 600 800

Res

ulte

rend

e S

NR

[dB

]

BSA drempelwaarde

origineel filternieuw filter

Figuur 3.12: De SNR die we behalen door middel van BSA met verschillende drempelwaarden.Er is een curve waar we gebruik gemaakt hebben van het originele filter, en een waar we gebruikgemaakt hebben van het nieuwe filter

optimale drempelwaarde. Maar dit is net het gebied waarin we geınteresseerd zijn. Het

nieuwe filter presteert dus duidelijk beter dan het oude.

3.4.3 ∆Σ-modulator

De ∆Σ-modulator (deltasigma-modulator) wordt reeds jaren in de signaalverwerking ge-

bruikt. Deze modulator zet een analoog ingangssignaal om naar een gequantiseerd uit-

gangssignaal. De quantisatiestap is echter groot (1 of 2 bit), en de bemonsteringsfrequentie

zeer hoog. De verklaring voor het wijd verbreide gebruik van de ∆Σ-modulator is de zeer

interessante eigenschappen dat hij heeft op de quantisatieruis. Bij standaard bemonsterde

signalen (Nyquist frequentie) is de SNR over het volledige spectrum gelijk. Verhogen we

de bemonsteringsfrequentie, dan zal de SNR stijgen. Bij ∆Σ modulatie is de ruis zeer hoog

bij hoge frequenties (in de buurt van de helft van de bemonsteringsfrequentie), en zeer laag

bij lage frequenties. Maar omdat er met een veel hogere frequentie wordt bemonsterd dan

de signaalband die ons interesseert, zal in het voor ons relevante deel de ruis laag zijn.

De ∆Σ modulator vervormt de ruis dus, en omdat wij enkel de lage frequenties gebruiken

(hoge frequenties worden weggefilterd), kunnen we een betere SNR bekomen.

-H Q

Figuur 3.13: 1ste orde ∆Σ-modulator

In figuur 3.13 zien we een eerste orde ∆Σ-modulator. Van het binnenkomende signaal

39

Page 51: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

trekken we het uitgaande, gequantiseerde signaal af. Dit sturen we door het filter H. Dit

filter is meestal een integrator. Het resultaat van de integrator wordt dan gequantiseerd

(blokje Q in de figuur). Dit is het uitgangssignaal.

-

N

X Yz-1

1- z-1

Figuur 3.14: Het gelineariseerde model van de 1ste orde ∆Σ-modulator

Omdat we met bemonsterde signalen werken, hebben we een discreet systeem. De

integrator kunnen we schrijven als H(z) = z−1

1−z−1 . Modelleren we de quantisatie als het

toevoegen van ruis3, dan krijgen we een systeem zoals in figuur 3.14. Dit noemen we het

gelineariseerde model (dit omdat de niet-lineariteit, namelijk de quantisator, verdwenen

is). Dit systeem kunnen we noteren als:

Y (z) = X(z)z−1 + N(z)(1 − z−1).

Hier is X het ingangssignaal, Y het uitgangssignaal, en N de ruisterm die de quantisatie

modelleert. We zien dat het ingangssignaal, op een vertraging van 1 klokpuls na, aan de

uitgang verschijnt. De quantisatieruis wordt gefilterd. Dit filter is een differentiator. Een

differentiator is een hoogdoorlaatfilter. Dit wil dus zeggen dat de ruis vooral in de hoge

frequenties aanwezig zal zijn. Het uitgangssignaal moet terug gedemoduleerd worden

als we het willen gebruiken. Demoduleren doen we door het uitgangssignaal door een

laagdoorlaatfilter te sturen. Zoals we hierboven gezien hebben, filteren we daardoor alle

ruis weg, maar het ingangssignaal blijft aanwezig (omdat het een bandbeperkt signaal is).

-H Q

-H1 2

Figuur 3.15: 2de orde ∆Σ-modulator

Een zeer belangrijke maat van ∆Σ-modulatoren is de overbemonsteringsgraad (in het

Engels oversampling ratio). Deze is

R =fs

2f0

met fs de bemonsteringsfrequentie, en f0 de bandbreedte van het ingangssignaal. ∆Σ-

modulatoren bestaan ook in hogere ordes, zo zien we in figuur 3.15 een tweede orde

∆Σ-modulator.3Omdat de quantisatiefout stochastisch is kunnen we de quantisatie modelleren als het toevoegen van

ruis. Dit is echter een benadering.

40

Page 52: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

16 32 64 128

100

120

40

60

80

R

SN

R[d

B]

1ste orde

2de orde

3de orde

Figuur 3.16: Benadering van de SNR van de ∆Σ-modulator voor verschillende ordes en overbe-monsteringsgraden. Het deel in stippelijn komt niet uit de literatuur, maar is een extrapolatie

In figuur 3.16 zien we een benadering van de SNR van ∆Σ-modulator met verschil-

lende ordes, en voor verschillende overbemonsteringsgraden [40]. Het deel in stippelijn

is een extrapolatie. In de literatuur is voor dit deel van de curve geen eensgezindheid.

We beperken ons hier tot het eenvoudig geextrapoleerde model. We zien dat bij hoge R

de modulatoren goed presteren. Bij kleine R is er nog nauwelijks verschil tussen de ver-

schillende ordes. Volgens [40] is het zelfs zo dat bij lage R de hogere orde ∆Σ modulator

slechter worden dan de lage orde modulatoren. Een nadeel van de hoge-orde-modulatoren

(vanaf derde orde) is dat ze onstabiel kunnen worden voor te grote ingangssignalen (zelfs

vanaf amplitude 0,6).

Waarom spreken we nu over ∆Σ-modulatoren als we bezig zijn over neurale netwerken?

Wel, neem de uitgang van een 1-bit-∆Σ-modulator. Dit komt zeer sterk overeen met de

vroeger besproken pulstreinen. Het demoduleren van ∆Σ-signalen gebeurt door te filteren

met een laagdoorlaatfilter. De reconstructie van pulstreinen gebeurde ook door middel

van filtering. En de ∆Σ modulator zelf zet een analoog signaal om in een 1-bitpulstrein.

Daarbij komt nog de eigenschap dat de ∆Σ de ruis onderdrukt. Dit moet het systeem zijn

waarnaar we op zoek waren.

Echter is het probleem bij de CBM het filter. Omdat er maar een filter aanwezig

is met 24 filterwaarden (taps), is de fijnste frequentieband die we kunnen filteren fs

24 .

De frequentieband die we kunnen filteren komt overeen met f0, de bandbreedte van het

ingangssignaal. We bekomen dus een overbemonstering van R = 24fs

2fs= 12. Als we kijken

naar figuur 3.16 zien we dat alle ∆Σ-modulatoren zich slecht gedragen bij een zo lage R.

De ∆Σ-modulatoren zullen dus nooit zo goed presteren als wat we van ze gewoon zijn.

Omdat het gebruikte filter de nuttige bandbreedte bepaalt, en we natuurlijk een zo breed

mogelijke bandbreedte willen, zouden we het filter zo breed mogelijk moeten kiezen. Als

we echter breder filteren, zal R verder afnemen. Hierdoor presteren de modulatoren nog

41

Page 53: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

slechter. We moeten dus afwegen tussen een goede SNR en een brede signaalband.

16 32 64 128

100

120

40

60

80

RS

NR

[dB

]

1ste orde

2de orde

3de orde

Figuur 3.17: SNR van de ∆Σ-modulator voor verschillende ordes en overbemonsteringsgraden. Dedikke stippelijn geeft de best haalbare SNR weer als we 6 bit per filterwaarde gebruiken

De quantisatie van het ingangssignaal legt de maximaal haalbare SNR vast. Zoals we

gezien hebben hangt deze quantisatie af van het filter dat we gebruiken. Bij de CBM

heeft het filter 24 taps. Elke tap is 6 bit. Hierdoor bekomen we meestal een som van de

filterwaarden van ongeveer 2426

2 = 768. Dit komt overeen met een SNR van 20log10(768) =

57, 7dB.

Stel dat we de lengte van het filter vrij mogen kiezen (aantal bits per tap blijft vast).

De SNR is dan

20log10(N26

2)

met N het aantal taps in de filter. Stel dat we de kleinst mogelijke bandbreedte nemen bij

elk van de filters, dan halen we een R = N/2. Als we deze lijn bij in de figuur zetten van

de SNR van de verschillende ∆Σ-modulatoren, dan bekomen we figuur 3.17. Per extra bit

bij de filterwaarde zal de lijn 20log10(2) ≈ 6 dB stijgen. We zien dat deze lijn veel minder

stijl stijgt dan de lijnen van de ∆Σ-modulatoren. Bij vrij lage R zullen de (vooral hoge

orde) modulatoren hun werk dus niet meer kunnen doen, omdat de quantisatieruis van

het ingangssignaal de maximaal haalbare SNR van de modulator al overstemt. We zullen

ons dus altijd moeten beperken tot lage orde ∆Σ-modulatoren.

Voor de verdere testen hebben we gebruik gemaakt van een eerste orde ∆Σ-modulator.

We hebben ook testen gedaan met 2de orde systemen, maar hiermee werden geen verbe-

teringen bekomen. Hogere orde ∆Σ-modulatoren werkten inderdaad slechter, zoals aan-

gegeven in de literatuur. Merk op dat de ∆Σ-modulator geen gebruik maakt van het

reconstructiefilter tijdens de conversie. Dit wil ook zeggen dat als we gebruik maken van

niet-ideale-laagdoorlaatfilters, we het uitgangssignaal mee filteren. Bij BSA en HSA werd

wel rekening gehouden met het filter. Eventuele niet-ideaalheden van het filter worden

tijdens de conversie in rekening gebracht. Na het filter bekomen we dan een schijnbaar

42

Page 54: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

niet-gefilterd signaal. We kunnen bij ∆Σ-modulatoren ook iets gelijkaardigs bekomen door

het te moduleren signaal eerst invers te filteren. Op die manier corrigeren we eventuele

niet-ideaalheden van het filter door het originele signaal (voor modulatie) aan te passen,

zodat de niet-ideaalheden wegvallen na het filteren. Voor de eenvoud hebben we bij de

testen dit proces omgekeerd. We hebben het normale signaal door de ∆Σ-modulator ge-

stuurd. Maar het resulterende signaal hebben we vergeleken met een gefilterde versie van

het originele signaal. Daardoor zijn het gedemoduleerde en het originele signaal beide even

sterk vervormd. Op die manier kunnen we de resultaten van de ∆Σ-modulator vergelijken

met deze van HSA en BSA.

3.5 Resultaten

-200

0

200

400

600

800

1000

0 50 100 150 200 250 300 350 400 450 500

Waa

rde

Tijd

origineelgeconvolueerd

fout

Figuur 3.18: Eerste soort testfuncties

Voor het testen van de verschillende codeertechnieken hebben we een aantal testen

gedaan. We hebben figuren gemaakt waarin we de SNR uitzetten die we bekomen door

een bepaalde functie te benaderen. Het benaderen van deze functie gebeurt door ze eerst

naar een pulstrein om te zetten, en deze dan opnieuw om te zetten naar een golfvorm met

SIIC. Het verschil tussen de originele functie en de benaderde functie is de fout die we

gebruiken om de SNR te berekenen.

Voor de eerste testen hebben we sinusfuncties gebruikt die onderaan de x-as raken,

zoals weergegeven in figuur 3.18. We kunnen via SIIC immers geen negatieve waarden

bekomen omdat het filter van de CBM enkel positieve filtercoefficienten heeft. We hebben

deze sinussen benaderd voor verschillende amplitudes en periodes (omgekeerd evenredig

met frequentie). Een eerste soort curven zien we in figuur 3.19 en hier zien we de SNR

ten opzichte van de amplitude. Merk op dat de x en y as beide logaritmisch zijn4. Er4De y-as is in dB uitgedrukt en dit is een logaritmische maat.

43

Page 55: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(a) eerste orde ∆Σ-modulator

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(b) HSA met drempelwaarde 0

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(c) optimaal-HSA

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(d) HSA met gevonden drempelwaarde

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(e) optimaal-BSA

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(f) BSA met gevonden drempelwaarde

Figuur 3.19: SNR ten opzichte van de amplitude voor de eerste soort van testfuncties

zijn verschillende curven weergegeven voor de verschillende periodes van de sinus. Deze

curven zien er vrij druk uit, men kan nog moeilijk uitmaken welke curve bij welke periode

hoort, maar kunnen wel een kwalitatieve indruk geven van het verloop van de SNR voor

de verschillende codeertechnieken.

Uit figuur 3.19a kunnen we concluderen dat we met de 1ste orde ∆Σ-modulator een

maximale SNR van ongeveer 30dB kunnen bereiken. We zien dat bij een amplitude van

16 de SNR negatief wordt. Hier is de fout dus groter dan het signaal zelf. In figuur 3.19b

zien we de curve voor HSA zoals deze in de literatuur gebruikt werd (met drempelwaarde

0). We zien dat er ongeveer een maximale SNR van 30dB bereikt wordt. Voor amplitudes

44

Page 56: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

kleiner dan ongeveer 30 wordt de SNR 0. De fout is dus even groot als het signaal, en

het algoritme geeft geen uitgang meer. Dit fenomeen zien we trouwens ook bij de andere

curven. Onder een bepaalde amplitude werken de algoritmes niet meer. De optimale

algoritmes hebben hier iets minder last van, maar het fenomeen is nog steeds aanwezig.

In figuur 3.19c zien we de curve voor optimale-HSA. We zien dat een optimale SNR

van ongeveer 40dB bereikt wordt. In 3.19d zien we HSA met vaste drempelwaarde. Hier is

de maximale SNR ongeveer 35dB. We zien dat door het kiezen van een vaste drempel we

toch 5dB aan signaalkwaliteit verliezen. Ook wordt de curve grilliger, en is het punt van

0dB SNR gestegen. In figuren 3.19e en 3.19f zien we de curven voor BSA. Deze hebben

zeer vergelijkbare eigenschappen als die van HSA.

Voor zeer hoge amplitudes blijft de 1ste orde ∆Σ-modulator net iets langer een hoge

SNR aanhouden, terwijl de SNR van de andere systemen reeds daalt. Dit dalen komt door-

dat een te hoge amplitude door het systeem gestuurd wordt. Dit noemt men overloading.

De 1ste ∆Σ-modulator is dus iets beter bestand tegen te hoge ingangswaarden.

In figuur 3.20 zien we voor dezelfde testfuncties nu de SNR ten opzichte van de periode.

Hier heeft de x-as een lineaire schaal. Merk ook op dat hoge frequenties dicht bij de y-as

liggen en lage frequenties verder.

We zien dat alle curven een gedrag vertonen, gelijkaardig aan dat van de ∆Σ-modulator

(deze curve komt overeen met curven uit de literatuur [40]). Dit is een openbaring. HSA en

BSA hebben dezelfde SNR eigenschappen als ∆Σ-modulatoren. Zouden ze dan misschien

∆Σ-modulatoren kunnen zijn? Zonder er hier veel dieper op in te gaan kan men een

algemene ∆Σ-modulator introduceren. Deze berekent de fout die hij maakt door zijn

uitgang van zijn ingang af te trekken. De fout wordt door een willekeurig quantiserend

systeem verwerkt om zo de uitgang te vormen. HSA en BSA passen binnen dit stramien

en zijn dus wel degelijk ∆Σ-modulatoren, maar dan wel van een algemenere klasse dan

deze die we in 3.4.3 besproken hebben. BSA en HSA introduceren een vertraging van 12

terwijl de 1ste orde ∆Σ-modulator een vertraging van 1 introduceert. Een 2de orde ∆Σ-

modulator introduceert een vertraging van 2, enzovoort. Men zou HSA en BSA dus kunnen

aanzien als een soort 12de orde ∆Σ-modulator. Toch is het dan nog opmerkelijk dat HSA

en BSA beter presteren dan de ∆Σ-modulator. In [40] werd namelijk gesuggereerd dat

hogere orde ∆Σ-modulatoren slechter presteren dan lage orde ∆Σ-modulatoren bij een lage

overbemonsteringsgraad. Dit is dus duidelijk niet meer geldig bij de algemenere klasse van

∆Σ-modulatoren.

Uit de curves in figuur 3.20 kunnen we opnieuw de maximale SNR voor de verschillende

systemen afleiden. In 3.20a zien we de curve voor de ∆Σ-modulator. Deze curven zijn

bekomen met de in 3.4.3 besproken methode om het lineaire filtereffect tegen te werken.

De curven zouden dus vlak moeten zijn tot aan de afsnijfrequentie en daarna op nul vallen.

Door niet-lineaire effecten krijgen we hier echter nogal rare curven voor korte periodes.

In al de andere curven zien we duidelijk dat pulstreincodering een bandbeperkt systeem

45

Page 57: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(a) eerste orde ∆Σ-modulator

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(b) HSA met drempelwaarde 0

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(c) optimaal-HSA

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(d) HSA met gevonden drempelwaarde

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(e) optimaal-BSA

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(f) BSA met gevonden drempelwaarde

Figuur 3.20: SNR ten opzichte van periode voor de eerste soort van testfuncties

is. De bandbreedte is voor alle systemen ongeveer gelijk. Merk de zeer grillige curven op in

3.20d en 3.20f. Dit komt door interferentie van de functie met de lengte van het tijdsvenster

waarbinnen we de berekeningen gedaan hebben (1000 samples). Bij de optimale curven

zien we dit fenomeen niet omdat er dan steeds een optimale drempelwaarde gezocht werd

die rekening hield met deze interferentie. Om mogelijke aan- en afschakelverschijnselen

niet mee te rekenen in de SNR werden de eerste en laatste 50 samples van het tijdsvenster

verwaarloosd.

In tabel 3.1 zien we nog eens een overzicht van de verschillende eigenschappen van

de systemen. Waarom presteert BSA plots slechts even goed als HSA terwijl we eerder

46

Page 58: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Soort Maximale SNR SNR=0 als amplitude∆Σ 30dB 16

HSA drempel 0 30dB 30optimale-HSA 40dB 10

HSA berekende drempel 35dB 30optimale-BSA 40dB 10

BSA berekende drempel 35dB 30

Tabel 3.1: Eigenschappen van de verschillende codeersystemen voor de eerste soort van testfuncties

dachten dat BSA beter was dan HSA? Een groot probleem is dat alle systemen gewoon

slecht presteren voor zeer lage en zeer hoge ingangswaarden. We zouden de signalen van

deze waarden moeten weghouden. Daarom introduceren we een nieuw soort testfuncties

die beter aanleunt bij hoe we de CBM echt moeten gebruiken.

-200

0

200

400

600

800

1000

0 50 100 150 200 250 300 350 400 450 500

Waa

rde

Tijd

origineelgeconvolueerd

fout

Figuur 3.21: Tweede soort testfuncties

In figuur 3.21 zien we de tweede soort testfuncties. Hier hebben we een sinus gesu-

perponeerd op een constante waarde. Deze constante waarde ligt net in de helft van het

maximale bereik. Deze manier om functies voor te stellen wordt veel gebruikt. Dit komt

omdat we een inkomend signaal met als bereik [−1, 1] kunnen omzetten naar een signaal

met als bereik [0, 765]. Na de verwerking van de signalen kunnen we ze terug converteren

naar het bereik [−1, 1]. De nulwaarde van het inkomende signaal ligt in de helft van het

maximale bereik. Als we voor dit type van functies dezelfde berekeningen doen, krijgen

we de figuren 3.22 en 3.23.

Voor de ∆Σ-modulator zien we in 3.22a en 3.23a de curven. We zien opnieuw vrij

rare curven, maar dit komt nu door filtereffecten. Dit zien we het beste in 3.22b. Hier

zien we dat de curven grotendeels vlak zijn, en dan op een amplitude-afhankelijke manier

beginnen afbuigen. Dit zijn duidelijk niet-lineaire effecten. De maximale SNR die met de

47

Page 59: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(a) eerste orde ∆Σ-modulator

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(b) HSA met drempelwaarde 0

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(c) optimaal-HSA

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(d) HSA met gevonden drempelwaarde

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(e) optimaal-BSA

-10

0

10

20

30

40

50

60

8 16 32 64 128 256 512

SN

R [d

B]

Amplitude

periode 5152535455565758595

105115125135145155165175185195

(f) BSA met gevonden drempelwaarde

Figuur 3.22: SNR ten opzichte van amplitude voor de tweede soort van testfuncties

∆Σ-modulator bereikt kan worden is ongeveer 37dB. We zien dat hier ook sprake is van

afbuiging van de curve bij te hoge amplitude, maar niet bij te lage amplitude.

In al de andere curven zien we dat voor een breed bereik van de amplitude de SNR

ongeveer vlak blijft. Bij een te hoge amplitude buigen de curven af. Ten opzichte van

de frequentie zien we dat de curven ongeveer vlak blijven, behalve voor zeer hoge fre-

quenties, waar de SNR plots sterk daalt. Dit komt door het laagdoorlaatkarakter van de

pulstreincodering.

In tabel 3.2 hebben we de maximale SNR van de verschillende systemen samengevat.

Uit deze tabel zien we duidelijk dat BSA het betere algoritme is. Ook zien we dat we,

48

Page 60: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(a) eerste orde ∆Σ-modulator

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(b) HSA met drempelwaarde 0

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(c) optimaal-HSA

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(d) HSA met gevonden drempelwaarde

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(e) optimaal-BSA

-10

0

10

20

30

40

50

60

0 50 100 150 200 250 300

SN

R [d

B]

Periode

amplitude 8101215182227334151637897

121151188235293366457

(f) BSA met gevonden drempelwaarde

Figuur 3.23: SNR ten opzichte van periode voor de tweede soort van testfuncties

door een optimale keuze van de drempel, voor HSA een winst van ongeveer 10dB kunnen

maken. Het verschil in SNR tussen de versie met vaste drempelwaarde en het optimale

algoritme is nu bijna verwaarloosbaar. Door het gebruik van een goed gekozen, vaste

drempelwaarde komen we dus zeer dicht in de buurt van wat optimaal mogelijk is.

De afsnijfrequentie is voor alle systemen ongeveer gelijk. De minimale periode is onge-

veer 20. Dit komt overeen met een frequentie van ongeveer 120fs. Merk op dat we gebruik

maken van een filter dat in het frequentiegebied naar nul daalt tussen 124fs en 2

24fs. We

zien dat de afsnijfrequentie van het gehele systeem tussen deze twee grenzen ligt.

Als we figuur 3.22c en 3.22e vergelijken, zien we dat bij BSA de SNR sneller daalt

49

Page 61: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Soort Maximale SNR∆Σ 37dB

HSA drempel 0 27dBoptimale-HSA 37dB

HSA berekende drempel 35dBoptimale-BSA 45dB

BSA berekende drempel 44dB

Tabel 3.2: Eigenschappen van de verschillende codeersystemen voor de tweede soort van testfunc-ties

voor stijgende amplitude dan bij HSA. Bij HSA is deze overgang ook abrupter; vooral

van zodra we signalen proberen voorstellen die buiten het bereik van de quantisatie vallen

(buiten [0, 765]). Bij BSA zien we echter dat zelfs binnen het signaalbereik ([0, 765]) de

SNR-curve lichtjes daalt. Dit wil dus zeggen dat er vroegtijdige overloading is van het

systeem. Ze wordt echter op geen enkel ogenblik slechter dan die van HSA. Het is dus

aangeraden bij BSA geen al te grote signalen voor te stellen.

3.6 Besluit

We hebben het bestaande filter gezuiverd en op die manier hebben we 5dB aan SNR ge-

wonnen bij alle testen. Een volledig nieuw en beter filter kon echter niet geıntroduceerd

worden wegens de hardwarebeperkingen van de CBM. Wel zijn een aantal mogelijke ver-

beteringen aangegeven en de consequenties die deze hebben op het filter.

Het oude HSA algoritme hebben we verbeterd door een goede keuze van de drempel-

waarde. Op die manier kon tot 10dB winst gemaakt worden. Er werd ook een nieuw

algoritme geıntroduceerd, dat mits de juiste codering, ongeveer 45dB SNR haalt. Dit is

een verbetering van ongeveer 10 dB ten opzichte van HSA met een aangepaste drempel-

waarde. Alles bij elkaar was het dus mogelijk om ongeveer 22dB beter te presteren dan

de systemen die in de literatuur werden besproken.

We hebben ook de reeds veel gebruikte ∆Σ-modulatoren uitgetest. De best haalbare

SNR was hier 37dB. BSA is dus ook ongeveer 10dB beter dan ∆Σ-modulatoren, die

bekend zijn voor hun goede eigenschappen. BSA introduceert echter een vertraging van

12 klokcycli, en de ∆Σ-modulator slechts een vertraging van 1 klokcyclus.

Omdat alle besproken methodes ∆Σ-eigenschappen hebben, heeft de pulstreincodering

dezelfde goede eigenschappen als deze waarvoor de ∆Σ-modulatoren bekend staan. Een

van deze eigenschappen is de vervorming van het ruisspectrum om zo de quantisatieruis uit

de signaalband te houden. Wegens hardwarebeperkingen van de CBM is het niet mogelijk

om deze goede eigenschappen ten volle uit te benutten.

50

Page 62: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Hoofdstuk 4

Training met meerdere datasets

Het oude CBM-model (zoals geleverd door Genobyte) biedt de mogelijkheid om aan elke

uitgang een doelpulstrein, en aan elke ingang een stimuluspulstein te koppelen. Het is

dus mogelijk een verzameling pulstreinen te leren. Een dergelijke verzameling ingangs- en

uitgangspulstreinen noemen we een dataset. Het oude model is dus in staat een dataset

trainen.

Veel problemen bestaan echter uit verschillende onderdelen die elk geoptimaliseerd

moeten worden. Zo moeten er bijvoorbeeld bij patroonherkenning verschillende patronen

gedetecteerd kunnen worden. Elk van deze patronen (gecodeerd als stimuluspulstreinen)

vormt samen met de bijbehorende gewenste uitgangen een dataset. Deze datasets moeten

zo goed mogelijk aangeleerd worden om het patroonherkenningsprobleem op te kunnen

lossen.

Wij hebben een uitbreiding voorzien in de CBM die het mogelijk maakt modules te trai-

nen door middel van verschillende datasets. Elke module in de populatie zal geevalueerd

worden met elk van de datasets. Dit wil zeggen dat elke module voor elk van de datasets

een geschiktheid krijgt. Hierdoor wordt de geschiktheid van een module niet meer gege-

ven door een enkel getal, maar door een vector van getallen (een getal per dataset). Het

standaard GA kan echter niet overweg met verschillende geschiktheden per individu. De

geschiktheden moeten dus op een of andere manier gecombineerd worden zodat het GA

er terug mee overweg kan.

In volgende secties bespreken we eerst het oude CBM-model, dan de theorie achter het

combineren van de verschillende geschiktheden. Daarna behandelen we de implementatie

op de CBM, gevolgd door de resultaten.

4.1 Het oude CBM-model

Het oude optimalisatieproces op de CBM is een standaard eendimensionaal GA. De gebrui-

ker moet een pulstreinbestand (.spt) voorzien. In dit bestand zijn een aantal pulstreinen

gedefinieerd door de gebruiker. Het netlijstbestand verbindt deze pulstreinen met de effec-

tieve in- en uitgangen van de module. Op die manier is er voor elke in- en uitgang van de

51

Page 63: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

module juist een pulstrein voorzien (niet gebruikte in- en uitgangen krijgen automatisch

lege pulstreinen toegewezen). De basisgedachte van de genetische lus op de CBM is reeds

aan bod gekomen in hoofdstuk 2. Nu bekijken we de CBM vanuit het oogpunt van de

host-machine. De CBM kan dan aanzien worden als een genetische coprocessor.

Initialiseer

Voor elke generatie

Voer het programma op de CBM uit

Lees de geschiktheden uit de CBM

Sorteer de populatie volgens de geschiktheden

Pas selectie toe om zo de ouderparen te bepalen

Pas het programma aan

Laad het nieuwe programma naar de CBM

Maak het programma voor de CBM

Laad het programma in

Laad de initiële populatie in

Laad alle pulstreinen in

Laad de netlijst in

Figuur 4.1: De oude genetische lus op de host-machine

De genetische lus op de host-machine ziet er uit als in figuur 4.1. De CBM wordt

echt als externe coprocessor gebruikt voor het uitvoeren van de recombinatie-operatoren

op de populatie en het evalueren van de individuen. De host-machine staat in voor het

initialiseren van de populatie, en het selecteren van de ouders voor het maken van nieuwe

individuen.

In het programma dat de host-machine naar de CBM stuurt, zal eerst door middel

van de genetische fase een nieuwe populatie gevormd worden. Dan wordt in de groei-

en signaalfase elk individu geevalueerd om zo hun geschiktheden te bekomen. Daarna

wordt het commando overgedragen naar de host-machine. Deze zal de geschiktheden

uitlezen, ze sorteren, en door middel van een van de in 2.4 genoemde selectiemethoden,

ouders kiezen voor de nieuwe populatie. Deze informatie wordt dan gebruikt om een nieuw

CBM-programma op te stellen dat opnieuw naar de CBM wordt gestuurd.

In de literatuur stelde de Garis [44, 9] een manier voor om op de oude implementatie

van de CBM toch meerdere datasets te kunnen trainen. Deze methode concateneert de

verschillende datasets om zo veel langere pulstreinen te bekomen die dan door de CBM

getraind kunnen worden. De Garis gaf ook aan dat elk van de datasets verschillende malen

(op een willekeurig manier) herhaald moest worden. Tussen elk van de datasets werd best

een bepaald aantal lege pulsen toegevoegd. Dit laatste had tot doel de signalen in de CBM

de tijd te geven om uit te sterven (ze zullen nooit volledig kunnen uitsterven omdat de

integratoren in de CBM niet lekkend zijn, en zo hun waarde behouden als er geen nieuwe

signalen binnenkomen).

Op deze techniek is veel aan te merken. Ten eerste is de kans zeer groot dat de CBM

de gegeven pulstrein gewoon zal memoriseren, zodat de getrainde module uiteindelijk niet

52

Page 64: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

in staat zal zijn de aparte datasets correct af te handelen. Dit is eigenlijk een vorm

van overtraining. Door het steeds opnieuw aanleggen van identieke pulstreinen leert het

algoritme niet de generalisering, maar wel de specifieke volgorde van de pulstreinen. Een

oplossing hiervoor zou zijn de lange pulstrein elke keer opnieuw samen te stellen op een

willekeurige wijze. Een groot nadeel hiervan is dat de geschiktheidsevaluatie niet langer

deterministisch is. Het is dus mogelijk dat een goed individu in een generatie, bij een

volgende generatie zeer slecht presteert. Deze extra evaluatieruis zorgt ervoor dat het

GA veel moeilijker een globaal optimum kan vinden. Een andere manier zou zijn om

de pulstrein zeer lang te maken, en elk van de datasets zeer vaak te herhalen op een

willekeurige manier. Het aantal keer dat elke dataset herhaald wordt, en de volgorde

waarin de datasets gecombineerd worden, kunnen gebruikt worden om voorkeuren voor

bepaalde datasets uit te drukken. Het grote nadeel van deze methode is dat de pulstreinen

zeer lang worden waardoor de training zeer lang zou duren.

Een tweede probleem is dat het toevoegen van nullen niet gebruikt kan worden om de

signalen binnen de CBM te laten uitsterven. Alle neuronen onthouden hun status voor

eeuwig (wegens de niet-lekkende integratoren). Het is dus niet mogelijk de CBM duidelijk

te maken dat een nieuwe dataset wordt aangelegd omdat het toevoegen van nullen niets

verandert aan de status van de neuronen. Het ‘resetten’ van de cellulaire ruimte zou het

evalueren van de verschillende datasets ten goede komen omdat dan de CBM niet meer

de sequentie van datasets leert, maar eerder elk van de datasets afzonderlijk.

Uiteindelijk is het meestal wel de bedoeling dat de CBM in uitvoeringsmodus de ver-

schillende datasets kan detecteren zonder te moeten ‘resetten’ na elke dataset. Het zou dus

uiteindelijk wel de bedoeling moeten zijn dat de verschillende ingangspatronen na elkaar

aangelegd kunnen worden. Dit is echter een te strenge eis om reeds op te leggen in het

begin van de evolutiefase. En dat is precies wat de methode van de Garis doet. Door

gebruik te maken van meerdere datasets kunnen we beide eisen splitsen. We zouden de

individuen eerst kunnen trainen voor elke dataset afzonderlijk (met ‘reset’) tot ze daar

redelijk goed in zijn, en dan sequenties van datasets proberen aan te leren. Op die manier

helpen we evolutie een handje.

4.2 Combinatie van geschiktheden

Door de introductie van meerdere datasets wordt de optimalisatie van modules veel com-

plexer. In plaats van een het optimaliseren van een eendimensionale functie f(x) ∈ R,

hebben we nu te maken met een probleemruimte van de vorm

F (x) = (f1(x), ..., fk(x))

53

Page 65: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

met fi(x) ∈ R. Deze k-dimensionale vectorfunctie heeft geen eenduidig gedefinieerd mini-

mum1 meer. Als we de functie F (x) willen optimaliseren, hebben we complexere methoden

nodig. In de literatuur [53, 32] definieert men het concept van pareto-optimaliteit. Er zijn

verschillende paretoconcepten. We introduceren ze in volgorde.

Definitie 1 (paretodominantie): De vector u = (u1, ..., uk) domineert de vector v =(v1, ..., vk) als en slechts als ∀i ∈ 1, ..., k, ui ≤ vi ∧ ∃j ∈ 1, ..., k : uj < vj. Als u, vdomineert, noteren we u v.

Definitie 2 (pareto-optimaliteit): Een kandidaat oplossing x ∈ Ω noemen we pareto-optimaal ten opzichte van Ω als en slechts als ¬∃x′ ∈ Ω : F (x′) F (x). Oplossingx ∈ Ω is dus pareto-optimaal als er geen enkele vector F (x′) (met x′ ∈ Ω) bestaat die F (x)domineert. Als Ω niet expliciet gedefinieerd is, nemen we aan dat de volledige decisieruimtewordt bedoeld.

Definitie 3 (pareto-optimale set): De pareto-optimale set van F (x) wordt genoteerdP∗ en is gedefinieerd als P∗ = x ∈ Ω | ¬∃x′ ∈ Ω : F (x′) F (x). P∗ bestaat dus uit alleniet-gedomineerde individuen van Ω.

Definitie 4 (paretofront): Het paretofront (PF∗) voor een gegeven F (x) en bijbehoren-de P∗ is gedefinieerd als PF∗ = F (x) | x ∈ P∗.

Eenmaal we de pareto-optimale set van de meerdimensionale probleemruimte gevonden

hebben, is slechts de eerste stap gezet. We moeten ook nog een beslisser voorzien die uit

deze verzameling optimale oplossingen de beste oplossing kiest volgens een vooraf bepaald

criterium. Een dergelijke beslisser wordt in de literatuur een ‘Decision Maker’ (DM)

genoemd.

Afhankelijk van de manier waarop de beslisser en het optimalisatieproces samenwerken,

worden grofweg drie methoden gedefinieerd voor de optimalisatie van meerdimentionale

problemen [34].

Bij de eerste methode zal de beslisser proberen om de verschillende geschiktheden te

combineren tot een enkele geschiktheid door gebruik te maken van a priori informatie.

Dit gebeurt voor de optimalistie, waardoor het mogelijk is om standaard eendimensionale

optimalisatie toe te passen. Deze methode wordt de a priori methode genoemd.

Bij de tweede methode zal de beslisser beschikken over een verzameling van kandidaat

niet-gedomineerde individuen, gegenereerd door het optimalisatieproces. Uit deze set zal

de beslisser (DM) na de optimalisatie een compromis-oplossing kiezen. Dit noemt men

de a posteriori methode. De optimalisatie heeft geen weet van de relatieve belangrijkheid

van de verschillende geschiktheden en zal enkel op zoek gaan naar niet-gedomineerde

oplossingen. De DM moet dan later uit deze verzameling de voor ons beste oplossing

selecteren.

De derde methode is een progressieve methode waarbij optimalisatie en beslisser af-

wisselend aan de beurt komen. Bij elke stap zal de beslisser partiele voorkeur-informatie1Of evengoed maximum, dit omdat min(F (x)) = −max(−F (x))

54

Page 66: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

verstrekken aan het optimalisatieproces, dat op zijn beurt opnieuw betere kandidaatop-

lossingen genereert. Deze methode zullen we echter niet verder bespreken.

4.3 A priori methodes

A priori methodes gaan ervan uit dat voor het optimalisatieproces reeds de relatieve be-

langrijkheid van de verschillende geschiktheden is gekend. We bespreken lexicografische

ordening, lineaire en niet-lineaire combinatie.

4.3.1 Lineaire combinatie

Bij lineaire combinatie definieren we de geschiktheid van een individu door

f(x) k∑

j=1

wjfj(x),

hier is∑

wj meestal gelijk aan 1 (normalisatievoorwaarde) en stelt men over het algemeen

wj ≥ 0 . Deze methode wordt veel gebruikt wegens zijn eenvoud van implementatie en

kleine extra rekenkost. Door de eenvoud van het concept kunnen, voor kleine problemen,

de gewichten makkelijk ‘op het zicht’ gekozen worden: belangrijke geschiktheden krijgen

een hoog gewicht, minder belangrijke een lager gewicht.

Er treden echter grote problemen op als het aantal geschiktheidswaarden sterk stijgt

(‘real-world’ problemen), waardoor de koppeling tussen de verschillende geschiktheidsma-

ten toeneemt. Hierdoor is het met een gewogen som niet meer mogelijk de complexe

interactie tussen de verschillende geschiktheidsfuncties te modelleren. Volgens Dragan

[dragan98c] is het resultaat van de optimalisatie uiterst gevoelig voor zelfs zeer kleine ver-

anderingen van de gewichten. Hierdoor wordt de keuze van juiste gewichten bij complexe

problemen zeer moeilijk.

Een ander groot probleem werd ontdekt door Fonseca en Fleming [20]. Zij toonden

aan dat als PF∗ niet-convex is, de niet-convexe punten niet gevonden kunnen worden

door middel van lineaire combinatie. Zelfs al kennen we de exacte vorm van complexe ge-

schiktheidsruimten niet, toch kunnen we stellen dat het zeer waarschijnlijk is dat bepaalde

delen ervan niet-convex zijn. Omdat deze punten niet gevonden kunnen worden door het

optimalisatieproces, gaat een deel van P∗ verloren. We verliezen dus mogelijk efficiente

oplossingen.

4.3.2 Niet-lineaire combinatie

Af en toe worden geschiktheden ook op een niet-lineaire manier gecombineerd. De meest-

gebruikte vorm is multiplicatieve combinatie

f(x) k∏

j=1

fj(x).

55

Page 67: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Complexere functies, die de niet-lineaire afhankelijkheid van de geschiktheden modelleren,

zijn ook mogelijk, maar worden amper besproken in de literatuur wegens hun ad hoc

karakter. Zie [53] voor een uitgebreidere bespreking van de niet-lineaire methoden.

4.3.3 Lexicografische ordening

Bij lexicografische ordening [4] worden de geschiktheden geordend, waarbij de volgorde

hun relatief belang uitdrukt. De geschiktheid van de eerste dataset is de belangrijkste

(wordt eerst geminimaliseerd), de tweede wordt enkel geminimaliseerd als de geschiktheid

van de individuen voor de eerste dataset gelijk is, de derde enkel als de eerste twee gelijk

zijn, enzovoort. We definieren de lexicografische orde als

Definitie 5 (Lexicografische orde): x ∈ Rn is kleiner in lexicografische orde dan y ∈

Rn (genoteerd x y) indien x = y of indien de eerste niet-nul component van x − y

negatief is.

Door middel van deze lexicografische orde kunnen we een gecombineerde geschiktheid

definieren. Deze is gelijk aan het aantal individuen dat lexicografisch kleiner is dan het

gegeven individu.

f(xi) k∑

j=1

χ (F (xj) F (xi))

χ(expressie) = 1 als expressie waar is, anders 0.

Deze definitie is mogelijk omdat de lexicografische orde een totale orde is. Hierdoor is er

ook een expliciet globaal minimum. Alle optimale punten van de lexicografische orde zijn

zeker pareto-optimaal (per definitie). Maar is het wel gewenst dat een enkele geschikt-

heid koste wat kost wordt geoptimaliseerd? Pas als deze optimaal is zullen de andere

geschiktheden geoptimaliseerd worden.

Een groot probleem is echter dat de volgorde van de geschiktheden cruciaal is, en

deze kan niet altijd op voorhand bepaald worden. Het is mogelijk dit probleem op te

lossen door gebruik te maken van de willekeurige lexicografische orde: bij elke generatie

wordt een nieuwe, willekeurige ordening aan de geschiktheden gegeven. Meestal neemt

men een uniforme verdeling voor de verschillende geschiktheden (ze hebben allemaal even

veel kans om op een bepaalde plaats te staan). Op die manier drukken we wel uit dat

alle geschiktheden gelijkwaardig zijn. De beslisser zou toch een voorkeur voor bepaalde

geschiktheden kunnen uitdrukken door gebruik te maken van verdelingen die bepaalde

geschiktheden begunstigen (bijvoorbeeld een exponentiele verdeling, waardoor bepaalde

geschiktheden een grotere kans hebben om vooraan te staan).

Volgens [6] geeft de uniforme lexicografische orde zeer aanvaardbare resultaten, ver-

gelijkbaar met de a posteriori methodes. Dit komt waarschijnlijk door het gebruik van

de uniforme verdeling zodat er eigenlijk maar een beperkte a priori voorkeur wordt uitge-

drukt.

56

Page 68: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

4.4 A posteriori methodes

Bij a posteriori methodes heeft het GA geen weet van het relatieve belang van elk van

de geschiktheden. Ze kunnen de beslisser dus enkel een verzameling niet-gedomineerde

individuen aanbieden. De beslisser zal dan uit deze verzameling de uiteindelijk oplossing

kiezen.

Er zijn twee types van a posteriori methodes, de pareto- en de niet-paretogebaseerde

bemonstering. Niet-paretomethodes zijn van het heuristische type. Hierdoor bestaat er

een waaier aan mogelijke algoritmes die elk een volledig andere werking hebben. Veel van

de algoritmes kunnen echter slechts problemen met een beperkte dimensionaliteit aan. Wij

zullen verder enkel de paretogebaseerde bemonstering bespreken omdat deze een zekere

uniformiteit bezit, en toepasbaar is op problemen met een willekeurig aantal dimensies.

Deze methode wordt ook overvloediger besproken in de literatuur. Voor een bespreking

van de niet-paretogebaseerde bemonstering raden we de geınteresseerde lezer [20, 53] aan.

4.4.1 Paretobemonstering

Paretogebaseerde bemonsterinsmethoden maken expliciet gebruik van paretoconcepten om

tijdens het selectieproces niet-gedomineerde individuen te selecteren boven gedomineerde

individuen. Niet-gedomineerde individuen zullen echter niet in competitie treden met

andere niet-gedomineerde individuen.

Het bepalen van de rangorde in een populatie, in het geval van meerdere geschiktheden,

is niet uniek. Dit is omdat de paretodominantie geen totale, maar een een partiele orde

‘opdringt’. We definieren een rangorde binnen de populatie volgens dewelke we de indivi-

duen zullen selecteren. In het geval van paretodominantie spreken we over de paretorang.

In de literatuur zijn er grofweg drie definities van de paretorang.

Definitie 6 (paretorang volgens Fonseca en Fleming [19]): De paretorang van eenindividu x op tijdstip t (genoteerd rang(x, t)) in de populatie P (t) wordt gegeven door hetaantal individuen in de populatie P (t) die het individu x domineren.

Definitie 7 (binaire paretorang [53]: De paretorang van een individu x op tijdstip tin de populatie P (t) is 0 als het individu niet gedomineerd wordt, anders in de paretoranggelijk aan 1.

Definitie 8 (paretorang volgens Goldberg [26]): Geef alle niet-gedomineerde indivi-duen paretorang 0, verwijder ze uit de populatie, geef dan alle niet-gedomineerde individuenin de nieuwe populatie rang 1, enzovoort tot de populatie leeg is.

In de literatuur is nergens duidelijk bewezen dat een bepaalde vorm van rangorde beter

zou zijn dan de anderen [53]. Wel is het zo dat de ‘worst case’-berekeningscomplexiteit

van de Goldberg-rang hoger is dan beide andere rangordes. De ‘best case’-complexiteit

is wel dezelfde. In tabel 4.1 ziet u een overzicht van de berekeningscomplexiteit van de

verschillende rangordes (overgenomen uit [53]).

57

Page 69: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Tabel 4.1: Complexiteit van paretorangordesTechniek Best Case Worst CaseFonsenca N2 − N N2 − N

Binair N2 − N N2 − N

Goldberg N2 − N 13(N3 − N)

Nadat we de populatie gesorteerd hebben volgens een paretorangorde, moeten we een

vorm van selectie toepassen. Er zijn grofweg twee types van selectie-algoritmen, deze

die geen gebruik maken van de geschiktheid van een individu (rangordeselectie), en deze

die er wel gebruik van maken (geschiktheidsproportionele selectie). De rangordeselectie

kunnen we direct toepassen op de paretogesorteerde populatie. Als we wel geschiktheids-

proportionele selectie willen toepassen, hebben we een geschiktheid nodig. Deze kunnen

we bekomen door rangordegebaseerde geschiktheidsassignatie [20]:

1. Sorteer de populatie volgens de paretorangorde

2. Bepaal de geschiktheid van de individuen door te interpoleren van het beste (rang

0) naar het slechtste individu (rang maximaal) volgens een gegeven functie, meestal

lineair of exponentieel, maar mogelijk van een ander type.

3. Middel de geschiktheden uit bij individuen met dezelfde rang, dit opdat ze met

gelijke kans geselecteerd zouden worden.

Noteer wel dat de term geschiktheid hier niet echt van toepassing is, omdat we niet meer

proberen uit te drukken hoe goed een individu aan bepaalde voorwaarden voldoet, maar

eerder wat de gewenste kans is dat een bepaald individu geselecteerd zal worden.

De paretogebaseerde bemonsteringsmethodes verdelen we verder onder in drie ver-

schillende types: de paretogebaseerde selectie, paretorangschikking met nichevorming en

pareto-elites.

Paretogebaseerde selectie Bij paretogebaseerde selectie maken we gebruik van een

populatie die gesorteerd is volgens een paretorangorde, en waar eventueel ook nog rang-

ordegebaseerde geschiktheidsassignatie op toegepast is (we kunnen dus rangordeselectie

of geschiktheidproportionele-selectie toepassen). Dan kunnen we gebruik maken van een

standaard genetisch algoritme voor het optimaliseren van het probleem.

Paretorangschikking met nichevorming Paretorangschikking met nichevorming maakt

gebruik van de rangordegebaseerde geschiktheidsassignatie samen met gedeelde geschikt-

heid (‘fitness sharing’).

Een groot probleem bij standaard GA’s met eindige populaties is dat de populatie na

verloop van tijd de neiging heeft om te convergeren rond een enkel punt in de zoekruimte

58

Page 70: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

(lokaal of globaal optimum). Dit verlies aan diversiteit noemt men ‘genetische drift’.

Dit fenomeen kan catastrofaal zijn voor het GA als het te vroeg optreedt, omdat dan de

zoektocht naar het globaal optimum vastloopt. In de uiteindelijk geconvergeerde populatie

zullen alle individuen rond het globale optimum zijn geconvergeerd. Hierdoor is het bijna

onmogelijk om verschillende optima in de finale populatie te behouden.

Men kan dit probleem vermijden door gebruik te maken van methodes die niches in-

troduceren. Niches zijn subpopulaties binnen de bestaande populatie. Deze subpopulaties

worden gevormd en onderhouden door van de geschiktheid een gedeelde bron te maken.

Als er bijvoorbeeld 10 individuen in de buurt van een optimum zitten, zal de geschiktheid

van dat gebied verdeeld worden over de 10 individuen. Hierdoor krijgen deze 10 individuen

een relatief lage geschiktheid waardoor de populatie zich zal herverdelen. Op die manier

worden de individuen over de zoekruimte verdeeld. De niches maken het dus mogelijk

diversiteit te behouden, en verschillende (lokale) optima tegelijk te onderhouden binnen

dezelfde populatie. Rond elk optimum zal er zich dan een aantal individuen nestelen dat

proportioneel is met de geschiktheid van dit optimum [30].

De meest gebruikte vorm van niche-introductie is ‘gedeelde geschiktheid’, geıntroduceerd

in [30]. De gedeelde geschiktheid van een individu bestaat uit zijn normale geschiktheid

gedeeld door zijn niche-som. De niche-som van een individu is de som van de delings-

functies sh van zichzelf met elk ander individu in de populatie. De gedeelde geschiktheid

kunnen we dus schrijven als

f ′(xi) =f(xi)∑n

j=1 sh (d(xi, xj)).

De delingsfunctie sh is een functie van de afstand tussen twee individuen uit de populatie.

De functie geeft 1 terug als beide individuen identiek zijn, en geeft 0 terug als hun afstand

groter is dan een constante (σshare). De meest gebruikte functie is de volgende

sh(d) =

1 −(

dσshare

)αd < σshare

0 anders.

De constante α wordt gebruikt om de vorm van de delingsfunctie aan te passen, maar

wordt meestal gelijk aan 1 gekozen. De gebruikte afstandsmaat kan gedefinieerd zijn op

het genotype (Hamming-afstand) of op het fenotype (Euclidische afstand). Het bepalen

van een geschikte σshare is verre van triviaal. De beste keuze voor σshare hangt zeer sterk

af van de gebruikte geschiktheidsfunctie. Omdat men bijna nooit de exacte vorm van

de geschiktheidsruimte kent, kan men enkel schattingen maken voor σshare. Voor een

diepergaande bespreking hierover verwijzen we naar [39, 31].

In [20] is de gedeelde geschiktheid uitgebreid naar pareto-optimalisatie. De gebruikte

afstandsmaat is op het fenotype gedefinieerd (op de vector van geschiktheidswaarden), en

enkel tussen individuen met dezelfde rang. Op deze manier is er een additionele selectie-

druk aanwezig bij individuen met gelijke rang. Individuen met gelijke rang zijn onderling

59

Page 71: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

evenwaardig en worden normaal niet verder geselecteerd. Men kan dus niets zeggen over

hun exacte plaats in de geschiktheidsruimte. Het zou goed kunnen dat onze populatie be-

staat uit 200 niet-gedomineerde individuen, maar dat deze allemaal identiek zijn. Selectie

kijkt namelijk enkel naar de rang van het individu, en heeft verder geen informatie ter

beschikking. Op het einde van het optimalisatieproces zouden we echter graag een verza-

meling van individuen terugkrijgen die repesentatief is voor de volledige pareto-optimale

set. Door de introductie van nichevorming wordt dit probleem tegengewerkt. Het is mo-

gelijk een analytische functie op te stellen om σshare te vinden zodat de verdeling van de

individuen met dezelfde rang uniform is in de fenotype ruimte (zie [20] voor de uitwerking).

Paretorangschikking met nichevorming is dus veruit de beste manier om pareto-optimale

sets te zoeken. Dit is ook aangetoond in de literatuur [53].

Pareto-elites Pareto-elite methodes werken net zoals paretogebaseerde selectie, maar

nu worden de beste n individuen van de populatie eerst gekopieerd naar de nieuwe popu-

latie, waarna de rest van de nieuwe populatie opgevuld wordt op de normale manier (via

selectie). De individuen die we onvoorwaardelijk kopieren, noemen we elites. Elites zorgen

ervoor dat de n beste individuen nooit verloren gaan (wat bij selectie - met relatief kleine

kans - altijd mogelijk is). n wordt meestal klein gekozen (1 of 2).

Bij klassieke GAs is er steeds een globaal maximum, zodat het zeer interessant is om het

beste individu van de populatie te bewaren, omdat dit mogelijks de globaal beste oplossing

is. Omdat we hier werken met paretodominantie is het de bedoeling dat de finale populatie

bestaat uit zo veel mogelijk niet-gedomineerde individuen. De niet-gedomineerde indivi-

duen zijn onderling gelijkwaardig. Hierdoor vermindert het nut van een klein aantal elites

in de populatie. Het aantal elites zou gelijk moeten zijn aan het aantal niet-gedomineerde

oplossingen in het meerdimensionale probleem. Bij alle praktische toepassingen is het to-

taal aantal niet-gedomineerde oplossingen extreem groot, en zijn we enkel in een beperkte

verzameling van deze oplossingen geıntereseerd.

Hieruit kunnen we besluiten dat het nut van elites bij paretogebaseerde systemen

redelijk beperkt blijft. Toch worden deze methodes soms gebruikt in de literatuur (zie [53]

voor literatuurstudie).

4.5 Het nieuwe CBM-model met meerdere datasets

In deze sectie bespreken we de implementatie van evolutie met meerdere datasets op de

CBM. De CBM is op verschillende niveau’s aangepast: enerzijds is de genetische lus op

de host-machine gewijzigd, anderzijds hebben we het programma van de CBM zelf ook

gewijzigd. We zullen beide aanpassingen bespreken.

60

Page 72: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Initialiseer

Maak het programma voor de CBM

Laad het programma

Laad de initiële populatie in

Laad alle pulstreinen in

Laad de netlijst in

Voor elke generatie

Voor alle datasets

Voer het programma op de CBM uit

Lees de geschiktheden uit de CBM

Laad een aangepaste netlijst naar de CBM

Bereken een maat voor de gecombineerde geschiktheid

Sorteer de populatie volgens de gegeven maat

Pas selectie toe om zo de ouderparen te bepalen

Pas het programma aan

Laad het nieuwe programma naar de CBM

in

Figuur 4.2: De nieuwe genetische lus op de host-machine

pulstreinen voor intern gebruik

alle timeslices van de 1ste pulstreinalle timeslices van de 2de pulstreinalle timeslices van de 3de pulstreinalle timeslices van de 1ste pulstreinalle timeslices van de 2de pulstreinalle timeslices van de 3de pulstrein

...

eerste dataset

tweede dataset

Figuur 4.3: De nieuwe indeling van het pulstreingeheugen

De nieuwe lus De nieuwe genetische lus op de host-machine zien we in figuur 4.2.

De host-machine zal nu tijdens de initialisatie de pulstreinen van de verschillende data-

sets in het pulstreingeheugen laden. Deze komen voor op opeenvolgende posities in het

pulstreingeheugen (figuur 4.3).

In de nieuwe genetische lus wordt hetzelfde CBM programma verschillende keren uit-

gevoerd. Dit betekent dat de populatie (die in de CBM is opgeslagen) verschillende keren

geevalueerd wordt. De netlijsten worden tussen twee uitvoeringen van het programma

zo aangepast dat ze nu verwijzen naar de SIDs van de nieuwe dataset. Telkens we het

programma uitvoeren, testen we de modules in de populatie dus met de pulstreinen van

een nieuwe dataset. Dit doen we een maal voor elk van de datasets. Elke evaluatie van een

dataset resulteert in een geschiktheid die wordt opgeslagen. Nadat de huidige populatie

geevalueerd is voor alle datasets, worden de verschillende geschiktheden gecombineerd.

Verder gebeurt er net hetzelfde als in het oude algoritme.

Een groot probleem was dat het CBM-programma bestaat uit drie delen: de genetische

fase, de groeifase en de signaalfase. Deze fasen worden ook in die volgorde doorlopen.

61

Page 73: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Dit betekent dus dat we in het begin van het CBM-programma een nieuwe populatie

aanmaken, die we dan later in het programma evalueren. Bij het testen van verschillende

datasets wordt het CBM-programma meerdere keren uitgevoerd. Als we elke keer opnieuw

de genetische fase zouden uitvoeren voor het testen van een dataset, dan zouden we ook

voor elke dataset een nieuwe populatie creeren2! Dit heeft natuurlijk nefaste gevolgen op

de evaluatie van de populatie. Een mogelijke oplossing bestaat erin om bij het testen van

de eerste dataset het normale CBM-programma te gebruiken (met genetische fase), en bij

het testen van al de andere datasets een programma te gebruiken waar de genetische fase

is uitgeschakeld. Op die manier verzekeren we dat elke keer we een dataset testen, dit

op dezelfde populatie gebeurt. Dit principe hebben we in de assemblercode van de CBM

geımplementeerd.

Men zou kunnen denken dat het elke keer uitvoeren van de groeifase ook onnodig

is. De groeifase zorgt er echter voor dat de modules elke keer ‘leeg’ zijn voordat men ze

evalueert (alle interne informatie van de cellen wordt dan terug op nul gezet). Dit zou

men ook anders kunnen doen. Men zou rechtstreeks in de assemblercode de aanverwante

informatie van de modules op nul kunnen zetten. Dit zou sneller zijn, maar is moeilijk

te implementeren, zeker met de weinige informatie die ter beschikking is over de interne

werking van de CBM.

Variant en verbetering Een andere variant is mogelijk. Hier laden we in elke dataset-

lus niet de netlijst in met nieuwe SIDs, maar laden we nieuwe pulstreinen in, en la-

ten de netlijst onveranderd. Het enige verschil tussen beide methoden is de hoeveel-

heid data die moet getransfereerd worden. Bij de eerste methode moeten we ongeveer

(aantaltimeslices) ∗ 196 ∗ 17 bits per dataset en per generatie transporteren. In het twee-

de geval is dit (aantaltimeslices) ∗ (aantalpulstreinen) ∗ 96 bits. Het tweede geval is

dus beter als het aantal pulstreinen kleiner is dan 34. We hebben voor de eerste manier

gekozen wegens de eenvoud van implementatie, maar ook met het oog op later gebruik.

Nochtans zou de tweede methode beter zijn voor het aantal pulstreinen (per dataset) dat

op dit ogenblik gebruikt wordt (zelden meer dan 10).

Er is een belangrijke verbetering mogelijk aan deze manier van denken. Het is moge-

lijk heel de dataset-lus mee in het CBM-programma te verwerken. Daardoor zouden de

netlijsten en pulstreinen enkel ingeladen moeten worden tijdens de initialisatie. Tijdens

de verwerking blijven ze constant. Het aanpassen en opnieuw inladen van het programma

tijdens de dataset-lus vervalt dan ook. Hierdoor zou dus wel degelijk een stevige snelheids-

winst bereikt worden. Het grote probleem met deze methode is echter de implementatie.

Het CBM-programma is in assembler geschreven, en is, net als de interne werking van de

CBM, nauwelijks gedocumenteerd.2De genetische operatoren zijn stochastisch van aard, dus elke keer ze opgeroepen worden, wordt een

andere populatie gecreeerd, zelfs al werken ze in op dezelfde ouderparen.

62

Page 74: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Combinatiemethodes We hebben verschillende manieren geımplementeerd voor het

combineren van de geschiktheden: gewogen som, lexicografisch, willekeurig lexicografisch,

en paretorangorde (zonder nichevorming).

Voor de gewogen som moeten een aantal gewichten opgegeven worden. Deze hoeven

niet genormaliseerd te zijn. Niet opgegeven gewichten worden op 1 gezet. De resulterende

gecombineerde geschiktheidswaarde wordt geoptimaliseerd. De grafiek van de maximale

geschiktheid van de populatie gedurende de verschillende generaties heeft dus een dalend

verloop wat de convergentie van de populatie aangeeft. Als selectieoperator kan rangorde-

of geschiktheidsproportionele selectie gekozen worden.

De lexicografische manier om de geschiktheden te combineren gaat ervan uit dat de

volgorde waarmee de datasets zijn opgegeven (in het .spt bestand) de volgorde is van

de lexicografische orde. De lexicografische orde is een totale orde. Er zullen dus nooit

twee individuen met dezelfde orde zijn. Het beste individu van de populatie zal echter

altijd rang 1 hebben. Hierdoor vertelt de grafiek van de maximale geschiktheid van de

verschillende generaties nog weinig over de convergentie van de populatie. Daarom geven

we in de grafiek niet de rang weer, maar de belangrijkste geschiktheid. Deze zal dus

nog wel mooi dalen, maar het kan zijn dat tijdens vlakke stukken, het algoritme andere

(minder belangrijke) geschiktheden aan het optimaliseren is. Voor de lexicografische orde

raden we aan rangordeselectie te gebruiken.

Bij willekeurige lexicografische orde worden de datasets bij elke generaties willekeurig

gepermuteerd om ervoor te zorgen dat er geen voorkeur is. In de grafiek geven we de (op

dat moment) belangrijkste geschiktheid weer. De curve is dus zeer grillig, maar zou in

principe moeten convergeren. Ook hier wordt rangordeselectie aangeraden.

Bij de pareto-orde wordt er gebruik gemaakt van de paretorang volgens Fonseca en

Fleming. Daarbij werd geen nichevorming voorzien, omdat dit redelijk complex is om te

implementeren, en er een aantal nieuwe parameters bijkomen die moeilijk goed in te stellen

zijn. Het is nu mogelijk dat verschillende individuen dezelfde orde hebben. Hierdoor maakt

men gebruik van een nieuwe selectieoperator, de paretorangordeselectie. Deze zal ervoor

zorgen dat individuen met dezelfde rang dezelfde selectiekans krijgen. Het is ook mogelijk

standaard-rangordeselectie te kiezen, maar dat zou geen eerlijke selectiedruk opleggen.

Uit de grafiek van de beste en gemiddelde geschiktheid van de verschillende generaties

kunnen we niets meer opmaken over de convergentie van de populatie omdat de besten

van elke generatie steeds rang 1 hebben (op de grafiek zijn alle ordes vermenigvuldigd met

1000). De gemiddelde rang zou normaal gezien wel moeten dalen omdat er steeds meer

niet gedomineerde individuen in de populatie aanwezig zouden moeten zijn.

Aanpassingen in de configuratiebestanden Er zijn nieuwe versies voorzien voor de

verschillende configuratiebestanden die het mogelijk maken de nieuwe parameters in te

stellen. In bijlage A wordt de syntax van het genetisch algoritme configuratiebestand

63

Page 75: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

(GAC) gegeven. In bijlage B vind men het nieuwe pulstrein-bestandsformaat.

Het nieuwe GAC formaat biedt de mogelijkheid om de hele generationele lus verschil-

lende keren uit te voeren op dezelfde populatie. Op die manier is het mogelijk om voor

meer dan 1024 generaties te evolueren. De CBM laat normaal toe voor maximaal 1024

generaties te evolueren. Dit komt omdat er slechts 1024 maskers in het geheugen van de

CBM passen. Deze maskers, die willekeurig gegenereerd zijn, worden gebruikt om mutatie

en overkruising te implementeren. Voor elke generatie is er een nieuwe set maskers. Tij-

dens een generatie wordt een set maskers wel gebruikt voor alle individuen, maar tussen

elk individu wordt het volledige masker drie bits doorgeschoven om op die manier terug

een (semi) willekeurig masker te bekomen voor het volgende individu. De CBM is niet

ontworpen om de maskers te hergebruiken, maar omdat er redelijk veel maskers aanwezig

zijn (evenveel als er generaties zijn), en ze slechts een generatie gebruikt worden, kunnen

we de maskers verschillende keren opnieuw gebruiken. Telkens we de generationele lus

opnieuw starten zullen de bestaande maskers dus nog eens gebruikt worden, dit zonder

verlies van goede willekeurige maskers.

4.6 Resultaten

4.6.1 Oud model

In [11, 9] zijn verschillende testproblemen opgelost met het oud CBM-model. Deze zijn

onder andere een XOR-poort, een frequentiedeler en een klokgenerator. Echter (zoals we

verder zullen zien) gaat het hier over zeer eenvoudige problemen die amper een inspanning

vragen van het trainingsalgoritme.

We hebben een aantal testen gedaan met het oud model door een zeer lange dataset te

maken met daarin verschillende gevallen voor de XOR-poort. De CBM had het hier zeer

moeilijk mee, en vond zelfs na een redelijk lange tijd geen goede oplossing. Dit komt waar-

schijnlijk door dat de CBM bij wijze van spreken overspoeld wordt met informatie die hij

allemaal tegelijk moet leren. Het trainingsalgoritme heeft geen idee waar het moet begin-

nen. Bij een kortere versie van de pulstrein werd het probleem namelijk vanzelf getraind.

Dit geeft duidelijk aan dat deze oplossing niet schaalbaar is. Voor kleine problemen (zoals

origineel in de literatuur) werkt ze goed, maar bij groter problemen loopt het GA volledig

vast.

4.6.2 Nieuw model

Het nieuw model hebben we met verschillende problemen getest. Enkele hiervan komen

uit [11, 9] om een vergelijking mogelijk te maken (en de resultaten in literatuur te kunnen

relativeren).

64

Page 76: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

XOR Hier moet de CBM de XOR functie aanleren. Elke ingangspulstrein werd door de

netlijst op verschillende punten op de CBM aangesloten. Hierdoor is het probleem beter

te trainen. Dit komt omdat de CBM de ingangssignalen makkelijker kan ‘vinden’. Een

deel van de training van de CBM is namelijk een routeringsprobleem, het algoritme moet

op zoek gaan naar de in- en uitgangen. Als deze meerdere malen voorhanden zijn, gaat

deze stap van de optimalisatie veel vlotter.

set1

stim0

000000000000000000000000000000000000000111111111111111111111111111111111111111100000000000

stim1

000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111

targ

000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111

set2

stim0

111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

stim1

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

targ

111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

set3

stim0

111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

stim1

111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

targ

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

set4

stim0

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

stim1

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

targ

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

set5

stim0

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

stim1

111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

targ

111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

Figuur 4.4: Een deel van de verschillende datasets die gebruikt werden voor het trainen van hetXOR probleem

Bij al de testen bevatte de populatie 100 individuen en hebben we voor 200 generaties

geevolueerd. Er waren vijf datasets aanwezig: de vier gevallen van de XOR (0, 0, 1,

1, 0, 1, 1, 0) elk herhaald gedurende de volledige duur van de dataset, en een dataset

waar de vier gevallen door elkaar gebruikt worden. Een deel van deze datasets (zoals

ze gedefinieerd zijn in het .spt bestand) zien we in figuur 4.4. Omdat de signalen door

65

Page 77: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Figuur 4.5: De geconvolveerde antwoordpulstreinen op het XOR probleem (omgekeerde volgordeten opzichte van figuur 4.4)

de CBM moeten propageren duurt het dus een zeker aantal klokcycli voor hij outputs

begint te genereren. We kunnen een vaste vertraging instelling in het configuratiebestand,

dit is dan als het ware de gewenste vertraging. Deze vertraging hadden we ingesteld

op 7 (zie bijlage B). De antwoordpulstreinen na het trainen waren voor alle gevallen

hetzelfde. Op figuur 4.5 zien we zulke pulstreinen, maar dan in geconvolveerde vorm.

De verschillende golfvormen zijn de antwoorden op de verschillende datasets (er kunnen

maximaal maar vier wens/antwoord pulstreinen worden weergegeven met de bijgeleverde

software). De gewenste pulstrein en de antwoordpulstrein vallen perfect samen. De XOR

functie werd door alle geschiktheidscombinatiefuncties perfect gevonden. De duur van de

trainingsmodus was ongeveer 2 minuten.

0

200000

400000

600000

800000

1000000

1200000

1400000

1600000

1800000

0 50 100 150 200

generaties

ge

sc

hik

the

id

beste

gemiddelde

(a) lineaire combinatie met gelijke gewichten

0

5000

10000

15000

20000

25000

30000

35000

0 50 100 150 200

generaties

ge

sc

hik

the

id

beste

gemiddelde

(b) paretorangorde

Figuur 4.6: De geschiktheidsgrafiek van het XOR probleem

In in figuur 4.6 zien we de geschiktheidsgrafiek van het XOR-probleem. In de eerste

figuur zien we lineaire geschiktheidscombinatie (met gelijke gewichten), en in de tweede

de paretorangorde. Bij lineaire combinatie wordt de optimale geschiktheid reeds bereikt

na amper 50 generaties. We zien ook dat de gemiddelde geschiktheid van de generatie

maar weinig daalt. Bij de pareto-optimalisatie zien we niets over de optimaliteit van de

beste van de populatie omdat deze allemaal rang 1 hebben. Wel zien we dat na ongeveer

60 generaties de gemiddelde rangorde plots sterk stijgt. We zouden verwachten dat de

66

Page 78: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

gemiddelde rangorde daalt. Echter, als er plots een individu wordt gevonden dat beter

is dan al de andere individuen in de populatie, dan zal dit individu de gehele populatie

domineren, waardoor de rang van alle andere individuen met 1 verhoogt. Als er dus plots

goede individuen gevonden worden zal de gemiddelde rang stijgen. Echter zou daarna de

rang terug moeten dalen omdat er meer en meer niet-gedomineerde individuen gevonden

worden. We zien echter dat dit nauwelijks gebeurt. Dit komt waarschijnlijk door de

overkruisingsoperator. Hier komen we later op terug.

0

50000

100000

150000

200000

250000

300000

350000

400000

0 50 100 150 200

generaties

ge

sc

hik

the

id

beste

gemiddelde

(a) lexicografisch

0

100000

200000

300000

400000

500000

600000

0 50 100 150 200

generaties

ge

mid

de

lde

beste

gemiddelde

(b) willekeurig lexicografisch

Figuur 4.7: De geschiktheidsgrafiek van het XOR probleem

In figuur 4.7 zien we de grafiek voor lexicografische en willekeurig lexicografische se-

lectie. Bij de lexicografische selectie zien we dat de belangrijkste geschiktheid reeds na

25 generaties optimaal is (minder belangrijke geschiktheden moeten ook nog geoptimali-

seerd worden, maar dit zien we niet op deze figuur). De beste geschiktheid bij willekeurig

lexicografische selectie springt op en neer. Dit komt omdat we elke generatie een andere

geschiktheid afdrukken. Als de curve echter vlak blijft weten we dat alle geschiktheden

optimaal zijn (omdat ze allemaal met gelijke kans gekozen kunnen worden om de belang-

rijkste te zijn). We zien dat voor bepaalde geschiktheden reeds vroeg de volledige populatie

optimaal is (kijk naar de kruisjes die op de x-as liggen). Dit betekent dat bepaalde data-

sets triviaal zijn om aan te leren. Een voorbeeld hiervan is de dataset waar beide ingangen

nul zijn. Als de CBM geen pulsen binnenkrijgt, zal hij ook nooit reageren (CBM kan niet

uit zichzelf pulsen beginnen genereren).

Het XOR probleem is eerder een triviaal probleem voor de CBM. Elke samenvoeging

van twee dendrieten heeft namelijk de pulsblokkeringseigenschap (spike blocking) wat net

overeenkomt met een binaire XOR. Het komt soms voor dat reeds in de initiele populatie

een individu is gevonden dat bijna optimaal is. Dit betekent dus dat dit echt een veel te

triviaal probleem is voor het testen van de kracht van de CBM.

De verschillende grafieken werden bekomen door middel van willekeurige trainingen.

Er zijn geen uitmiddelingen over verschillende gevallen gebeurd. Deze grafieken zijn dus

geen algemene wetmatigheden voor dit probleem maar eerder een indicatie van hoe de

CBM zulke problemen oplost.

67

Page 79: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Andere logische poorten De andere logische poorten (AND, OR, ...) werden ook

getraind, en geven zeer gelijkaardige karakteristieken. De meeste van deze problemen zijn

wel iets complexer om te trainen dan het XOR-probleem, maar mits een goede keuze van

de in- en uitgangen overheerst ook hier de routering op de berekening in de neuronen.

Figuur 4.8: De gewenste- en antwoordpulstreinen van de frequentiedeler met perfecte overeenkomst

Figuur 4.9: De gewenste- en antwoordpulstreinen van de frequentiedeler met een verkeerde vertra-ging

Frequentiedeler De frequentiedeler heeft tot doel een inkomende pulstrein (bijvoor-

beeld 010101010101...) in frequentie te halveren (000100010001...). En dit voor verschil-

lende ingangsfrequenties, echter wel steeds van de vorm: een 1 gevolgd door een aantal

nullen, dan terug een 1 gevolgd door evenveel nullen, enzovoort. Als we terugdenken aan

hoofdstuk 3, dan komt de frequentiehalveerder eigenlijk overeen met een systeem dat een

constant ingangssignaal (analoge waarde) op de uitgang produceert met halve amplitude.

Ook hier was de duur van de trainingsmodus ongeveer 2 minuten.

In figuur 4.8 zien we de gewenste- en antwoordpulstreinen bij perfecte overeenkomst.

In figuur 4.9 zien we hetzelfde, maar met een verkeerde vertraging. We zien dat de

verschillende datasets bestaan uit pulstreinen met steeds oplopende frequentie. Op die

manier hopen we dat het trainingsalgoritme zal generaliseren vanuit deze dataset om

op die manier een module te krijgen die elke frequentie aankan. In het geval van lineaire

combinatie, en lexicografische selectie werd de perfecte overeenkomst gevonden, pareto- en

68

Page 80: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

willekeurig lexicografische selectie vonden een oplossing met een iets grotere vertraging.

Dit is echter niet altijd zo, bij andere runs konden ook paretoselectie en willekeurige

lexicografische orde de perfecte overeenkomst vinden. Wegens het stochastische karakter

van het GA weet men nooit zeker of het optimum even snel zal gevonden worden. Er werd

getraind voor een gewenste vertraging van 8. Deze harde eis is eigenlijk overbodig bij

initiele evoluties van een module. We zijn al blij dat de module het probleem kan oplossen

onafhankelijk van welke vertraging de module introduceert. In hoofdstuk 3 hebben we

gezien dat door intern SIIC te gebruiken de pulsen eigenlijk worden uitgesmeerd vooralleer

ze vergeleken worden met de wenspulstrein. Op deze manier wordt al een deel vrijheid

gegund op de bekomen vertraging, maar vertragingen groter dan 12 (helft van maximaal

mogelijke filter) kunnen op deze manier nooit gevonden worden.

0

100000

200000

300000

400000

500000

600000

700000

0 50 100 150 200generaties

gesch

ikth

eid

beste

gemiddelde

(a) lineaire combinatie met gelijke gewichten

0

5000

10000

15000

20000

25000

30000

35000

0 50 100 150 200generaties

ge

sc

hik

the

id

beste

gemiddelde

(b) paretorangorde

Figuur 4.10: De geschiktheidgrafiek van het frequentiehalveringsprobleem

0

20000

40000

60000

80000

100000

120000

0 50 100 150 200generaties

ge

sc

hik

the

id

beste

gemiddelde

(a) lexicografisch

0

20000

40000

60000

80000

100000

120000

140000

0 50 100 150 200

generaties

ge

sc

hik

the

id

beste

gemiddelde

(b) willekeurig lexicografisch

Figuur 4.11: De geschiktheidsgrafiek van het frequentiehalveringsprobleem

In de figuren 4.10 en 4.11 zien we de geschiktheidsgrafieken voor de verschillende me-

thoden. We kunnen duidelijk uit al de grafieken afleiden dat het een zeer eenvoudig

probleem is voor de CBM. Reeds na een zeer klein aantal generaties werd, in het geval

van lineaire combinatie, de optimale oplossing gevonden. Weerom kan men hier over wat

geluk spreken, want bijvoorbeeld in het geval van willekeurige lexicografische selectie werd

zelfs na 200 generaties geen perfect individu gevonden (echter wel een individu met een

69

Page 81: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

zeer goede geschiktheid).

Aanschakelbare golfvormgenerator De bedoeling van de aanschakelbare functiege-

nerator is dat de CBM een bepaalde golfvorm repetitief reproduceert zolang de ingang hoog

is. Dit ogenschijnlijk eenvoudig probleem is reeds veel moeilijker om aan te leren. Na ver-

schillende pogingen, kunnen we een aantal dingen concluderen. Het aan-/uitschakelgedrag

van de ingang wordt zeer snel aangeleerd. het grote probleem is echter het repetitief repro-

duceren van een golfvorm. Meestal vindt de CBM als oplossing wel een repetitief signaal,

maar steeds met een andere golfvorm. In figuren 4.14 en 4.15 zien we de geschiktheids-

grafieken van typische trainingscycli met de verschillende combinatiemethodes. Er werd

gewerkt met een populatie van 200 individuen, gedurende 400 generaties, en dit werd 4

maal herhaald op dezelfde populatie. De duur van de trainingsmodus was ongeveer 20

minuten. Er waren 4 datasets, met oplopend aantal perioden (1, 2, 3 en 5).

(a) lineaire combinatie met gewichten 0,50 0,250,17 0,20

(b) paretorangorde

Figuur 4.12: Het antwoord van de uiteindelijke oplossing op de verschillende datasets voor deaanschakelbare golfvormgenerator

(a) lexicografisch (b) willekeurig lexicografisch

Figuur 4.13: Het antwoord van de uiteindelijke oplossing op de verschillende datasets voor deaanschakelbare golfvormgenerator

Bij lineaire combinatie werden de gewichten gevonden door verschillende mogelijkhe-

den te testen. Ze zijn nog niet optimaal, maar waren wel bevredigend. In figuur 4.12a

70

Page 82: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

0

20000

40000

60000

80000

100000

120000

140000

160000

180000

0 200 400 600 800 1000 1200 1400 1600

generaties

gesch

ikth

eid

beste

gemiddelde

(a) lineaire combinatie met gewichten 0,50 0,250,17 0,20

0

10000

20000

30000

40000

50000

60000

70000

80000

90000

0 200 400 600 800 1000 1200 1400 1600

generaties

ge

sc

hik

the

id

beste

gemiddelde

(b) paretorangorde

Figuur 4.14: De geschiktheidgrafiek van de aanschakelbare golfvormgenerator

0

20000

40000

60000

80000

100000

120000

140000

160000

0 200 400 600 800 1000 1200 1400 1600

generaties

ge

sc

hik

the

id

beste

gemiddelde

(a) lexicografisch

0

20000

40000

60000

80000

100000

120000

140000

160000

180000

200000

0 200 400 600 800 1000 1200 1400 1600

generaties

gesch

ikth

eid

beste

gemiddelde

(b) willekeurig lexicografisch

Figuur 4.15: De geschiktheidsgrafiek van de aanschakelbare golfvormgenerator

zien we het antwoord van de gevonden module op de verschillende datasets. De wens- en

antwoordpulstrein werden over elkaar gelegd om goed te kunnen vergelijken. We zien dat

we een aanvaardbaar resultaat bekomen. In figuur 4.14a zien we dat initieel de gemiddelde

geschiktheid groot is. Dan na ongeveer 200 generaties daalt deze zeer snel. Dit komt door

de selectiedruk. Selectie heeft in het begin duidelijk de overhand op de recombinatie ope-

ratoren. Men kan selectie aanzien als een exploiterende operator (‘gebruik wat je hebt’),

en recombinatie als een explorerende operator (‘ga op zoek naar nieuwe informatie’). Ini-

tieel wordt de populatie dus geexploiteerd. Na ongeveer 200 generaties zien we dat de

gemiddelde geschiktheid ongeveer constant blijft voor de rest van de generaties. Op dat

punt is er dus een evenwicht bereikt tussen de exploratie en de exploitatie. Dit wil ook

zeggen dat de populatie nooit volledig zal kunnen convergeren. Dit ligt waarschijnlijk aan

het vrij destructieve karakter van de uniforme overkruising die gebruikt wordt.

Ook de willekeurig lexicografische combinatie geeft zeer behoorlijke resultaten (figuur

4.13b), dit ondanks de introductie van behoorlijk wat ruis op de evaluatie van de indivi-

duen. Vooral de elites zouden hier zeer hard onder moeten leiden. Een individu dat voor

een bepaalde geschiktheid optimaal is (en dus een elite is), kan plots de volgende generatie

(andere geschiktheidsvolgorde) zeer slecht scoren, en geen elite meer zijn. De kans is dus

71

Page 83: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

zeer groot dat er geen behoud van elites is. Het is dus beter zonder elites te werken, omdat

deze toch enkel de effectief genetisch actieve populatie verkleinen.

De lexicografische orde (de orde is van onder naar boven als we kijken naar figuur

4.13a) geeft een zeer goed resultaat voor de eerste dataset (onderste golfvorm). Voor de

andere golfvormen presteert deze methode echter veel slechter. Dit is zeer begrijpbaar,

omdat de lexicografische orde als hoofddoel heeft zo goed mogelijk te optimaliseren voor

de eerste dataset. Als deze (tijdelijk) niet meer beter kan wordt voor de andere datasets

geoptimaliseerd. Als er dan echter een individu is dat de eerste dataset nog maar een heel

klein beetje beter kan dan de anderen (die de andere datasets reeds aan het optimaliseren

waren), dan is dit de beste, en worden alle verbeteringen aan de lager gerangschikte

datasets vergeten. In figuur 4.15a zien we dat de eerste dataset na een zeer korte tijd niet

meer verbetert. Dit betekent dat vanaf dan de andere datasets geoptimaliseerd worden.

Echter, wat later is er plots terug een verbetering in de eerste dataset, waardoor de kans

zeer groot is dat wat er gedurende 400 generaties aan de lager gerangschikte datasets is

geoptimaliseerd, plots verloren is.

De resultaten van de pareto-optimalisatie zijn eerder bedroevend (figuur 4.12b). Dit

heeft waarschijnlijk verschillende redenen. In de paretotheorie was er sprake van een

beslisser. Deze zou na het optimalisatieproces dat individu moeten kiezen dat het beste

aan onze eisen voldoet. Maar omdat we moeilijk met de hand alle niet-gedomineerde

individuen kunnen evalueren, en omdat er geen heuristiek bestaat om aan te geven wat de

betere individuen zijn (dan zouden we namelijk a priori optimalisatie kunnen toepassen),

kiezen we gewoon willekeurig een van de niet-gedomineerde individuen uit de populatie.

Een tweede probleem is waarschijnlijk de te destructieve overkruising ten opzichte van

de nu minder sterke paretoselectie3. Normaal zou de gemiddelde rang van de populatie

moeten dalen met de tijd (meer en meer individuen zijn dan niet-gedomineerd). We zien

echter dat er reeds van in het begin zeer weinig verandert aan de gemiddelde rang van de

populatie.

De uniforme overkruising vormt waarschijnlijk een redelijk groot probleem voor alle

vormen van optimalisatie zodra een redelijk groot deel van het chromosoom benut wordt.

Het deel van de module dat benut wordt, bepaalt de zoekruimte. Hoe groter het benutte

deel, hoe groter de zoekruimte. En hoe groter de zoekruimte, hoe groter de kans dat als

je twee willekeurige (maar redelijk goede) individuen overkruist, je een individu krijgt dat

slechter is dan de twee ouders. Dit komt omdat er in het chromosoom plots vele bits bijna

willekeurig veranderen. Omdat er een groot deel van het chromosoom gebruikt wordt, wil

dit dus ook zeggen dat de kans groot wordt dat er veel willekeurige veranderingen optreden

in het gebruikte deel van het chromosoom.

Een oplossing hiervoor zou kunnen bestaan uit een paringsbeperking (in het Engels3Paretoselectie is minder strikt dan lineair gecombineerde selectie, omdat de paretoselectie geen totale

orde introduceert. De lineair gecombineerde selectie is dat wel.

72

Page 84: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

mating restriction). Alleen individuen waarvan het genotype verwant is (Hamming af-

stand is klein), mogen gebruikt worden als ouders. Dit is een eigenschap die we ook in de

natuur waarnemen. Het is onmogelijk een levend wezen te bekomen als we twee individu-

en van verschillende soorten proberen te combineren. Het zelfde probleem hebben we bij

de uniforme overkruising. Deze paringsbeperking is niet enkel nuttig bij uniforme over-

kruising, maar kan er bij elke vorm van overkruising voor zorgen dat de zoektocht beter

verloopt. Men moet wel opletten dat de populatie niet te snel convergeert, en zo in een

suboptimaal punt terechtkomt. Het introduceren van paringsbeperking vermindert name-

lijk de exploratie behoorlijk. Nog beter zou het zijn om paringsbeperking te combineren

met nichevorming. De nichevorming zorgt ervoor dat er een redelijk uniforme verdeling

van individuen is over de zoekruimte4. Op die manier wordt vroegtijdige convergentie

tegengegaan.

Figuur 4.16: De letters T, C, L en X zoals de CBM ze te zien krijgt

TCLX Het TCLX-probleem is een patroonherkenningsprobleem dat reeds meer gebruikt

werd voor patroonherkenningstesten (referentie onbekend). Het is de bedoeling elk van de

letters T, C, L en X te kunnen herkennen. Als ingang gebruiken we de bitpatronen in figuur

4.16. De CBM moet een hoog niveau geven op een van zijn vier uitgangen, afhankelijk

van welke letter aan de ingang wordt aangelegd. Dit probleem is in vergelijking met de

vorige problemen reeds zeer complex om te trainen (de duur van een typische training

is ongeveer 8 uur). Zelfs na deze lange trainingsfase werd in sommige gevallen nog geen

voldoend goede module getraind.

In figuur 4.17 zien we de geschiktheidsgrafieken van twee verschillende runs met lineaire

combinatie (gelijke gewichten). In figuur 4.18a zien we de grafiek voor pareto-optimalisatie,

en in figuur 4.18b zien we die voor willekeurig lexicografische ordening. De lexicografische

methode hebben we niet gebruikt, omdat we reeds op voorhand weten dat alle datasets

even belangrijk zijn.

De beste oplossing werd gevonden door middel van de gewogen som. Deze oplossing

zien we in figuur 4.19. Voor elk van de letters zien we het eerste deel van de 4 uitgangs-

pulstreinen. Reeds zeer snel wordt een juiste beslissing genomen, en deze beslissing blijft

zeer lang stabiel (pas na 600 klokcycli verschijnt er wat ruis). De andere methodes konden

slechts minder goede tot slechte oplossingen vinden. De slechte oplossingen werden vooral4Merk op dat we in het geval van de CBM spreken over een zoekruimte met 291008 elementen (wordt

wel wat verminderd door gebruik te maken van het groeiproces)! 200 individuen uniform verdelen over eendergelijke ruimte is dus wel een redelijk relatief begrip.

73

Page 85: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

0

500000

1000000

1500000

2000000

2500000

3000000

3500000

4000000

4500000

0 5000 10000 15000 20000

generaties

ge

sc

hik

the

id

beste

gemiddelde

(a) lineaire combinatie gelijke gewichten

0,0E+00

5,0E+05

1,0E+06

1,5E+06

2,0E+06

2,5E+06

3,0E+06

3,5E+06

4,0E+06

0 5000 10000 15000 20000

generaties

ge

sc

hik

the

id

beste

gemiddelde

(b) lineaire combinatie gelijke gewichten, parame-ters GA anders

Figuur 4.17: De geschiktheidgrafiek van het TCLX probleem

0

5000

10000

15000

20000

25000

30000

35000

40000

45000

50000

0 5000 10000 15000 20000

generaties

ge

sc

hik

the

id

beste

gemiddelde

(a) paretorangorde

0

200000

400000

600000

800000

1000000

1200000

0 5000 10000 15000 20000generaties

ge

sc

hik

the

id

beste

gemiddelde

gem. beste

(b) willekeurig lexicografisch

Figuur 4.18: De geschiktheidgrafiek van het TCLX probleem

T

Uitgang 1:________________________||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||...

Uitgang 2:________________________________________________________________________________________...

Uitgang 3:________________________________________________________________________________________...

Uitgang 4:________________________________________________________________________________________...

C

Uitgang 1:________________________________________________________________________________________...

Uitgang 2:________________________________||| || ||||||||||||||||||||||||||||||||||||||||||||||||...

Uitgang 3:________________________________________________________________________________________...

Uitgang 4:________________________________________________________________________________________...

L

Uitgang 1:________________________________________________________________________________________...

Uitgang 2:________________________________________________________________________________________...

Uitgang 3:_____________________________| | | | || ||| |||||||||||||||||||||||||||||||||||||||||||...

Uitgang 4:________________________________________________________________________________________...

X

Uitgang 1:________________________________________________________________________________________...

Uitgang 2:________________________________________________________________________________________...

Uitgang 3:________________________________________________________________________________________...

Uitgang 4:____________________________________________________| | ||||||||||| ||||||||||| |||||||...

Figuur 4.19: Een deel van de uitgangspulstreinen voor een zeer goede oplossing van het TCLXprobleem (door middel van lineaire combinatie gevonden)

74

Page 86: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

door de pareto-optimalisatie gevonden (zelfde redenen als bij de vorige test).

In figuur 4.17a zien we een figuur net zoals bij de andere testen. Hier maakten we ook

gebruik van dezelfde instellingen als al de andere test. Voor figuur 4.17b hebben we echter

de kans op mutatie en overkruising 10 keer verkleind. In het tweede geval is een duidelijk

betere oplossing gevonden. We zien ook dat de gemiddelde geschiktheid van de populatie

in het tweede geval een stuk lager ligt dan in het eerste geval. Dit komt overeen met wat

we reeds vertelden over de convergentie van de populatie, en het destructieve karakter van

de recombinatie-operatoren. We zien duidelijk dat als de kans op recombinatie afneemt,

de populatie beter convergeert. In dit geval lijdt deze beter convergentie tot een betere

oplossing.

In figuur 4.18b zien we behalve de beste en de gemiddelde geschiktheid, ook het zwe-

vend gemiddelde van de beste geschiktheden. Hieraan kunnen we zien dat het gemiddelde

van de beste geschiktheden bij willekeurig lexicografische optimalisatie wel degelijk verbe-

tert, maar wel zeer traag ten opzichte van de lineaire-combinatiemethode.

De oorzaak van de sprongen die we waarnemen in de gemiddelde geschiktheid in al

de figuren is vooralsnog niet duidelijk. We vermoeden dat dit komt door het willekeurige

karakter van het GA.

4.6.3 Berekeningscomplexiteit

We hebben een aantal metingen gedaan van de tijd die de datasetlus inneemt afhankelijk

van het aantal individuen, het aantal timeslices en het aantal datasets. De meting omvatte

de datasetlus met daarin het uitvoeren van het CBM programma, het uitlezen van de

geschiktheden, en het laden van de netlijsten. Deze metingen werden over 10 generaties

uitgemiddeld.

0

0,2

0,4

0,6

0,8

1

1,2

1,4

1,6

0 100 200 300 400

Aantal individuen

Tijd

(s)

1 timeslice

11 timeslices

22 timeslices

55 timeslices

110 timeslices

Figuur 4.20: De tijd die de datasetlus inneemt afhankelijk van het aantal individuen en het aantaltimeslices. Het aantal datasets is 1.

In figuur 4.20 zien we de tijd die de datasetlus inneemt (voor 1 dataset) afhankelijk

van het aantal individuen en het aantal timeslices. Voor meerdere datasets, moet men de

tijd gewoon vermenigvuldigen met het aantal datasets (dit is gewoon een lus). We zien

75

Page 87: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

dat er een lineair verband bestaat tussen het aantal individuen en de tijdsduur van de

datasetlus.

0

0,0005

0,001

0,0015

0,002

0,0025

0,003

0,0035

0 20 40 60 80 100Timeslices

Tijd

per

ind

ivid

u(s

/in

d)

Figuur 4.21: De tijd die de datasetlus inneemt per individu, afhankelijk van het aantal timeslices.Het aantal datasets is 1.

In figuur 4.21 zien we de tijd per individu in functie van het aantal timeslices. Ook hier

zien we een lineair verband. De totale tijd (in milliseconden) die de datasetlus inneemt,

kunnen we nu schrijven als

Tijddatasetlus = ((0, 026∗timeslices+0, 4447)∗individuen+1, 102∗timeslices+64, 08)∗datasets

Als we nu nog het aantal generaties en het aantal bigruns (herhalingen van de volledige

generationele lus) in rekening brengen (we houden dan wel geen rekening met de tijd die

het selecteren van de individuen en het compileren en laden van de CBM programma’s

inneemt; dit is echter te verwaarlozen ten opzichte van de totale tijd), krijgen we de

tijdsduur van de evolutiemode:

Tijdtotaal = Tijddatasetlus ∗ generaties ∗ bigruns

De nieuwe methode trager is dan de oude methode (voor hetzelfde totaal aantal ti-

meslices). Bij de nieuwe methode is er in de datasetlus namelijk een extra vertraging van

64,08 ms per dataset (door het starten van het programma). Beide methodes zijn wel

O(n) met n elk van de parameters die we zonet tegenkwamen (aantal individuen, aantal

timeslices, aantal datasets).

Deze vergelijking geldt enkel als we het oude systeem gebruiken zoals het door de Garis

is voorgesteld. Indien we het oude systeem echter goed zouden gebruiken, zou de tijdsduur

van de training veel groter worden. Met goed gebruiken bedoelen we dat de datasets

verschillende keren moeten herhaald worden op een willekeurige manier, met de nodige

lege pulstreinen ertussen. De verschillende datasets zouden dus gecombineerd worden tot

een veel langere dataset, veel langer dan de som van de lengtes van de individuele datasets.

Hierdoor is de oude manier - dan goed gebruikt - effectief trager dan de nieuwe manier.

76

Page 88: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

4.7 Besluit

Het was mogelijk training met meerdere datasets te implementeren op de CBM. Er zijn

verschillende combinatiemethodes voorzien, en er is voldoende theorie besproken om deze

verder uit te breiden. Verschillende testen tonen aan dat door middel van meerdere data-

sets het mogelijk is om complexe problemen te evolueren op de CBM. Door de tests zijn

een aantal problemen met het GA aan het licht gekomen. Hierdoor presteren bepaalde

methodes redelijk slecht (pareto-optimalisatie). We hebben ook een looptijdstudie gedaan

die aantoont dat de nieuwe methode sneller is dan de oude methode (als deze correct

gebruikt zou worden).

77

Page 89: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Hoofdstuk 5

Besluit

De doelstellingen van deze thesis waren:

• Een beter inzicht verwerven in wat de interne signalen voorstellen en hoe we ex-

terne informatie kunnen voorstellen via pulstreinen, door bestaande methoden te

onderzoeken en te verbeteren, en door nieuwe methoden te introduceren.

• De implementatie van meerdere datasets op de CBM om op die manier complexere

problemen te kunnen trainen.

Het bestaand filter voor de conversie van pulstreinen tot analoge signalen werd opge-

poetst, de oude methode verbeterd, en een nieuwe methode geıntroduceerd. De nieuwe

methode heeft een SNR die 22dB beter is dan de methodes uit de literatuur. We hebben

aangetoond dat alle gebruikte methodes eigenlijk ∆Σ-modulatoren zijn. De pulstrein-

codering heeft dus dezelfde goede eigenschappen als deze waarvoor de ∆Σ-modulatoren

bekend staan. Nochtans is het wegens hardwarebeperkingen niet mogelijk deze goede

eigenschappen ten volle uit te benutten.

We hebben ook meerdere datasets kunnen implementeren op de CBM. Verschillende

combinatiemethoden zijn voorzien. De resultaten tonen aan dat door middel van meerdere

datasets wel degelijk veel complexere problemen getraind kunnen worden dan men met

de oude methode mogelijk was. Door deze resultaten zijn een aantal problemen van het

huidige GA aan het licht gekomen. Er is een tijdsstudie gedaan die aantoont dat de nieuwe

methode sneller is dan de oude methode (als deze correct gebruikt zou worden).

78

Page 90: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Bijlage A

Nieuw GAC formaat

Het Genetisch Algoritme Configuratiebestand beschrijft de parameters van het genetisch

algoritme. Er zitten echter ook parameters in voor de uitvoeringsmodus en algemene in-

stellingen voor het wegschrijven van informatie. Wij hebben een uitbreiding gemaakt van

versie 3.1. De nieuwe versie hebben we versie 3.2 gedoopt.

Genetic Algorithm Data File Format 3.2PopSize 400BrainSize 1NumGenerations 500NumBigRuns 15SelectionMethod PARETORANKCombinefitness PARETONumElite 10NumTapPoints 240 1 5 10 16 24 32 40 48 54 59 62 63 62 59 54 48 40 32 24 16 10 5 1

Log Top 10 Of Generation EVERY 15LogHistory BUGSLogDir d:\cbm\tmpClearBrain TRUESeed RANDOMBrainUpdates 9

Figuur A.1: Een voorbeeld van een .gac-bestand

In volgende opsomming bespreken we elk van de nodige parameters in de volgorde

waarin ze in het bestand voorkomen.

Genetic Algorithm Data File Format <versie> : hoofding die steeds vooraan in

het bestand moet staan en gebruikt wordt om de verschillende versies te onderschei-

den. Wij gebruiken versie 3.2.

PopSize <num> : grootte van de populatie waarbij num kan liggen tussen 1 en 1024.

(enkel in evolutiemode)

79

Page 91: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

BrainSize <num> : het aantal modules dat in uitvoeringsmodus aanwezig is, kan lig-

gen tussen 1 en 65535. (enkel in uitvoeringsmodus, in evolutiemodus moet dit 1

zijn)

NumGenerations <num> : het aantal generaties dat het genetisch algoritme zal door-

lopen, ligt tussen 1 en 1024. (enkel in evolutiemodus)

NumBigRuns <num> : het aantal keren dat de volledige generationele lus (al de ge-

neraties) opnieuw uitgevoerd wordt. De populatie blijft behouden als we de gene-

rationelelus opnieuw starten. Deze methode kan dus gebruikt worden om meer dan

1024 generaties te evolueren. (enkel in evolutiemodus)

SelectionMethod <type> : definieert de selectiemethode. De gebruiker kan kiezen

tussen:

• RANK : rangorde

• FITPROP : geschiktheidsproportioneel

• PARETORANK : Pareto-aangepaste rangorde

(enkel in evolutiemodus)

CombineFitness <type> <nr params> <param> : geeft de manier waarop de ge-

schiktheden worden gecombineerd. De 2 laatste parameters zijn optioneel (enkel bij

WEIGHTED). De gebruiker kan kiezen uit:

• NONE : gewogen som met alle gewichten gelijk

• WEIGHTED : gewogen som met opgegeven gewichten. De gebruiker moet ook

nog het aantal gewichten opgeven, gevolgd door de gewichten zelf.

• LEXICOGRAPHIC : lexicografisch

• RANDOMLEXICO : willekeurig lexicografisch

• PARETO : pareto-rangschikking

(enkel in evolutiemodus)

NumElite <num> : definieert het aantal elites. (enkel in evolutiemodus)

NumTapPoints 24 <n0 ... n23> : definieert het convolutiefilter. (enkel in evolutie-

modus)

Log Top <num> of Generation <gen> : slaat de <num> beste modules op naar

schijf na de generaties gegeven door <gen>. <gen> kan een van de volgende zijn:

• EVERY, gevolgd door een getal : om de zoveel generaties

80

Page 92: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

• NONE : niet opslaan

• FINAL : enkel de laatste generatie

• ALL : elke generatie

(enkel in evolutiemodus)

LogHistory <type> : maakt een bestand aan (history.txt) dat debuginformatie bevat.

Men kan kiezen uit:

• TRUE : wel debug

• FALSE : geen debug

• GENOBYTEDIAG : extra veel debug informatie

• BUGS : enkel mogelijk fouten die in de CBM zijn opgetreden

LogDir <dir> : specificeert de directory waar de modules worden gelogd, en history.txt

wordt geschreven.

ClearBrain <TRUE|FALSE> : Maakt het mogelijk de signalen in de module eerst

leeg te maken. (enkel in uitvoeringsmodus)

Seed <RANDOM| <num>> : kies de initialisatie van de randomgetallengenerator.

Men kan een vast getal opgeven, of aangeven dat er willekeurig (met de tijd) mag

geınitialiseerd worden (RANDOM).

BrainUpdates <num> : het aantal timeslices dat gesimuleerd moet worden. Dit is

nodig in evolutiemodus en in uitvoeringsmodus. Dit moet overeenkomen met de

maximale lengte van een pulstrein in het pulstreinbestand.

81

Page 93: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Bijlage B

Nieuw SPT formaat

Spiketrain Data File Format 3NumSpiketrains 4NumDatasets 2

respo Rstim0 STstim1 STtargt DST 7

set1

stim0 0100100stim1 0001100targt 0101000

set2

stim0 1111110stim1 0001111targt 1110001

Figuur B.1: Een voorbeeld van een .spt-bestand

Het nieuwe pulstrein bestandsformaat (versie 3) is sterk veranderd ten opzichte van de

vorige versie (versie 2). Het is nu mogelijk datasets te definieren. In volgende opsomming

bespreken we elk van de nodige parameters in de volgorde dat ze in het bestand voorkomen.

Spiketrain Data File Format <versie> : de hoofding die het type en de versie van

dit bestand aangeeft. Wij gebruiken versie 3.

NumSpiketrains <num> : Specificeert het aantal pulstreinen.

NumDatasets <num> : specificeert het aantal datasets.

82

Page 94: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

<naam> <ST|R|DST <num>> : de declataties van de verschillende pulstreinen. Aan

elke pulstreinnaam wordt een type gegeven: ST voor een stimulus of doelpulstrein,

R voor een antwoordpulstrein en DST, hetzelfde als ST, maar nu wordt er een extra

vertraging toegevoegd, gegeven door <num> (er worden dan vooraan <num> nullen

toegevoegd, de pulstrein wordt dus langer). DST kan handig gebruikt worden voor

doelpulstreinen waarvan men de vertraging niet op voorhand kent. Op deze manier

kan men ze eenvoudig instellen.

<datasetnaam> <pulstreinnaam> <data> ... : de datasetdefinities. In elk van

de datasets komen alle pulstreinen van het type ST en DST voor. Na de naam van

de pulstrein komt een sequentie van nullen en enen (zonder spaties) die de pulstrein

definieren. De pulstreinen mogen in willekeurige volgorde staan.

83

Page 95: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Bijlage C

Nieuw MSK formaat

Er werd eveneens een nieuw formaat ingevoerd voor het definieren van maskers voor de

genetische fase. Zo kon het handmatig invoeren van maskers overzichterlijker worden ge-

maakt. De hoofding is op het versienummer na onveranderd. Enkel de manier waarop de

maskers zelf opgegeven worden is gewijzigd.

Mask Data File Format 3Fill RANDOMCrossRate 0.1MutRate 0.001NumSpecifiedMasks 1

STARTMASKCROSSOVERMASKS

x 0 y 3 z 6 111111x 1 y 3 z 6 111111x 2 y 3 z 6 111111 1111111x 2 y 3 z 7 111111x 1 y 3 z 7 111111x 0 y 3 z 7 111111

MUTATIONMASKSx 0 y 3 z 6 111111x 1 y 3 z 6 111111x 2 y 3 z 6 111111 0000000x 2 y 3 z 7 111111x 1 y 3 z 7 111111x 0 y 3 z 7 111111

ENDMASK

Figuur C.1: Een voorbeeld van een .msk-bestand

Mask data file format <num> : de hoofding die het type en de versie van dit bestand

aangeeft. Wij gebruiken versie 3.

Fill <ZERO|ONE|RANDOM> : dit geeft aan hoe de compiler niet-opgegeven velden

84

Page 96: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

in het masker moet opvullen. Alle velden die opgegeven worden, zullen dus een

waarde krijgen volgens deze parameter.

CrossRate <rate> : indien er velden in het masker niet opgeven zijn (Fill random), dan

geeft dit getal (tussen 0.0 en 1.0) de kans aan dat een bit van het overkruisingsmasker

hoog zal zijn. Dit getal definieert dus de verhouding van het aantal hoge bits tot het

totaal aantal bits in het volledige masker.

MutRate <rate> : indien er velden in het masker niet opgeven zijn (Fill random), dan

geeft dit getal (tussen 0.0 en 1.0) de kans aan dat een bit van het mutatiemasker

hoog is. Dit getal definieert dus de verhouding van het aantal hoge bits tot het totale

aantal bits in het volledige masker.

NumSpecifiedMasks <num> : het aantal maskers dat expliciet in dit bestand opge-

geven wordt. Normaal gezien zal dit nul zijn, tenzij men zelf opgeven maskers wil

gebruiken.

StartMask <mask> EndMask : elk opgegeven masker wordt voorafgegaan door “start-

mask” en moet afgesloten worden met “endmask”. Dit koppel moet minstens Num-

SpecifiedMasks keer voorkomen. Indien er er meer voorkomen, worden deze gene-

geerd.

<mask> : er moeten telkens twee maskers opgegeven worden (die eventueel leeg kunnen

zijn; dan worden ze opgevuld met de informatie van de header). “CROSSOVER-

MASKS” geeft het begin van het overkruisingsmasker en “MUTATIONMASKS” het

begin van het mutatiemasker aan. De waarden van de velden van de maskers worden

nu ingevuld zoals bij een genotype/fenotype-bestand: Per cel kunnen de waarden

voor de bitmaskers opgeven worden. Bij gewone cellen worden zes bits verwacht (1

voor iedere ingang/uitgang van de cel), bij universele cellen nog eens zeven bits extra

(synaps en neuronbit).

85

Page 97: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

Bibliografie

[1] T. Aernoudt and D. D’haeyere. Gebruik van de CAM-brain met toepassing op pa-

troonherkenning. Master’s thesis, Universiteit Gent (ELIS), 2000.

[2] Kyong-Joong Kim And. Robot action selection for higher behaviors with cam-brain

modules.

[3] Shapour Azarm, Brian J. Reynolds, and Sanjay Narayanan. Comparison of Two

Multiobjective Optimization Techniques With and Within Genetic Algorithms. In

CD-ROM Proceedings of the 25th ASME Design Automation Conference, volume

Paper No. DETC99/DAC-8584, Las Vegas, Nevada, September 1999.

[4] A. Ben-Tal. Characterisation of pareto and lexicographic optimal solutions. In G. Fan-

del and T. Gal, editors, Proceedings of the Third Conference on Multiple Criteria De-

cision Making Theory and Application, vol. 177, pages 1–11, Berlin, 1979. Springer

Verlag.

[5] C. A. Coello Coello. A short tutorial on evolutionary multiobjective optimization. In

EMO, pages 21–40, 2001.

[6] D. Cvetkovic and I. C. Parmee. Evolutionary design and multi–objective optimisation.

In 6th European Congress on Intelligent Techniques and Soft Computing EUFIT’98,

pages 397–401, Aachen, Germany, 1998.

[7] H. de Garis. CAM-brain: ATR’s billion neuron artificial brain project - a three year

progress report. In International Conference on Evolutionary Computation, pages

886–891, 1996.

[8] H. de Garis. CAM-Brain: The evolutionary engineering of a billion neuron artificial

brain by 2001 which grows/evolves at electronic speeds inside a cellular automata

machine (CAM). In Eduardo Sanchez and Marco Tomassini, editors, Towards Evol-

vable Hardware; The Evolutionary Engineering Approach, pages 76–98, Berlin, 1996.

Springer.

[9] H. de Garis, A. Buller, L. de Penning, T. Chodakowski, M. Korkin, G. Fehr, and

D. Decesare. Initial evolvability experiments on the CAM-brain machines (CBMs).

86

Page 98: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

In Proceedings of the 2001 Congress on Evolutionary Computation., volume 1, pages

27–30, May 2001.

[10] H. de Garis, A. Buller, T. Dob, J. Honlet, P. Guttikonda, and D. Decesare. Building

multimodule systems with unlimited evolvable capacities from modules with limited

evolvable capacities (MECs). In Proceedings. The Second NASA/DoD Workshop on

Evolvable Hardware., pages 225–34. IEEE Comput. Soc, July 2000.

[11] H. de Garis, F. Gers, N. E. Nawa, and M. Hough. ATR’s artificial brain (CAM-brain)

project: A sample of what individual CoDi-1bit model evolved neural net modules can

do. In Proceedings of the The First NASA/DOD Workshop on Evolvable Hardware.,

1998.

[12] H. de Garis and M. Korkin. The CAM-brain Machine (CBM) an FPGA-based hard-

ware tool that evolves a 1000 neuron-net circuit module in seconds and updates a 75

million nneuron artificial brain for real-time robot control. A special issue of Elsevier’s

Neurocomputing journal on Evolutionary Neural Systems, 2001.

[13] H. de Garis, M. Korkin, F. Gers, N. E. Nawa, and M. Hough. Building an arti-

ficial brain using an FPGA-based CAM-Brain Machine. Applied Mathematics and

Computation, 111(2–3):163–192, May 2000.

[14] H. de Garis, M. Korkin, P. Guttikonda, and D. Cooley. Evolving detectors of 2d

patterns on a simulated CAM-brain machine: an evolvable hardware tool for building

a 75 million neuron artificial brain. In Proceedings of the SPIE –The International

Society for Optical Engineering., volume 4109, pages 13–18, August 2000.

[15] H. de Garis, M. Korkin, P. Guttikonda, D. Cooley, A. Buller, T. Chodakowski, and

G. Zielinski. The CAM-brain machine (CBM) : An FPGA based tool which evolves

neural net circuit modules in seconds for building a 75 million neuron artificial brain

that controls a lifesized kitten robot. Submission Invitation to Genetic Programming

and Evolvable Hardware Journal.

[16] H. de Garis, N. E. Nawa, M. Hough, and M. Korkin. Evolving an optimal

de/convolution function for the neural net. In Proceedings of International Con-

ference on Neural Networks. IEEE, volume 1, pages 875–882, july 1999.

[17] H. Eeckhaut. Grafische programmeeromgeving voor de CAM-brain neurale computer.

Master’s thesis, Universiteit Gent (ELIS), Gent, 2001.

[18] N. Eiji Nawa, F. Gers H. de Garis, and M. Korkin. ATR’s CAM-brain machine

(CBM) simulation results and representation issues. In Genetic Programming 1998:

Proceedings of the Third Annual Conference, pages 875–882, University of Wisconsin,

Madison, Wisconsin, USA, 22-25 july 1998. Morgan Kaufmann Publishers.

87

Page 99: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

[19] C. M. Fonseca and P. J. Fleming. An overview of evolutionary algorithms in multio-

bjective optimization. Evolutionary Computation, 3(1):1–16, 1995.

[20] C. M. Fonseca and P. J. Fleming. Multiobjective optimization and multiple constraint

handling with evolutionary algorithms—Part I: A unified formulation. IEEE Transac-

tions on Systems, Man, and Cybernetics, Part A: Systems and Humans, 28(1):26–37,

1998.

[21] F. Gers and H. de Garis. Porting a cellular automata based artificial brain to MIT’s

cellular automata machine (CAM).

[22] F. Gers and H. de Garis. CAM-Brain: A new model for ATR’s cellular automata

based artificial brain project. Lecture Notes in Computer Science, 1259:437–439, 1997.

[23] F. Gers, H. de Garis, and M. Korkin. CoDi-1Bit: A simplified cellular automata

based neuron model. Artificial Evolution Conference, Nimes, France, oct 1997.

[24] W. Gerstner. What’s different with spiking neurons? Preprint. To appear in: The

Handbook of Biological Physics, Stan Gielen et al. (Eds.).

[25] W. Gerstner. Associative memory in a network of ‘biological’ neurons. In R. Manner

and B. Manderick, editors, Advances in Neural Information Processing Systems, vol.

3, pages 84–90, San Mateo, CA, 1991. Morgan Kaufmann Publishers.

[26] D. E. Goldberg. Genetic Algorithms in Search, Optimization, and Machine Learning.

Addison-Wesley, Reading, MA, 1989.

[27] D. E. Goldberg, K. Deb, and J. Horn. Massive multimodality, deception, and genetic

algorithms. In R. Manner and B. Manderick, editors, Parallel Problem Solving from

Nature, 2, Amsterdam, 1992. Elsevier Science Publishers, B. V.

[28] M. Gronroos. Evolutionary design of neural networks. Master’s thesis, Computer

Science, Department of Mathematical Sciences, University of Turku, Finland, 1998.

[29] D. Hebb. The Organisation of Behavior. Wiley, NY, 1949.

[30] J. H. Holland. Adaptation in Natural and Artificial Systems. University of Michigan

Press, Ann Arbor, MI, 1975.

[31] J. Horn. The nature of niching: Genetic algorithms and the evolution of optimal,

cooperative populations. Technical Report UIUCDCS-R-97-2000, 1997.

[32] J. Horn and N. Nafpliotis. Multiobjective optimization using the niched pareto genetic

algorithm. Technical Report IllIGAL 93005, Urbana, IL, 1993.

88

Page 100: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

[33] M. Hough. SPIKER: Analog waveform to digital spiketrain conversion in ATR’s

artificial brain (cam-brain) project. In International Conference on Robotics and

Artificial Life, january 1999.

[34] C.-L. Hwang and A. S. M. Masud. Multiple objective decision making - methods and

applications, vol. 164. In Lecture Notes in Economics and Mathematical Systems,

Berlin, 1979. Springer Verlag.

[35] M. Korkin, H. de Garis, F. Gers, and 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. In Genetic Programming 1997:

Proceedings of the Second Annual Conference, pages 498–503, Stanford University,

CA, USA, 13-16 July 1997. Morgan Kaufmann Publishers.

[36] M. Korkin, G. Fehr, and G. Jeffery. Evolving hardware on a large scale. In Pro-

ceedings. The Second NASA/DoD Workshop on Evolvable Hardware, pages 173–81.

IEEE Comput. Soc., July 2000.

[37] M. Korkin, N. E. Nawa, and H. de Garis. A “Spike Interval Information Coding”

representation for ATR’s CAM-brain machine (CBM). Lecture Notes in Computer

Science, 1478, 1998.

[38] W. Maass and C. M. Bishop. Pulsed Neural Networks. Bradford Books/MIT Press,

Cambridge, MA, 2001.

[39] S. W. Mahfoud. Niching Methods for Genetic Algorithms. PhD thesis, Urbana, IL,

USA, 1995.

[40] A. Marques, V. Peluso, M. S. Steyaert, and W. M. Sansen. Optimal parameters for

∆Σ modulator topologies. In IEEE Transactions on Circuits and Systems II, vol 45,

no 9, pages 1232–1241. IEEE, 1998.

[41] W. McCulloch and W. Pitts. A logical calculus of the ideas immanent in nervous

activity. Bulletin of Mathematical Biophysics, 5:115–133, 1943.

[42] S. Ooghe and T. Van den Driessche. Gebruik van de CAM-brain architectuur voor

informatie-representatie. Master’s thesis, Universiteit Gent (ELIS), 2000.

[43] A. V. Oppenheim and R. W. Schafer. Digital Signal Processing. Prentice Hall,

Englewood Cliffs, NJ, 1975.

[44] G. Otte. Training van neurale netwerken door middel van deeltjeszwermen. Master’s

thesis, Universiteit Gent (ELIS), 2000.

89

Page 101: Pulstreincodering en training met meerdere datasets op de CBM.€¦ · Afstudeerwerk ingediend tot het behalen van de graad van Burgerlijk Ingenieur Compu-terwetenschappen, optie:

[45] F. Rieke, R. van Steveninck D. Warland, and W. Bialek. Spikes: Exploring the Neural

Code. Bradford Books/MIT Press, Cambridge, MA, 1997.

[46] Y. Saeys. Studie en optimalisatie van het genetische algoritme in de CAM-brain.

Master’s thesis, Universiteit Gent (ELIS), 2000.

[47] B. Schrauwen. Messy genetische algoritmes en niche technieken. Master’s thesis,

Universiteit Antwerpen (UIA), 2000.

[48] Sung-Bae-Cho and Geum-Beom-Song. Evolving CAM-Brain to control a mobile ro-

bot. Applied-Mathematics-and-Computation., 111(2–3):147–162, 15 May 2000.

[49] M. Valenzuela-Rendon and E. Uresti-Charre. A non-generational genetic algorithm

for multiobjective optimization. In Thomas Back, editor, Proceedings of the Seventh

International Conference on Genetic Algorithms (ICGA97), pages 657–665, San Fran-

cisco, CA, 1997. Morgan Kaufmann Publishers.

[50] T. Van Den Bulcke. Studie en implementatie van een “field programmable neural

array”. Master’s thesis, Universiteit Gent (ELIS), 2000.

[51] P. Van Der Helst. Analyse van de CAM-brain machine. Master’s thesis, Universiteit

Gent (ELIS), Gent, 2001.

[52] H. Van Marck and Y. Saeys. Haalbaarheidsstudie van de CAM-brain computer, 2001.

Verslag IWT.

[53] D. A. Van Veldhuizen. Multiobjective Evolutionary Algorithms: Classifications, Ana-

lyses, and New Innovations. PhD thesis, Wright-Patterson AFB, OH, 1999.

[54] V. Vereecken. Grafische simulatieomgeving voor de CAM-brain neurale computer.

Master’s thesis, Universiteit Gent (ELIS), Gent, 2001.

[55] P. J. Werbos. Beyond Regression: New Tools for Prediction and Analysis in the

Behavioral Sciences. PhD thesis, Harvard University, Cambridge, MA, 1974.

90