21.07.2013 Aufrufe

Diplomarbeit Der Vergleich von plastischen Synapsen gegenüber ...

Diplomarbeit Der Vergleich von plastischen Synapsen gegenüber ...

Diplomarbeit Der Vergleich von plastischen Synapsen gegenüber ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Diplomarbeit</strong><br />

Dietmar Jung<br />

<strong>Der</strong> <strong>Vergleich</strong> <strong>von</strong> <strong>plastischen</strong> <strong>Synapsen</strong><br />

<strong>gegenüber</strong> <strong>Synapsen</strong> mit konstantem Gewicht<br />

in spikenden neuronalen Netzen<br />

TU Berlin, Institut für Mikroelektronik<br />

Betreuer: Dipl. -Ing. Nasser Mehrtash<br />

Prof. Dr.-Ing. Heinrich Klar


1. Einleitung................................................................................................................ 3<br />

2. Das biologische Neuron.......................................................................................... 6<br />

2.1 <strong>Der</strong> Aufbau eines Neurons ..................................................................................................6<br />

2.2 Das Ruhepotential ...............................................................................................................8<br />

2.3 Das Aktionspotential ...........................................................................................................8<br />

2.4 Die Fortpflanzung des Nervensignals entlang des Axons ...................................................9<br />

2.5 Die Myelinhülle.................................................................................................................10<br />

2.6 Die Impulsverarbeitung .....................................................................................................11<br />

3. Pulscodierte Neuronale Netze............................................................................... 12<br />

3.1 Das Marburger Neuronen Modell......................................................................................12<br />

3.2 Das Feedingpotential.........................................................................................................13<br />

3.3 Das Linkingpotential .........................................................................................................13<br />

3.4 Das Membranpotential und der Schwellwert ....................................................................14<br />

3.5 Die Fähigkeiten des Marburgersystems ............................................................................14<br />

4. <strong>Synapsen</strong>plastizität ............................................................................................... 15<br />

4.1 Modellierung der <strong>Synapsen</strong>plastizität ...............................................................................15<br />

4.2 Depression oder Facility-Verhalten ...................................................................................16<br />

4.3 Die Testumgebung.............................................................................................................18<br />

5. Anwenderhandbuch .............................................................................................. 19<br />

5.1 Programmstart ...................................................................................................................19<br />

5.2 Menüeintrag Datei.............................................................................................................19<br />

5.3 Menü Netz .........................................................................................................................20<br />

5.3.1 Populationsanzahl...............................................................................................20<br />

5.3.2 Neuronparameter ................................................................................................20<br />

5.3.3 Dendritparameter ................................................................................................20<br />

5.3.4 Netz erstellen ......................................................................................................22<br />

5.3.4.1 Netztopologie......................................................................................................22<br />

5.3.5 Start.....................................................................................................................24<br />

5.4 Menü Option......................................................................................................................24<br />

5.4.1 Hebb....................................................................................................................24<br />

5.4.2 Neuronenkontrolle ..............................................................................................24<br />

5.4.3 Inhibitionsverstärkung ........................................................................................25<br />

5.4.4 Globale Inhibition...............................................................................................25<br />

5.4.5 Neuron wählen....................................................................................................25<br />

5.4.6 Potential darstellen..............................................................................................25<br />

5.4.7 Population wählen ..............................................................................................25<br />

5.4.8 Netzausgabe sichern ...........................................................................................26<br />

5.4.9 Einzelschrittsimulation .......................................................................................26<br />

5.5 Menü Bildfolge..................................................................................................................26<br />

5.5.1 Bildfolge ein / aus...............................................................................................26<br />

5.5.2 Bildwahl..............................................................................................................26<br />

5.6 Menü Darstellung ..............................................................................................................26<br />

5.6.1 Zeit......................................................................................................................27<br />

5.6.2 PSP......................................................................................................................27<br />

5.6.3 Bildgröße ............................................................................................................27<br />

5.6.4 Reiz - Skalierung ................................................................................................27<br />

5.7 Menü Debug ......................................................................................................................27<br />

5.7.1 Schreibe Vorwärtsverbindungen .........................................................................27<br />

5.7.2 Schreibe Rückwärtsverbindungen ......................................................................27<br />

5.7.3 Schreibe Neuronenkontrolle ...............................................................................27<br />

5.7.4 stat. Neuron-Daten..............................................................................................27<br />

5.7.5 Speicherbelegung................................................................................................28<br />

SpinnSoftSim 1


6. Programmierhandbuch.......................................................................................... 29<br />

6.1 Die Programmiersprache C++...........................................................................................29<br />

6.2 Die STL-Bibliothek...........................................................................................................29<br />

6.3 Die graphische Benutzeroberfläche - Qt............................................................................30<br />

6.4 Qt-Architect.......................................................................................................................30<br />

6.5 Makefile - und Arbeitsumgebungs- Erstellung..................................................................31<br />

6.6 Benötigte Bibliotheken zur Laufzeit .................................................................................31<br />

6.7 Die Programmstruktur.......................................................................................................31<br />

6.8 Definition der Vorwärtsverbindungen ...............................................................................32<br />

6.9 Definition der Rückwärtsverbindungen.............................................................................32<br />

6.10 Beschreibung der einzelnen Klassen .................................................................................34<br />

6.10.1 check...................................................................................................................34<br />

6.10.2 conback...............................................................................................................35<br />

6.10.3 confront...............................................................................................................36<br />

6.10.4 confrontit.............................................................................................................36<br />

6.10.5 dendrite ...............................................................................................................36<br />

6.10.6 dlgctrlchoosepop................................................................................................37<br />

6.10.7 dlgctrldend ..........................................................................................................37<br />

6.10.8 dlgctrldyneu ........................................................................................................37<br />

6.10.9 dlgctrlhebb ..........................................................................................................37<br />

6.10.10 dlgctrlneuron.......................................................................................................38<br />

6.10.11 dlgctrlpop............................................................................................................38<br />

6.10.12 dlgctrlsstep..........................................................................................................38<br />

6.10.13 drawfield .............................................................................................................38<br />

6.10.14 globalinhib ..........................................................................................................39<br />

6.10.15 MainWin .............................................................................................................39<br />

6.10.16 markram..............................................................................................................39<br />

6.10.17 markramdata .......................................................................................................40<br />

6.10.18 net .......................................................................................................................41<br />

6.10.19 neurodisp.............................................................................................................42<br />

6.10.20 neuron .................................................................................................................43<br />

6.10.21 piccourse.............................................................................................................43<br />

6.10.22 picture .................................................................................................................43<br />

6.10.23 population ...........................................................................................................44<br />

6.10.24 spinnsoftsim........................................................................................................45<br />

6.10.25 spinncheck ..........................................................................................................45<br />

7. Auswertung........................................................................................................... 46<br />

8. Zusammenfassung ................................................................................................ 48<br />

9. Anhang verwendete Literatur ............................................................................... 50<br />

SpinnSoftSim 2


1. EINLEITUNG<br />

An der Entwicklung künstlicher Neuronaler Netze sind verschiedenste Arbeitsgruppen<br />

beteiligt, welche man in zwei Bereiche aufteilen kann. Zum einen erfolgt die Entwicklung<br />

durch Ingenieure und Informatiker, deren Ziel eine Leistungssteigerung der<br />

Computer durch Annäherung an das biologische Vorbild ist. Diese ist gerade im Bereich<br />

der Mustererkennung, einer Sparte der Bildbearbeitung, gewünscht. Die andere Gruppe<br />

besteht aus Neurobiologen, Psychologen und Medizinern, die unter Verwendung einer<br />

Simulation die Vorgänge im Nervensystem besser verstehen können.<br />

Informationstechnische Ansätze dienen zur Bewältigung bestimmter Klassen <strong>von</strong><br />

Aufgaben und folgen nicht immer dem biologischen Vorbild, Lernfähigkeit und Qualität<br />

der Wiedererkennung sind hier <strong>von</strong> Interesse. Ihre Aufgaben sind im Bereich der<br />

Mustererkennung, Szenensegmentierung, Erkennung <strong>von</strong> transformierten oder unvollständigen<br />

Mustern, Änderungen im Bild durch Bewegung und Überlappung <strong>von</strong> Objekten<br />

zu finden. Die im Gebiet der Mathematik beschäftigten Wissenschaftler erforschen<br />

Neuronale Netzwerke, um Aussagen über deren Stabilität und Lernfähigkeit zu finden.<br />

<strong>Der</strong> Bereich der Elektrotechnik stellt spezialisierte Hardware zur Verfügung, mit deren<br />

Verwendung eine schnellere Simulation <strong>gegenüber</strong> reinen Software-Simulationen erfolgen<br />

kann. Bei Neurobiologen steht die Ähnlichkeit des Modells zum biologischen<br />

Vorbild im Vordergrund. Hier werden Modelle erstellt, deren Simulation beim Verständnis<br />

<strong>von</strong> noch ungeklärten Eigenschaften des Gehirns helfen sollen. Psychologen<br />

sind an der Simulation <strong>von</strong> Wechselwirkungen einzelner Bereiche des Gehirns interessiert.<br />

Die Arbeitsweise eines Neuron läßt sich wie folgt beschreiben. Es empfängt die Informationen<br />

<strong>von</strong> den <strong>Synapsen</strong> der vorgeschalteten Neuronen. Die <strong>Synapsen</strong> schütten<br />

ihre Neurotransmitter aus, und die Neurotransmitter setzen sich auf die Rezeptormoleküle<br />

des Dendriten. Es öffnen sich die Kanäle in der Membran des Dendriten und es<br />

kommt zu einem Ionenstrom. Das postsynaptische Potential des Dendriten ist <strong>von</strong> der<br />

Ionenkonzentration abhängig. Alle eingehenden Reize, der mit ihm verbundenen <strong>Synapsen</strong><br />

werden <strong>von</strong> dem Dendriten addiert. Ein Neuron besitzt mehrere Dendriten (Dendritbaum),<br />

die alle in der Soma, dem Zellkörper, zusammenlaufen. Das Ausgangssignal<br />

wird über den Axonhügel an die <strong>Synapsen</strong> und die nachfolgenden Neuronen weitergeleitet.<br />

"Neuronale Netzwerke" bestehen aus gleichartigen, miteinander verknüpften Einheiten,<br />

deren Zusammenwirken Eigenschaften wie Fehlertoleranz und Lernfähigkeit<br />

entstehen lassen. Die Vervielfältigung eines Neurons erlaubt in den meisten Fällen eine<br />

Parallelisierung des Programmablaufs, welche hier nicht zum Tragen kommt. Parallele<br />

Programmabläufe stellen besondere Ansprüche an die Programmierung, denn bei der<br />

Kommunikation der Prozesse darf es nicht zu Verklemmungen kommen. <strong>Vergleich</strong>t<br />

man die Geschwindigkeit des menschlichen Gehirns mit der Geschwindigkeit eines modernen<br />

Rechners, so sollte der Computer dem menschlichen Gehirn überlegen sein,<br />

denn die Schaltzeiten eines Transistors (< 10 -9 s) ist um ein vielfaches geringer, als die<br />

der Schaltzeit einer Nervenzelle (ca. 10 -3 s). Ein Computer benötigt ca. 10 9 Transistoren<br />

um 128 MByte an Informationen zu speichern, diese Zahl ist nicht mehr weit entfernt<br />

<strong>von</strong> 10 11 , der Anzahl der geschätzten Neuronen im Gehirn. Im Gehirn ist eine große Anzahl<br />

<strong>von</strong> Neuronen gleichzeitig aktiv, während in einem klassischen Computer nur der<br />

Prozessor permanent aktiv ist. Die Anzahl der Instruktionen pro Sekunde, die Maschinenbefehle<br />

oder die Anzahl der Schaltvorgänge der Transistoren ist nur bedingt vergleichbar<br />

mit den Leistungen des Gehirns. Allerdings ist zu erkennen, daß eine große<br />

SpinnSoftSim 3


Parallelität der Elemente für eine hohe Gesamtleistung des informationsverarbeitenden<br />

Systems steht.<br />

Als Beispiel für die Notwendigkeit der Parallelverarbeitung gilt die 100-Schritt-Regel.<br />

Ein Mensch kann das Bild eines ihm bekannten Gegenstandes in 0,1 s erkennen. Da<br />

ein Neuron eine Schaltzeit <strong>von</strong> 1 ms besitzt, entspricht dies einer Zahl <strong>von</strong> 100 Schaltzeiten<br />

eines Transistors. Wenn diese Zahl auf einen Computer übertragen wird, hat dieser<br />

gerade angefangen die Aufgabe zu bearbeiten. Dieses Beispiel besagt nichts über die<br />

Menge der an der Erkennung beteiligten Neuronen [1].<br />

Die ersten Neuronen-Modelle verwendeten binäre Ausgangsgrößen und analoge<br />

Eingangsgrößen und wurden bereits 1943 <strong>von</strong> McCulloch und Pitts vorgestellt. Mit diesen<br />

Netzwerken konnte man bereits beliebige logische Funktionen berechnen. Die Modelle<br />

wurden durch analoge Ausgangsfunktionen erweitert, womit Feuerraten des<br />

Neurons dargestellt werden konnten. Die Information des Neurons wird mit der Frequenz<br />

übertragen, mit der das Neuron feuert. Unter Berücksichtigung der Geschwindigkeit<br />

mit der die Informationsverarbeitung im Gehirn stattfindet, wurde experimentell<br />

bestätigt, daß nicht die Frequenz eines Neurons die Information übermittelt, sondern die<br />

Zeitpunkte des Auftretens der Spikes die Informationen darstellen. Das Potential innerhalb<br />

des Neurons setzt sich also aus der Menge aller eingegangenen Spikes in Abhängigkeit<br />

der Zeitpunkte ihres Auftretens zusammen [3]. Die Simulation <strong>von</strong><br />

biologienahen Neuronalen Netzen ist sehr rechenintensiv. Bisher realisierte Neurocomputer<br />

sind für diese Anwendungen kaum zu verwenden, weil sie die Dynamik des Neuronenmodells<br />

nicht repräsentieren, ihre Programmierung zu aufwendig, oder ihr Preis<br />

zu hoch ist und damit der Grad ihrer Verbreitung sinkt. Um diese Lücke zu schließen<br />

wird am Institut für Mikroelektronik an der TU Berlin ein Prozessor entwickelt, der die<br />

Plastizität der <strong>Synapsen</strong> berücksichtigt. <strong>Der</strong> SPINN- (<strong>Synapsen</strong>-Plastisch Spikende<br />

Neuronale Netze) Prozessor soll später auf einer eigenen Steckkarte in einem Standard-<br />

PC die Simulation beschleunigen. Über eine entsprechende Software kann dann die<br />

Konfiguration der Simulationsumgebung erfolgen. Mehrere Gruppen <strong>von</strong> Neuronen,<br />

sogenannte Populationen, können auf diesem Board verwaltet werden. Bei Bedarf, können<br />

mehrere Steckkarten in einen PC eingebaut werden. Diese Boards können dann miteinander<br />

kommunizieren und man erhält einen weiteren Geschwindigkeitsvorteil.<br />

Viele Forschungsgruppen arbeiten mit Puls gekoppelten Neuronalen Netzwerken,<br />

ohne dabei die <strong>Synapsen</strong>plastizität zu berücksichtigen. Hier wird mit einer großen Anzahl<br />

<strong>von</strong> Neuronen gearbeitet und diese Netze finden bereits Verwendung bei der Auswertung<br />

<strong>von</strong> Bildern in der Brustkrebserkennung, Blutzellenerkennung und bei der<br />

Flugzeugerkennung für Raketensteuerungen. Andere Gruppen arbeiten mit wenigen<br />

Neuronen, die dagegen plastische <strong>Synapsen</strong> verwenden. Diese Arbeitsgruppen analysieren<br />

das <strong>Synapsen</strong>verhalten, aber Erfahrungen mit Neuronalen Netzen mit einer großen<br />

Anzahl <strong>von</strong> Neuronen, liegen diesen Forschungsgruppen nicht vor [5].<br />

Um erste Eindrücke über das Verhalten <strong>von</strong> einem Neuron mit <strong>plastischen</strong> <strong>Synapsen</strong><br />

zu gewinnen wurde diese Anwendung erstellt. <strong>Der</strong> Einsatz <strong>von</strong> Softwareapplikationen<br />

kann beim Design spezieller Hardware helfen, denn ein entworfenes Konzept läßt sich<br />

in Software schneller umsetzen und leichter korrigieren, da die Auswirkungen der Änderungen<br />

sofort sichtbar sind. Am Ende der Entwicklung hält man eine spezialisierte<br />

Hardware in den Händen, <strong>von</strong> der man unter anderem nicht weiß, welcher Wertebereich<br />

für Parameter reserviert werden soll. Durch diese Softwareapplikationen kann unter<br />

Umständen Speicherplatz gespart werden, ferner kann der Chip kleiner werden und benötigt<br />

nicht soviel Leistung. Diese Arbeit soll einen Einblick in das Verhalten <strong>von</strong> Neu-<br />

SpinnSoftSim 4


onen mit <strong>plastischen</strong> <strong>Synapsen</strong> geben <strong>gegenüber</strong> Neuronalen Netzwerken mit<br />

konstanten Gewichten. Es werden die Ansätze des SPINN-Konzeptes berücksichtigt,<br />

wobei keine Software-Version des SPINN-Systems erstellt wird. Das Programm kann<br />

leicht durch weitere Module für andere <strong>Synapsen</strong>- oder Neuronenmodelle angepaßt<br />

werden. Die Zahl der verwendeten Neuronen richtet sich nach der Vorlage des Eingangsreizes,<br />

einem Bild mit 256 Graustufen. Als Hintergrund wird Weiß verwendet.<br />

Bildpixel mit der Farbe weiß, die keinen Reiz liefern, werden nicht bearbeitet. Die Anzahl<br />

der zu bearbeitenden Neuronen wird verringert und die Simulationszeiten werden<br />

verkürzt.<br />

Als Neuronen-Modell wird das Modell aus Marburg <strong>von</strong> Eckhorn verwendet. <strong>Der</strong><br />

Hauptreiz wird <strong>von</strong> <strong>Synapsen</strong> auf dem Feedingdendriten erfaßt. Das Neuronenmodell<br />

gestattet die Berücksichtigung der unterstützenden Wirkung <strong>von</strong> feuernden Nachbarneuronen,<br />

womit die für die Segmentierung notwendige Synchronität erreicht werden<br />

kann. Dieser Einfluß wirkt sich auf das Potential des Linkingdendriten aus, so daß auf<br />

ihm eingehende Spikes die Erhöhung des Membranpotential nur unterstützen können,<br />

indem das Potential das Neurons angehoben wird. Sind die Impulse auf dem Linkingdendriten<br />

die einzigen Eingangssignale, dann können sie das Neuron nicht zum Feuern<br />

bringen. Gewisse Ereignisse wirken hemmend auf das Neuron, deshalb gibt es einen inhibitorisch<br />

wirkenden Dendriten, dessen Potential negativ auf das Membranpotential<br />

wirkt.<br />

Zur Darstellung der <strong>Synapsen</strong>plastizität wird das <strong>Synapsen</strong>modell <strong>von</strong> Tsodyks und<br />

Markram verwendet. Das <strong>Synapsen</strong>modell berücksichtigt die Zeitpunkte der vorangegangenen<br />

Eingangsimpulse, dadurch kann die Regeneration der Transmitterstoffe in der<br />

Synapse, sowie die Wirkungsdauer der Neurotransmitter nach ihrer Ausschüttung berücksichtigt<br />

werden.<br />

Zuerst wird eine Vorstellung des biologischen Vorbildes, eines Neurons, gegeben,<br />

an den sich dann eine detaillierte Beschreibung des verwendeten Modells anschließt.<br />

Für die Arbeit mit dem Programm erhält der Anwender eine ausführliche Anleitung.<br />

Nachdem eine Einführung in die Arbeitsweise des Programms erfolgte, werden die erzielten<br />

Ergebnisse dargestellt. Für spätere Erweiterungen erfolgt eine Vorstellung der<br />

einzelnen Softwaremodule.<br />

SpinnSoftSim 5


2. DAS BIOLOGISCHE NEURON<br />

Dieses Kapitel soll einen Einblick in die Arbeitsweise biologischer Neuronen vermitteln,<br />

damit die Funktionsweise der modellierten künstlichen Neuronen besser verstanden<br />

wird. <strong>Der</strong> Komplexitätsgrad des Gehirn liegt weit über dem anderer Organe und<br />

wird mit der Verschaltungsvielfalt der einzelnen Nervenzellen begründet. Das Gehirn<br />

hat einen Anteil <strong>von</strong> 2% des gesamten Körpergewichts, aber es benötigt etwa ein Fünftel<br />

des aufgenommenen Sauerstoffes, welcher durch das dichte Adernetz im Gehirn<br />

fließt. Kein Neuron ist weiter als 50 m<strong>von</strong> der nächsten Ader entfernt. Ohne die Sauerstoffzufuhr<br />

reagiert das Gehirn nach 10 s mit Bewußtlosigkeit und nach 10 min treten<br />

bereits irreparable Schäden auf.<br />

2.1 DER AUFBAU EINES NEURONS<br />

Neuronen unterscheiden sich <strong>gegenüber</strong> anderen Zellformen durch die Eigenschaft<br />

Ausläufer zu bilden, an deren Enden Verdickungen (<strong>Synapsen</strong>) sitzen. Mit diesen <strong>Synapsen</strong><br />

ist das Neuron in der Lage mit anderen Nerven oder Muskelzellen in Kontakt zu<br />

treten. Neuronen haben die Fähigkeit verloren, sich durch Zellteilung zu vermehren. Ein<br />

Neuron wird umhüllt <strong>von</strong> mechanisch stabilisierenden Gliazellen, welche auch den<br />

Stoffwechsel des Neurons beeinflussen [7]. Sie bilden eine Grenze zwischen dem Blutsystem<br />

und dem Gehirn. Die Neuronen werden in drei Kategorien unterteilt (Bild 1) [1].<br />

1. Unipolare Zellen<br />

Diese Zellen besitzen neben einem Zellkörper, auch Soma genannt und einem Zellkern<br />

(Nucleus) nur eine Nervenfaser (Axon) als Fortsatz.<br />

2. Bipolare Zellen<br />

Sie besitzen <strong>gegenüber</strong> den unipolaren Zellen zusätzliche einen Dendriten zur Reizaufnahme.<br />

3. Multipolare Zellen treten nur bei Wirbeltieren auf. Sie besizten nicht nur einen, sondern<br />

eine Vielzahl <strong>von</strong> Dendriten.<br />

Eine Ausnahme bildet die Purkinje-Zelle. Ihr Aufbau entspricht dem multipolarer<br />

Zellen, aber sie besitzt weit mehr (ca. 150.000) <strong>Synapsen</strong>. Purkinje-Zellen besitzen ein<br />

großes nachbarschaftliches Einzugsgebiet.<br />

Bild 1. die verschiedene Arten der Nervenzellen<br />

SpinnSoftSim 6


Ein Neuron besteht im wesentlichen aus drei Komponenten: Dendriten, einem Zellkörper<br />

und den <strong>Synapsen</strong>. <strong>Der</strong> Zellkörper beinhaltet Organellen und Mitochondrien zur<br />

Energieversorgung der Zelle. <strong>Der</strong> Golgi-Apparat produziert die Transmitterstoffe der<br />

<strong>Synapsen</strong>, die bei einer Reizübertragung ausgeschüttet werden (Bild 2).<br />

Bild 2. Aufbau einer Nervenzelle<br />

Die Aufnahme der Eingangssignale erfolgt über die Dendriten, welche dünne<br />

röhrenförmige, häufig stark verästelte Fortsätze der Zelle darstellen. Die Informationsweiterleitung<br />

erfolgt über das Axon. Die Länge eines Axon kann zwischen einigen Millimetern<br />

und einem Meter variieren. Seine Verästelung beginnt erst im Zielgebiet. An<br />

den Enden dieser Verästelungen sitzen die <strong>Synapsen</strong>. Ein menschliches Neuron besitzt<br />

zwischen 1000 und 10.000 <strong>Synapsen</strong> und empfängt Informationen <strong>von</strong> 2000 bis 10.000<br />

vorgeschalteter Neuronen.<br />

An den Enden der Nervenfasern sitzen die Endköpfchen, die <strong>Synapsen</strong>. Diese enthalten<br />

kleine Bläschen, die den Transmitterstoff umschließen. Wenn ein Nervenimpuls<br />

die Synapse erreicht, verschmelzen die Bläschen (Vesikel) mit der <strong>Synapsen</strong>wand, dadurch<br />

kommt es zu einer Ausschüttung der Neurotransmitter innerhalb des synaptischen<br />

Spaltes (Bild 3). Spezielle Rezeptoren auf dem Dendriten des nachfolgenden Neurons<br />

binden die freigesetzten Transmitterstoffe, wodurch die Rezeptoren ihre Struktur ändern.<br />

Die Strukturänderung läßt Ionen in den Dendriten des nachfolgenden Neurons eindringen,<br />

und es stellt sich eine Potentialänderung ein. Die Aktionspotentiale unterliegen<br />

dem Alles-oder-Nichts-Gesetz, entweder tritt ein Signal auf oder nicht. Dagegen sind<br />

die Amplituden der synaptischen Potentiale variabel und liegen im Bereich zwischen<br />

1mV und 20 mV [8]. Eine Synapse verfügt meist nur über einen dominaten Transmitterstoff.<br />

Man unterscheidet zwei Arten der Wirkung bei der Reizübertragung: Es gibt<br />

die erregende (exzitatorische) Wirkung <strong>von</strong> Neurotransmittern auf das Membranpotential<br />

des nachfolgenden Neurons und die hemmende (inhibitorische) Wirkung. Die Wir-<br />

SpinnSoftSim 7


Bild 3. Ausschüttung der Neurotransmitter<br />

kung einer Transmittersubstanz kann in einer Nervenzelle fördernd (bahnend) und in<br />

einer anderen Nervenzelle hemmend wirken, obwohl in einem Bereich immer die gleiche<br />

Wirkungsweise beobachtet wurde. Unterschiedliche Rezeptormoleküle auf der<br />

postsynaptischen Membran können diese Eigenschaft erklären.<br />

2.2 DAS RUHEPOTENTIAL<br />

Das Nervensignal ist ein elektrisches Signal, das durch die Bewegung <strong>von</strong> Ionen<br />

durch Kanäle in der Membran hervorgerufen wird. Die Zellmembran ist nicht für alle<br />

Ionen gleichermaßen durchlässig, sonst würde sich auf beiden Seiten ein Gleichgewicht<br />

der Ionenkonzentrationen einstellen. Man kann ein Ruhepotential <strong>von</strong> ca. -70 mV messen.<br />

Die Membran ist für K + -Ionen stärker durchlässig als für Na + -Ionen, für CL - -Ionen<br />

dagegen fast gar nicht durchlässig. Für die verschiedenen Ionenarten liegen damit auch<br />

unterschiedliche Konzentrationen vor. Durch aktiven Transport wird laufend Na + aus<br />

der Zelle und K + in die Zelle befördert. Proteine dienen als Energieträger für die Pumpe<br />

(Bild 4). Die Energieträger sind notwendig, weil sich die Wassermoleküle, durch ihre<br />

Bild 4. Schema der postsynaptischen Membran eines Dendriten<br />

Dipolstruktur elektrostatisch um die Ionen sammeln (Bild 5). Erst nach der Trennung<br />

des Ions <strong>von</strong> seinen an ihm haftenden Wassermolkülen kann es die Zellmembran durchdringen<br />

[9].<br />

2.3 DAS AKTIONSPOTENTIAL<br />

Empfängt das Neuron <strong>von</strong> seinen vorgeschalteten Neuronen Reize auf den Dendriten<br />

kommt es zu einem Anstieg des Membranpotentials. Wenn ein kleiner Reiz das<br />

Membranpotential nur gering ändert, dann klingt die Potentialerhöhung schnell wieder<br />

ab. Kommt es zu einer starken Reizung des Neurons, ändert sich auch sein Membranpotential<br />

entsprechend. Die Aufhebung der Ionentrennung, die Depolarisation, bewirkt<br />

SpinnSoftSim 8


Bild 5. Dehydration <strong>von</strong> Ionen aus [9]<br />

eine Aussendung eines Nervenimpuls. Wenn der Reiz das Schwellenpotential erreicht,<br />

werden Na + -Kanäle aktiviert, damit steigt die Na + -Leitfähigkeit. Es kommt zu einem<br />

Zusammenbruch des Membranpotentials und es erreicht Werte um 30 mV. Während die<br />

Na + -Leitfähigkeit schnell wieder abklingt, steigt die Konzentration der K + -Ionen nur<br />

langsam an. Dies ist notwendig damit sich das Ruhepotential wieder einstellt. Das Neuron<br />

kann innerhalb der nächsten ca. 2 ms, auch nach wiederholter Reizung nicht erneut<br />

einen Impuls senden, es befindet sich in der absoluten Refraktärzeit. Die sich anschließende<br />

Phase bis der Schwellwert wieder seinen Ausgangswert einnimmt, wird als relative<br />

Refraktärzeit bezeichnet. Innerhalb der relativen Refraktärzeit kann das Neuron<br />

erneut einen Impuls aussenden, wenn das Membranpotential wieder den Schwellwert<br />

überschreitet. Kommt es zu einem erneuten Empfang eines Nervenimpulses, können die<br />

<strong>Synapsen</strong> nicht die gleiche Änderung am Membranpotential des nachfolgenden Neurons<br />

bewirken, denn in den <strong>Synapsen</strong> haben sich die Transmitterstoffe noch nicht regeneriert.<br />

Die Änderungen des Membranpotentials fallen entsprechend geringer aus.[10]<br />

2.4 DIE FORTPFLANZUNG DES NERVENSIGNALS ENTLANG DES AXONS<br />

Das ankommende Nervensignal bringt ein elektrisches Feld mit sich, dieses Feld<br />

öffnet die Natriumkanäle. Durch die offenen Kanäle strömen Natriumionen in das Innere<br />

der Zelle. Es können nicht alle Ionen passieren, dies ist abhängig <strong>von</strong> der notwendigen<br />

Dehydrationsenergie, die Kanäle arbeiten selektiv. Das abklingende<br />

Membranpotential führt zur Öffnung weiterer Na + -Kanäle, deshalb fließt kurzfristig ein<br />

hoher Strom <strong>von</strong> Natriumionen in die Zelle, bis das Membranpotential einen Wert <strong>von</strong><br />

+30 mV erreicht. Werden die Kaliumkanäle geöffnet, strömen die Kaliumionen aus der<br />

Zelle heraus und das Ruhepotential stellt sich wieder ein.<br />

Entscheidend ist die Selektivität mit der die Kanäle arbeiten, damit nicht jedes Element<br />

hindurchströmt. Die Steuerbarkeit der Kanäle ist ebenfalls ein entscheidendes Kriterium<br />

für die Funktionsweise des Neurons, denn die Kanäle sind entweder geöffnet<br />

SpinnSoftSim 9


oder geschlossen. Sie besitzen keine Zustände dazwischen, damit ist die Menge der einströmenden<br />

Kalziumionen abhängig <strong>von</strong> der Anzahl der geöffneten Kanäle und nicht<br />

<strong>von</strong> einer variablen Durchlässigkeit.<br />

Es gibt chemisch und spannungsgesteuerte Kanäle. Chemisch gesteuerte Kanäle<br />

werden durch Neurotransmitter gesteuert, diese heften sich an die Rezeptoren auf der<br />

Dendritemembran, damit kommt es zu einer Strukturänderung des Rezeptors und der<br />

zugehörige Kanal wird geöffnet. Chemisch gesteuerte Kanäle findet man in der postsynaptischen<br />

Membran. Spannungsgesteuerte Kanäle sind für die Leitung des Nervenimpulses<br />

im Axon verantwortlich.<br />

2.5 DIE MYELINHÜLLE<br />

Die Myelinhülle wird aus den Gliazellen gebildet und hat einen positiven Einfluß<br />

auf die Leitung des elektrischen Impulses innerhalb des Axons. Die Gliazellen versorgen<br />

das Neuron nicht mit Nährstoffen sondern geben dem Neuron auch Halt. Durch seine<br />

elektrisch isolierende Eigenschaft spart das Neuron Energie bei der<br />

Impulsweiterleitung ein. Die Gliazellen bedecken das Neuron nicht vollständig, sondern<br />

entlang des Axons wird die Myelinhülle durch Raveniersche Schnürringe unterbrochen.<br />

In den Schnürringen findet ein Natriumionenaustausch statt. Dadurch bildet<br />

sich ein elektrisches Feld. Bei nicht myelisierten Axonen entstehen kleine Stromschleifen,<br />

da die Isolierung fehlt und der Reiz durch die Ionenpumpen und spannungsgesteuerte<br />

Kanäle weitergeleitet werden muß. Bei myelisierten Axonen entstehen große<br />

Stromschleifen, durch die isolierende Wirkung der Gliazellen, denn der Stromkreis<br />

kann erst am nächsten Schnürring geschlossen werden. Auf diese Weise, muß <strong>von</strong> der<br />

Zelle keine Energie für die Weiterleitung des Impulses aufgebracht werden und das Aktionspotential<br />

springt <strong>von</strong> einem Schnürring zum nächsten. Die Weiterleitung des Signals<br />

auf dem Axon erfolgt sehr viel schneller und energiesparender als bei Zellen ohne<br />

Myelinhülle, die nur bei Wirbeltieren zu finden ist (Bild 6).<br />

Bild 6. Wirkungsweise der Myelinhülle<br />

SpinnSoftSim 10


2.6 DIE IMPULSVERARBEITUNG<br />

<strong>Der</strong> Einfluß einer Potentialänderung durch die Transmitterstoffe ist in der postsynaptischen<br />

Membran, dem Dendriten räumlich begrenzt, d.h der Transmitterstoff hat nur<br />

geringen Einfluß auf das Nervensignal des Axon. Nur der Einfluß vieler <strong>Synapsen</strong> kann<br />

eine hinreichend große Spannung aufbauen, damit eine Depolarisation stattfinden kann.<br />

Die Wirkung mehrerer <strong>Synapsen</strong> wird als räumliche Summation der Wirkungsweise der<br />

Transmitterstoffe bezeichnet. Aber auch mehrmalige Ausschüttung einer Synapse bewirkt<br />

eine Anhäufung <strong>von</strong> Transmitterstoffen und öffnet weitere Kanäle, die eine Änderung<br />

des Membranpotentials bewirken. Hier wird <strong>von</strong> einer zeitlichen Summation<br />

gesprochen. Beide Vorgänge kann man an Nervenzellen beobachten und sie bewirken<br />

ein schwankendes Depolarisationsniveau. Für die Verarbeitung der Impulse werden die<br />

Zeitpunkte der ihres Auftretens betrachtet, denn diese bewirken eine sofortige Änderung<br />

des Membranpotentials im Neuron durch die Übertragung der Neurotransmitter.<br />

Gerade im visuellen Bereich des Gehirns werden die Impulse <strong>von</strong> mehreren Schichten<br />

verarbeitet. Ihre Antwortszeit erlaubt keine Kodierung der Information durch Feuerraten<br />

[3]. Die Antwortzeit des Systems ist zu kurz, <strong>gegenüber</strong> einer Impulsverarbeitung,<br />

bei der die Feuerraten zur Informationskodierung verwendet werden. Bei Untersuchungen<br />

<strong>von</strong> Neuronen im sensorischen Bereich, z. B. bei der Erfassung eines Druckes auf<br />

der Haut, ist eine Informationsübertragung durch die Verwendung <strong>von</strong> Feuerraten zu erkennen.<br />

Das Ausgangssignal des Neurons ist hier in der Frequenz seiner Impulse codiert.<br />

SpinnSoftSim 11


3. PULSCODIERTE NEURONALE NETZE<br />

Durch die Verwendung <strong>von</strong> pulscodierten Neuronalen Netzen erwartet man eine<br />

Verringerung der Netzaktivität durch selten auftretende Impulse zwischen den Neuronen.<br />

Diesen Vorteil erkauft man sich durch ein komplexes Neuronenmodell. Gegenüber<br />

herkömmlichen Neuronalen Netzwerken wird bei der Erstellung <strong>von</strong> biologienahen<br />

Neuronalen Netzen auf folgende Punkte geachtet:<br />

• pulskodierte Darstellung der Ein- und Ausgangssignale des Neurons;<br />

• ein Puls ist relativ kurz und tritt selten auf;<br />

• innerhalb des Neurons werden die einzelnen internen Zustände gespeichert, aus den<br />

internen Zuständen wird das Membranpotential gebildet;<br />

• eine Ausgangsfunktion bestimmt in Abhängigkeit des Membranpotential und des<br />

Schwellwertes ob das Neuron einen Impuls aussendet.<br />

Bei Untersuchungen an Gehirnen <strong>von</strong> Katzen und Affen wurde festgestellt, daß ein<br />

visueller Reiz bereits viele Neuronen in verschiedenen Bereichen des Gehirns aktiviert.<br />

Die Neuronen in den ersten Ebenen der Bildverarbeitung im Gehirn müssen mit den Bereichen<br />

des Gehirns kommunizieren, die für die Objekterkennung bzw. -trennung <strong>von</strong><br />

Objekten vom Hintergrund zuständig sind. Die Abhängigkeit der Aktivität der verschiedenen<br />

Bereiche wurde als grundlegendes Merkmal der Bildbearbeitung im Gehirn angenommen.<br />

Die Arbeitsgruppe <strong>von</strong> Prof. Reinhard Eckhorn an der Philipps Universität<br />

in Marburg, hat durch Experimente den Nachweis für diese Annahme erbracht[6]. Die<br />

Experimente zeigten ebenfalls, daß die abhängige Aktivität einzelner Bereiche die<br />

grundlegende Eigenschaft ist, Bildmerkmale zu erkennen. Die Aktivität der zusammengehörenden<br />

Bereiche eines Bildmerkmals wurde durch gleichzeitiges Feuern dieser<br />

Neuronen dargestellt. Neuronen, die an der Bearbeitung oder Erkennung eines Objektes<br />

beteiligt sind, feuern synchron. Die Synchronität wurde in Neuronalen Netzen als<br />

grundlegender Mechanismus, zur Texterkennung, Bildsegmentierung oder Mustererkennung<br />

verwendet. Aus diesen Erkenntnissen wurde ein neues Modell zur Beschreibung<br />

der neuronalen Aktivität entworfen.<br />

3.1 DAS MARBURGER NEURONEN MODELL<br />

Das Marburger Modell bildet ein sehr biologienahes Neuronales Netzwerk. Es verwendet<br />

Neuronen mit mehreren Dendriten, wobei die Dendriten unterschiedliche Aufgaben<br />

haben. Die <strong>Synapsen</strong> werden hier zum Dendriten gehörend angesehen und stellen<br />

nicht, wie bei einem biologischen Neuron, das Ende des Axons dar. Ein Reiz des vorhergehenden<br />

Neurons wird durch einen Faktor in eine Potentialänderung innerhalb des<br />

Dendriten umgewandelt. Diese Potentialänderung klingt mit der Zeit unter Verwendung<br />

eines verlustbehafteten Integrators ab. <strong>Der</strong> Hauptreiz wird auf dem Feedingdendriten<br />

empfangen. <strong>Der</strong> Einfluß des dort entstehenden Potentials kann durch das Potential des<br />

Linkingdendriten verstärkt werden, aber ein ausschließlicher Reiz auf dem Linkingdendriten<br />

kann das Neuron nicht zum Feuern bewegen. Das Potential des Feedingdendriten<br />

wird mit eins und dem Potential des Linkingdendriten multipliziert. <strong>Der</strong> Einfluß weiterer<br />

Dendriten kann anschließend additiv erfaßt werden. Negativ wirkende Impulse, die<br />

hemmend auf das Membranpotential Einfluß nehmen, werden auf dem inhibitorisch<br />

wirkenden Dendriten zusammengefaßt. Die Summe aller Dendritpotentiale bildet das<br />

Membranpotential. Ein <strong>Vergleich</strong> des Schwellwertes mit dem Membranpotential bringt<br />

die Entscheidung ob das Neuron feuert oder nicht. Das Membranpotential übersteigt<br />

SpinnSoftSim 12


den Schwellwert und das Neuron sendet einen Impuls an die nachfolgenden Neuronen<br />

aus. <strong>Der</strong> ausgelöste Impuls bewirkt ein emporschnellen des Schwellwertes, der exponentiell<br />

mit der relativen Refraktärzeit abklingt (Bild 7).<br />

Bild 7. Modell eines Neurons nach dem Marburger Modell<br />

3.2 DAS FEEDINGPOTENTIAL<br />

Das Potential des Feedingdendriten wird bestimmt durch den Einfluß der <strong>Synapsen</strong><br />

die an der Erfassung des Eingangsreizes beteiligt sind. Dieser Zusammenhang läßt sich<br />

wie folgt mathematisch beschreiben:<br />

Das Ausgangssignal des vorhergehenden Neurons y wird mit dem Gewichtsfaktor<br />

w multipliziert, das Abklingverhalten wird mit dem verlustbehafteten Integrator beschrieben.<br />

Für die erste Lage des Neuronalen Netzwerkes gibt es einen weiteren Teil der<br />

die Aufnahme des Eingangsreizes beschreibt. <strong>Der</strong> Eingangsreiz x wird mit dem Gewicht<br />

u multipliziert, auch hier wird das Abklingen des Eingangsreizes berücksichtigt.<br />

3.3 DAS LINKINGPOTENTIAL<br />

Ft () Σw ( ⋅ y)<br />

IV F τ F ⋅ ( , , t)<br />

Σ( u ⋅ x)<br />

IV F τ F =<br />

+ ⋅ ( , , t)<br />

Das Potential des Linkingdendriten hat nur eine unterstützende Wirkung auf das<br />

Membranpotential. Das Potential setzt sich aus dem postsynaptischen Einfluß der aufgeschalteten<br />

<strong>Synapsen</strong> zusammen, deren Zugehörigkeit <strong>von</strong> Neuronen aus der unmittelbaren<br />

Nachbarschaft oder anderen Populationen kommen kann. Das Potential läßt sich<br />

wie folgt berechnen:<br />

L Σ[ w⋅y] IV L τ L =<br />

⋅ ( , , t)<br />

<strong>Der</strong> Ausgang des vorgeschalteten Neurons y wird mit dem Gewicht w multipliziert,<br />

I stellt die Impulsantwort des verlustbehafteten Integrators dar und beschreibt das Abklingen<br />

des postsynaptischen Potentials.<br />

SpinnSoftSim 13


3.4 DAS MEMBRANPOTENTIAL UND DER SCHWELLWERT<br />

Das Membranpotential beschreibt die Summe der Dendritenpotentiale, wobei das<br />

Potential der Feedingdendriten mit eins und dem Potential der Linkingdendriten multipliziert<br />

wird, anschließend wird das Potential weiterer positiv wirkender Dendriten, sowie<br />

hemmend wirkender, inhibitorischer Dendriten, berücksichtigt.<br />

MP = F()1 t ( + L() t ) + ΣD– ΣI<br />

<strong>Der</strong> Schwellwert des Neurons wird mit dem Ausgangswert des Neurons multipliziert<br />

addiert wird der Schwellwert des Neurons aus der letzten Zeitscheibe, wobei der<br />

zweite Term mit der Zeitkonstanten der relativen Refraktärzeit abklingt.<br />

Θ( n ⋅ Δt)<br />

V Θ – Δt<br />

yn ( ⋅ Δt)<br />

Θ( ( n – 1)<br />

⋅ Δt)<br />

τ Θ<br />

=<br />

⋅ +<br />

exp⎛--------<br />

⎞<br />

⎝ ⎠<br />

Ist der Schwellwert kleiner als das Membranpotential sendet das Neuron einen Impuls<br />

an die nachfolgenden Neuronen aus.<br />

3.5 DIE FÄHIGKEITEN DES MARBURGERSYSTEMS<br />

Die Forschungsgruppe in Marburg konnte mit diesem Neuronenmodell synchron<br />

feuernde Gruppen <strong>von</strong> Neuronen darstellen, die jeweils einem Objekt im Eingangsreiz<br />

zugeordnet werden konnten. Die Eigenschaft zur Bildsegmentierung ist <strong>von</strong> der Feuerrate<br />

und der Pulsphase abhängig, beide Werte können mit der Abklingkonstanten des<br />

Schwellwertes variiert werden. Das verwendete Netzwerk ist in der Lage Objekte zu<br />

identifizieren und Muster zu erkennen unter Verwendung synchron feuernder Neuronengruppen<br />

und der Berücksichtigung des Zustandes der Nachbarneuronen durch Linkingverbindungen.<br />

Andere Forschungsgruppen[5,11] erweiterten das Modell um einen<br />

Kopplungsfaktor und konnten im Bild enthaltene Störungen beseitigen.<br />

SpinnSoftSim 14


4. SYNAPSENPLASTIZITÄT<br />

Bisher erstellte Neuronale Netzwerke ließen den Ansatz der <strong>Synapsen</strong>plastizität unberücksichtigt.<br />

Als <strong>Synapsen</strong>plastizität wurde die Anpassung des Wichtungsfaktors an<br />

gewisse Bildklassen bezeichnet, allerdings ist hier die Berücksichtigung der Mengen<br />

ausgeschütteter Neurotransmitter und ihre Regenerationsfähigkeit gemeint. Die Änderung<br />

der Menge der Neurotransmitter und die Frequenzabhängigkeit der Signalübertragung<br />

wurden lange Zeit nicht berücksichtigt, obwohl die Existenz dieses Mechanismus<br />

gut an der kalifornischen Meeresschnecke zu erkennen ist. Die Meeresschnecke verfügt<br />

über einen Kiemenreflex, die Alphysia zieht ihre Kiemen in eine Mantelhöhle zurück,<br />

wenn ein Lufthauch auf die Atemröhre trifft[1,12]. Nach mehreren Reizungen tritt der<br />

Reflex nicht mehr auf. Die Schnecke hat sich an die Reizung gewöhnt, nach einiger Zeit<br />

kann der Reflex dennoch wieder beobachtet werden, aber erst nach einem Tag hat der<br />

Reflex wieder seine volle Stärke erreicht. Die Abnahme des Reizes läßt sich mit der<br />

Verschmelzung der Bläschen (Vesikel), die Träger der Neurotransmitter, an der <strong>Synapsen</strong>wand<br />

erklären. Bei der Verschmelzung der Vesikel mit der <strong>Synapsen</strong>wand werden<br />

die Neurotransmitter ausgeschüttet, aber die Regenerierung der Transmitter erfolgt zu<br />

langsam, daher nimmt die Stärke des Reflexes ab.<br />

Bild 8. Aufbau einer Synapse<br />

4.1 MODELLIERUNG DER SYNAPSENPLASTIZITÄT<br />

Markram und Tsodyks haben ein Modell erstellt was die zeitlich variierenden Transmitterstoffmengen<br />

und die Frequenzabhängigkeit berücksichtigt[12]. Die Grundmenge<br />

der Neurotransmitter wird mit A bezeichnet. Die bei einer Impulszugübertragung ausgeschüttete<br />

Menge an Transmitterstoffen wird durch die Variable u dargestellt und bei<br />

jedem weiteren auftretenden Impuls neu berechnet. U 0 , als Transmitterstoffmenge des<br />

ersten Impulses, wird als Verhältniszahl ohne Einheit angegeben. Aus Versuchen mit<br />

dem spannungs- bzw. stromgesteuerten Kanal ergibt sich eine Änderung in der Ionen-<br />

SpinnSoftSim 15


leitfähigkeit, die Rückschlüsse auf die synaptische Effektivität u zulassen. Die nach der<br />

Ausschüttung in der Synapse verbleibenden synaptischen Vesikel erhalten den Kennbuchstaben<br />

R. Diese Menge muß nach weiteren Impulsen neu berechnet werden und R<br />

wird ebenfalls als einheitenlose Verhältniszahl dargestellt. Für den ersten Impuls gilt R 1<br />

=1-U.DieZeitkonstanten mit der sich die synaptischen Bläschen regenerieren wird<br />

mit τ rec bezeichnet. Die Konstante τ rec kann direkt aus dem Experiment bestimmt werden.<br />

Das Zeitintervall, in dem die Wirkung der ausgeschütteten Neurotransmitter andauert,<br />

wird mit τ fac angegeben. Die biophysische Wirkung der Potentialanhebung wird<br />

den Calciumionen zugeschrieben. <strong>Der</strong> komplexe Vorgang unterliegt mehreren Zeitkonstanten,<br />

<strong>von</strong> denen τ fac den Mittelwert darstellt.<br />

Für den ersten eintreffenden Impuls gilt:<br />

R1 = 1 – U0 Für alle weiteren eintreffenden Impulse lassen sich u und R wie folgt berechnen:<br />

– Δt<br />

Rn + 1 R ( 1– un+ 1)<br />

⎛-------- ⎞ – Δt<br />

= ⋅ ⋅ exp + 1 – exp⎛--------<br />

⎞<br />

⎝τ⎠ ⎝<br />

rec<br />

τ ⎠<br />

rec<br />

un + 1<br />

u ⎛ – Δt<br />

n ----------- ⎞ – Δt<br />

= ⋅ exp + U⋅⎛1– un⋅exp⎛-----------<br />

⎞⎞<br />

⎝τ⎠ ⎝ ⎝<br />

facil<br />

τ ⎠⎠<br />

facil<br />

Für das postsynaptische Potential gilt dann:<br />

PSPn = A⋅Rn⋅ un Wenn der Reiz der Synapse einer konstanten Frequenz r entspricht kann der zugehörige<br />

Grenzwert für u und R wie folgt bestimmt werden [12]:<br />

Rst() r<br />

ust() r<br />

– 1<br />

1 – exp⎛--------------<br />

⎞<br />

⎝r⋅τ⎠ rec<br />

= -----------------------------------------------------------------------<br />

– 1<br />

1– ( 1 – ust() r ) ⋅ exp⎛--------------<br />

⎞<br />

⎝r⋅τ⎠ rec<br />

U<br />

=<br />

-----------------------------------------------------------------<br />

– 1<br />

1 – ( 1 – U)<br />

⋅ exp⎛------------------<br />

⎞<br />

⎝r⋅τ⎠ facil<br />

4.2 DEPRESSION ODER FACILITY-VERHALTEN<br />

In Abhängigkeit der dynamischen Botenstoffmenge und der beiden Zeitkonstanten,<br />

können beiden Verhaltensweisen ohne weitere Parameter dargestellt werden. Das Facilityverhalten<br />

wird wie folgt beschrieben:<br />

Die ausgeschüttete Menge an Neurotransmittern wirkt auf das postsynaptische Verhalten<br />

des nachgeschalteten Neurons fördernd. Beim ersten Impuls wird eine geringe Menge<br />

an Transmitterstoffen ausgeschüttet, U 0 hat einen sehr kleinen Wert (ca. 0.02 bis<br />

0.08). Die nachfolgenden Werte für u steigen an, wenn der Eingangsreiz mit einer Frequenz<br />

kleiner als die Grenzfrequenz der Synapse auftritt, sonst würde die Synapse sich<br />

in den Sättigungsbereich bewegen und das Verhalten der Synapse wechselt vom Facilityverhalten<br />

zum Depressionsverhalten. Beim Facilityverhalten ist die Regenerationskonstante<br />

τ rec (ca. 60 ms - 800 ms) kleiner als die Facilitykonstante τ fac (ca. 1 s - 4 s).<br />

SpinnSoftSim 16


Die Menge der Neurotransmitter regeneriert sich schnell im <strong>Synapsen</strong>köpfchen, während<br />

die Wirkungsdauer der ausgeschüttetenden Neurotransmitter relativ lang ist.<br />

Das Depressionverhalten besitzt einen Wert für U 0 zwischen 0,4 und 0,8. Die erste<br />

Ausschüttung der Transmitterstoffe ist größer <strong>gegenüber</strong> der beim Facility-Verhalten.<br />

Weitere Impulse lassen die Menge der ausgeschütteten Neurotransmitter wieder abklingen,<br />

denn die Zeitkonstante τ rec (ca. 60 ms - 800 ms) für die Regenerierung der Neurotransmitter<br />

ist größer als die Zeitkonstante τ fac (ca. 2 ms - 3 ms) für die Wirkungsdauer.<br />

Bild 9. Synapse mit Facilityverhalten<br />

Bild 9 soll als Beispiel für eine Synapse mit Facilityverhalten dienen. Bei etwa 50<br />

ms tritt der erste presynaptische Impuls auf. Die Reizung ist stark genug, damit das Neuron<br />

feuert. Bei weiteren eintreffenden Impulsen, kommt es zu weiteren Ausschüttungen<br />

an Neurotransmittern, es ist zu beachten das die Ausschüttungsmenge zunimmt, es<br />

kommt zu einem Anstieg des postsynaptischen Potentials. Ein Wechsel zum Depressionverhalten<br />

ist bei diesem Beispiel nicht zu sehen.<br />

Bild 10. Synapse mit Depressionverhalten<br />

Die Menge der ausgeschütteten Neurotransmitter steigt bei jedem Impuls, Ausnahmen<br />

sind bei Zeitpunkten t=200 ms und t=240 ms zu sehen. An diesen Stellen ist die<br />

zeitliche Differenz zwischen den eingehenden Impulsen kleiner als die Abklingkonstante<br />

des <strong>Synapsen</strong>potentials und es kommt zu einer sprunghaften Abnahme des <strong>Synapsen</strong>potentials.<br />

Hier verläßt das Modell seinen Gültigkeitsbereich. Die Abklingkonstante ist<br />

<strong>gegenüber</strong> den anderen Zeitkonstanten zu groß, denn eine sprunghafte Abnahme des<br />

postsynaptischen Potentials, ist nicht plausibel. Das zeigt die Schwierigkeiten bei der<br />

Parameterwahl.<br />

SpinnSoftSim 17


4.3 DIE TESTUMGEBUNG<br />

Das Programm SPINNSoftSim verwendet einen konstanten Eingangsreiz. Zur Darstellung<br />

des Einflusses einer Impulsfolge auf eine Synapse wurde eine Testumgebung<br />

erstellt, in der Impulsfolgen generiert werden können. Die Erstellung der Impulsfolge<br />

sollte die Poissonverteilung der einzelnen Impulse berücksichtigen. Die Poissonverteilung<br />

dient als Ersatz für die Binominalverteilung, weil für große Zahlen die Berechnung<br />

recht unbequem ist.<br />

Die Binominalverteilung betrachtet ein Experiment mit zwei Ereignissen A und A ~ .<br />

Wenn das Experiment n-mal wiederholt wird, wird nach dem k-maligen Auftreten des<br />

Ergebnisses <strong>von</strong> A gefragt. <strong>Der</strong> <strong>Vergleich</strong> zu einem Impulszug ergibt sich wie folgt, die<br />

Anzahl der Zeitschritte stimmt mit der Anzahl der Wiederholungen überein. Die beiden<br />

sich gegenseitig ausschließenden Ereignisse sind ein Impuls oder kein Impuls. In "Numerical<br />

Recipes in C" [17] kann man für die Berechnung einer poissonverteilten Impulsfolge<br />

einen Algorithmus finden. Für die Erstellung einer Impulsfolge werden zwei<br />

Parameter benötigt ein Startwert für den verwendeten Zufallsgenerator und der Mittelwert<br />

der Verteilung. Nach Gabbiani ist der Mittelwert der Verteilung das Produkt aus<br />

der Intervalllänge und der gewünschten Frequenz der Impulse [18].<br />

Für diese Impulsfolge wird dann das postsynaptische Potential der Synapse bestimmt<br />

und graphisch ausgegeben. Damit die Funktionsweise des gesamten Neuronenmodells<br />

kontrolliert werden kann, wurde das Programm um einen weiteren Impulszug<br />

erweitert. Dieser Impulszug dient als Eingangssignal einer weiteren Synapse. Die Summation<br />

der einzelnen <strong>Synapsen</strong>potentiale konnte damit getestet werden und nach leichter<br />

Modifikation wurden zwei Dendriten mit je einer Synapse implementiert, für die<br />

Summation der Dendritenpotentiale. Die <strong>Synapsen</strong>potentiale werden in den Farben der<br />

zugehörigen Impulszüge rot und blau gekennzeichnet. Um zwischen Facility- und Depressionverhalten<br />

wechseln zu können, sind die <strong>Synapsen</strong>parameter frei wählbar. Zur<br />

Kontrolle der Schwellwertfunktion und der Generierung des Neuronausgangs sind diese<br />

Kurvenzüge ebenfalls darzustellen. <strong>Der</strong> Schwellwert wird Cyan und das Membranpotential<br />

in Magenta dargestellt. Das Dendritepotential hat die Farbe Grün. Oberhalb der<br />

Potentialverläufe werden wiederum Impuls dargestellt, wenn das Membranpotential<br />

den Schwellwert übersteigt und das Neuron feuert.<br />

SpinnSoftSim 18


5. ANWENDERHANDBUCH<br />

Mit diesem Programm kann der Anwender erste Erfahrungen mit dem Umgang <strong>von</strong><br />

"<strong>Synapsen</strong> plastisch spikende Neuronale Netze" (SPINN) sammeln. Dieses Programm<br />

versucht eine Lücke zu schließen, denn es existieren noch keine Anwendungen die<br />

<strong>Synapsen</strong>plastizität in Neuronalen Netzwerken berücksichtigen, zur Zeit gibt es nur Anwendungen<br />

für herkömmliche Neuronale Netze.<br />

5.1 PROGRAMMSTART<br />

Das Programm startet mit der folgenden Bildschirmmaske. Es werden im oberen<br />

Bereich drei Bilder dargestellt. Links erscheint der Eingangsreiz der auf das Netzwerk<br />

wirken soll. Als Eingangsreiz können Bilder beliebiger Größe, mit 256 Graustufen verwendet<br />

werden. In der Mitte wird die Aktivität einer ausgewählten Population dargestellt,<br />

wenn mehrere Populationen verwendet werden. Am rechten Rand ist die Aktivität<br />

der letzten Population, die Netzantwort plaziert. Bei Verwendung <strong>von</strong> einer einzigen<br />

Population wird im mittleren und rechten Fenster dasselbe Bild dargestellt.(Bild 11)<br />

Bild 11. Programmstart<br />

5.2 MENÜEINTRAG DATEI<br />

Im Menü "Datei" kann sowohl der Eingangsreiz geladen, als auch der Potentialverlauf<br />

des zu beobachtenden Neurons gesichert werden. Wenn der Potentialverlauf gesichert<br />

werden soll, öffnet sich ein weiteres Untermenü mit den unterstützten<br />

Bildformaten, <strong>von</strong> denen eins ausgewählt werden kann. Zum Sichern des Bildes auf<br />

dem Datenträger wird nach der Eingabe des Dateinamen die Datei an der ausgewählten<br />

Position abgelegt. Desweiteren befindet sich hier der Menüpunkt "Beenden" mit dem<br />

das Programm verlassen werden kann.<br />

SpinnSoftSim 19


5.3 MENÜ NETZ<br />

Alle Parameter zur Beschreibung des Neuronalen Netzwerkes sind im Menüeintrag<br />

"Netz" zusammengefaßt. Es werden zum Einen die neuronalen Parameter erfaßt, als<br />

auch die Parameter zur Beschreibung der Topologie. Zu den Topologieparametern gehört<br />

unter anderem die Ausdehnung des Nachbarschaftsbereiches, als auch die Form des<br />

Nachbarschaftsbereiches. Verschiedene Formen des Nachbarschaftsbereiches werden<br />

später implementiert.<br />

5.3.1 Populationsanzahl<br />

<strong>Der</strong> oberste Eintrag dieses Menüs öffnet ein Dialogfenster zur Eingabe der Populationsanzahl.<br />

Sie bestimmt die Anzahl der Ebenen aus denen das Netzwerk bestehen soll.<br />

Alle Populationen besitzen die selbe Größe, diese entspricht den Abmessungen des geladenen<br />

Bildes, das als Eingangsreiz verwendet wird.<br />

5.3.2 Neuronparameter<br />

Als Modell zur Beschreibung der Vorgänge innerhalb des Neurons wird das Marburger<br />

Modell verwendet [6]. Das Modell wurde um den Kopplungsfaktor β erweitert,<br />

wie er bei Kinser[5] zu finden ist. <strong>Der</strong> Kopplungsfaktor bietet eine weitere Möglichkeit,<br />

den Einfluß der unterstützenden Wirkung des Potentials des Linkingdendriten zu variieren.<br />

Das Marburger Modell bildet zuerst die Summe der postsynaptischen Potentiale<br />

der <strong>Synapsen</strong> auf den Feedingdendriten bzw. Linkingdenriten. Das Potential auf dem<br />

Linkingdendriten kann sich nur unterstützend auf das Membranpotential des Neurons<br />

auswirken. Deshalb wird das Potential des Feedingdendriten mit der Summe aus 1 und<br />

dem Potential des Linkingdendriten multipliziert bevor das Potential weiterer Dendriten<br />

hinzuaddiert wird. Hemmend wirkende Einflüße werden <strong>von</strong> inhibitorischen Dendriten<br />

erfaßt, ihr Dendritepotential wird subtrahiert vom Membranpotential. Für die Beschreibung<br />

des Neurons werden in dieser Maske nur die Anzahl der gewünschten Dendriten<br />

erfaßt, die Zuweisung der Funktion jedes Dendriten erfolgt in der Eingabemaske für die<br />

Dendritparameter. Damit das Neuron einen Impuls aussendet, muß das Membranpotential<br />

den Schwellwert übersteigen. <strong>Der</strong> Schwellwert setzt sich aus dem statischen und<br />

dem dynamischen Anteil zusammen. <strong>Der</strong> statische Schwellwert liegt vor, wenn das<br />

Neuron noch nicht oder lange Zeit nicht gefeuert hat. <strong>Der</strong> dynamische Anteil wird addiert,<br />

wenn das Neuron gefeuert hat. Nach dem ein Impuls ausgesendet worden ist, kann<br />

das Neuron eine gewisse Zeitspanne keinen weiteren Impuls senden. Diese Zeitspanne<br />

wird absolute Refraktärzeit bezeichnet. Die relative Refraktärzeit ist ein Maß mit dem<br />

der Schwellwert abklingt (Bild 12).<br />

5.3.3 Dendritparameter<br />

Die Dendritparameter setzen sich aus dem Dendrittypen bzw. seinem Namen und<br />

den Parametern der auf ihm sitzenden <strong>Synapsen</strong> zusammen. Als Dendrittyp wurden<br />

Feeding, Linking, inhibitorisch wirkende Dendriten und weitere positiv wirkende Dendriten<br />

definiert. Das <strong>Synapsen</strong>modell verwendet die Erkenntnisse <strong>von</strong> Markram und<br />

Tsodyks [Mark98]. Innerhalb der Synapse existiert die gesamte Menge A des Transmitterstoffes,<br />

aber bei der Reizübertragung wird nicht die gesamte Menge ausgeschüttet,<br />

sondern nur der dynamische Anteil U 0 . Er wird in Prozent <strong>von</strong> A angegeben. Nach einer<br />

Ausschüttung erfolgt die Regeneration der Neurotransmitter innerhalb der Synapse. Die<br />

Regenerationsgeschwindigkeit wird durch die Zeitkonstante τ rec beschrieben. Die in der<br />

SpinnSoftSim 20


Bild 12. Dialog der Neuronparameter<br />

Synapse verbleibende Menge an Neurotransmittern wird durch den Parameter R n beschrieben.<br />

Die zur Ausschüttung gekommende Menge an Neurotransmittern wird wieder<br />

abgebaut. Die Zeitkonstante τ fac beschreibt die Wirkungsdauer der<br />

Transmitterstoffmenge u n am Dendriten des nachfolgenden Neurons. Als letzter Parameter<br />

bleibt die Abklingkonstante τ leaky des postsynaptischen Potentials zu nennen. Das<br />

postsynaptische Potential wird durch die Ausschüttung der in den <strong>Synapsen</strong> befindlichen<br />

Neurotransmitter, im nachfolgenden Dendriten der Synapse erzeugt. Eine Änderung<br />

der <strong>Synapsen</strong>parameter kann durch "Hebb’sches Lernen" erfolgen. <strong>Der</strong> Parameter,<br />

auf dem die Änderung erfolgen soll, kann aus dem gegebenen Rollmenü ausgewählt<br />

werden. Innerhalb der Grenzen Hebb max und Hebb min kann die ausgewählte Variable<br />

durch "Lernen nach Hebb" angepaßt werden. Die Angabe erfolgt in Prozent des Wertes<br />

der ausgewählten Variablen. Für die Reizerfassung gibt es eine Einschränkung. <strong>Der</strong><br />

Grauwert des Bildpixels bewirkt eine Änderung der Neurotransmittermenge U 0 , wenn<br />

das "Hebb’sche Lernen" ebenfalls auf U 0 wirkt, wird das Membranpotential <strong>von</strong> zwei<br />

Grössen geändert, eine Kontrolle des Potentialverlauf wird dadurch erschwert. Die Impulse<br />

werden auf einem Dendriten <strong>von</strong> seinen <strong>Synapsen</strong> empfangen, die Menge der<br />

<strong>Synapsen</strong> auf diesem Dendriten ist <strong>von</strong> dem gewählten Nachbarschaftsbereich abhängig.<br />

Wenn die Population ihr Ausgangssignal als Rückkopplung an sich selbst sendet,<br />

wird das Signal des Neurons <strong>von</strong> seinen Nachbarneuronen empfangen, es findet aber<br />

keine direkte Rückkopplung zu dem aktuellen Neuron statt, deswegen kann die Anzahl<br />

der <strong>Synapsen</strong>, mittels des Check-Feldes um Eins verringert werden. Ist die nachfolgende<br />

Population eine andere, so ist dieses Feld nicht zu betätigen. Die Entfernung zwischen<br />

den Neuronen wird wie folgt berücksichtigt, es wird bei der Erstellung der<br />

Verbindungslisten für jede Synapse ein Wichtungsfaktor bestimmt. <strong>Der</strong> Einfluß benachbarter<br />

Neuronen soll mit steigendem Abstand geringer werden. Dieser Verlauf entspricht<br />

der Gaußverteilung, diese benötigt einen Parameter für den Abstand der<br />

Wendepunkte. <strong>Der</strong> Verstärkungsfaktor wurde hinzugefügt, um einen weiteren Freiheitsgrad<br />

zu erlangen. Unter Verwendung der Schaltfläche "UpDate" wird mit den eingegebenen<br />

Parametern die Gaußverteilung dargestellt und der Einfluß entfernt<br />

liegender Neuronen ist sofort erkennbar (Bild 13).<br />

SpinnSoftSim 21


Bild 13. Dialog der Dendriteparameter<br />

5.3.4 Netz erstellen<br />

Das Bild des gewünschten Eingangsreizes bestimmt die Größe des Neuronalen<br />

Netzwerkes. Nach dem alle Parameter bestimmt wurden, sind die Verbindungslisten für<br />

Vorwärts- und Rückwärtsverbindungen zu erstellen. Unter Verwendung der Verbindungslisten<br />

wird ermittelt, welche Neuronen als Nachfolger geschaltet sind, damit wird<br />

ein auftretender Impuls des gerade behandelten Neurons weitergeleitet werden. Für die<br />

Anpassung der Parameter durch Hebbsches Lernen ist es notwendig einen Zugriff auf<br />

die Feuerzeiten des vorhergehenden Neurons zu haben, dies geschieht mittels der Liste<br />

der Rückwärtsverbindungen.<br />

5.3.4.1 Netztopologie<br />

<strong>Der</strong> Einsatz <strong>von</strong> Neuronalen Netzen in der Bildbearbeitung, bringt immer eine große<br />

Anzahl <strong>von</strong> Neuronen mit sich. Ein Bild <strong>von</strong> 32 x 32 Pixel, benötigt 1024 Neuronen für<br />

eine Schicht, wenn jedes Element des Bildes <strong>von</strong> einem eigenen Neuron aufgenommen<br />

werden soll. Die große Anzahl <strong>von</strong> Neuronen macht es dem Anwender daher unmöglich<br />

die Verbindungen selbst zu erstellen. Deshalb werden für Verbindungen innerhalb der<br />

eigenen Population folgende Verbindungsstrukturen erstellt (Bild 14). Alle Neuronen<br />

im Nachbarschaftsbereich besitzen zwei Verbindungen zum aktuell bearbeiteten Neuron.<br />

Die Impulse der Neuronen im Nachbarschaftsbereich gelangen zum einen auf den<br />

Linkingdendriten, damit eine Synchronisation zwischen den feuernden Neuronen stattfinden<br />

kann, um den Potentialanstieg zu hemmen, werden die Impulse ebenfalls <strong>von</strong> einem<br />

inhibitorisch wirkenden Dendriten aufgenommen. Für die Signalaufnahme <strong>von</strong><br />

anderen Populationen wurden weitere Dendriten eingefügt, dadurch stehen für diese<br />

Verbindungen auch eigene Parameter zur Verfügung. Die Impulse einer vorhergehenden<br />

Population werden <strong>von</strong> der nachfolgenden über den Dendriten mit dem Namen<br />

"F_Population" aufgenommen. Eine Rückkopplung erfolgt durch Senden der Impulse<br />

SpinnSoftSim 22


Bild 14. Verbindungen innerhalb der Population<br />

auf die vorhergehende Population, in dem die vorhergehende Population einen weiteren<br />

inhibitorischen Dendriten, "I_Population", besitzt (Bild 15).Die Namen sind mit dem-<br />

Programm fest verbunden.<br />

Bild 15. Verbindungen zu anderen Populationen<br />

SpinnSoftSim 23


5.3.5 Start<br />

Die Simulation des Netzwerkes wird für den ausgewählten Zeitbereich gestartet. Es<br />

erscheint ein Fenster mit einem Füllbalken und der Schaltfläche "Abbruch", damit die<br />

Simulation abgebrochen werden kann. Wird dagegen eine Einzelschrittsimulation<br />

durchgeführt, erscheint ein Dialog mit der Frage, ob die nächste Zeitscheibe simuliert<br />

werden, oder ob die Simulation abgebrochen werden soll. Nach dem ersten Lauf der Simulation<br />

kann der Anwender die Parameter ändern. Damit nicht unnötige Wartezeiten<br />

aufkommen, werden bei Anwahl dieses Menüpunktes alle vorgenommenen Änderungen<br />

im Parametersatz an die Neuronen und <strong>Synapsen</strong> des Netzwerkes weitergeleitet.<br />

Änderungen der Dendriten-, der <strong>Synapsen</strong>anzahl, bei einer Änderung des Nachbarschaftsbereichs<br />

oder sogar eine Änderung der Populationsanzahl machen eine erneute<br />

Erstellung der Verbindungslisten des Neuronalen Netzwerkes notwendig.<br />

5.4 MENÜ OPTION<br />

5.4.1 Hebb<br />

Es erscheint ein Dialogfenster in dem der Zeitbereich eingetragen wird, wo<br />

"Hebb’sches Lernen" die maximale Änderung der dynamischen Transmitterstoffmenge<br />

aufweist (Bild 16). Die Eingabe der oberen und unteren Grenze der Neurotransmitter er-<br />

Bild 16. Wirkungszeit für "Hebb’sches Lernen"<br />

folgt in der Maske der Dendritparameter. Nach Hebb wird eine Verbindung verstärkt,<br />

wenn die Differenz zwischen der aktuellen Zeit und dem Zeitpunkt des Eintreffens des<br />

Eingangsimpuls der Synapse innerhalb der definierten Wirkungszeit nach Hebb liegt.<br />

5.4.2 Neuronenkontrolle<br />

Das Programm verwaltet eine Liste der Neuronen, bei denen eine <strong>Synapsen</strong>aktivität<br />

aufgetreten ist. Wenn der dynamische Schwellwert des Neurons schneller abklingt als<br />

das Membranpotential, wird das Neuron erneut feuern, ohne daß eine Synapse erneut<br />

aktiviert wurde. Um diese Situation zu berücksichtigen, kann eine Anzahl <strong>von</strong> Zeitscheiben<br />

angegeben werden, in der eine Überwachung der Neuronen erfolgt, die bereits<br />

einmal gefeuert haben.<br />

SpinnSoftSim 24


5.4.3 Inhibitionsverstärkung<br />

Zur Dämpfung der allgemeinen Neuronenaktivität innerhalb einer Population kann<br />

eine allgemeine Anpassung des statischen Anteils des Schwellwertes erfolgen. Die<br />

Dämpfung ergibt sich aus dem Verhältnis der Anzahl <strong>von</strong> aktiven Neuronen zu der Gesamtanzahl<br />

der Neuronen der Population. Dieser Wert kann mittels des Verstärkungsfaktors<br />

angepaßt werden. Für die globale Inhibition gibt es in der Biologie mehrere<br />

Ansätze, zum einen gibt es Pyramidalneuronen, die auf eine Vielzahl der ihr nachgeschalteten<br />

Neuronen hemmend wirken, aber auch jedes einzelne Neuron besitzt einen<br />

Mechnismus, der es vor einem zu starkem Potentialanstieg schützt.<br />

5.4.4 Globale Inhibition<br />

Die Aktivierung und Deaktivierung der populationsweiten Dämpfung erfolgt durch<br />

diesen Menüpunkt. Bei eingeschalteter globalen Inhibition, wird dies mit einem Punkt<br />

vor dem Menüeintrag dargestellt.<br />

5.4.5 Neuron wählen<br />

Für die Darstellung der Potentialverläufe eines ausgewählten Neurons, wird dieser<br />

Dialog verwendet. Mittels der drei Drehfelder kann die Population, die x- und y- Koordinate<br />

des Neurons ausgewählt werden. Mit diesen Parametern ist die Position des<br />

Neurons im Netz bestimmt.<br />

5.4.6 Potential darstellen<br />

Damit der Potentialverlauf des ausgewählten Neurons auch dargestellt wird ist dieser<br />

Menüpunkt zu aktivieren. Eine erneute Auswahl deaktiviert die Darstellung des Potentialverlaufs.<br />

Die farbliche Kennzeichnung der Dendritpotentiale erfolgt in der<br />

TABELLE 1. Farbliche Kennzeichnung der Potentialverläufe<br />

Farbe Potentialverlauf<br />

magenta 1. Dendrite F_Reiz<br />

rot 2. Dendrite Linking-Dendrit<br />

blau 3. Dendrite inhibitorischer Dendrit<br />

dunkelrot 4. Dendrite F_Population<br />

dunkelblau 5. Dendrite I_Population<br />

cyan Membranpotential des Neurons<br />

grün Schwellwert des Neurons<br />

Reihenfolge der Definition der Dendriten und ist nicht den Dendritnamen zugeordnet.<br />

Die Potentialverläufe der weiteren Feeding- und inhibitorischen Dendriten werden nur<br />

bei der Verwendung mehrerer Populationen dargestellt. Die Potentiale der inhibitorisch<br />

wirkenden Dendriten werden als Betrag dargestellt, damit eine bessere Nutzung der Zeichenfläche<br />

gegeben ist. Durch die Kopplung des Linkingdendriten an den Faktor β wird<br />

bei der Potentialdarstellung ebenfalls der Faktor β berücksichtigt.<br />

5.4.7 Population wählen<br />

Die Aktivität einer ausgewählten Population kann im mittleren Fenster dargestellt<br />

werden. Das Drehfeld gestattet die Auswahl der Population mittels des Drehfeldes.<br />

SpinnSoftSim 25


5.4.8 Netzausgabe sichern<br />

Die Antwort des Neuronalen Netzes kann für jede Zeitscheibe in einer Datei gespeichert<br />

werden. <strong>Der</strong> eingegebene Dateiname wird durch die Nummer der Zeitscheibe erweitert.<br />

5.4.9 Einzelschrittsimulation<br />

Die Simulation kann entweder kontinuierlich erfolgen, oder in einzelnen Schritten.<br />

Während der kontinuierlichen Simulation wird ein Dialog mit einem Füllbalken und einer<br />

Schaltfläche zum Beenden der Simulation dargestellt. Wird dagegen eine Einzelschrittsimulation<br />

gewünscht, wird am Ende jeder Zeitscheibe ein Dialog mit zwei<br />

Schaltflächen dargestellt. Eine zur Berechnung der nächsten Zeitscheibe und eine zur<br />

Beendigung der Simulation.<br />

5.5 MENÜ BILDFOLGE<br />

<strong>Der</strong> Reiz des Netzwerkes besteht während des gesamten Simulationszeitraums, damit<br />

ein Eindruck vermittelt werden kann wie sich das Neuronale Netz bei einer Reizänderung<br />

verhält wurden die beiden folgenden Programmoptionen erstellt. Es besteht die<br />

Möglichkeit in ausgewählten Zeitscheiben ein neues Bild zu laden. Voraussetzung für<br />

die Abarbeitung <strong>von</strong> Bildfolgen ist, daß die Bilder alle das gleiche Format besitzen. Bei<br />

größeren Bildern würden einige Regionen nicht <strong>von</strong> Netzwerk erfaßt werden. Bevor<br />

die Bildauswahl erfolgen kann, ist die Bildfolgenbearbeitung einzuschalten, damit das<br />

Drehfeld im Auswahldialog initialisiert wird.<br />

5.5.1 Bildfolge ein / aus<br />

Mit diesem Menüpunkt kann die Abarbeitung verschiedener Eingangsreize eingeschaltet<br />

werden. Das erste Bild der Bildfolge ist nicht vorher zu laden, denn die Erstellung<br />

der Verbindungslisten und des Netzwerkes erfolgt nach dem das erste Bild geladen<br />

wurde. Die weiteren Bilder werden dann zu den ausgesuchten Zeitscheiben geladen.<br />

5.5.2 Bildwahl<br />

Das Dialogfenster besteht aus einem Drehfeld, mit dem die gewünschte Zeitscheibe<br />

ausgewählt werde kann, in der das Bild geladen werden soll. Mit Betätigung der<br />

Schaltfläche "Auswahl" erscheint ein weiteres Dialogfenster. Dieser Dialog erlaubt die<br />

Auswahl des gewünschten Bildes. Wurde ein Bild ausgewählt, wird der Eintrag in dem<br />

Listfeld dargestellt, wenn kein Bild ausgewählt wurde wird der Dialog für die Dateiauswahl<br />

geschlossen. Ein Eintrag in dem Listfeld kann entfernt werden, wenn er mit<br />

der Maus ausgewählt wurde und anschließend die Schaltfläche "Löschen" betätigt<br />

wird.<br />

5.6 MENÜ DARSTELLUNG<br />

Für die einzelnen Fenster ist eine Anpassung an den erwarteten Wertebereich möglich,<br />

damit die Ausgaben "formatfüllend" dargestellt werden.<br />

SpinnSoftSim 26


5.6.1 Zeit<br />

Dieser Programmpunkt erlaubt eine Änderung der Simulationszeit und der Schrittweite,<br />

mit der die Simulation durchgeführt werden soll. Diese Angaben beeinflussen die<br />

Achsenskalierung des Histogramms und auch der Potentialdarstellung.<br />

5.6.2 PSP<br />

Für die Darstellung der Potentialverläufe erfolgt eine Anpassung des Wertebereiches<br />

der y-Achse und die Angabe der Schrittweite für die Beschriftung.<br />

5.6.3 Bildgröße<br />

Die Größe der Ausgabefläche des Fenster für die Potentialdarstellung eines ausgewählten<br />

Neurons kann hier in Pixel angegeben werden.<br />

5.6.4 Reiz - Skalierung<br />

Bei Verwendung <strong>von</strong> kleineren Bildern für den Eingangsreiz kann mittels dieser<br />

Funktion eine Skalierung erfolgen. Das Bild wird dann in entsprechender Größe dargestellt<br />

und die Größe der Darstellung wird an die anderen Bilder angepaßt.<br />

5.7 MENÜ DEBUG<br />

Zur Kontrolle der implementierten Algorithmen stehen unter diesem Menüpunkt<br />

folgende Optionen zur Verfügung:<br />

5.7.1 Schreibe Vorwärtsverbindungen<br />

Dieser Menüpunkt erstellt eine Textdatei der erstellten Vorwärtsverbindungen in<br />

dem für jedes Neuron die Liste der nachfolgenden Neuronen ausgegeben wird. <strong>Der</strong> Dateiname<br />

kann mittels des verwendeten Dialoges frei gewählt werden.<br />

5.7.2 Schreibe Rückwärtsverbindungen<br />

Es wird eine Textdatei erstellt, deren Name frei wählbar ist. Für jede Synapse jedes<br />

Neurons wird der Verweis auf das vorhergehende Neuron ausgegeben.<br />

5.7.3 Schreibe Neuronenkontrolle<br />

Mit dieser Programmoption, kann die Verweildauer eines Neurons in der Liste der aktiven<br />

Neuronen überwacht werden, damit kann das Ausscheiden des Neurons aus dieser<br />

Liste kontrolliert werden, wenn das Membranpotential beim Abklingen den Schwellwert<br />

nicht noch einmal schneidet. Neuronen mit einem aktiven Eingangsreiz bleiben in<br />

der Liste, weil diese in jeder Zeitscheibe feuern.<br />

5.7.4 stat. Neuron-Daten<br />

Die Dendrit- und Synpasenparameter werden nach einer Änderung, an die Elemente<br />

des Neuronlane Netzes weitergeleitet, mit diesem Dialog kann die Verteilung überprüft<br />

werden. Mit den drei Drehfeldern kann die gewünschte Population, sowie die x- und y-<br />

Koordinate eines Neurons eingestellt werden. Anschließend werden in dem Listenfeld<br />

SpinnSoftSim 27


auf der linken Seite die statischen Daten des Neurons dargestellt.<br />

5.7.5 Speicherbelegung<br />

<strong>Der</strong> Speicherbedarf einer Schicht des Neuronalen Netzwerkes wird bestimmt, wenn ein<br />

Eingangsbild geladen wurde. Die Speicherung aller <strong>Synapsen</strong>parameter in jeder Synapse<br />

ist nicht Resourcen schonend, wenn die Konventionen des SPINN-Konzeptes<br />

berücksichtigt werden kann Reduzierung des Speicherbedarfs erreicht werden. Die<br />

Impulse <strong>von</strong> einem Neuron und der zugehörigen Nachbarschaft werden alle <strong>von</strong> den<br />

<strong>Synapsen</strong> eines Dendriten aufgenommen. Diese <strong>Synapsen</strong> besitzen bis auf den Wichtungsfaktor<br />

zur Entfernungsdarstellung, alle die selben Parameter. Durch die reguläre<br />

Struktur des neuronalen Netzwerkes werden diese Parameter einmal in jeder Population<br />

hinterlegt. Mit den Parametern des Neuronenmodells wird ebenso verfahren. Für<br />

ein neuronales Netz mit einer Ausdehnung <strong>von</strong> 64x64 mit drei Dendriten, wobei der<br />

Feedingdendrit zur Reizaufnahem nur über eine Synapse verfügt und die beiden anderen<br />

Dendriten jeweils acht <strong>Synapsen</strong> besitzen, hat jedes Neuron 17 <strong>Synapsen</strong>. Eine<br />

Synapse belegt 52 Byte im Speicher, alle <strong>Synapsen</strong> eines Neuron 884 Byte. Alle drei<br />

Dendriten eines Neurons haben einen Speicherbedarf <strong>von</strong> 24 Byte. Ein Neuron mit all<br />

seinen Parametern hat einen Speicherbedarf <strong>von</strong> 36 Byte. Für die Datenstruktur der<br />

Population werden 56 Byte im Speicher reserviert. Damit ergibt sich für ein Bild <strong>von</strong><br />

64 * 64 Bildpunkten ein Speicherbedarf <strong>von</strong> 4 MByte. Hinzu kommen noch die Listen<br />

der Vorwärts- (64008 Einträge / ca. 1MByte) und Rückwärtsverbindungen (64008 Einträge<br />

/ ca. 77kByte).<br />

SpinnSoftSim 28


6. PROGRAMMIERHANDBUCH<br />

6.1 DIE PROGRAMMIERSPRACHE C++<br />

Als Programmiersprache wird C++ verwendet. C++ ist eine Erweiterung der populären<br />

Programmiersprache C durch objektorientierte Eigenschaften, welche Programmiersprachen<br />

eine Kopplung der Daten an die benötigten Funktionen gestatteten. Damit<br />

können kleine überschaubare Programmeinheiten gebildet werden, deren Funktionsweise<br />

leicht überprüft werden kann. Ein weiterer Vorteil objektorientierter Programmiersprachen<br />

ist die Vererbung. Neu erstellte Klassen können auf Eigenschaften bereits<br />

bestehender Klassen zurückgreifen, d.h. der Programmcode ist nicht mehrfach zu erfassen<br />

außerdem wird bei der Programmerstellung Zeit gespart. Die Programmiersprache<br />

C++ erzeugt einen sehr kompakten Programmcode des ausführbaren Programms, wie<br />

man ihn <strong>von</strong> Compilern der Programmiersprache C kennt. Dies äußert sich positiv auf<br />

die Ausführungsgeschwindigkeit des Programms. Bei anderen Programmiersprachenhingegen<br />

wird jede Programmzeile erst zur Ausführungszeit (Interpreter) übersetzt oder<br />

es wird ein Zwischencode erzeugt. Bei der Programmiersprache Java, wird der Zwischencode<br />

<strong>von</strong> einem Interpreter abgearbeitet, bei der Erstellung des Zwischencodes<br />

werden schon viele Probleme z.B. bei der Typkonvertierung beachtet und bei Bedarf<br />

durch Fehlermeldungen angezeigt. Die Free Software Foundation hat einen frei verfügbaren<br />

C-Compiler erstellt, der für eine große Zahl <strong>von</strong> Betriebssysteme verfügbar ist.<br />

Ziel der Free Software Foundation ist es, ein komplettes Unix zu erstellen. Das GNU<br />

(GNU is not Unix)-Konzept der Free Software Foundation hat bereits eine Vielzahl <strong>von</strong><br />

Entwicklungswerkzeugen erstellt, auch Debugger mit denen sich Programmfehler aufspüren<br />

lassen [13]. Die Verwendung dieser Entwicklungswerkzeuge ist relativ einfach.<br />

Dagegen ist die Lokalisierung der verwendeten Bibliotheken im System für den Unix-<br />

Neuling nicht immer problemlos.<br />

6.2 DIE STL-BIBLIOTHEK<br />

Für die Programmiersprache C++ wurde 1994 eine Klassen-Bibliothek <strong>von</strong> der ISO<br />

(International Standards Organisation) verabschiedet, an deren Erstellung unter anderem<br />

die Firmen Silicon Graphics und Hewlett Packard beteiligt waren. Diese Bibliothek<br />

nutzt die Template-Eigenschaft <strong>von</strong> C++[14]. Templates kann man als Masken oder<br />

Formulare beschreiben mit denen für selbst definierte Datentypen bereitgestellte Funktionen<br />

verwendet werden können. Dieses Prinzip wird generische Programmierung genannt.<br />

Aus dieser Standard Template Library (STL) wird die Verwaltung <strong>von</strong><br />

verketteten Listen verwendet, wodurch die Notwendigkeit einen eigenen Programmcode<br />

für die Verkettung <strong>von</strong> Objekten zu erstellen entfällt. Die ST-Library stellt Eigenschaften<br />

wie das Hinzufügen, Löschen und Ersetzen <strong>von</strong> Elementen, Einfügen <strong>von</strong><br />

anderen Listen, Aufteilen in verschiedene Listen und das Sortieren der Liste und andere<br />

Eigenschaften zur Verfügung. <strong>Der</strong> Zugriff auf ein Listenelement erfolgt über sogenannte<br />

Iteratoren. Diese Arbeiten wie Zeiger, mit der Operation ++ , erhält man einen Verweis<br />

auf das nachfolgende Element in der Liste. Ein <strong>Vergleich</strong> der Iteratoren, ob ein<br />

Iterator größer oder kleiner als ein anderer Iterator ist, ob zum Beispiel innerhalb einer<br />

Liste der Iterator A vor dem Iterator B steht, ist erst möglich, wenn diese Eigenschaft<br />

implementiert wird. Unter Verwendung der STL können ebenso vorhandene Algorithmen<br />

zur Verwaltung <strong>von</strong> Stapelverarbeitenden-Strukturen oder Warteschlangen genutzt<br />

werden. Aber es existieren auch Funktionen zum Suchen oder Zählen <strong>von</strong> Ausdrücken<br />

innerhalb der Listen, Warteschlangen oder Stapelverarbeitenden Strukturen.<br />

SpinnSoftSim 29


6.3 DIE GRAPHISCHE BENUTZEROBERFLÄCHE -QT<br />

Als Schnittstelle zum Anwender bietet sich eine graphische Benutzeroberfläche an.<br />

Auf dieser können alle Parameter geändert werden, ohne daß Konfigurationsdateien erstellt<br />

oder geändert werden müssen oder das Programm neu übersetzt werden muß. Die<br />

norwegische Firma Troll Tech hat die C++-Bibliothek Qt entwickelt und stellt diese zur<br />

Verfügung, wenn das Programm anschließend mit seinem Quellcode veröffentlicht<br />

wird und keine kommerziellen Absichten verfolgt werden. Die Bibliothek ist für viele<br />

verschiedene Unix-<strong>Der</strong>ivate verfügbar und kann ebenfalls unter Windows eingesetzt<br />

werden. Damit kann ein einmal erstelltes Programm schnell auf ein anderes System<br />

übertragen werden. Die Qt-Bibliothek stellt eine Vielzahl <strong>von</strong> graphischen Elementen<br />

für den Dialog mit dem Anwender zur Verfügung und bietet mit ihren Beispielprogrammen<br />

einen leichten Einstieg in die Programmierung[15].<br />

Bei der Erstellung <strong>von</strong> Programmen die graphische Benutzeroberflächen verwenden,<br />

kann nicht permanent die Mausposition überwacht werden und bei einer Betätigung<br />

einer der Maustasten entsprechend reagiert werden. Diese Aufgabe übernimmt die<br />

graphische Benutzeroberfläche und die Qt-Bibliothek. Wenn eine Schaltfläche, über<br />

eine Maustastenbetätigung aktiviert wird, wird <strong>von</strong> dieser Schaltfläche ein Signal ausgesendet<br />

(emittiert). Ein zugeordneter Briefkasten (Slot) empfängt das Signal und kann<br />

entsprechend darauf reagieren. Es besteht die Möglichkeit, mit einem Signal mehrere<br />

Empfänger zu erreichen. Unter Qt wurde der Befehle Emit hinzugefügt, damit ein Signal<br />

emittiert werden kann. Mit den Befehlen connect und disconnect können die zugehörigen<br />

Slots für den Empfang des Signals zugeordnet werden. Die Definition eines<br />

Slots erfolgt innerhalb der Klassendefinition. Für diese Kommunikation der einzelnen<br />

Objekte sind zusätzliche Klassen und Programmcodes notwendig, welche unter Verwendung<br />

des Meta Object Compilers (MOC) erstellt werden können. Die Analyse eines<br />

Projektes für die Abhängigkeit der einzelnen Dateien zueinander kann mittels des Programms<br />

progen erfolgen. Unter Verwendung dieser Liste der Abhängigkeiten erstellt<br />

das Programm tmake ein Makefile mit dem alle Programmkomponenten übersetzt werden<br />

können, die Dateien zur Verarbeitung der Qt eigenen Signale werden ebenfalls erstellt.<br />

Die beiden Programme progen und tmake können vom Web-Server der Firma<br />

Troll Tech mit der Adresse www.troll.no bezogen werden und sind unter Linux lauffähig.<br />

Eine Umgebungsvariable verweist auf die Zielumgebung. Damit kann das Makefile<br />

für verschiedene Zielsysteme erstellt werden.<br />

6.4 QT-ARCHITECT<br />

Für die Erstellung der Dialogmasken wurde das Programm Qt-Architect verwendet.<br />

Mit diesem Programm kann man unter Verwendung graphischer Bausteine die Dialoge<br />

zusammen stellen und die Generierung des Programmcodes wird <strong>von</strong> Qt-Architect<br />

übernommen. Das Programm wurde <strong>von</strong> Jeff Harris und Klaus Ebner (e-mail :<br />

klaus@gaspode.ndh.com) erstellt und ist ebenfalls auf dem Web-Server der norwegischen<br />

Firma Troll Tech zu finden. Es stellt den ersten verfügbaren Dialog-Editor für die<br />

Qt-Bibliothek dar. Qt-Architect beinhaltet alle Steuerungselemente der Version 1.4.<br />

Weitere Steuerelemente können eingebunden werden. Die Programmcodeerstellung<br />

wurde <strong>von</strong> Klaus Ebener für die Solaris-Version des C++-Compilers angepaßt, da hier<br />

einige Besonderheiten zu berücksichtigen waren. Das Programm ist unter Linux fehlerfrei<br />

zu übersetzen und problemlos zu nutzen.<br />

SpinnSoftSim 30


6.5 MAKEFILE - UND ARBEITSUMGEBUNGS- ERSTELLUNG<br />

Für den g++-Compiler unter Solaris kann auf einem Linux-Rechner das Makefile<br />

mit den folgenden Befehlszeile erstellt werden.<br />

TMAKEPATH=/opt/tmake/lib/solaris-g++<br />

progen -o projekt.pro<br />

tmake projekt.pro -o Makefile<br />

Im Makefile sind in der Zeile LIBS die Bibliotheken libqimgio, libjpeg, libpng und<br />

libz hinzuzufügen, dies geschieht durch die Parameterfolge -lqimgio -ljpeg -lpng -lz, bei<br />

Bedarf ist vorher aber in der selben Zeile noch der Pfad für die entsprechende Bibliothek<br />

anzugeben. Mit der Option -L kann ein Pfad angegeben werden, in dessen Unterverzeichnis<br />

sich dann die Bibliothek befindet.<br />

Für erneute Übersetzung ist es vorteilhaft die Variablen QTINCLUDE und QTLIB<br />

in der Arbeitsumgebung zu setzen. Dies kann an der selben Stelle erfolgen an der QT-<br />

DIR definiert ist. QTDIR wird für das Übersetzen des Programms benötigt. Die Definition<br />

ist abhängig <strong>von</strong> der verwendeten Shell und den Istallationsort der Qt-Bibliothek.<br />

6.6 BENÖTIGTE BIBLIOTHEKEN ZUR LAUFZEIT<br />

Die verwendeten Bibliotheken werden zur Programmausführung wieder benötigt,<br />

weil sie dynamisch gelinkt werden. Die Bibliotheken werden bei der Übersetzung nicht<br />

an das auszuführende Programm angefügt, sondern die Bibliotheken werden bei der<br />

Ausführung des Programms ebenfalls in den Speicher geladen und die entsprechenden<br />

Routinen stehen zur Verfügung. Die Variable LD_LIBRARY_PATH enthält die Pfade an<br />

denen sich die entsprechenden Bibliotheken befinden.<br />

6.7 DIE PROGRAMMSTRUKTUR<br />

Das erstellte Programm läßt sich in drei Bereiche aufteilen. Den Bereich mit den<br />

Anwenderdialogen zur Parametereingabe, den Bereich der Daten und Strukturen des<br />

Neuronalen Netzwerkes und das Fenster zur Darstellung der Potentialverläufe für ein<br />

ausgewähltes Neuron, sowie der Populationsaktivität und dem Histogramm (Bild 17).<br />

Bild 17. Gliederung des Programms<br />

SpinnSoftSim 31


Die Aufteilung erfolgte aus Gründen der Übersicht. Bei einfachen Dialogen, deren Daten<br />

ohne weiteres innerhalb einer Maske dargestellt werden können, wurde auf die Einführung<br />

einer steuernden Klasse verzichtet. Für Dialoge, die zur Eingabe <strong>von</strong> Daten aus<br />

mehreren Populationen oder verschiedenen Dendriten entwickelt wurden, ist eine steuernde<br />

Klasse geschaffen worden. Die übergeordnete Klasse wählt das entsprechende<br />

Datenneuron oder den Dendriten aus und übernimmt die Aktualisierung der im Dialog<br />

dargestellten Werte. <strong>Der</strong> Komfort, der dem Anwender geboten wird, daß alle Parameter<br />

des Neuronen Modells zur Laufzeit geändert werden können bringt entsprechend viele<br />

Dialogmasken mit sich. C++ unterscheidet bei den Variablen- und Klassennamen die<br />

Groß- und Kleinschreibung, deswegen werden die Klassennamen, ihrer Definition entsprechend<br />

geschrieben. Die Dialoge wurden mit dem Programm Qt-Architect erstellt<br />

und der zugehörige Programmcode <strong>von</strong> Qt-Architect generiert, deshalb werden die erstellten<br />

Klassen nicht beschrieben. Eine wichtige Bemerkung zu den <strong>von</strong> Qt-Architect<br />

erstellten Dateien: in der Headerdatei der Data-Klasse wurde die Definition der Variablen<br />

<strong>von</strong> protected auf public geändert, damit ein einfacher Zugriff auf die Dialogdaten<br />

erfolgen kann. (Bild 18)<br />

Die Daten und Strukturen des neuronalen Netzwerkes gliedern sich wie im Bild 19<br />

dargestellt.<br />

6.8 DEFINITION DER VORWÄRTSVERBINDUNGEN<br />

Ein Neuron ist jeweils mit einer Synapse an seinen Nachfolger gekoppelt. Wenn das<br />

aktuelle Neuron einen Impuls aussendet, erreicht der Impuls die nachfolgenden Neuronen<br />

über eine jeweils andere Synapse. Die Verbindungen eines Neurons zu seinen nachfolgenden<br />

Neuronen, wird über die Liste list_connect, in der Klasse neuron dargestellt.<br />

Jedes Neuron hat damit seine eigene Nachfolgerliste. Diese Liste beinhaltet Iteratoren<br />

der Liste list_confront (confront = conection front), welche in der Klasse net definiert<br />

ist. In der Liste list_confront, die aus Elementen der Klasse confront besteht, wird ein<br />

Iterator der Population des Zielneurons, ein Iterator auf das Zielneuron, ein Iterator<br />

des Dendriten an dem die Synapse angeschlossen ist und ein Iterator auf die Synapse<br />

der Impulsübertragung gespeichert. Damit ist eine Verbindung auf das nachfolgende<br />

Neuron beschrieben und es kann eine Weiterleitung des Spikes erfolgen (Bild 20).<br />

6.9 DEFINITION DER RÜCKWÄRTSVERBINDUNGEN<br />

Jede Synapse ist mit nur einem Neuron verbunden, <strong>von</strong> dem es den Reiz empfangen<br />

kann. Zur Bestimmung des vorgeschalteten Neurons ist ein Iterator auf dessen Population<br />

und ein Iterator für die Position des Neurons innerhalb der Population notwendig.<br />

Beide Informationen werden in der Liste der Rückwärtsverbindungen list_conback<br />

(conback = connection backward) in der Klasse net gespeichert. Ein Iterator innerhalb<br />

der jeweiligen Synapse speichert den Verweis des Eintrags in der Liste con_back in der<br />

Variablen imp_base. Diese Verbindungen sind wichtig wenn eine Anpassung der Neurotransmitterstoffes<br />

U 0 durch das „Lernen nach Hebb“ stattfinden soll (Bild 21).<br />

SpinnSoftSim 32


Bild 18. Erstellte Dialogsteuerungen und verwendete Dialoge<br />

SpinnSoftSim 33


Bild 19. Struktur der Klasse net<br />

Bild 20. Defintion der Vorwärtsverbindungen<br />

6.10 BESCHREIBUNG DER EINZELNEN KLASSEN<br />

6.10.1 check<br />

Die Eingaben werden als Zeichenfolge erfaßt und anschließend erst in eine Zahl umgewandelt.<br />

Um Fehler bei der Umwandlung zu vermeiden, wird durch Verwendung der<br />

Klasse QValidator eine Eingabekontrolle durchgeführt. Die Klasse check basiert auf der<br />

Klasse QValidator aus der Qt-Bibliothek, verwendet aber reguläre Ausdrücke. Mit einem<br />

regulären Ausdruck, kann eine Maske angegeben werden. Wenn die Eingabe des<br />

Anwenders der Maske entspricht wird die Eingabe akzeptiert, andernfalls wird die Ein-<br />

SpinnSoftSim 34


Bild 21. Definition der Rückwärtsverbindung<br />

gabe zurückgewiesen. Durch die Verwendung der regulären Ausdrücke kommt es während<br />

des Übersetzungsvorganges zu einer Warnung, denn die Parameter für die<br />

Funktion Validate sind festgelegt und die Position der Eingabemarke ist bei der Verwendung<br />

der regulären Ausdrücke nicht <strong>von</strong> Interesse.<br />

6.10.2 conback<br />

Jede Synapse kann nur den Reiz eines vorgeschalteten Neurons aufnehmen. Diese<br />

Rückwärtsverbindungen sind notwendig, damit das <strong>Synapsen</strong>potential durch<br />

"Hebb’sches Lernen" angepaßt werden kann wenn das vorhergehende Neuron gefeuert<br />

hat. Um ein Neuron mit seiner Position im Neuronalen Netzwerk beschreiben zu können<br />

ist ein Zeiger auf die Population und ein weiterer Zeiger die Position innerhalb der Population<br />

notwendig. Beide Informationen werden in der Klasse conback abgelegt.<br />

Jede Synapse mit einem vorgeschaltetem Neuron besitzt einen Verweis auf einen<br />

Eintrag in der Liste der Rückwärtsverbindungen. Die Synapse zur Erfassung des Eingangsreizes<br />

hat kein Neuron als Vorgänger, und deshalb ist der Wert der Variablen<br />

imp_base gleich null.<br />

SpinnSoftSim 35


6.10.3 confront<br />

Das Ausgangssignal eines feuernden Neurons kann an mehrere nachfolgende Neuronen<br />

weitergereicht werden. Im Gegensatz zu seinem biologischem Vorbild werden<br />

die <strong>Synapsen</strong> zum Dendriten des Zielneurons gehörend betrachtet. Damit die <strong>Synapsen</strong><br />

vollständig adressiert werden können, sind folgende Informationen notwendig die Population,<br />

das Zielneuron, der Dendrit des Zielneurons an dem die Synapse angeschlossen<br />

ist und ein Zeiger auf die Synapse an dem Dendriten. Diese Verbindungen werden<br />

in der Liste list_confront abgelegt, die Liste ist in der Klasse net definiert. Ein Iterator<br />

auf diese Liste stellt die Verbindung zu dem nachfolgendem Neuron her. Die Reihe der<br />

nachfolgenden Neuronen wird durch eine Liste <strong>von</strong> Iteratoren auf Elemente der Liste<br />

list_confront dargestellt.<br />

6.10.4 confrontit<br />

Eine Liste vom Typ confrontit, beschreibt die Zeiger auf die Einträge in der Liste<br />

der Vorwärtsverbindungen, damit die zugehörigen <strong>Synapsen</strong> und die nachfolgenden<br />

Neuronen über einen eventuell auftretenden Impuls benachrichtigt werden können. Diese<br />

Liste wird in jedem Neuron abgelegt.<br />

6.10.5 dendrite<br />

Hier wird die Liste der <strong>Synapsen</strong> verwaltet, die zu dem Dendriten gehört. <strong>Der</strong> Dendritetyp<br />

wird gleichzeitig auch als Name verwendet, damit eine bessere Unterscheidung<br />

der Dendriten erfolgen kann. Die Aufteilung ist notwendig, um z.B. mehrere Feeding-<br />

Dendriten unterscheiden zu können. Durch die Aufteilung der <strong>Synapsen</strong> auf mehrere<br />

Dendriten können z.B. unterschiedliche Parameter für verschiedene Feeding-Verbindungen<br />

innerhalb der eigenen Population <strong>gegenüber</strong> den Feeding-Verbindungen zu anderen<br />

Populationen verwendet werden.<br />

TABELLE 2. Variablen der Klasse dendrite<br />

Klassenvariablen Erklärung<br />

list list_markram Liste der <strong>Synapsen</strong><br />

list::iterator daten_it Iterator auf die Dendriteparameter<br />

TABELLE 3. Funktionen der Klasse dendrite<br />

Funktion Erläuterung<br />

dendrite() Konstruktor der Klasse<br />

dendrite(QString dendrite_typ) Konstruktor mit Angabe des Dendritetyps<br />

getPSPges(float time) Berechnung des postsynaptischen Potentials<br />

aller <strong>Synapsen</strong><br />

addSynapse(int anz) fügt anz <strong>Synapsen</strong> dem Dendriten hinzu<br />

addSynapse(markram synapse) fügt dem Dendriten eine Synapse mit dem<br />

angegebenen Parametern hinzu.<br />

delSynapse(int location) Löschen der Synapse an der angegebenen<br />

Position<br />

expandParameter() der Parametersatz wird in alle <strong>Synapsen</strong> des<br />

Dendriten kopiert<br />

setDatenIt(parent) Iterator auf die Dendriteparameter setzen<br />

SpinnSoftSim 36


Die Parameter einer Population werden in einem Eintrag in der Liste<br />

list_datapopulation zusammengefaßt, die verschiedenen Parameter der Dendriten werden<br />

in einer weiteren Liste list_synapsendaten abgelegt. Diese Liste ist in der Populationsdefinition<br />

enthalten. Jeder Eintrag in der Liste list_synapsendaten entspricht einem<br />

Dendriten mit dem auf ihm sitzenden <strong>Synapsen</strong>. Die <strong>Synapsen</strong> eines Dendriten besitzen<br />

alle die gleichen Parameter, dadurch kann der Speicherbedarf enorm verringert werden.<br />

6.10.6 dlgctrlchoosepop<br />

Bevor der Dialog zur Auswahl der Population, deren Ausgabe im mittleren Fenster<br />

dargestellt werden soll, gestartet werden kann, ist es notwendig, vorher den Zeiger auf<br />

das Neuronale Netz zu übergeben. Über einen Zeiger auf die Klasse net erfolgt der Zugriff<br />

auf die Populationsnummer. Die Auswahl kann erst nach der Erstellung des Neuronalen<br />

Netzes erfolgen.<br />

6.10.7 dlgctrldend<br />

Die Daten für die Initialisierung des Netzwerkes sind in der Liste<br />

list_datapopulation in der Klasse MainWin definiert. Damit ein Zugriff auf diese Daten<br />

erfolgen kann, ist es notwendig mittels der Funktion setDataPointer einen Zeiger auf<br />

das Hauptfenster zu übergeben. Von der Liste der Dendritedaten wird eine Kopie angelegt,<br />

alle Eingaben werden auf der Kopie der Daten durchgeführt. Erst bei Betätigung<br />

der Schaltfläche „OK“ werden die geänderten Daten zurückgeschrieben. Damit ist gewährleistet,<br />

daß bei Betätigung der Schaltfläche „Abbruch“ die ursprünglichen Daten<br />

nicht verloren gehen. Ein Neuron verfügt über mehrere Dendriten. Um nicht mehrere<br />

Masken für Dendritparameter erstellen zu müssen, wurde das Drehfeld eingefügt, mit<br />

dem der gewünschte Dendrit dargestellt und seine Parameter geändert werden können.<br />

Die Funktion changevalue nimmt die Aktualisierung der Dialogfelder vor. Für die Verwaltung<br />

der Parameter der verschiedenen Populationen gibt es ein weiteres Drehfeld,<br />

dies ist an die Funktion updatepopulation gekoppelt. Bei einem Wechsel der Population<br />

wird auf den ersten Dendriten gewechselt, damit die Iteratoren initialisiert werden und<br />

kein fehlerhafter Zugriff auf den Speicher erfolgt. Mit den Schaltflächen „Laden“ bzw.<br />

„Sichern“ werden die Funktionen loaddend() bzw. savedend() aufgerufen, zum Laden<br />

bzw. Sichern der Dendriteparameter.<br />

6.10.8 dlgctrldyneu<br />

Drei Drehfelder dienen zur Auswahl des Neurons, dessen Potentialverlauf während<br />

der Simulation dargestellt werden soll. Mit der Funktion setNetPointer wird zuerst ein<br />

Zeiger auf die Klasse net übergeben, damit ein Zugriff auf die Variablen glasspopulation,<br />

glass_x und glass_y erfolgen kann. Diese Variablen beschreiben die Position des<br />

Neurons im Neuronalen Netz.<br />

6.10.9 dlgctrlhebb<br />

Mit diesem Dialog wird die Zeit bestimmt, zu der die maximale Änderung des ausgewählten<br />

Parameters durch „Hebb’sches Lernen“ erfolgen soll. Mit der Funktion set-<br />

DataPointer wird ein Zeiger auf die Klasse net übergeben, damit ein Zugriff auf die<br />

Variable time_hebb erfolgen kann.<br />

SpinnSoftSim 37


6.10.10 dlgctrlneuron<br />

Dieser Dialog dient zur Eingabe der Neuronparameter, vor dem Start des Dialoges<br />

ist mit der Funktion setDataPointer ein Zeiger auf die Daten der verschiedenen Populationen<br />

zu übergeben. In einer Population besitzen alle Neuronen die gleiche Parameter,<br />

deshalb wird für jede Population ein Element in der Liste list_datapopulation<br />

abgelegt. Die Liste ist in der Klasse MainWin abgelegt. Von dieser Liste<br />

list_datapopulation wird in der Funktion setDataPointer eine Kopie angelegt. In der<br />

Kopie der Daten werden alle Änderungen vorgenommen und bei Betätigung der Schaltfläche<br />

„OK“ werden die geänderten Parameter zurück geschrieben. Andernfalls werden<br />

bei Betätigung der Schaltfläche „Abbruch“ alle Änderungen verworfen. Unter Verwendung<br />

des Drehfeldes spinpop kann die Population ausgewählt werden, das Drehfeld ist<br />

mittels einer connect-Anweisung mit dem Funktion updatepopulation verbunden. Bei<br />

Betätigung der Drehfeldschaltflächen wird die Funktion updatepopulation ausgeführt<br />

und der Iterator wird auf das entsprechende Listenelement gesetzt. Die Funktion updatepopulation<br />

führt die Funktion dlgneuroupdate aus, damit die dargestellten Parameter<br />

aktualisiert werden. Unter Verwendung der Schaltflächen „Laden“ bzw.<br />

„Speichern“ werden die eingegebenen Neuronenparameter aus einer Datei geladen bzw.<br />

gesichert. Die Schaltflächen „Laden“ bzw „Sichern“ sind mit den Funktionen loadneuron()<br />

bzw saveneuron() verbunden.<br />

6.10.11 dlgctrlpop<br />

Die Populationsanzahl wird unter Verwendung dieses Dialoges erfaßt. Bevor der<br />

Dialog gestartet werden kann, ist der Zeiger auf die Klasse net und auf das Hauptfenster,<br />

der Klasse MainWin zu übergeben. Zum einen wird die Anzahl der Populationen in der<br />

Klasse net hinterlegt. Dies geschieht in der Variablen maxpopulation. In der Klasse<br />

MainWin wird die Liste list_datapopulation mit den Neuronendaten inder angegebenen<br />

Länge angelegt.<br />

6.10.12 dlgctrlsstep<br />

Für die Simulation kann zwischen dem automatischen Ablauf und dem Ablauf in<br />

einzelnen Schritten gewählt werden. <strong>Der</strong> Dialog dlgsstep erscheint am Ende einer Zeitscheibe<br />

und der Anwender kann den nächsten Simulationsschritt starten oder die Simulation<br />

abbrechen.<br />

6.10.13 drawfield<br />

Die Klasse drawfield wurde für die Darstellung der Potentialverlaufs eines ausgewählten<br />

Neurons, zur Darstellung des Histogramms und zur Aussgabe der Gaussverteilung<br />

geschaffen. Die Intervalle für die Achsenskalierungen für die Zeit und die<br />

Potentialhöhe bzw. die Zeit und die Anzahl der ausgelösten Impulse, sowie die zugehörigen<br />

Schrittweiten für die Achsenbeschriftungen erfolgen durch die Funktion setEnviroment<br />

für die Darstellung des Potentials und setHistoEnviroment für die<br />

Histogrammdarstellung. Die Funktion zeroline zeichnet das Koordinatensystem für die<br />

Potentialdarstellung und histozeroline für die Darstellung des Histgramms.<br />

SpinnSoftSim 38


6.10.14 globalinhib<br />

Zur Dämpfung der Aktivität innerhalb jeder definierten Population, sind die Anzahl der<br />

aktiven Neuronen jeder Zeitscheibe für jede Population getrennt zu betrachten. Aus<br />

dem Verhältnis der Änderung der Anzahl der aktiven Neuronen <strong>von</strong> zwei aufeinander<br />

folgenden Zeitscheiben wird dann die Änderung des statischen Schwellwertes<br />

bestimmt. Die Liste ist in der Klasse net definiert und ihre Länge entspricht der Anzahl<br />

der verwendeten Populationen.<br />

6.10.15 MainWin<br />

Die Klasse MainWin stellt das Hauptprogramm dar. Es erfolgt im Konstruktor der<br />

Klasse die Initialisierung des gesamten Programms, die Zeiger auf das Fenster für den<br />

Eingangsreiz, die Aktivität einer ausgewählten Population und das Fenster der Antwort<br />

des Neuronalen Netzwerkes. Das Fenster zur Ausgabe wird des Histogramms wird<br />

ebenfalls erzeugt. Das Fenster zur Ausgabe des Potentialverlaufs, eines ausgewählten-<br />

Neurons wird erst vor dem Simulationslauf in der Funktion netstart definiert. Es erfolgt<br />

die Definition des Menüsystems mit der Anbindung an die jeweiligen auszuführenden<br />

Funktionen. Die Umschaltung zwischen der Einzelschrittsimulation und dem automatischen<br />

Ablauf über alle Zeitscheiben wird durch die Funktion singlestep durchgeführt<br />

und entsprechend durch einen Punkt vor dem Menüeintrag gekennzeichnet. Es wird in<br />

der Variablen b_singlestep festgehalten, welche Einstellung vorgenommen wurde, in<br />

der Funktion netstart wird dann die Einstellung berücksichtigt. Wenn der Anwender<br />

eine Sicherung aller Ausgangsbilder wünscht, so erfolgt die Änderung des Menüeintrag<br />

durch die Funktion saveoutputtoggle, hier wird die Variable b_saveoutput geändert.<br />

Auch der Wert dieser Variablen wird später in der Funktion netstart ausgewertet. Die<br />

Darstellung des Ausgabefensters für die Potentialdarstellung erfolgt durch die Auswertung<br />

des Wertes der Variablen b_dynamic in der Funktion netstart. <strong>Der</strong> Wert <strong>von</strong><br />

b_dynamic kann durch die Funktion dynamictoggle beeinflußt werden. Die Funktion<br />

dynamictoggle kann durch den Menüpunkt „Potential darstellen“ ausgeführt werden.<br />

Nach dem Laden des Eingangsreizes durch die Funktion loadsource werden die beiden<br />

anderen Ausgabefenster in der gleichen Größe angelegt. Nach der Eingabe aller Parameter<br />

werden die gewählte Anzahl an <strong>Synapsen</strong> durch die Funktion expand<strong>Synapsen</strong><br />

angelegt, der Aufruf erfolgt durch die Funktion expand. Die Funktion expand erzeugt<br />

für jede Population, die der Bildgröße angepaßte Anzahl an Neuronen und erstellt ebenfalls<br />

die Verbindungslisten. Um spätere Parameteränderungen an die entsprechenden<br />

Neuronen in allen Populationen weiterzureichen wird die Funktion expandParameter<br />

verwendet. Die Funktion InitNeuroNet erstellt das erste Neuron-Modell, während NeuroNetInit<br />

die Initialisierung der dynamischen Parameter durchführt. Die Funktion netstart<br />

führt die Simulation durch.<br />

6.10.16 markram<br />

Das <strong>Synapsen</strong>modell nach Tsodyks und Markram wird durch diese Klasse dargestellt.<br />

TABELLE 4. Variablen der Klasse markram<br />

Variablen Erläuterung<br />

b_fire Signal ob die Synapse zum erstenmal gefeuert hat<br />

f_time_fire Zeitscheibe in der die Synapse zuletzt gefeuert hat<br />

SpinnSoftSim 39


TABELLE 4. Variablen der Klasse markram<br />

Variablen Erläuterung<br />

f_R Menge des Neurotransmitters der im <strong>Synapsen</strong>kopf verbleibt, nach dem<br />

Eintreffen eines Impulses<br />

f_u Menge des Neurotransmitters der ausgeschüttet wurde<br />

f_PSP postsynaptisches Potential der Synapse<br />

imp_base Zeiger auf den Eintrag in der Liste der Rückwärtsverbindungen auf das<br />

vorhergehende Neuron<br />

daten_it Iterator auf die <strong>Synapsen</strong>daten<br />

TABELLE 5. Funktionen der Klasse markram<br />

Funktion Erläuterung<br />

gettimefire ermitteln des Zeitpunktes wann die synapse zuletzt gefeuert hat<br />

getu ermitteln des aktuellen Wertes der dyn. Menge des Neurotransmitters<br />

getR ermitteln des aktuellen Wertes der verbliebenen Menge des Neurotransmitters<br />

getPSP ermitteln des momentanen Membranpotentials<br />

hasfired true, wenn die Synapse einmal gefeuert hat<br />

fire berechnet neue Werte für u und R und das aktuelle Membranpotential<br />

6.10.17 markramdata<br />

Mit dieser Klasse wird eine Liste innerhalb jeder Population erstellt, jeder Eintrag in<br />

dieser Liste umfaßt die Parameter eines Dendriten. Durch die regulären Strukturen<br />

besitzen alle Neuronen der Population die gleiche Anzahl an Dendriten mit den gleichen<br />

Parametern, da die Dendriten immer die selbe Aufgabe erfüllen. Die verwendeten<br />

Variablen sind Tabelle 6 zu entnehmen.<br />

TABELLE 6. Variablen der Klasse markramdata<br />

Variablen Erläuterung<br />

f_A Gesamtmenge des Neurontransmitters in der Synapse<br />

f_U_0_std Neurotransmittermenge bei der ersten Ausschüttung<br />

f_tau_rec Regenerationszeit der Neurotransmitter innerhalb der Synapse<br />

f_tau_facil Wirkungsdauer der Neurotransmitter auf den Dendriten<br />

f_tau_leaky Abklingkonstante des postsynaptischen Potentials<br />

i_hebbvar Kennzeichnung auf welchen Parameter "Lernen nach Hebb" durchgeführt<br />

werden soll.<br />

f_hebbmax obere Grenze in %, für die Anpassung durch Hebb<br />

f_hebbmin untere Grenze in % für die Anpassung durch Hebb<br />

neighb_x Nachbarschaftsradius in x-Richtung<br />

neighb_y Nachbarchaftsradius in y-Richtung<br />

gauss_v Verstärkungsfaktor der Gaussverteilung<br />

gauss_sigma Wichtung der Entfernung zwischen Sender- und Empfängerneuron<br />

dendrite_typ Name und Typ des Dendriten<br />

SpinnSoftSim 40


TABELLE 7. Funktionen der Klasse markramdata<br />

Funktion Erläuterung<br />

getA Ermittlung der Neurotransmittermenge der Synapse<br />

getU_0 Ermittlung der Neurotransmittermenge beim ersten Ausstoß<br />

gettau_rec Ermittlung der Regenerationszeit<br />

gettau_fac Ermittlung der Wirkungsdauer<br />

gettau_leaky Ermittlung der Ablingzeit des postsynaptischen Potentials<br />

setA Setzen der Neurotransmittermenge der Synapse<br />

setU_0 Setzen der Neurotransmittermenge die beim ersten mal ausgeschüttet<br />

werden soll.<br />

setTau_rec Setzen der Regenarationszeit<br />

setTau_fac Setzen der Wirkungsdauer der Neurotransmitter auf den Dendriten<br />

setTau_leaky Setzen der Abklingkonstanten des postsynaptischen Potentials<br />

setHebbMax obere Grenze für Hebbsches Lernen setzen; die Angabe erfolgt in %<br />

setHebbMin untere Grenze für Hebbsches Lernen setzen; die Angabe erfolgt in %<br />

getHebbMax Ermittlung der oberen Grenze für Hebbsches Lernen<br />

getHebbMin Ermittlung der unteren Grenze für Hebbsches Lernen<br />

setHebbVar Auswahl des Parameters auf den Hebbsches Lernen wirken soll<br />

getHebbVar Abfrage des Parameters auf den Hebbsches Lernen wirkt<br />

setGaussV Verstärkungsfaktor für die Gaußkurve setzen<br />

getGaussV Verstärkungsfaktor für die Gauß-Verteilung ermitteln<br />

setGaussSigma Wichtungsfaktor der Gaußveteilung setzen<br />

get‘GaussSigma Wichtungsfaktor der Gaußverteilung ermitteln<br />

setInputFlag Wird gesetzt, wenn der Eingangsreiz aufgenommen werden soll<br />

get InputFlag Ermittelt ob der Eingangsreiz <strong>von</strong> dem dendriten aufgenommen wird.<br />

setNeighbour X- und Y-Radius des Nachbarschaftsbereich können gesetzt werden<br />

setNeighbourX Setzen des Nachbarschaftsradius in horizontaler Richtung<br />

set NeighbourY Setzen der vertikalen Nachbarschaftsradius<br />

getNeighbourX Ermittlung des horizontalen Nacbarschaftsradius<br />

getNeighbourY Ermittlung des vertikalen Nachbarschaftsradius<br />

setType Setzen des Dendritypen und -namen<br />

getType Ermittlung des Dendrittypen und -namen<br />

load Laden der Parameter aus einer Datei<br />

save Schreiben der Parameter in eine Datei<br />

6.10.18 net<br />

Diese Klasse beinhaltet alle Daten des Neuronalen Netzwerkes, die Daten der Populationen,<br />

Neuronen, Dendriten und <strong>Synapsen</strong>, sowie die Listen zur Beschreibung der<br />

Vorwärts-(list_confront) bzw. Rückwärtsverbindungen (list_conback) und die Listen<br />

über die zubehandelnden Neuronen (list_aktiv_neuron) und <strong>Synapsen</strong><br />

(list_aktiv_synapsen), deren Eingangssynapsen aktiv waren. Aus den Elementen der<br />

aktiven <strong>Synapsen</strong> werden die zugehörigen, in der nächsten Zeitscheibe zu behandelnen<br />

Neuronen gewonnen. Die Variablen glass_population, glass_x und glass_y werden zur<br />

Positionsbeschreibung des zu beobachtenden Neurons im Netz benötigt, dessen Poten-<br />

SpinnSoftSim 41


tialverlauf, auf Wunsch des Anwenders dargestellt werden kann. In Anlehnung an den<br />

gläsernen Menschen wird hier das gläserne Neuron eingeführt. Die Nummer der ausgewählten<br />

Population, deren Aktivität im mittleren Fenster dargestellt werden soll, ist in<br />

der Variablen popoutnr gespeichert. Das Zeitintervall in dem „Lernen nach Hebb“ die<br />

maximale Wirkung hat ist in der Variablen time_hebb hinterlegt. Die Funktion connect<br />

erstellt die Verbindungslisten für Verbindungen innerhalb der eigenen Population wie<br />

in der Tabelle 8 dargestellt wird. N stellt das aktuelle Neuron dar, F beschreibt eine Feeding-,<br />

L eine Linking und I eine inhibitorische Verbindung zu den benachbarten Neuronen.<br />

Bei Neuronen am Rande der Population ist auf eine Änderung des Bereiches zu<br />

achten, damit keine Zugriffe auf nicht definierte Speicherbereiche erfolgen. Verbindungen<br />

zu benachbarten Populationen werden durch die Funktion popconnect erstellt. Ein<br />

Neuron in der Population n überträgt seinen Impuls auf die neun Neuronen in der Population<br />

n+1, wobei der Impuls <strong>von</strong> den <strong>Synapsen</strong> auf den Feeding-Dendrit aufgenommen<br />

wird, ebenfalls wird sein Impuls an die Population n-1 übertragen. Dort wird der Impuls<br />

<strong>von</strong> den <strong>Synapsen</strong> auf dem inhibitorisch wirkenden Dendriten aufgenommen. Die Er-<br />

stellung der Einträge in die Liste der Vorgänger erfolgt durch die Funktionen addCon-<br />

Back bzw für die Liste der nachfolgenden Neuronen durch die Funktion addConFront.<br />

In der Klasse MainWin wird in der Funktion netstart während der Simulation festgestellt,<br />

ob ein Neuron feuert. Wenn ein Neuron feuert, werden die nachfolgenden <strong>Synapsen</strong><br />

aktualisiert, die Aufnahme der nachfolgenden <strong>Synapsen</strong> in die Liste<br />

list_active_synapsen erfolgt durch die Funktion addNewActive.<br />

6.10.19 neurodisp<br />

TABELLE 8. Verbindungen zu der eignen Population<br />

L I L I L I<br />

L I N L I<br />

L I L I L I<br />

TABELLE 9. Verbindungen zu benachbarten Populationen<br />

Population n-1 Population n Population n+1<br />

I I I F F F<br />

I I I N F F F<br />

I I I F F F<br />

Dies ist eine Klasse zur Ausgabe der Neuronenparameter, zur Überprüfung des Verbindungsalgorithmus<br />

in der Klasse net. Die Variablen population_nr, x_nr und y_nr beschreiben<br />

die Position des Neurons innerhalb des Neuronalen Netzes. Ihre Werte<br />

entsprechen den Werten in den Drehfeldern. Wenn der Inhalt eines Drehfeldes geändert<br />

wird, werden die Iteratoren neu positioniert und die Daten des ausgewählten Neurons<br />

werden in die Listbox eingelesen.<br />

SpinnSoftSim 42


6.10.20 neuron<br />

Diese Klasse beschreibt das modifizierte Neuronen Modell <strong>von</strong> Eckhorn.<br />

TABELLE 10. Variabeln der Klassen neuron<br />

Variable Erläuterung<br />

list_dendrite Liste der Dendriten<br />

list_connect Liste der Iteratoren auf die Einträge der Liste der Vorwärtsverbindungen<br />

pos_nr dient zur Kontrolle des Verbindungen und der Simulation<br />

population_nr dient zur Kontrolle des Verbindungen und der Simulation<br />

MP Membranpotential des Neurons<br />

time_fire Zeitpunkt des zuletzt ausgelösten Impulses<br />

y_out Ausgangsignal des Neurons<br />

Die Berechnung des Ausgangssignals erfolgt durch die Funktion calc_y_out, hier<br />

wird die Variable time_fire gesetzt. Dies ist notwendig für die anschließende Anpassung<br />

des ausgewählten Parameters, durch Lernen nach Hebb, in der die Zeitpunkte des Feuerns<br />

der <strong>Synapsen</strong> zu der Zeit des Feuerns des aktuellen Neurons betrachtet werden.<br />

Dies bezeichnet man als "Lernen nach Hebb". Die Funktion calc_y_out bedient sich der<br />

Funktionen calc_Theta zur Bestimmung des Schwellwertes und calc_MP zur Berechnung<br />

des Membranpotentials..<br />

TABELLE 11. Funktionen der Klasse Neuron<br />

Funktion Erläuterung<br />

calc_MP Berechnung des Membranpotentials<br />

calc_Theta Berechnung des Schwellwertes<br />

calc_y_out <strong>Vergleich</strong> des Membranpotentials mit dem Schwellwert, bei Bedarf<br />

wird ein Ausgangsimpuls gesendet.<br />

gettime_fire Ermittlung des Zeitpunktes an dem das Neuron zuletzt gefeuert hat.<br />

setParent Iteratoruebergabe des Iterators der auf die Population des Neurons<br />

zeigt<br />

6.10.21 piccourse<br />

Wenn ein veränderter Eingangsreiz gewünscht wird, ist die Bildfolgeverarbeitung einzuschalten.<br />

In dieser Klasse werden die gewünschten Bildnamen mit den Zeitscheiben<br />

hinterlegt in denen die Bilder geladen werden sollen. Die Liste der Daten wird in der<br />

Klasse MainWin erstellt. Während der Simulation wird zu Beginn einer Zeitscheibe der<br />

neue Reiz in Form des gewünschten Bildes geladen, anschließend erfolgt dann die<br />

Wertübernahme durch die zuständigen <strong>Synapsen</strong>.<br />

6.10.22 picture<br />

Unter Verwendung dieser Klasse werden die Aktivitäten der letzten Population, sowie<br />

der ausgewählten Population dargestellt. In den Variablen xscale und yscale wird<br />

der Skalierungsfaktor zur Darstellung hinterlegt. Dies ist bei der Verwendung <strong>von</strong> kleinen<br />

Bildern interessant, da diese vergrößert dargestellt werden können, denn bei ihnen<br />

erfolgt eine zügige Erstellung der Verbindungslisten. Mit der Funktion setColor kann<br />

SpinnSoftSim 43


die gewünschte Zeichenfarbe bestimmt werden. Das Feuern eines Neurons wird durch<br />

Setzen eines Pixel an der korrespondierenden Stelle im Bild dargestellt. Unter Verwendung<br />

der Funktion showImage wird das Bild in das Ausgabefenster kopiert.<br />

6.10.23 population<br />

Eine Population stellt eine Reihe <strong>von</strong> Neuronen dar, welche in der Liste list_neuron<br />

hinterlegt werden. Mit der Funktion putNeuron wird ein vorgegebenes Datenneuron<br />

entsprechend der resultierenden Anzahl aus xmax und ymax, in die Liste der Neuronen<br />

kopiert. Die Grösse der Population kann mittels der Funktion setSize bestimmt werden.<br />

TABELLE 12. Variablen der Klasse Population<br />

Variable Erläuterung<br />

list_neuron Neuronenliste<br />

pos_nr Nummer der Population, zur Kontrolle der Algorithmen<br />

neuron_init Flag, ob die Neuronen erzeugt worden sind<br />

connect_init Flag, ob die Verbindngslisten estellt worden sind<br />

list_synapsendaten Liste der Dendritparameter jeder Element der Liste entspricht einem<br />

Dendriten<br />

xmax Ausdehnung der Population in horizontaler Richtung<br />

ymax Ausdehnung der Population in vertikaler Richtung<br />

dendrite_max Anzahl der Dendriten eines Neurons dieser Population<br />

stat_Theta_std statischer Schwellwert der Population, kann nicht durch die globale<br />

Inhibition verändert werden.<br />

stat_Theta statischer Schwellwert der Population für alle Neuronen<br />

dyn_Theta dynamischer Anteil des Schwellwertes dieser Population<br />

beta Kopplungsfaktor zwischen dem Feeding und dem Linkingdendriten<br />

t_Ra Absolute Refraktärzeit der Neuronen<br />

t_Rr relative Refraktärzeit der Neuronen<br />

TABELLE 13. Funktionen der Klasse Population<br />

Funktion Erläuterung<br />

setSize Die Parameter x und y bestimmen die Grösse der Population<br />

get XSize Ermittlung der horizontalen Ausdehnung der Population<br />

getYSize Ermittlung der vertikalen Ausdehnung der Population<br />

pos Ermittlung der Positionsnummer aus der X- und Y-Koordinate<br />

des Neurons<br />

delNeuronen Löscht die Liste der Neuronen<br />

putNeuronen Erstellt die Liste der Neuronen gemäß der vorher gesetzten Populationsgröße<br />

getDendriteCounter Ermittlung der Länge der Liste list_synapsendaten<br />

setDendriteCounter Setzen der maximalen Dendritanzahl<br />

setStatTheta Statischen Schwellwert setzen<br />

getStatTheta Statischen Schwellwert ermitteln<br />

setStatTheta_inhib setzen des statischen Schwellwertes,<br />

geändert durch die globale Inhibition<br />

SpinnSoftSim 44


TABELLE 13. Funktionen der Klasse Population<br />

Funktion Erläuterung<br />

getStatTheta_inhib Ermittlung des statischen Schwellwertes<br />

der bereits durch globale Inhibition geändert wurde.<br />

setDynTheta Setzen des dynamischen Schwellwertes<br />

getDynTheta Dynamischen Schwellwert der Population ermitteln<br />

setBeta Kopplungsfaktor der Population setzen<br />

getBeta Koplungsfaktor zwischen Feeding u. Linking-Dendriten ermitteln<br />

setT_Ra Setzten der absoluten Refraktärzeit<br />

getT_Ra Abfrage der absoluten Refraktärzeit<br />

setT_Rr relative Refraktärzeit der Population setzen<br />

getT_Rr Ermittlung der relativen Refraktärzeit<br />

6.10.24 spinnsoftsim<br />

Diese Datei stellt das Hauptprogramm dar. Es wird nur das Hauptfenster definiert<br />

und dargestellt, alle Funktionen gehen dann <strong>von</strong> der Klasse MainWin aus.<br />

6.10.25 spinncheck<br />

Diese Klasse wird zur Kontrolle der Eingabe bei Drehfeldern verwendet, denn der<br />

Anwender hat nicht nur die Möglichkeit unter Verwendung der beiden Schaltflächen<br />

die dargestellte Zahl zu ändern, sondern er kann auch über die Tastatur direkt einen<br />

Wert eingeben. Um fehlerhafte Eingaben <strong>von</strong> Buchstaben und Sonderzeichen zu vermeiden,<br />

wird ein regulärer Ausdruck verwendet, der nur ganze Zahlen als Eingabe<br />

zuläßt.<br />

SpinnSoftSim 45


7. AUSWERTUNG<br />

Das vorliegende Programm sollte als Werkzeug zur Auswertung des Verhaltens der<br />

plastisch feuernden <strong>Synapsen</strong> dienen. Auf Grund des großen Wertebereichs und der<br />

großen Sensibilität der Parameter, ist kein <strong>Vergleich</strong> zwischen dem Einsatz <strong>von</strong> spikenden<br />

<strong>plastischen</strong> <strong>Synapsen</strong> <strong>gegenüber</strong> herkömmlichen pulscodiert arbeiten <strong>Synapsen</strong> in<br />

Neuronalen Netzwerken zu stande gekommen.<br />

Für die Betrachtung der herkömmlichen pulscodierten Neuronalen Netzwerke ist<br />

kein weiteres Programm zu erstellen. Für hinreichend kleine Zeitkonstanten für die Regenerierung<br />

bzw. Wirkungsdauer der Neurotransmitter geht u n gegen U und R wird 1.<br />

Damit ergibt sich für das postsynaptische Potential der Synapse folgende Beziehung:<br />

PSP = A x U. Dieser Wert kann mit einem Gewichtsfaktor der herkömmlichen Neuronalen<br />

Netze verglichen werden. Auch hier konnten die bereits entdeckten Phänomene<br />

nicht nach vollzogen werden. Dies zeigt die Empfindlichkeit der Neuronalen Netze auf<br />

ihre Parameter.<br />

Auch der Versuch einen einfachen Lernalgorithmus zu implementieren zeigte keinen<br />

Erfolg. Das "Lernen nach Hebb" vergleicht nur die Zeitpunkte der eingehenden Impulse<br />

mit den Zeitpunkten an denen ein eigener Impuls ausgesendet wird. Findet dies in<br />

einem vorgegebenen Intervall statt, wird die Transmitterstoffmenge entsprechend angepaßt.<br />

Bei diesem Lernverfahren findet keine Rückkopplung statt. Es kann keine Aussage<br />

getroffen werden, ob die Änderung eine Verbesserung der Verbindung bringt, da<br />

kein <strong>Vergleich</strong> mit dem Eingangsreiz statt findet.<br />

Die Möglichkeit mit mehreren Populationen, weitere Parameter zur Verfügung zu<br />

haben um das Verhalten des Netzwerkes positiv zu beeinflussen, brachten leider auch<br />

nicht den gewünschten Erfolg. In der zweiten Population wurden die erkannten Segmente<br />

immer größer und weiteten sich bis an die Grenzen des Netzes aus.<br />

Zur Dämpfung der Netzaktivität wurde die globale Inhibition eingefügt. Hier wird<br />

bei einer Steigerung der Netzaktivität der Schwellwert aller Neuronen der zugehörigen<br />

Population angehoben. Es sollte eine Reduzierung der Netzaktivität erreicht werden, damit<br />

erkannte Segmente eines Bildes nicht wachsen. Hier konnten keine stabilen Parameter<br />

gefunden werden und die Netzwerkaktivität ging nach kurzer Zeit gegen Null.<br />

Die Eigenschaft des Neuronalen Netzes, ein Objekt zu erkennen ist vorhanden. Für<br />

gefundene Parameter erfolgt eine getrennte Darstellung <strong>von</strong> dem Rand und der Fläche<br />

des Objektes. Die Fläche wird einen Pixel kleiner dargestellt als das Objekt. Kinser beschreibt<br />

ebenfalls diese Eigenschaft pulsgekoppelter Neuronaler Netzwerke in seinem<br />

Buch [5]. Das Problem der Kantendetektion wir ebenfalls <strong>von</strong> David Horn und Irit Opher<br />

dargestellt [16].<br />

In ausgewählten Zeitscheiben erfolgt eine Umschaltung zwischen der Fläche, Kante<br />

und Ecken dieser Vorgang erfolgt aber nicht stabil. Die dargestellten Kanten und Flächen<br />

verlaufen mit der Zeit. Bei Betrachtung des Potentialverlaufs eines ausgewählten<br />

Neurons, ist zu erkennen, daß das Potential des Linkingdendriten zu stark ansteigt und<br />

den Wert des absoluten Schwellwertes übersteigt. Womit dann das Neuron seinen definierten<br />

Wertebereich verläßt. Das Membranpotential eines Neurons ist immer kleiner<br />

gleich dem aktuellen Schwellwert.<br />

SpinnSoftSim 46


Bild 22. Bildfolge zur Kantenerkennung<br />

SpinnSoftSim 47


8. ZUSAMMENFASSUNG<br />

Das SPINNSoftSim-Programm wurde entwickelt, um eine Gegenüberstellung zwischen<br />

herkömmlichen Neuronalen Netzen mit gewichteten Eingangswerten und Netzen<br />

mit <strong>plastischen</strong> <strong>Synapsen</strong> zu erstellen. Zunächst wurde ein <strong>Synapsen</strong>modell gebildet,<br />

daß dem Tsodyks-Markram-Modell entspricht. Auf eine Speicherung der Zustandswerte<br />

der aktuellen Zeitscheibe wurde verzichtet, denn es wird die Differenz zwischen dem<br />

Zeitpunkt des letzten Eintreffens eines Impulses und der aktuellen Zeitscheibe bestimmt.<br />

Das Abklingen erfolgt dann durch die Exponentialfunktion. Das Programm zur<br />

Darstellung der <strong>Synapsen</strong>plastizität wurde erweitert um die Summation der <strong>Synapsen</strong>potentiale<br />

zur Berechnung des Dendritpotentials und die Bildung des Membranpotentials.<br />

Als Neuronmodell wurde das Marburger Modells gewählt und es wurde um die<br />

Eigenschaft der absoluten Refrakträrzeit erweitert, damit es seinem biologischem Vorbild<br />

einen Schritt näher kommt. Die Implementierung der <strong>Synapsen</strong>plastizität brachte<br />

keinen Unterschied zu den Erkenntnissen der Arbeitsgruppe aus Marburg. <strong>Der</strong> nächste<br />

Schritt war die Vervielfältigung des Neurons und die Erstellung einer Verbindungsliste.<br />

Mit den Erkenntnissen der Vorreiter aus Marburg war kein Fortschritt zu erzielen. Die<br />

experimentell ermittelten Parameter aus Marburg brachten keine Ergebnisse. Die Kantendetektion<br />

war die einzige nachvollziehbare Eigenschaft, die das erstellte Neuronale<br />

Netzwerk offenbarte. Aber die Segmentierung <strong>von</strong> einzelnen Bildregionen hat das<br />

Netzwerk nicht im gewünschten Maß hervorgebracht. Das Feuern einer <strong>Synapsen</strong>gruppen<br />

bleibt in einigen Zeitscheiben aus, aber eine Bildsegmentierung wie sie für pulscodierte<br />

Neuronale Netze beschrieben wird, war nicht zu erkennen. Erst die Erkenntnisse<br />

<strong>von</strong> Johnson, brachten den Ansatz einer Objektsegmentierung. Es findet immer noch<br />

keine vollständige Segmentierung statt, aber die Teile der Bildelemente werden in der<br />

Netzantwort zumindest wechselweise dargestellt.<br />

Um Unzulänglichkeiten bei der Parameterwahl zu reduzieren wurde ein Algorithmus<br />

für "Lernen nach Hebb" implementiert. Durch "Lernen nach Hebb" wird die dynamische<br />

Transmitterstoffmenge erhöht, wenn innerhalb einer gesetzten Zeitspanne das<br />

Neuron nach dem Eingang eines Reizes selbst einen Impuls aussendet, andernfalls wird<br />

die Menge des Transmitterstoffes reduziert. Eine Verbesserung bei der Segmentierung<br />

<strong>von</strong> Objekten im Bild oder bei der Kantenerkennung waren nicht zu erkennen. Für einen<br />

hinreichend langen Simulationszeitraum war durch die Beobachtung <strong>von</strong> ausgewählten<br />

Neuronen zu erkennen, daß das Membranpotential überaus stark ansteigt und den definierten<br />

Bereich verläßt, das System wird instabil. Ein Nachteil ist, daß kein direkter<br />

<strong>Vergleich</strong> mit dem Eingangsreiz vorgenommen wird<br />

Um diesen Umstand des ständigen Potentialanstiegs zu berücksichtigen wurde eine<br />

Funktion zu Bestimmung der globalen Inhibition implementiert. Diese Funktion erhöht<br />

den statischen Schwellwert aller Neuronen innerhalb einer Population, wenn die Aktivität<br />

innerhalb der Population ansteigt. Aber nach einigen Simmulationsschritten ging<br />

die Aktivität gegen Null.<br />

Unter Umständen stellt sich der Erfolg ein, wenn ein geeigneter Lernalgorithmus installiert<br />

wird oder der Einfluß der Nachbarschaft weiter vergrößert wird und damit eine<br />

geänderte Vebindungsstruktur zum Einsatz kommt.<br />

Die Erstellung eines eigenen Programms zur Simulation eines Neuronalen Netzwerkes<br />

mit <strong>plastischen</strong> <strong>Synapsen</strong> ist gerechtfertigt, da vorhandene Simulatoren entweder<br />

die <strong>Synapsen</strong>plastizität nicht berücksichtigten oder ihre Programmierung zu komplex<br />

ist. Als Vorteil dieses Programmes ist zu nennen, daß der Quellcode des Programms<br />

SpinnSoftSim 48


vorliegt und den eigenen Anforderungen angepaßt werden kann, ohne weitere Arbeitsgruppen<br />

um ihre Hilfe zu bemühen. Das SpinnSoftSim-Programm verwendet zur Darstellung<br />

des Abklingverhaltens die Exponentialfunktion, während bei der Realisierung<br />

des SPINN-Chips das Abklingen der Potentiale durch Geradenfunktionen angenähert<br />

wird. Durch Änderung dieses Sachverhaltes in den entsprechenden Programmfunktionen<br />

kann eine Annäherung an das SPINN-Konzept erfolgen und Abweichungen zum ursprünglichen<br />

Modell können aufgezeigt werden. <strong>Der</strong> Ansatz der <strong>Synapsen</strong>plastizität ist<br />

für die Verwendung in Neuronalen Netzen ein neues Gebiet, auf dem es, bis jetzt, kaum<br />

vergleichbare Ergebnisse gibt, da die Parameterwahl stark <strong>von</strong> der gestellten Aufgabe<br />

abhängig ist. Für Aufgaben aus dem Bereich der Bildbearbeitung wurde der Wertebereich<br />

der biologischen Neuronen verlassen. Die Zeitkonstanten im Sekundenbereich<br />

wurden durch Werte im Millisekundenbereich (ca. 10 ms bis 300 ms) ersetzt. Für diese<br />

Werte wurde eine bessere Kantenerkennung erreicht.<br />

Mit einem Verhaltenswechsel der <strong>Synapsen</strong> des Linkingdendriten vom Facilityzum<br />

Depressionverhalten ergeben sich ähnliche Netzantworten. Es findet für die verschiedenen<br />

Zeitscheiben ebenfalls ein Wechsel zwischen der Kante und der Fläche in<br />

der Netzantwort statt. Auch die teilweise Segmentierung der Bildelemente ist in der<br />

Netzantwort zu erkennen.<br />

SpinnSoftSim 49


9. ANHANG VERWENDETE LITERATUR<br />

TABELLE 14. Auflistung der verwendeten Literatur<br />

1 Zell Andreas; Simulation neuronaler Netze;<br />

Oldenburg Verlag ; ISBN 3-486-24350-0<br />

2 Hagenbach Jochen<br />

Entwicklung eines universellen dynamischen Neuronenmodells und Implementierung eines<br />

Simulationsprogrammes für Vernetzungen dieses Modells<br />

3 Natschläger Thomas;<br />

Netzwerke <strong>von</strong> "spiking" Neuronen : Die dritte Generation <strong>von</strong> Modellen für Neuronale<br />

Netzwerke<br />

4 Mehrtash Nasser<br />

Das SPINN-Konzept<br />

5 Lindblad Thomas, Kinser Jason<br />

Image Processing using Pulse- Coupled Neural Networks<br />

6 Eckhorn Reinhard;<br />

A Neural Network for scene segmentation by temporal coding<br />

7 Wehner Rüdiger, Gehring Walter<br />

Zoologie; Thieme Wissenschaft ISBN 3 13 367422 6<br />

8 Czihak G, Langer H., Ziegler H.<br />

Biologie ; ISBN 3-540-56003-3<br />

9 Frings Stephan<br />

Kernforschungszentrum Jülich<br />

Biologische Informationsverarbeitung<br />

www.kfa-juelich.de/ibi/ibi-1/ibihome.html<br />

10 Mehrtash Nasser;<br />

Entwicklung des nichtregulären Gewichte-Moduls für den Neurocomputer NESPINN<br />

11 Ranganath, H.S.;<br />

Iterative segmentation using pulse coupled neural networks<br />

12 Markram Heny, Tsodyks Misha;<br />

Potential for multiple mechanisms, phenomena and algorithms for dynamic plasticity<br />

at single synapses<br />

13 Loukides, Mike & Oram, Andy;<br />

GNU Software; O’Reilly; ISBN 9 78390 673322<br />

14 Breymann Ulrich;<br />

Komponenten entwerfen mit der C++ STL; Addison Wesley ISBN 9 783827 314741<br />

15 Dalheimer, Matthias Kalle;<br />

Programming with Qt; O’Reilly; ISBN 9 781565 925885<br />

16 Horn, David and Opher, Irit<br />

Collective Excitation Phenomena and their Applications<br />

17 Press, William<br />

Numerical Recipes in C; Cambridge University Press<br />

18 Gabbiani, Fabrizio<br />

Signal Processing Techniques for Spike Train Analysis Using MatLab<br />

http://klab.caltech.edu/~gabbiani/signproc.html<br />

19 Johnson John,<br />

Pulse-coupled neural nets: translation, rotation, scale, distortion, and<br />

intensity signal invariance for images<br />

SpinnSoftSim 50

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!