Self Organizing Map
Simulator


Torsten May
htw8866
Juli 2001






Das Anliegen des Programms
Wie Funktioniert ein Self Organizing Map
Was ist Neuroplastizität
Die Bedienoberfläche
Zur Implementierung
Das Programmverhalten
Das Patternfile
Schlußfolgerungen
Systemumgebung
Download



Das Anliegen des Programms

Dieses Programm soll auf einfache Art und Weise, dem interessiertem Nutzer, die Geheimnisse der neuronalen Musterverarbeitung nahebringen. Dieses System basiert auf einem Self Organizing Map oder auch Kohonen Feature Map und stellt dafür ein einfaches Simulationstool dar.
Es bietet die Möglichkeit 1 oder 2 dimensionale SOM's zu trainieren und während der gesamten Trainingsphase das geschehen zu beobachten. Die Verteilung der Trainingsmuster werden auf eine Karte abgebildet, die das jeweilige Netz repräsentiert. Somit kann jederzeit das Muster einem Neuronen in der Karte zugeordnet werden und die jeweilig Verteilung während des Trainings verfolgt werden.

Außerdem besteht die Möglichkeit das Netz nach erfolgreichem Training zu "amputieren". Naja damit ist nicht gemeint dem Netz ein Bein zu klauen. :-) Nein vielmehr werden dem Netz in diesem Durchgang einfach Trainingsmuster nicht gezeigt. Dies so nimmt man an sollte zu einer Umorganisation des Netzes führen - aber dies passiert nicht. Erst wenn man die Traingsmuster verrauscht stellt sich dieser Effekt ein. Dieses Verfahren beweist die Neuroplastizität eines SOM's, das heist das sich das SOM an seine Umgebung anpassen kann. Dieses Experiment ist dem von Herrn Prof. Manfred Spitzer nachempfunden. Näheres dazu steht in seinem Buch aus dem Spektrum Verlag. Er nutzte das Experiment um zu Beweisen, das Phantomschmerzen amputierter Gliedmassen bei Menschen, eben aus der Neuroplastizität des Gehirns herrühren. Aber dazu später mehr.

Das Programm kann beispielsweise in der Lehre eingesetzt werden, wenn das Problem der SOM's ansteht.



<<

Wie Funktioniert ein Self Organizing Map




Anhand folgender Skizze kann man sich eine Vorstellung eines SOM's machen.
Netz
Hierbei, wie man sieht, handelt es sich um eine 2-dimensionale Matrix, mit der Muster trainiert werden können.
Alle Trainingsmuster werden dabei allen Neuronen, in der Matrix, vorgestellt. Unten Dargestellt sieht man die Synapsengewichte eines Neurons. Sind diese dem angelegten Trainingsmuster am ähnlichsten wird dieses Neuron aktiviert. Dieses ist das sogenannte Gewinnerneuron.
Das Neuron wird nun dem Trainingsmuster "änlicher" gemacht, indem seine Gewichte dem Muster, angenähert werden. Außerdem werden die umgebenden Neuronen auch, zu einem gewissen Teil, mit angepaßt. Denn Wert der Annäherung legt dabei die Nachbarschaft fest.



<<

Was ist Neuroplastizität




Unter Neoplastizität versteht man die Fähigkeit eines SOM's z.B. das menschliche Gehirns, sich beständig den Erfordernissen seines Gebrauchs anzupassen. Dieser Vorgang ist nicht auf eine bestimmte Lebensphase eines Organismus beschränkt, sondern läuft während der gesamten Lebensdauer, erst schnell, später langsamer. Diese Eigenschaft eines SOM's will ich mit diesem Programm demonstrieren.
Dabei werden dem SOM nach erfolgtem Trainieren nur noch eine Untermenge aller Trainingsmuster präsentiert. Nun denkt man sich, das das Netz spontan anfängt sich zu reorganiesiern aber gerade das passiert nicht. Erst wenn man die Eingabemuster verrauscht tritt dieser Effekt ein.

In der Biologie hat man solche Effekte z.B. bei einer Amputation von Gliedmaßen bei Menschen.
Die Areale dieser Gliedmaßen im Gehirn werden plötzlich nicht mehr gebraucht. Nun kommt es aber durch den Amputationsschmerz zu rauschen auf den Leitungen zum Gehirn - diese sind ja noch vorhanden. Durch dieses Rauschen werden diese Regionen also mit aktiviert, dies geht soweit das ein Wassertropfen der den Stumpf herunterläuft, gespürt wird als ob der Tropfen den Arm oder das Bein herunterläuft.
Mit diesem Programm kann simuliert werden, dass nicht mehr benötigte Areale des SOM's umfunktioniert werden und für andere Funktionen mit genutzt werden.



<<

Die Bedienoberfläche




Das Hauptfenster:

Hierbei handelt es sich um den Hauptdialog,
der die Matrix des SOM's anzeigt.

Im Patterndatei Menü können Dateien geladen werden
und im SOM Menü kann ein SOM erzeugt und bearbeitet
werden.

Im Kontroll Menü kann schließlich das SOM trainiert
werden.
Hauptbildschirm

Ein neues SOM:

In diesem Dialog kann ein neues SOM angelegt werden.

X und Y sind die anzahl der Neuronen pro Richtung.

INPUT ist die Anzahl der Synapsen an einem Neuron.

GESCHLOSSEN ist, ob das Netz in sich geschlossen ist,
also einen Ring oder eine Kugel bildet.
SOMNEU

Kontroll Menü:

Mit Ausschluss kann der untere Teil des Dialogs aktiviert
werden. Dort lassen sich Trainingsmuster gezielt deaktivieren
und ein Rauschen festlegen.

Die Anzahl der Iterationen, die Lernrate, Nachbarschaft und
deren Abnahme lassen sich im oberen Bereich einstellen.

In der Mitte kann die Lernfunktion gewählt werden und außerdem
ob bei jedem durchlauf des Lernens der View aktualisiert wird
oder erst am Ende.

Mit Start wird das Lernen in Gang gesetzt - und mit Stop kann es
da die Berechnungen sehr langwierig sein können gestoppt werden.
Initialize - initialisiert die Matrix des SOM's mit zufälligen Werten.
Kontroll



<<

Zur Implementierung




Die SOM und Patternfile Klassen sind in Standard C++ in Verbindung mit der Standard Tamplate Library.
Die Dialoge dagegen sind mit MS VC++ implementiert, was einige Probleme mit der Zusammenarbeit bereitete.
Es wurde versucht die SOM und die Patternfile Klasse wieder verwendbar zu machen, was auch mehr oder weniger gelungen ist.



<<

Das Programmverhalten




Als erstes sollte ein Patternfile geladen werden und danach ein SOM erstellt werden. Dabei müssen die Synapsenanzahl und die Anzahl der Trainingswerte im Patternfile übereinstimmen.
Im Kontroll Menü kann nun trainiert werden. Typische Werte: Iterationen: 1000 Nachbarschaft: Größe X oder Y des SOM's Lernrate: 0.6 Abnahme: beide 0.999 Dabei sieht man, wenn man das Kontrollkästchen zum ständigen Aktualisieren anwählt wie das SOM die Muster anordnet.
Für alle Muster werden einzelne Areale herausgebildet, die dann ein bestimmtes Muster repräsentieren.
Mann kann gut sehen das zum Anfang mehrere Muster übereinander liegen und später jedes dieser Muster ein eigenes Neuronen besitzt.


Nach erfolgreichem Training können nun einzelne Muster gezielt deaktiviert werden. Damit kann bei einem erneuten Trainingszyklus die Neuroplastizität simuliert werden. Mit dem Schieberegler können dabei die Trainingsmuster verrauscht werden.
Beim Trainieren kann man feststellen das die Areale die vorher denn deaktivierten Mustern gehörten von anderen Mustern mit genutzt werden.



<<

Das Patternfile




Um das Netz zu trainieren werden Trainingsdaten benötigt. Diese können mit Hilfe von Patternfiles, dem Netz präsentiert werden. Das aussehen die dabei beim grossen Bruder SNNS abgeschaut worden.

Aufbau:

Header
	v1.0SOMPATTERNFILE
	# Number of Inputneurons // Zähler beginnt bei 0 
	#  47
	# Number of Patterns     // Zähler beginnt bei 0 
	#  10
	#
	#
	###########################################
	# # ist Kommantar
	# ; ist Trenzeichen 
	# , ist Komma für gebrochene Zahlen
	# | am ende der Zeile nichtvergessen
	###########################################
Trainingsmuster
		"# Number"
		"Zahl;Zahl;@Bezeichner |"
		
	z.B.
	#0
	1;1;1;1;1;1;1;0;0;0;0;1;1;0;0;0;0;1;1;0;0;0;0;1;1;1;1;1;1;1;1;0;0;0;0;1;1;0;0;0;0;1;1;0;0;0;0;1;@ A|
	#1
	1;1;1;1;1;0;1;0;0;0;1;1;1;0;0;0;0;1;1;1;1;1;1;1;1;0;0;0;0;1;1;0;0;0;0;1;1;0;0;0;1;1;1;1;1;1;1;0;@ B|
Der Bezeichner am Ende jedes Trainingsmusters hat dabei die Aufgabe das Muster genau zu kennzeichnen. Er wird später dazu Genutzt das Muster in der SOM Matrix zu bezeichnen. Er ist nicht Zwingend erforderlich - wenn er nicht vorhanden ist wird durch numeriert.

Die einzelnen Werte konnen auch Nachkommastellen besitzen, dabei muss mit Komma getrennt werden.



<<

Schlußfolgerungen




Anwendung der Simulationsergebnisse auf das menschliche Gehirn und dem sogenannten Phantomschmerz bei Amputation von Gliedmaßen.
nach Spitzer:


(1) Phantomglieder werden sofort nach der Operation gespürt, da das Trauma der Amputation selbst in hohem Maß für "Inputrauschen" sorgt. Aufgrund des Rauschens werden neue Verbindungen geknüpft oder alte, nicht benutzte Verbindungen reaktiviert, was insgesamt zur Chronifizierung des Krankheitsbildes führt.
(2) Bei besonders traumatischer Amputation kommt es zu mehr rauschen als bei Narkose.
(3) Es gibt Beobachtungen, daß Phantomglieder kleiner werden und sich verkürzen, dies läßt sich unschwer mit der Verkleinerung der entsprechenden kortikalen Areale in Verbindung setzen.
(5) Fehlbezogene Empfindungen kommen meistens, wie in der Simulation gezeigt, von "einwandernden Repräsentaionen" von Nachbararealen, nicht jedoch von weiter entfernten Gebieten.
(6) Bei sehr hohen Rauschanteil kann man sehen, das alle Repräsentationen auf der gesamten Landkarte "umherspringen". Dies kann dazu führen das nicht nur ein Phantom gespürt wird, sondern auch in gesunden Körperteilen Schmerzen auftreten. Die kann beispielsweise bei sehr schlimmen Unfällen, mit Amputaionen und mehreren Brüchen unter großen Scherzen, beim Menschen auftreten.



<<

Die Systemumgebung




Zur Implementierung der SOM- und der Patternklasse wurde Standard C++ in Verbindung mit der STL genutzt.Die SOM Matrix beispielsweise, basiert auf einer 3-fachen Vector Struktur.
Zur Visualisierung habe ich mich entschlossen MS VC mit der MFC zu nutzen, was sich alsbald als nicht so toll herausgestellt hat. Da MS VC und Standard C++ mit STL zwei völlig verschieden paar Schuhe sind. Die beiden Philosophien lassen sich leider nur mit allerlei Tricks und Casts :-) zur Zusammenarbeit bewegen. Als Entwicklungsplattform nutzte ich MS Windows 98, das Programm ist aber auch unter Windows NT lauffähig.



<<



Literatur:

Geist im Netz: Modelle für Denken und Lernen, Denken und Handeln/ Manfred Spitzer
Heidelberg; Berlin : Spektrum Akad. Verlag
ISBN: 3-8274-0572-6




Download




Zum Testen stelle ich hier den Sourcecode zur verfügung : nn2_beleg-01-08-18.zip


Kontakt

Bei vielleicht zu beantwortenden Fragen :-) hier meine E-Mail Adresse: Torsten May
<<