ACHTUNG: Dies ist die ASCII-Version eines Dokumentes, das auch
         als Postscript-Datei zur Verfgung steht (http://www.cl-ki.
         uni-osnabrueck.de/~nnadmin). Wenn irgend mglich, benutzen
         sie die Postscript-Version! 
         Zum Betrachten dieses Dokumentes mssen sie eventuell die
         word-wrap Funktion ihres Anzeigeprogramms einschalten! (Auf
         jeden Fall funktioniert z.B. wordpad (Win95))


NNelmos
Version 1.12

Anleitung zur Benutzung und Erweiterung des Programms
Neuronale Netze lernen mit Osnabrcker Studenten

Tobias Thelen
13.04.97



NNelmos Version 1.12
Anleitung zur Benutzung und Erweiterung des Programms
Neuronale Netze lernen mit Osnabrcker Studenten
Tobias Thelen
April 1997

Tobias Thelen
Feldbreede 7
49078 Osnabrck
Email: nntthele@hal.cl-ki.uni-osnabrueck.de
WWW: http://www.cl-ki.uni-osnabrueck.de/~nntthele

NNelmos im Internet:
WWW: 	http://www.cl-ki.uni-osnabrueck.de/~nntthele/nnelmos/nnelmos.html
oder:     	http://www.cl-ki.uni-osnabrueck.de/~nnadmin

Inhaltsverzeichnis
1 Einleitung	
1.1 Copyright und Nutzungsbedingungen	

2 NNelmos benutzen	
2.1 Grundlagen
2.1.1 Vektor
2.1.2 Matrix
2.1.3 Einzelnes Neuron
2.1.4 Netz
2.2 Perzeptron
2.2.1 Kantenerkennung -- Edge Detect
2.2.2 Buchstabenerkennung - Letter
2.2.3 Der Perzeptronlernalgorithmus 
2.3 Kohonens selbstorganisierende Karten (SOM)
2.3.1 Grundlagen
2.3.2 Parameter
2.3.3 Bedienung
2.3.4 Travelling Salesman Problem
2.4 Mehrdimensionale selbstorganisierende Karten
2.4.1 Kassifizierung von Datenstzen
2.4.2 Kontextkarten (contextual maps)
2.5 Backpropagation - Lernen
2.5.1 Bedienung
2.5.2 Parameter
2.5.3 Output Graph
2.5.4 Beispieldaten
2.6 NeuroCar
2.6.1 Problem und Netzarchitektur
2.6.2 Trainingsdaten
2.6.3 Bedienung

3 Kursorischer Durchgang

4 Installieren und Starten von NNelmos
4.1 Standardinstallation
4.2 Typische Probleme

5 Literatur

1 Einleitung
Vor ca. zwei Jahren haben wir in einer studentischen Arbeitsgemeinschaft unter dem Titel "Programmieren neuronaler Netze" begonnen, gngige Algorithmen aus dem Bereich knstlicher neuronaler Netze zu implementieren. Dabei sind zunchst unverbunden nebeneinanderstehende Programme in Lisp und C entstanden, die gesondert beschrieben sind.
Der Neuronale-Netze-Simulator NNelmos verbindet die C-Implementationen mit einer graphischen Oberflche, die zur Visualisierung dieser Algorithmen dient. NNelmos ist in erster Linie nicht als ein "ausgewachsener", komplexer NN-Simulator wie z.B. der SNNS konzipiert, sondern als Hilfe zum Verstndnis von NN-Algorithmen. In verschiedenen Modulen werden klassische Beispiele und Problemstellungen aus dem Bereich neuronale Netze graphisch so aufbereitet, da sowohl Anfnger als auch Fortgeschrittene einen neuen Blick auf die recht abstrakten Algorithmen gewinnen knnen. 
Vorkenntnisse aus dem Bereich Neuronale Netze sind erforderlich, um alle Mglichkeiten von NNelmos zu nutzen und alle Ausgaben nachvollziehen zu knnen. Gleichwohl eignet sich NNelmos aber auch begleitend zum Studium eines NN-Buches, da viele klassische Probleme und deren Lsung enthalten sind: Anhand des XOR-Problems wird deutlich, warum ein einzelnes Perzeptron es nicht lsen kann und wie ein feedforward Netz, das mit dem Backpropagationalgorithmus trainiert wird, damit umgeht. Aber auch anwendungsnhere Beispiele sind in NNelmos integriert: so wird im Modul "NeuroCar" ein feedforward-Netz dazu benutzt, ein Auto so zu steuern, da der Abstand zu einem vorausfahrenden Auto nicht zu gro und nicht zu klein wird.
NNelmos ist nicht in sich abgeschlossen, sondern eignet sich als "Werkbank" fr die Implementation von Erweiterungen und eigenen Ideen. Notwendig sind dazu nur C-Kenntnisse und gute Einflle. Die beiden Bibliotheken, auf denen NNelmos basiert, eine NN-Library, die alle grundlegenden NN-Datenstrukturen und Funktionen enthlt und eine Graphikbibliothek, die die Kommunikation mit dem Benutzer ber Mens und Dialogboxen... erheblich vereinfacht, sind dokumentiert und lassen sich einfach in beliebige Programme einbinden. Beginnend mit Version 1.12 haben wir uns allerdings entschlossen, den Source-Code nicht auf dem selben Wege wie das Programm vllig frei zugnglich zu machen, sondern geben ihn nur auf Anfrage an Interessierte weiter.
Diese Dokumentation bezieht sich auf die NNelmos-Version 1.12 (April 1997), verbesserte und erweiterte Versionen erscheinen in unregelmigen Abstnden und sind im Internet unter der Adresse
http://www.cl-ki.uni-osnabrueck.de/~nnadmin
oder direkt ber die unten angegebenen Adressen erhltlich.
NNelmos ist modular aufgebaut, d.h. die einzelnen Teile sind voneinander unabhngig und unterscheiden sich in der Bedienung, obwohl wir auf eine einheitliche Oberflche und Erscheinungsweise geachtet haben. In Kapitel 2 wird jedes Modul mit allen Optionen und Parametern beschrieben, wobei allerdings nicht auf die zugrundeliegenden Algorithmen eingegangen wird. Dazu kann z.B. eines der in der Literaturliste aufgefhrten Bcher herangezogen werden. Es gibt aber auch weitergehende Plne, NNelmos enger an eine in Arbeit befindliche "Einfhrung in Neuronale Netze" anzubinden, einen Anfang dazu bildet Kapitel 3 ( "Kursorischer Durchgang"), das den mglichen Einsatz von NNelmos zum Selbststudium oder in einem Kurs skizziert. Kapitel 4 schlielich beschreibt die Installation und Behebung technischer Probleme.
NNelmos lebt von konstruktiver Kritik und reger Anteilnahme an der Entwicklung, deshalb ist uns jede Form von Rckmeldung wichtig. Im NNelmosverzeichnis befindet sich eine Datei "answer.nn" mit einem kleinen Fragebogen, der uns die weitere Arbeit sehr erleichtert. Wir freuen uns ber jede Anregung.
Tobias Thelen					Michael Saure
Feldbreede 7		  			Schreberst. 46c
49078 Osnabrck				49080 Osnabrck
nntthele@hal.cl-ki.uni-osnabrueck.de  	msaure@mail.rz.uni-osnabrueck.de
oder an: nnadmin@hal.cl-ki.uni-osnabrueck.de
1.1 Copyright und Nutzungsbedingungen
NNelmos ist im Rahmen einer studentischen Arbeitsgemeinschaft an der Universitt Osnabrck entstanden und steht Interessierten kostenlos zur Verfgung. Da NNelmos kostenlos und frei erhltlich ist, bernehmen wir keinerlei Garantie fr eventuell auftretende Schden an Datenbestand und Hardware. (Bisher sind keine solchen Flle bekanntgeworden.) Die genauen Lizenzbedingungen sind der beiliegenden Datei copying zu entnehmen, oder unter den in Kapitel 1 angegebenen Adressen zu erfahren.
NNelmos darf auf keinen Fall ohne die Begleitdokumentation (readme, copying, Hilfedateien, dieser Text) und Beispieldaten (Unterverzeichnis "data") weitergegeben werden. Fr die Weitergabe von NNelmos drfen keine ber die Kosten fr Kopieren, Versenden u.. hinausgehenden Kosten erhoben werden.
NNelmos wird im Rahmen einer studentischen Arbeitsgemeinschaft, d.h. in unserer Freizeit gewartet und dokumentiert, daher sind Fehler sowohl im Programm als auch in der Dokumentation nicht nur nicht ausgeschlossen, sondern hchstwahrscheinlich. Einige Fehler sind uns bekannt (bugs.nn), von anderen zu erfahren ist ein Grund, NNelmos kostenlos zur Verfgung zu stellen. 
Die Quellcodes zu NNelmos sind seit Version 1.12 nicht mehr Bestandteil der NNelmos-Distribution und sind nicht mehr frei verfgbar. Dennoch wollen wir Interessierten die Mglichkeiten geben, NNelmos mitzuentwickeln oder eigene Projekte auf der Grundlage der NNelmos-Bibliotheken aufzubauen. Im diesem Fall ist aber eine Kontaktaufnahme mit uns erforderlich, die genauen Bedingungen knnen dann im Einzelfall geklrt werden.


2 NNelmos benutzen
In diesem Kapitel wird vorausgesetzt, da ein fertig installiertes NNelmos zur Verfgung steht. Nhere Erklrungen dazu finden sich in Kapitel 4. Mglicherweise beim Start und der Benutzung auftretende Probleme werden dort ebenfalls erlutert.
Nach dem Starten von NNelmos erscheint dieser Bildschirm. Es sollte mglich sein, mit der Maus umherzufahren und pulldown-Mens anzuklicken. NNelmos ist im Groen und Ganzen intuitiv zu bedienen, die von anderen Oberflchen bekannten Konzepte wie pulldown-Mens, Dialogboxen, Dateiauswahlboxen, Buttons usw. wurden bernommen, sind aber teilweise nicht ganz so flexibel zu handhaben wie gewohnt. Seit Version 1.07 ist NNelmos grtenteils auch per Tastatur zu bedienen; in Dialogboxen erscheint ein grauer Rahmen um das Element, das aktiviert wrde, wrde jetzt die Eingabetaste bettigt. Die Mens erreicht man ber F10, alle sonstigen Belegungen werden im Programm erklrt. Einen schnellen berblick ber die Fhigkeiten des NNelmos-Oberflche erhlt man unter dem Menpunkt Info/Copyright. Der Inhalt der Datei wird in einer Box dargestellt, es gibt Rollbalken (ziehen der Markierung mit der Maus funktioniert noch nicht) und einige Buttons, Oben bzw. Unten springen zum Anfang oder Ende der Datei, Suchen erlaubt die Eingabe eines Suchbegriffs, der dann beginnend am Anfang des Dokumentes gesucht wird, mit Weiter wird nach weiteren Vorkommen des Suchbegriffes gesucht. 
Der NNelmos-Startbildschirm dient als verbindende Zentrale fr die verschiedenen Programmodule. Hier kann das Programm beendet und Hilfe aufgerufen werden. Am oberen Bildschirm befindet sich ein pulldown-Men mit folgenden Eintrgen:


Haupteintr.	Untereintrag		Beschreibung

Datei		Ende			beendet das Programm.

		Sprache			Seit Version 1.06 kann die Sprache umgeschaltet werden. 
					Deutsch und Englisch sind implementiert, bei Wahl von
					Deutsch kann es an einigen Stellen dennoch dazu 
					kommen, da englische Begriffe erscheinen, da die 
					Umstellung noch nicht vollstndig durchgefhrt ist.

Grundlagen	Vektor			bersicht ber die Grundlagen der Vektorrechnung.
		Matrix			bersicht ber die Grundlagen der Matrixrechnung.

		Einzelnes Neuron	Grundlegende Begriffe wie Schwellwert und 
					Aktivierungsfunktion werden am Modell eines einzelnen 
					Neurons verdeutlicht.

		Netz			feedforward-Netze, bei denen Gewichte und Schwellwerte 
					von Hand eingestellt werden.

Perzeptron	Lernen			Der klassische Perzeptronlernalgorithmus

		Buchstabenerkennung	Einfache Erkennung verrauschter Buchstaben mittels des 
					"winner-takes-all" Verfahrens

		Ziffernerkennung		Wie Buchstabenerkennung, jedoch werden Ziffern in einer 
					anderen Visualisierung erkannt

		Kantenerkennung		Auch einfache Matrixoperatoren wie der 
					Kantenerkennungsoperator lassen sich als knstliches Neuron 
					auffassen.

SOM		2-dimensional		Training von 2-dimensionalen selbstorganisierenden Karten 
					(Kohonen-Netze)

		Mehrdimensional	Hherdimensionale selbstorganisierende Karten

Backpropagation	Lernen			Der klassische Backpropagation-Trainingsalgorithmus

		Neuro-Auto		Anwendung: Neuro-Auto

Info		Readme			Aktuellste Informationen
		Copyright		Copyright Hinweise
		Bugs			Bekannte Fehler
		Fragebogen		Ein kleiner Fragebogen, der, ausgefllt an uns 
					zurckgeschickt, helfen soll, Verbesserungen an NNelmos 
					vorzunehmen
		ToDo-Liste		Geplante Erweiterungen
		Tutorial			Einfhrung in die Theorie und Anwendung Neuronaler 
					Netze, ein deutsches Tutorial, das allerdings noch in den 
					Anfngen steckt.
Tabelle 1: Hauptmens

2.1 Grundlagen
Grundlegend fr das Verstndnis von NN-Algorithmen ist der sichere Umgang mit Vektor- und Matrixrechnung, zwei Bereichen, die an sich nicht kompliziert sind, die aber immer wieder fr begriffliche Verwirrung sorgen. Um diese Begriffe und immer wiederkehrende Ausdrcke aus dem Bereich der knstlichen neuronalen Netze fr NNelmos zu klren, wurde das Modul Grundlagen eingebaut. 

2.1.1 Vektor
Wie auch das folgende Modul "Matrix" ist das Modul "Vektor" in Bedienung und Umfang sehr einfach gehalten: Sie sollen ausschlielich dazu dienen, einige Begriffe und Algorithmen der Vektor- und Matrixrechnung zu verdeutlichen. Der Benutzer kann unter dem Menpunkt Optionen auswhlen zwischen:

Menpunkt	Erluterung
Addition		Zwei Vektoren werden komponentenweise addiert, das Ergebnis ist wieder ein 
		Vektor
Subtraktion	Analog zur Addition
Vektorprodukt	Zwei Vektoren werden komponentenweise multipliziert, das Ergebnis ist ein Vektor.
Skalarprodukt	Zwei Vektoren werden komponentenweise multipliziert und die Ergebnisse 
		aufsummiert, so da das Resultat ein Skalar ist.
Skalierung	Ein Vektor wird mit einem Skalar multipliziert
Euklidischer Abstand
		Der Abstand zweier Vektoren basierend auf der euklidischen Norm
Hamming Abstand
		Der Abstand zweier Vektoren basierend auf der Gleichheit einzelner Komponenten
Euklidische Norm
		Die Lnge eines Vektors kann durch Normierung bestimmt werden
Winkel		Der Winkel zwischen zwei Vektoren

Tabelle 2: Vektoroperationen

Zur besseren Visualisierung werden alle Operationen nur fr zweidimensionale Vektoren vorgestellt, sie gelten aber genauso fr hherdimensionale. Die verwendeten Beispielwerte werden jeweils zufllig bestimmt, um dieselbe Operation mit anderen Werten demonstriert zu bekommen, whlt man entweder denselben Punkt unter Optionen noch einmal an, oder klickt in den grauen Bereich des Bildschirms, in dem die Rechnung und der Erklrungstext angezeigt werden. 
Es wird zudem noch die Benutzung der NN-Bibliotheksfunktionen erlutert. Dieser Punkt ist wohl nur fr C-Programmierer interessant, verdeutlicht aber, wie einfach es mithilfe entsprechender Bibliotheken ist, auf den ersten Blick komplex erscheinende Algorithmen zu implementieren.

2.1.2 Matrix
Dieses Modul funktioniert genauso wie das oben beschriebene Modul "Vektor", unter dem Menpunkt Optionen existieren folgende Matrixoperationen:

Menpunkt	Erluterung
Addition		Zwei Matrizen werden komponentenweise addiert, das Ergebnis ist wieder 
		eine Matrix
Subtraktion	Analog zur Addition
Matrix/Skalar Multiplikation
		Eine Matrix und ein Skalar werden multipliziert, d.h. jedes einzelne Element der 
		Matrix mit dem Skalar
Matrix/Matrix Multiplikation
		Eine m*n und eine n*m Matrix werden multipliziert, das Ergebnis ist eine m*m Matrix
Vektor/Matrix Multiplikation
		Die Multiplikation Vektor * Matrix ist ein Spezialfall der Matrix/Matrix Multiplikation
Matrix/Vektor Multiplikation
		s.o.

Tabelle 3: Matrixoperationen

Alle in den Modulen "Vektor" und "Matrix" vorgestellten Funktionen sind brigens in der NN-Bibliothek eingebaut und knnen so auch ohne genaue Kenntnisse der Operationen benutzt werden.

2.1.3 Einzelnes Neuron
Allen Modellen knstlicher Neuronaler Netze liegt als Grundbaustein mehr oder weniger das gleiche Modell eines einzelnen abstrakten Neurons zugrunde. Das Modul "einzelnes Neuron" soll Eigenschaften eines einzelnen modellierten Neurons verdeutlichen, die spter bei komplexeren Modellen nicht mehr explizit sichtbar, zum Verstndnis von Funktionsweise und Parametern aber unerllich sind. 
Ein abstraktes Neuron wird charakterisiert durch:
- eine feste, endliche Menge von Eingngen
- einen Ausgang
- einen Schwellwert
- einen Typ, der den Wertebereich sowohl fr die Eingnge als auch den Ausgang festlegt. Oft verwendete Typen sind: binr (0/1), bipolar (-1/1) und kontinuierlich ([0;1]).
- eine Menge von (meist reellwertigen) Gewichten, die je einem Eingang zugeordnet sind
- eine Summierungsfunktion, die die Eingnge mit den Gewichten multipliziert und summiert
- eine Aktivierungsfunktion, die das Ergebnis der Summierungsfunktion mit dem Schwellwert vergleicht und auf den Wertebereich des Ausgangs abbildet

Dabei wird kaum noch Rcksicht auf das "biologische Vorbild" genommen, so da Analogien zwischen knstlichen und biologischen neuronalen Netzen mit allergrter Vorsicht zu genieen sind. So werden z.B. die komplexen biochemischen Vorgnge bei der Fortpflanzung von Signalen und Aktivierung von Neuronen auer acht gelassen und biologisch unplausible Lernverfahren benutzt. Trotzdem hat sich die prinzipielle Anlehnung an das biologische Vorbild als fruchtbar erwiesen.
Der Typ der verwendeten knstlichen Neuronen hngt von den zu verarbeitenden Daten, der verwendeten Netzarchitektur und dem Trainingsalgorithmus ab. Nicht jede Aktivierungsfunktion pat zu jedem Typ, folgende Tabelle bietet eine bersicht hufig verwendeter Aktivierungsfunktionen, wobei net den Nettoinput des Neurons bezeichnet, d.h. das Ergebnis der Summierungsfunktion minus Schwellwert.

Name		Wertebereich	Funktion			Erluterung
Binre Treppe	{0,1}		f(net) = 0 falls net < 0,
				f(net) = 1 sonst
				Wird fr Perzeptron und Hopfield-Modelle verwendet.
Bipolare Treppe	{-1,1}		f(net) = -1 falls net < 0,
				f(net) = 1 sonst
				Hat dieselben Eigenschaften wie die binre Treppe, der vernderte 
				Wertebereich wird meist gewhlt, weil die Daten so natrlicher 
				dargestellt werden, oder der Algorithmus mathematisch besser zu 
				analysieren ist.
Linear		[-;+]		f(net) = net
				Besonders wenn die Netzausgaben und -gewichte durch weitere 
				Verfahren analysiert und interpretiert werden sollen, kann es sinnvoll 
				sein, keine Begrenzung der Ausgaben durch eine 
				Aktivierungsfunktion vorzunehmen.
Sigmoide	[0;1]		f(net) = 1/1-enet/T
				Einige Algorithmen verlangen differenzierbare 
				Aktivierungsfunktionen (z.B. Backpropagation). Die Sigmoide stellt 
				eine differenzierbare Annherung an die binre Treppe dar.
Tangens Hyperbolicus
		[-1;+1]		f(net) = tanh(net)
				Differenzierbare Annherung an die bipolare Treppe
Tabelle 4: Aktivierungsfunktionen

Das Modul "einzelnes Neuron" dient nicht dazu, Lernalgorithmen zu demonstrieren, d.h. irgendwelche Probleme mittels neuronaler Netze zu lsen, sondern bietet wie auch die Module "Vektor" und "Matrix" eine bersicht ber die in der Literatur verwendeten Begriffe.

2.1.4 Netz
Der Schritt vom einzelnen Neuron zu einem Netz von von Neuronen erffnet erst die vollen Mglichkeiten neuronaler Netze. Auch historisch war die Entwicklung eines Lernalgorithmus (Backpropagation) fr Netze der groe Schritt vorwrts, der das Forschungsinteresse an neuronalen Netzen in den 80er Jahren wieder belebt hat. Vorher war die Situation dergestalt, da zwar bekannt war, da vernetzte Neuronen Probleme berechnen knnen, an denen ein einzelnes scheitert, es aber kein automatisches Verfahren existierte, die Gewichte und Schwellwerte einzustellen. Fr kleinere Probleme (z.B. XOR) ist es relativ einfach mglich, diese Gewichte "von Hand" zu finden. 
In dem Modul "Netz" knnen dreischichtige Netze bis zur Gre 3-3-3 erstellt werden und sowohl Gewichte, Schwellwerte und Eingaben eingestellt werden. Alle Neuronen sind binr und die Gewichte/Schwellwerte ganzzahlig im Bereich [-9;9]. 
Dieses Modul diente nur zu Demonstrationszwecken und mte noch erweitert werden. Sinnvoll wren z.B. "Aufgaben", d.h. bei gegebener Topologie und gegebenen Ein-/ Ausgabewerten sollen passende Gewichte gefunden werden. Ein berprfung der Gewichte kann dann automatische erfolgen.

2.2 Perzeptron
Das Perzeptron ist das einfachste Modell neuronaler Netze: Nur ein einzelnes Neuron soll dazu benutzt werden, Probleme zu lsen. Unter dem Themenkomplex "Perzeptron" haben wir deshalb auch drei Module eingeordnet, die inhaltlich wenig mit dem eigentlichen Perzeptron zu tun haben: Buchstaben- und Ziffernerkennung mit dem "winner-takes-all" Verfahren und Kantenerkennung. Alle drei sind aber Verfahren, die auch als Perzeptronanwendung verstanden werden knnen.

2.2.1 Kantenerkennung -- Edge Detect
In der Bildverarbeitung ist es hufig wnschenswert, Kanten aus realen Video- oder Photoaufnahmen zu extrahieren, um nur mit diesen Kanteninformationen weiterzuarbeiten. Auerdem sind digitalisierte Bilder meist verrauscht, so da eine einfache Bildverarbeitung aus zwei Stufen besteht:
1.Rauschen reduzieren (Entrauscher, Tabelle 5 und 6)
2.Kanten erkennen (Kantenerkenner, Tabelle 7)

1	1	1
1	1	1
1	1	1
Schwellwert: 4  
Tabelle 5

1	1	1
1	1	1
1	1	1
Schwellwert: 8
Tabelle 6

Als simple Mglichkeit dafr gibt es den LaPlace-Operator (Tabelle 7), der aus einer 3x3 Matrix mit Gewichten besteht, die Pixel fr Pixel ber das Bild bewegt wird. Im einfachsten Fall entspricht ein gesetztes Pixel 1 und ein nicht gesetztes 0, so da die Anwendung des Operators auf ein Pixel und seine Umgebung einen eindeutigen Zahlenwert liefert; wenn er ber einem bestimmten Schwellwert liegt, wird im Zielbild das Pixel gesetzt.

0	-1	0
-1	4	-1
0	-1	0
Schwellwert: 0  
Tabelle 7

Das bedeutet: Wenn das aktuelle Pixel und nicht mehr als drei orthogonal benachbarte gesetzt sind, gehrt das betrachtete Pixel zu einer Kante. Pixel, die nicht Teil einer Kante sind, befinden sich im Inneren einer Figur und haben daher gesetzte Pixel auf allen Seiten. Einzelne "Strungen" auerhalb von Figuren wrden so auch als Kanten erkannt, was bei verrauschten Bilder eine Vorverarbeitung notwendig macht.
Der Kantenerkennungsoperator kann auch als ein einzelnes Neuron betrachtet werden, das die Pixelwerte (bei uns nur 0 oder 1) als Eingaben erhlt und ausgibt, ob das betrachtete Pixel zu einer Kante gehrt.

Achtung: Dieses Beispiel dient nicht dazu, heute bliche Bildverarbeitung mit neuronalen Netzen zu demonstrieren, sondern ist als Einstieg in das Perzeptronmodell gedacht. Hier sind die Gewichte schon vorgegeben, danach kommen Probleme bei denen sie durch einen Lernalgorithmus herausgefunden werden sollen.
Die Bedienung des NNelmos-Kantenerkenners ist sehr einfach. Zufllig wird ein n-Eck erzeugt, das um eine vernderbare Prozentzahl verrauscht wird. Zunchst luft ein Rauschminderungsoperator ber das Bild, der einzelne Pixel eliminiert (Tabelle 5), dann ein zweiter Rauschminderungsoperator, der innerhalb der Figur entstandene "Lcher" wieder schlieen soll (Tabelle 6).
Nach Anwhlen von Datei/Neu hat der Benutzer die Mglichkeit, einige Parameter zu verndern:

Parameter		Erluterung
Anzahl Kanten		Hier wird eingestellt, wieviele Ecken das zu verarbeitende Polygon haben soll. 
			Die Anordnung der Ecken geschieht zufllig.
Verrauschung (Prozent)	Wie gro soll der Verrauschungsgrad des Ursprungsbildes sein? Die 
			Prozentangabe ist nicht exakt, denn sie gibt nur die Wahrscheinlichkeit an, mit 
			der jedes einzelne Pixel "umgedreht" wird.
Schwellwert Entrauscher1	Der erste Entrauscher dient dazu, einzelne Pixel zu eliminieren, der 
			Standardwert 8 bedeutet, da ein Pixel dann gesetzt bleibt (oder wird), wenn 
			in seiner Umgebung nicht mehr als 1 Pixel schwarz ist.
Schwellwert Entrauscher2	Der zweite Entrauscher schliet entstandene Lcken, d.h. beim Standardwert 4 
			wird ein zuvor nicht gesetztes Pixel dann gesetzt, wenn in seiner Umgebung 
			mehr als drei Pixel gesetzt sind.
Schwellwert Kantenerkenner
			Der eigentliche Kantenerkenner (La Place-Operator) arbeitet auf dem bereits 
			entrauschten Bild. 
Tabelle 8: Kantenerkennungsparameter

Die Parameter haben sinnvolle Defaultwerte, sollten aber unbedingt experimentell verndert werden, um die Fhigkeiten und Grenzen solcher Operatoren zu erkennen. Vor allem sollte klar werden, welche Bedeutung eine Schwellwertvernderung der beiden Rauschminderungsoperatoren hat.
Sind die Parameter gewhlt, wird die zufllig generierte Grafik angezeigt und das Programm befindet sich im Einzelschrittmodus (Stepmode), die Anwendung des Operators erfolgt Schritt fr Schritt, der Benutzer kann durch Anklicken der unteren Operatormatrix zum nchsten Schritt bergehen. Bei jedem Schritt wird im linken Feld ein roter Punkt fr die aktuelle Position des Operatorfensters gesetzt, im unteren Operatorfenster erscheint der Inhalt dieses Fensters. Im rechten Feld wird abhngig von der Aktivierung der Matrix ein Punkt gesetzt. Aufgrund der Gre der Grafiken ist der Einzelschrittmodus wenig aufschlureich und kann wohl nur in speziellen Situationen eingesetzt werden. Sinnvoller ist hier der kontinuierliche Modus (Runmode), in den mit Mode/Run umgeschaltet werden kann. Im durchlaufenden Modus wird nicht auf Benutzeraktionen gewartet, sondern alle Schritte direkt hintereinander ausgefhrt. Allerdings besteht die Mglichkeit, jederzeit mit Modus/Einzelschritt wieder in den Einzelschrittmodus zurckzuschalten, z.B. um Zwischenergebnisse zu betrachten.
Die Anwendung der drei Operatoren vollzieht sich in drei getrennten Phasen, zunchst wird das gesamte Bild mit dem ersten Rauschminderungsoperator bearbeitet, danach wird das auf der rechten Seite entstandene Bild nach links kopiert und der nchste Operator darauf angewendet.

2.2.2 Buchstabenerkennung - Letter
Nach dem "winner-takes-all" Algorithmus wird aus einer Reihe von verfgbaren Referenzvektoren derjenige ausgewhlt, der dem aktuell angelegten am hnlichsten ist. Als Vektoren dienen hier 8x12 Matrizen von Grobuchstaben. Unter "Cluster" knnen beliebig viele der 26 Referenzvektoren ein- und ausgeschaltet werden, so da ausgeschaltete Vektoren beim Vergleich nicht mehr verfgbar sind. Der Initialbuchstabe wird durch Auswahl eines Buchstaben und "Initial" bestimmt. Das Ma der Verrauschung wird durch die "hamming distance" (HD) angegeben, das ist die Anzahl der Pixel an denen sich die beiden Vektoren unterscheiden, zwischen Ausgangsvektor und Verrauschungsergebnis. Rechts stehen fr die "hamming distance" Werte zwischen 0 und 36 zur Verfgung.
Sobald einer der Werte verndert wird, wird der Erkennungsproze erneut in Gang ersetzt und links erscheinen unter "Input" der verrauschte Vektor, unter "Output" der erkannte Referenzvektor und unter "Proof" der Initialvektor angezeigt.
Dieses Modul zeigt, wie schon mit sehr geringem Aufwand recht eindrucksvolle Ergebnisse erzielt werden. Je nach zu erkennendem Buchstaben ("H" und "N" z.B. sind sich recht hnlich und werden daher fter verwechselt) ergeben sich selbst fr HD-Werte bis 30 (das ist eine Verrauschung von 30% bei 96 Pixeln pro Buchstabe) sehr gute Erkennungsraten.
Auch dieses Verfahren soll nicht den "state of the art" in OCR (Optical Character Recognition) darstellen, sondern zielt wiederum "nur" auf die Veranschaulichung grundlegender Techniken und mathematischer Gren (hamming distance, hnlichkeit von Vektoren), die immer wieder auftauchen.

2.2.3 Der Perzeptronlernalgorithmus 
In den vorherigen beiden Modulen wurden zwei mathematische Verfahren demonstriert, die beide eine Menge von Eingabedaten bekamen (9 bzw. 96 Pixelwerte) und einen Ausgabewert lieferten (Pixel setzen? bzw. Nummer des erkannten Buchstabens. In beiden Verfahren kann eine "Black Box" angenommen werden, die auf irgendeine Art und Weise die Eingaben auswertet und den Ausgabewert bestimmt. Auch ein einzelnes Perzeptron kann als eine solche "Black Box" aufgefat werden. In beiden Beispielen war die Funktion der Box fest vorgegeben und unvernderlich. Der Programmierer hat Operatormatrizen entwickelt, von denen er glaubte, da sie das Gewnschte leisten, er hat einen Algorithmus implementiert, der die hnlichkeit zwischen Vektoren berechnet. Ein groer Vorteil wre es, wenn es Verfahren gbe, die "Black Box" lernen zu lassen; oder anders ausgedrckt, einen Lernalgorithmus zu haben, der bei gegebenen Ein-/Ausgabepaaren die Gewichte eines Perzeptrons zuverlssig so verndert, da es nach Abschlu des Lernvorganges in der Lage ist, die gewnschten Aufgaben auszufhren.
Der Perzeptronlernalgorithmus leistet genau das fr ein einzelnes Perzeptron. Das entsprechende NNelmosmodul stellt den Lernvorgang eines Perzeptrons mit 2 Eingaben und 1 Ausgabe so dar, da der Lernfortschritt leicht abzulesen ist. Vier vordefinierte Trainingsmengen stehen zur Verfgung: AND, OR, NAND und XOR. Das Training beginnt direkt nach dem Laden der Trainingsmusterdatei (Menpunkt Datei/Neu).
Auf der rechten Bildschirmseite werden oben die Trainingsdaten (aufgeteilt in positive und negative Beispiele) angezeigt, darunter ein schematisiertes Neuron mit Eingabegewichten und Schwellwert. Wird dieses Neuron angeklickt, werden nacheinander die aktuellen Aktivierungen fr jedes Beispiel farbig angezeigt: An der Ausgabeleitung werden ein rotes oder grnes Rechteck sowie ein Kreis gezeichnet. Das Rechteck symbolisiert sie die tatschliche Aktivierung mit den aktuellen Gewichten und der Kreis die gewnschte. Unterscheiden sich die Farben von Kreis und Rechteck, so wird das Beispiel (momentan) falsch klassifiziert. Ist der Testmodus aktiviert, wird unterhalb des Neurons die Berechnung des Ausgabewertes angefhrt.
In der linken Bildschirmhlfte ist der Eingaberaum des Perzeptrons dargestellt, die Eingabewerte (0,0) - (1,1) entsprechend ihrer momentanen Zugehrigkeit zu den positiven oder negativen Beispielen eingefrbt. Ein einzelnes Perzeptron ist in der Lage, einen solchen zweidimensionalen Eingaberaum durch eine Gerade zu trennen. Im Laufe des Trainingsprozesses soll diese Gerade so durch den Eingaberaum verlaufen, da die positiven und negativen Beispiele voneinander getrennt sind. Anhand des XOR Beispiels macht diese Darstellung deutlich, da es Funktionen gibt, die ein einzelnes Perzeptron nicht lernen kann.
Die Trainingsmuster sind in einem sehr einfachen Format gespeichert, sollen eigene Daten entwickelt werden, dient am besten die Datei "and.pdf" im "data"-Unterverzeichnis als Grundlage. Die Eingabewerte sind dort jeweils um 1 erweitert, der Schwellwert wird zusammen mit den Eingabegewichten gespeichert und mu dann nicht getrennt behandelt werden. Es besteht kein Grund, diese 1 zu verndern.

2.3 Kohonens selbstorganisierende Karten (SOM)

2.3.1 Grundlagen
Self organizing maps sind ein Verfahren unberwachten Lernens. Die Gewichte der Neuronen werden durch "Nhe" zu Eingabevektoren verndert. Die Vernderung eines Neurons hat auch, in schwcherem Mae, die Vernderung der Gewichte umliegender Neuronen zur Folge. Zur graphischen Visualisierung wird oft ein zweidimensionaler Eingaberaum verwendet, in dem die Trainingsdaten zufllig verteilt werden. Die Neuronengewichte werden durch Positionen im Eingaberaum visualisiert.

2.3.2 Parameter
Durch die Gleichverteilung der Eingaben sollte sich nach einem geeignet langen Trainingsproze, passende Parameter vorausgesetzt, eine symmetrische Struktur ergeben. Das in NNelmos eingebaute SOM-Modul erlaubt es, mehrere Parameter zu verndern und so das Verhalten von Kohonen Netzen unter einer ganzen Reihe von verschiedenen Bedingungen zu beobachten. Unter dem Menpunkt Datei/Neu erscheint eine Dialogbox, in der folgende Parameter fr ein neues Netz eingestellt werden knnen:
Parameter / Erluterung

Nachbarn
Die Anzahl der Nachbarn, d.h. mit wieviel anderen Neuronen ist jedes einzelne verbunden. Bei 4 Nachbarn ergibt sich ein Rechteckgitter als stabile symmetrische Form, bei 2 Nachbarn eine Linie, ein Ring ist eine Linie mit verbundenen Endpunkten.

Anzahl Neuronen
 Zu beachten ist, da mehr Neuronen nicht automatisch bessere und schnere Ergebnisse bedeuten. Mehr als 400 Neuronen sind nur selten sinnvoll, da der Eingaberaum auf 400*380 Pixel beschrnkt bleibt. Auerdem steigt der Rechenaufwand mit jeder Erhhung der Neuronenanzahl. Bei kleinen Rechnern (386, evtl. ohne Coprozessor) sind Werte um 50 zu empfehlen. Bei Neuronen mit 4 Nachbarn mu die Anzahl der Neuronen eine Quadratzahl sein; NNelmos rundet die Eingabe automatisch auf die nchste Quadratzahl ab. 

Startradius
Der Radius bestimmt, wieviele Neuronen in der Umgebung von einer Gewichtsnderung eines einzelnen Neurons betroffen sein sollen. Dieser Radius sinkt im Laufe des Trainings, so da am Anfang groe nderungen am Netz vorkommen, damit es sich erst einmal grob dem Eingaberaum anpassen kann und am Ende nur noch kleine nderungen vorgenommen werden. Wichtig ist zu bedenken, da Netze mit 2 Nachbarn sehr viel hhere Radiusstartwerte bentigen: Der Standardwert von 5 beeinflut bei 4 Nachbarn 25 Neuronen, bei 2 Nachbarn aber nur 10. 

Endradius
Mit diesem Endwert der Radiusverengung kann bestimmt werden, wie groe nderungen am Ende des Trainings noch erlaubt sein sollen. Groe Werte (grer als 5 fr ein 100 Neuronen 2 Nachbarn-Netz) fhren dazu, da das Netz sich niemals "beruhigt", sondern immer hin- und herspringt. Zu kleine Werte fhren dazu, da zu schnell nur noch einzelne Gewichte korrigiert werden. Der Standardwert von 1 hat sich in den allermeisten Fllen als gute Lsung erwiesen.

Schritte vor Neuanzeige
Verglichen mit der Berechnung einer Iteration ist die graphische Darstellung sehr zeitaufwendig. Wenn es nicht unbedingt notwendig ist, jeden Schritt anzeigen zu lassen, sollten immer eine Reihe von Iterationen durchgefhrt werden, bevor das Bild aktualisiert wird. Gerade bei groen Netzen knnen hier sehr groe Werte notwendig werden, manchmal reicht es, da Netz whrend des gesamten Trainings nur 3 oder 4 mal anzeigen zu lassen und so sehr viel Zeit zu sparen. Der Standardwert von 20 lt die Bewegung immer noch flssig und zusammenhngend erscheinen, bringt aber gegenber kleineren Werten einen recht groen Geschwindigkeitsvorteil.

Starteta
Durch den Radius wird bestimmt, wieviele Neuronen von einer Gewichtsvernderung betroffen sein sollen. Eta gibt an, wie stark das passiert. Die Gewichtsnderung wird mit Hilfe einer Exponentialfunktion berechnet, Eta ist ein zustzlicher Faktor, mit dem das Ergebnis dieser Funktion abgeschwcht werden kann. Eta sinkt im Verlaufe des Trainings bis auf 0 ab, d.h. von anfnglich groer Vernderung der Gewichte zu letztlich nur noch sehr kleinen Korrekturen. Der Standardwert von 0.9 ist in den meisten Fllen passend. Werte von ber 1 fhren dazu, da die Gewichte ber das Ziel hinausschieen, der Benutzer sollte Eta-Werte im Bereich 1.2 - 1.5 ausprobieren, um den Effekt zu beobachten.

Gesamtschritte
Es gibt kein Fehlerma fr SOMs, der Lernvorgang wird eine vorher festgelegte Anzahl an Iterationen durchgefhrt und ist danach abgeschlossen. Weil sich Radius und Eta verndern, ist es notwendig, die Zahl vorher festzulegen, eine nderung whrend des Trainings hat Sprnge in Radius und Eta zur Folge und bietet daher nicht dieselben Ergebnisse wie ein komplettes Training mit dem neuen Wert. Auch hier gilt wieder: Hhere Werte garantieren keine besseren Ergebnisse.

Form des Eingaberaums
Der Eingaberaum mu nicht unbedingt rechteckig sein, vielmehr knnen auch Formen wie Dreiecke, Kreise usw. benutzt werden. Unter diesem Punkt werden 5 Formen angeboten: Rechteck (rect), Kreuz (cross), Kreis (circle), Ring (ring) und Dreieck (triangle).

Tabelle 9

Das Geheimnis einer guten Parameterauswahl ist Ausgewogenheit zwischen Anzahl der Neuronen, Startradius und Iterationen. Der Startradius sollte so gewhlt werden, da am Anfang bei jeder Iteration 20-40% aller Neuronen mitverndert werden, weil da Netz sich sonst nicht entfalten kann.

2.3.3 Bedienung

Nachdem ein Netz definiert (Datei/Neu) oder geladen (Datei/Laden) wurde, wird es trainiert. Dabei gibt es 3 Modi, zwischen denen unter dem Menpunkt Modus umgeschaltet werden kann:
1.Schrittmodus: Nach jeder Iteration (bzw. nach der Anzahl die in Schritte vor Neuanzeige  eingestellt wurde) wartet das System, bis der Benutzer auf das Netz klickt. Auf diese Weise lassen sich kleine Vernderungen am Netz gut beobachten oder der Lernvorgang anhalten.
2.Kontinuierlicher Modus: Im kontinuierlichen Modus (runmode) wartet das System nicht nach jeder Iteration, sondern fhrt die Lernschritte nacheinander durch, bis die maximale Anzahl Iterationen erreicht ist, oder der Benutzer einen anderen Modus whlt. 
3.Testmode: Im Testmodus lt sich die Netzaktivierung fr spezielle Eingaben gut beobachten. Der Benutzer klickt irgendwo in den grauen Bereich und das "nchste" Neuron wird durch einen roten Kreis hervorgehoben, benachbarte durch kleiner werdende nicht ausgefllte Kreise.
Es besteht die Mglichkeit, whrend des Trainings eine Teil der Parameter zu verndern. Nicht verndert werden knnen die Anzahl der Neuronen und der Nachbarn. Alle anderen Parameter knnen beliebig gesetzt werden, wobei allerdings Klarheit darber bestehen sollte, da dieses Verfahren nicht "sauber" ist. Wie oben schon erwhnt, bringt eine Erhhung der Iterationszahl nicht dieselben Ergebnisse wie ein komplettes Training mit hherer Anzahl Iterationen. Dasselbe gilt fr Radius und Eta. Trotzdem knnen diese Mglichkeiten sinnvoll sein, um ein Netz zu "retten". Durch Verndern von Schritte vor Neuanzeige kann der Trainingsvorgang beschleunigt oder verlangsamt werden. Whrend des Trainings die Topologie des Eingaberaums zu ndern ist sinnvoll, um zu beobachten, wie sich das Netz einer vernderten Situation anpat.
Zu jedem Zeitpunkt kann das Netz gespeichert werden, alle eingestellten Parameter werden mitgespeichert, so da das Netz sich nach dem Laden in genau demselben Zustand befindet wie beim Speichern. Fertigtrainierte Netze knnen (auch nach dem Laden) nicht weitertrainiert werden, da die maximale Anzahl Iterationen erreicht wurde. Mit Optionen/ndern kann wie oben beschrieben die Anzahl der Iterationen erhht werden, um ein weiteres Training dennoch zu ermglichen.

2.3.4 Travelling Salesman Problem

Bisher wurden nur Karten erwhnt, die keine "Funktion" haben, da ihre Eingabedaten zufllig aus einem whlbaren Bereich generiert werden. Diese Form von Karten eignet sich besonders zur Visualisierung des Ausbreitens und Glttens des Netzes, stellt aber noch keine reale Anwendung dar. Als Anwendungsbeispiel fr selbstorganisierende Karten haben wir eine Adaption des "travelling salesman problem" gewhlt. Gegeben eine Menge von Stdten (oder Punkten) soll die krzeste Route gefunden werden, die durch alle Stdte fhrt. Lsungsanstze fr das "travelling salesman problem" existieren sowohl fr klassische Suchalgorithmen, fr genetische Algorithmen und neuronale Netze (Hopfield, SOM). Die Realisierung mittels selbstorganisierender Karten ist denkbar einfach: Eine Menge von Neuronen (grer oder gleich der Menge von Stdten), die ringfrmig miteinander verbunden sind, wird zufllig in der Mitte angeordnet. Als Eingabedaten dienen die Positionen der Stdte, die nacheinander prsentiert werden. Es kann passieren, da einige Stdte "unbesetzt" bleiben, d.h. kein Neuron direkt auf sie "gezogen" wurde, daher ist die gefundene Route nicht einfach eine Route entlang der Neuronen des Netzes. Fr jede Stadt gibt es ein Neuron, das ihr am nchsten liegt, also wird dieses Neuron fr jede Stadt gesucht, die Liste anschlieend nach Nummern der Neuronen sortiert und kann dann als gefundene Rundreise ausgegeben werden.
In NNelmos ist das "travelling salesman problem" mit selbstorganisierenden Karten in das SOM-Modul integriert. Unter dem Menpunkt Datei/Neu TSP knnen die Parameter fr ein Training mit einer zufllig generierten "Landkarte" eingestellt werden. Die Parameter decken sich im Groen und Ganzen mit den oben erwhnten, einige fallen weg (wie Nachbarn und Form des Eingaberaums) und neu hinzugekommen sind Anzahl Stdte und Stdtenummern zeigen. Die Anzahl der Stdte ist beliebig whlbar, bei mehr als 100 gibt es allerdings Probleme in der Darstellung. Unter dem Menpunkt Optionen/TSP Wege wird die aktuell gefundene Route angezeigt, der Parameter Stdtenummern zeigen regelt, ob dabei die Stdte numeriert werden sollen. Die aktuelle Route lt sich jederzeit anzeigen, auch wenn das Training noch nicht begonnen hat, denn bereits dann hat jede Stadt ein Neuron, das ihr am nchsten liegt. Beim Anzeigen der Route wird auch deren Lnge berechnet und in einer Dialogbox ausgegeben. So lt sich beobachten, um wieviel krzer die letztendlich gefundene Route ist als die erste, zufllig generierte. Es wird nicht immer (oder bei vielen Stdten fast nie) die optimale Route gefunden, sondern oft eine Nherungslsung, auerdem treten sie fr SOMs typischen Probleme auf: Das Netz kann sich verknoten, insbesondere wenn der Startradius zu klein gewhlt war. es bilden sich dann Routen die berschneidungen und Kreuzungen aufweisen. Mit Datei/Neustart kann das Training fr dieselbe Stdteanordnung, allerdings mit anderer zuflliger Anfangsverteilung gestartet werden. 
Anhand des "travelling salesman problem" lt sich eine besondere Eigenschaft der selbstorganisierenden Karten leicht erkennen: Ein Ergebnis ist jederzeit verfgbar, die Gte dieses Ergebnisses jedoch nimmt mit der Zeit zu. Solche "anytime"-Algorithmen sind in Systemen wichtig, die zeitkritische flexible Aufgaben zu erfllen haben.

2.4 Mehrdimensionale selbstorganisierende Karten

In 2.3 wurde das NNelmos-Modul zur Visualisierung zweidimensionaler Karten vorgestellt. Seit Version 1.12 ist auch das Modul zur Darstellung hherdimensionaler Karten fertiggestellt. Hier wird eine andere Visualisierungstechnik notwendig, denn die Gewichte bzw. Werte einzelner Neuronen lassen sich nicht mehr als Koordinaten interpretieren, so da die Neuronen sich "bewegen". Vielmehr wird hier die Struktur des Netzes angezeigt und whrend des Trainings, das immer mit den Daten aus einer Trainingsmusterdatei geschieht, wird das Netz immer wieder kalibriert. D.h. fr jedes Trainingsdatum wird das Neuron gesucht, das ihm am nchsten liegt und mit dem Name bzw. der Nummer des Datums markiert. So entsteht eine Karte der Eingabevektoren, die sich im Verlaufe des Trainings ihrer hnlichkeit entsprechend zweidimensional anordnen.

2.4.1 Kassifizierung von Datenstzen

Nach "erfolgreichem" Training gruppieren sich die Daten (Tiere) zu meist drei groen Gruppen: Vgel, Raubtiere und Andere. Wichtig ist, zu verstehen, da der SOM-Algorithmus nicht auf magische Art und Weise von selbst herausfindet, welche Tiere sich hnlicher sind als andere, sondern was er leistet ist eine besonders anschauliche Darstellung der Daten. 
Die Parameter fr mehrdimensionale selbstorganisierende Karten entsprechen denen fr zweidimensionale mit folgenden Ausnahmen:
Mit Erzeugung eines Netzes mu zunchst eine Trainingsmusterdatai (.kpt) geladen werden, die die Dimension der Karte bestimmt.
Die Neuronen sind immer in einer 4er -Nachbarschaft angeordnet.
Die Form des Eingaberaums kann nicht gewhlt werden, weil die Daten aus einer Datei kommen.
Kontextkarte: contextual maps (im Moment nur grimm.kpt) erfordern eine modifizierte Abstandsmessung zur Kallibrierung, die mit diesem Schalter aktiviert wird.
Auch die Bedienung dieses Moduls ist fast analog, allerdings gibt es unter Optionen drei neue Punkt:
Daten anzeigen: Bei 96-dimensionalen Eingabedaten knnen die Gewichte der Neuronen als Bild dargestellt werden. Die Dateien letter.kpt und number.kpt enthalten Daten, die dafr geeignet sind.
Minunit anzeigen: Nach dem oben beschriebenen Verfahren wird fr jedes Trainingsdatum das nchstliegende Neuron markiert.
Minunit mit Schattierung: Der Abstand zwischen den Neuronen kann durch Graustufen verdeutlicht werden: Helle Rechtecke zeigen Neuronen, die nah bei ihren Nachbarn liegen, dunkle diejenigen, die von ihren Nachbarn weiter entfernt sind.

2.4.2 Kontextkarten (contextual maps)

Kontextkarten beruhen auf derselben Visualisierung benutzen als hnlichkeitsma aber den Kontext der Daten, d.h. zwei Datenstze sind einander hnlich, wenn sie in hnlichen Kontexten auftreten. Eine sehr interessante Anwendung von Kontextkarten ist die automatische Analyse unbearbeiteter natrlichsprachlicher Texte. Die Forschungsgruppe um Teuvo Kohonen hat zum einen knstlich generierte Texte untersucht ([3], S. 206ff.) und zum anderen eine Mrchensammlung der Gebrder Grimm. 
Bei der Vorverarbeitung der Texte wird jedem Wort ein eigener Vektor als Reprsentation zugeordnet, wobei es wichtig ist, das die Vektoren statistisch unabhngig sind, um unbeabsichtigte hnlichkeiten auszuschlieen. Jeder Kontext (bisher immer der Gre 1 auf jeder Seite) besteht so aus drei Vektoren, fr jedes Wort wird aus Grnden des schnelleren Trainings der Mittelwert ber die Kontextvektoren gebildet. Wurde beim Erzeugen eines neuen Netzes (Datei/Neu) der Schalter Kontextkarte aktiviert, wird zur Kallibrierung der Karte nur der mittlere Teil des Kontextvektors (d.h. die ursprngliche Reprsentation des Wortes)  herangezogen.
Mittels dieses Verfahrens sollte - eine entsprechende Datanbasis vorausgesetzt - das Wort dog dem Wort cat hnlicher sein als dem Wort fish, einfach aus dem Grunde, da dog und cat hufiger in demselben Kontext auftreten als dog und fish. Das stellt natrlich gewisse Anforderungen an die zugrundeliegenden Texte, aber ein Vorteil des Verfahrens ist, da ein hoher Grad an Verrauschung kaum Auswirkungen auf das Trainingsresultat hat. Offen ist die Frage, ob ein Kontext der Gre 1 auch fr deutsche Texte ausreicht: Werden in englischen Texten Substantive relativ sicher anhand nur zweier vorkommender Artikel (the, a) erkannt, ist es nicht sicher, ob hnlichkeiten zwischen Mann und Frau in der gleichen Weise erkannt werden knnen. Im Moment knnen nur Musterdateien mit Kontextgre 1 erzeugt werden, was sich aber in spteren NNelmos-Versionen ndern wird.
Um eine Musterdatei zu erzeugen, wird der Menpunkt Datei/Kontext-SOM Datei generieren angewhlt. Der Benutzer kann folgende Parameter ndern/Dateien bestimmen:

Parameter / Erklrung

ASCII-Datei whlen
Die Datei, die als Grundlage der Analyse dient, kann eine beliebige ASCII-Datei sein. Wrter bestehen aus wortinternen Zeichen, alles andere wird als Worttrennzeichen interpretiert. Welche Zeichen wortintern sind, wird durch den Inhalt der Datei data\wordchar.val bestimmt.

Min. Hufigkeit
Sollen nur Wrter in die Musterdatei aufgenommen werden, die mindestens 10 mal im Text auftreten, ist hier der Wert 10 zu whlen. 

Max. Eintrge
Es ist nicht sinnvoll, zu viele Wrter aufnehmen zu lassen, weil die Karte dann sehr unbersichtlich wird und fr Wrter mit geringer Hufigkeit nicht aussagekrftig ist. Ein sinnvoller Wert ist z.B. 50.

Vektorgre
Weil alle zur Reprsentation der Wrter generierten Vektoren statistisch unabhngig sein sollen und auerdem normiert werden, mssen fr Texte mit vielen Wrtern hherdimensionale Vektoren gewhlt werden. Der Standardwert 20 sollte fr Texte mit ca. 2000 Wrtern ausreichen. Hier liegen aber noch keine genaueren experimentell gewonnenen Ergebnisse unsererseits vor.

Asugabedatei festlegen
Nach der Generierung wird eine Trainingsmusterdatei (Endung .kpt) erstellt, die dann ber Datei/Neu zum Training verwendet werden kann.
Tabelle 11: Kontextkartenparameter

Das Analyseverfahren ist mehrstufig; an zwei Stellen besteht ber die beschriebenen Parameter hinaus die Mglichkeit, einzugreifen:
1.Wrter im Text zhlen und Hashtabelle initialisieren. Wrter bestehen aus wortinternen Zeichen, die der Datei data\wordchar.val entnommen werden. So besteht die Mglichkeit, Sonderzeichen (Umlaute u..) als gltige Zeichen zuzulassen, ohne die zu analysierenden Texte zu bearbeiten. Die in die Musterdatei aufgenommenen Wrter enthalten aber in der aktuellen Version diese Sonderzeichen nicht (also z.B. mig statt mig).
2.Wrter einlesen, in die Hashtabelle eintragen und Hufigkeitsinformationen speichern
3.Jedem Wort einen eigenen Vektor zuweisen
4.Die Wrter entsprechend ihrer Hufigkeit sortieren und die durch den Parameter Max. Eintrge Anzahl Wrter markieren. Sind darunter Wrter, die weniger hufig als durch den Parameter Min. Hufigkeit festgelegt auftreten oder Wrter, die in der Datei data\elimword.val eingetragen sind, werden sie nicht markiert. Diese Datei dient dazu, sehr hufige Wrter, die fr die spezielle Analyse dieses Textes inhaltlich irrelevant sind, auszufiltern (z.B. Artikel, Personalpronomen). Die Datei data\elimword.val kann beliebig erweitert werden.
5.Fr alle markierten Wrter werden Kontextvektoren erzeugt und jeweils der Mittelwert gebildet.
6.Die Musterdatei wird geschrieben.
Die Einbindung von Kontextkarten in NNelmos ist noch sehr neu und auerdem ein Bereich aktueller Forschung, der nicht unbedingt zum "Grundwissen" ber Neuronale Netze zu rechnen ist. Es liegen noch kaum experimentelle Ergebnisse vor, so da wir an Erfahrungen mit diesem Modul sehr interessiert sind.

2.5 Backpropagation - Lernen

2.5.1 Bedienung
Der am weitesten verbreitete Algorithmus zum Training von feedforward-Netzen mit mehreren Schichten ist der Backpropagation-Algorithmus, der in unzhligen Varianten existiert. In NNelmos sind keine aufwendigen Abwandlungen, sondern nur der einfache klassische Backpropagation Algorithmus integriert. Besonderen Wert wurde dabei auf die Visualisierung des Netzes und des Trainings unter verschiedenen Aspekten gelegt. Der momentane quadratische Fehler wird als Kurve ausgegeben, Gewichts- und Schwellwertvernderungen werden durch unterschiedlich dicke und rot oder grn gefrbte Linien und Kreise whrend des Trainings sichtbar und bei bestimmten Netzen lt sich die Ausgabe des Netzes dreidimensional darstellen.
Das Backpropagation-Modul ist von der Bedienung her eng an das SOM-Modul angelehnt. Im Datei Men gibt es folgende Mglichkeiten:

Menpunkt	Beschreibung
Neu		Die Parameter und die Datendatei fr einen neuen Trainingslauf werden erfragt.
Laden		Ein bereits erstelltes und/oder trainiertes Netz kann geladen werden.
Speichern	Wenn ein Netz erstellt wurde, kann es hier abgespeichert werden
Restart		Das Training kann mit denselben Parametern neu begonnen werden.
Backpropagation beenden
		Beendet das Backprop-Modul und kehrt zum Hauptbildschirm zurck.
NNelmos beenden
		Beendet NNelmos komplett.
Tabelle 12: Backpropagation Menpunkte

Zum Training von Netzen mit dem NNelmos Backprop-Modul ist immer eine Datendatei ntig, die beim Erstellen eines Netzes erfragt wird, aber auch whrend des Trainings oder zum Testen gendert werden kann. Das Men Pattern bietet zwei Mglichkeiten: Laden eines neuen Trainingsmustersatzes (Neue laden) oder anschauen des aktuellen (Anzeigen).
Wie auch beim Training der selbstorganisierenden Karten gibt es drei Modi: Einzelschrittmodus (Schritt), kontinuierliches Training (kontinuierlich) und testen (Test). Zwischen diesen Modi kann - sobald ein Netz erstellt oder geladen wurde - beliebig hin und her geschaltet werden. Im Testmodus werden zyklisch alle Trainingsmuster und die Aktivierung des Netzes bei jedem Muster angezeigt. Das Weiterschalten zum nchsten Muster geschieht durch Mausklicks auf das Netz.

2.5.2 Parameter
Beim Erzeugen eines Netzes lassen sich nach dem Auswhlen einer Datendatei eine Reihe von Backpropagation-typischen Parametern verndern. Im Einzelnen sind dies:

Parameter / Beschreibung

Versteckte Neuronen: 
NNelmos feedforward-Netze haben immer eine versteckte Schicht, die Anzahl der Neuronen in dieser Schicht sollte mindestens so gro wie die Anzahl der Neuronen in der Eingabeschicht sein, aber auch zu viele Neuronen sind mglich: In diesem Fall lernt das Netz die Beispiele einfach "auswendig" und ist nicht in der Lage zu generalisieren. (Ein schnes Beispiel dafr ist die NeuroCar-Trainingsmusterdatei, mehr darber in Kapitel 2.5.4).

Temp (Sigmoide): 
Als Aktivierungsfunktion wird in NNelmos immer die Sigmoide benutzt. Der Parameter Temp bestimmt die Steigung der Sigmoiden im Bereich um 0. Meist knnen aber gute Ergebnisse erzielt werden, ohne den vorgeschlagenen Wert zu ndern. 

Eta:
Die Lernrate Eta beeinflut, wie stark die berechneten Gewichtsnderungen tatschlich ausgefhrt werden und bestimmt dadurch die Konvergenzgeschwindigkeit. Auch hier sind gute Ergebnisse durch den Standardwert in den meisten Fllen garantiert.

Rho (fr Momentum):
Als Verbesserung des Backpropagationsalgorithmus ist das Momentum-Verfahren eingebaut, bei dem die letzte Gewichtsnderung zu einem einstellbaren Anteil wiederverwendet wird. Dieser Anteil liegt zwischen 0.0 und 1.0, bei 0.0 wird Momentum nicht benutzt. 

Zielfehler: 
Die andere Abbruchbedingung ist das Unterschreiten einer festgelegten Grenze fr den durchschnittlichen quadratischen Fehler. Ein niedrigerer Wert mu hier nicht unbedingt besser sein, denn ein sehr kleiner Fehler kann das Generalisierungsverhalten (die Anwendung auf nichttrainierte Eingaben) negativ beeinflussen. (Auch hier ist wieder das NeuroCar-Beispiel zu nennen.)

Schritte vor Anzeige: 
Es ist nicht immer ntig, die Graphikausgabe von Netz und Fehlerkurve nach jedem Lernschritt zu aktualisieren, gerade bei lngeren Trainingslufen oder greren Netzen kann dies zu einem ernsthaften Geschwindigkeitsverlust fhren, in solchen Fllen knnen beliebig hohe Werte sinnvoll sein. Um eine einigermaen flssige Aktualisierung zu erhalten sollte der Wert nicht ber 5 liegen.

Muster durchtauschen: 
Die Trainingsmuster knnen dem Netz entweder immer in derselben Reihenfolge prsentiert werden oder jedesmal zufllig durcheinandergewrfelt werden (shuffle). Das Prsentieren in zuflliger Reihenfolge fhrt in der Regel dazu, da der Trainingserfolg etwas sicherer wird, die Fehlerkurve allerdings sehr viel unruhiger,

Netz anzeigen: 
Bei greren Netzen (ber 15 Neuronen in irgendeiner Schicht) ist die graphische Ausgabe nicht mehr sinnvoll, weil sie zum einen schlecht erkennbar ist und zum anderen sehr viel Zeit in Anspruch nimmt. Die sich aktualisierende Anzeige des Netzes kann hier ausgeschaltet werden und nur ein stilisiertes Netz wird angezeigt.

Validierungsmuster verwenden
Ein alternatives Abbruchkriterium ist das Testen des Netzes gegen eine nicht mittrainierte Menge von Mustern. Wird die Option Validierungsmuster verwenden aktivert, wird eine zweite Trainingsmusterdatei geladen und der Fehler auf dieser Menge whrend des Trainings in den Fehlergraphen rot aufgezeichnet.

Tabelle 13: Backpropagation Parameter

Whrend des Trainings knnen diese Parameter (bis auf die Anzahl der versteckten Neuronen) gendert werden (Optionen/ndern). Natrlich ist es nicht besonders sinnvoll, die Trainingsparameter Temp und Eta whrend des Trainings zu verndern (besser wre ein Neustart mit vernderten Parametern), so kann aber relativ einfach experimentiert werden, um zu erfahren, welche Vernderungen nderungen an diesen Parametern nach sich ziehen.
Im unteren Bildschirmbereich wird der Trainingsfehler (und eventuell der Fehler ber der Validierungsmenge) fortlaufend aufgezeichnet. ber Pfeile besteht die Mglichkeit, die Ausgabe sowohl in y- als auch in x-Richtung zu skalieren.

2.5.3 Output Graph

Netze mit zwei Eingabe- und einem Ausgabeneuron lassen sich auch auf andere Weise darstellen: Als dreidimensionale Abbildung der Ein- und Ausgabewerte. Das Men Output Graph/Show lt sich aufrufen, wenn ein solches Netz geladen ist oder erzeugt wurde. Das Output-Graph-Modul erlaubt es, verschiedene Darstellungsparameter (Winkel, Vergrerung u..) zu verndern und die Ausgabe sehr flexibel zu betrachten. Es ist auch interessant, die Output-Graph Darstellung mehrere Male whrend des Trainings aufzurufen, um mitzuverfolgen, wie sich die endgltige Form des Graphen langsam herausbildet (bei XOR z.B. zwei von einem "Tal" getrennte "Berge").

2.5.4 Beispieldaten

NNelmos sind einige Beispieldaten beigelegt: 
Logische Probleme wie AND und XOR
XOR mit drei Eingaben (trixor.pat)
Ein binrer Codierer (4 Eingaben, 2 Ausgaben) (count.pat). Das Netz soll trainiert werden, die Anzahl der gesetzten Bits in der Eingabe binr zu kodieren (0 0 0 0 -> 0 0, 1 0 1 0 -> 1 0,...). Die Daten sind binr, das Problem wird komplett trainiert.
Ein Problem, das nicht komplett trainiert wird: Das Netz soll 1 ausgeben, falls genau eine der 10 Eingaben 1 ist, alle anderen 0. onepix.pat enthlt die Trainingsdaten, onepix2.pat die Testdaten, die ber die Option Validierungsmuster verwenden zustzlich geladen werden kann.
Wir sind stndig auf der Suche nach weiteren sinnvollen, auch greren Beispielen, die NNelmos beigelegt werden knnten!

2.6 NeuroCar

2.6.1 Problem und Netzarchitektur

Das bisher vorgestellte Backpropagation-Modul erlaubte es nur, Datenfiles zu trainieren und das Ergebnis des Trainings auf simple Art zu berprfen. Bei "realen" Probleme soll aber das Ergebnis des Trainings (ein trainiertes Netz) auf ein Problem angewendet werden. Die Art der Anwendung ist aber problemspezifisch und kann nicht sinnvoll als NNelmosmodul realisiert werden. Lsungsmglichkeiten wren eine einfache Skriptsprache (dazu ist eine TCL/TK Erweiterung in Arbeit, die mit NNelmos trainierte Netze laden kann, bzw. das Training selbst steuern kann) oder neue Module fr jedes Problem. Den letzteren Weg geht das Modul NeuroCar, das die Steuerung der Geschwindigkeit eines Autos mittels eines trainierten feedforward-Netzes simuliert. Das Auto soll zu einem vorausfahrenden Auto einen mglichst optimalen Abstand halten. Mglichst optimal heit bei uns: Der Abstand in Metern soll doppelt so gro sein wie die Geschwindigkeit in km/h. Die Geschwindigkeit des vorausfahrenden Autos wird durch Auswahl eines von vier Verfahren geregelt:

Funktion / Erluterung

Zufllig: 
Das vorausfahrende Auto ndert seine Geschwindigkeit von Zeiteinheit zu Zeiteinheit zufllig und zwar um maximal 8 km/h nach oben oder unten. (D.h. eine Vollbremsung von 100 auf 0 km/h bentigt 12 Zeiteinheiten.)

Sinus:
Die Geschwindigkeit entwickelt sich anhand einer Sinusfunktion. Mit dieser Beschleunigungsfunktion lassen sich Abweichungen vom Optimalverhalten sehr gut erkennen.

Linear: 
Das vorausfahrende Auto beschleunigt mehrfach von 0 auf 100 und bremst wieder ab. Dabei verndert sich die Beschleunigung: Beginnend mit einer nderung von 1 km/h pro Zeiteinheit wchst die Beschleunigung bis zu +/- 10 km/h pro Zeiteinheit. Bisher ist es uns nicht gelungen, ein Trainingsdatenset zu entwerfen, mit dem ein Netz so trainiert werden kann, da es hierbei nie zu einer Kollision kommt.

Realistisch: 
Auch hier ndert sich die Geschwindigkeit zufllig, jedoch sehr viel gltter als bei "zufllig", so da ein wesentlich "natrlicheres" Fahrverhalten simuliert wird.

Manuell:
Das vorausfahrende Auto wird mit der Tastatur gesteuert:  bzw.  fr schneller bzw. Langsamer und 0-9 fr 0 bis 90 km/h.

Tabelle 14: Beschleunigungsfunktionen

Zum Steuern des Neuro-Autos kann ein beliebiges Netz verwendet werden, da drei Eingabeneuronen und ein Augabeneuron besitzt. Die Anzahl der Neuronen im Hidden-Layer und Art und Gre des zum Training benutzten Trainingssets sind fr das Funktionieren des Neuro-Auto-Moduls unerheblich (fr sinnvolle Resultate hingegen selbstverstndlich nicht). Die Ein- und Ausgabeneuronen des Netzes haben folgende Funktion:
Alle Werte werden auf den Bereich zwischen 0 und 1 normiert, die Geschwindigkeiten liegen im Bereich zwischen 0 und 100 km/h, der Abstand zwischen 0 und 200 m.

2.6.2 Trainingsdaten

Das besondere am Neuro-Auto-Problem ist, da es nicht nur nicht mit allen Werten des Problems trainiert werden kann (selbst bei nur ganzzahligen Geschwindigkeiten und Abstnden wren das 100*100*200= 2.000.000 Trainingspaare), sondern ganz im Gegenteil bereits mit sehr wenigen Trainingspaaren sinnvolle Ergebnisse liefert. Das fest eingebaute Defaultnetz (trainiert mit dem SNNS) besteht aus nur 10 (!) relativ willkrlich von Hand ausgewhlten Beispielen. Das so trainierte Netz bewltigt die Aufgabe, das Neuro-Auto zu steuern recht gut, mit einem etwas zu groen Abstand im oberen Geschwindigkeitsbereich und einem zu langsamen Bremsverhalten bei Vollbremsung des Pace cars (lineare Beschleunigung). Die Datenfiles sind sehr einfach aufgebaut und knnen leicht von Hand verndert werden, als Beispiel mag die oben erwhnte Trainingsmustermenge (im NNelmos-Format) dienen:

Datafile:  	bptraining0 #
Examples:	10 
Inputs:	3 
Outputs:	1

1.0  0.8  0.25  0.0    # 100/ 80/ 50 --> +-0 
0.1  1.0  0.9   0.05   #  10/100/180 --> -8 
0.5  0.5  0.5   0.0    #  50/ 50/100 --> +-0 
1.0  1.0  1.0   0.0    # 100/100/200 --> +- 0 
1.0  0.1  0.5   0.9    # 100/ 10/100 --> +8 
0.5  0.25 0.5   0.7    # 100/ 50/100 --> +4 
0.25 0.25 0.375 0.4    #  50/ 50/ 75 --> -2 
0.35 0.45 0.2   0.05   #  70/ 90/ 40 --> -9 
0.25 0.25 0.9   1.0    #  50/ 50/180 --> +9 
0.0  0.3  0.5   0.0    #   0/ 30/100 --> -10 

Alle zehn Beispiele liegen hier in der Form "normierte Daten # original Daten" vor, wobei alles hinter einem "#" von NNelmos als Kommentar erkannt und ignoriert wird. Die Reihenfolge der Daten ist: Geschwindigkeit Pace car, Geschwindigkeit NeuroCar, Abstand, Geschwindigkeitsnderung (die auch auf den Bereich 0 bis 1 normiert wird, wobei Werte unter 0.5 zu Geschwindigkeitsreduktionen fhren).
NNelmos liegt mindestens ein weiteres Datenfile fr das NeuroCar-Problem bei (auto2.pat,...), die mehr oder wenige guten Trainingsmustermengen enthalten. Wir suchen weiterhin einen Satz von Trainingspaaren, der benutzt werden kann, ein besseres Netz zu trainieren.

2.6.3 Bedienung

Der Benutzer kann unter dem Menpunkt Datei/Vortrainiert das fest eingebaute Defaultauto whlen, oder mit Datei/Laden ein vorher trainiertes Netz laden. Das Training des Netzes mu mit dem NNelmos Backpropagation-Modul vorgenommen, das Netz von da aus gespeichert werden. Wird ein Netz geladen, das nicht 3 Eingabe- und 1 Ausgabeneuron hat, wird eine Fehlermeldung ausgegeben. Vier Parameter fr die Simulation knnen eingestellt werden, nmlich:

Parameter / Beschreibung

Geschwindigkeit Auto 1: 
Anfangsgeschwindigkeit des vorausfahrenden Autos. Wie bei den nachfolgenden beiden Parameter ist eine nderung des Standardwertes nur dann sinnvoll, wenn eine ganz bestimmte, kritische Situation getestet werden soll, denn das Verhalten der Autos unterscheidet sich dann nur in einer kurzen Anfangsphase.

Geschwindigkeit Neuro-Auto: 
Geschwindigkeit des Neuro-Autos, ebenfalls im Bereich von 0 bis 100 km/h,

Entfernung: 
Anfangsabstand der beiden Autos zwischen 0 und 200 m.

Beschleunigung: 
Eine von fnf Beschleunigungsfunktionen (zufllig, sinus, linear, realistisch, manuell), die in 2.4.1 beschrieben wurden.
Tabelle 15: Neuro-Auto Parameter

Auf dem Bildschirm erscheinen nun drei Autos: Auf der unteren Fahrbahn rechts das Pace car, links das Neuro-Auto, darber ein weiteres Auto, das nicht von einem Netz, sondern einer C-Funktion gesteuert wird (die genaue Herleitung der Funktion ist als Kommentar in der Datei auto.c enthalten). Die Simulation befindet sich anfangs im Einzelschrittmodus, durch Mausklicks auf die Fahrbahn kann eine einzelner Zeitschritt weitergeschaltet werden, mit Mode/Run kann in den kontinuierlichen Simulationsmodus umgeschaltet werden. Oberhalb der Fahrbahn erscheint eine kleine rote Markierung, die den optimalen Abstand (zweimal "Tacho") anzeigt. Kommt es zu einem Crash, schaltet das System in den Einzelschrittmodus, die Simulation kann durch Einzelschritte so lange fortgesetzt werden, bis die Crashsituation wieder behoben ist, oder durch Optionen/ndern (Einstellung neuer Parameter) neu gestartet werden.
ber der Fahrbahn werden 5 Graphen fortlaufend gezeichnet, oben ein grner und ein roter, den optimalen und den realen Abstand symbolisierend, unten ein roter, ein grner und ein schwarzer, die fr die Geschwindigkeiten von Neuro-Auto, Pace car und dem von der C-Funktion gesteuerten Auto stehen. Links und rechts von diesen Graphen befinden sich zwei rote Balken, die die jeweils aktuelle Geschwindigkeit von Neuro-Auto und Pace car anzeigen. In jedem dieser Balken befindet sich ein schwarzer Strich, der fr die Geschwindigkeit des jeweils anderen Autos steht.
Das Neuro-Auto-Beispiel zeigt, wie eine einfach zu formulierende Aufgabe (die auch - mit etwas grerem Aufwand - durch eine Funktion beschreibbar ist) durch sehr wenige intuitiv gefundene Beispiele gelst werden kann.

3 Kursorischer Durchgang

NNelmos ist kein Ersatz fr ein fundiertes Buch ber Neuronale Netze, eine kleine (unvollstndige und subjektiv kommentierte) Liste findet sich in der Literaturliste. Oft bleibt aber nach oder schon whrend der theoretischen Prsentation der Algorithmen das Verlangen nach Greifbarerem. Hier kann NNelmos einsetzen: Da zugunsten der bersichtlichkeit auf Komplexitt verzichtet wurde, knnen einfache Beispiele auch einfach nachvollzogen werden. So eignet sich NNelmos auch als Begleitung zu einer Kurzeinfhrung in das Thema Neuronale Netze, z.B. in der Schule. In diesem Kapitel wird eine unverbindliche Reihenfolge fr den Durchgang durch die NNelmos-Module entweder zum Selbststudium oder in einem Kurs unter Anleitung vorgeschlagen, und es finden sich Hinweise zu den wichtigsten mitgelieferten Trainingsdaten.

1.Das einzelne Neuron 
Die Elemente und Funktionen eines Neurons erklrt das Modul "Einzelnes Neuron", zunchst sollte geklrt werden, wie das Neuron seine Ausgabe berechnet (mit der Treppenfunktion), dann soll die Rolle der Gewichte erlutert werden.
Als Aufgabe sind die Gewichte so einzustellen, da ein binres Neuron das UND bzw. das ODER Problem lsen kann.
Nun knnen die anderen Typen und Aktivierungsfunktionen benutzt werden.

2.Was ein einzelnes Neuron kann
Das Modul "Kantenerkennung" demonstriert einfache Mechanismen der Bildverarbeitung, die auch als Anwendung eines einzelnen Neurons verstanden werden knnen.
Mit den einstellbaren Parametern soll herausgefunden werden, wie die drei Operatoren funktionieren. 
Aufgabe: Wie sieht ein Kantenerkennungsoperator aus, der 8 statt 4 Nachbarn bercksichtigt? Welche nderungen wrden sich dadurch ergeben?
Das Modul "Buchstabenerkennung" verdeutlicht den Hammingabstand als ein hnlichkeitsma fr Vektoren und stellt auerdem ein einfaches neuronales Netz dar: 26 Neuronen bekommen je 96 Eingaben und es wird das Neuron mit der hchsten Aktivierung gesucht (winner-takes-all).
Aufgaben: Welche Aktivierungsfunktion mu benutzt werden? Wie knnten mehr Informationen ausgentzt werden (Wahrscheinlichkeit fr Buchstabenerkennung)?

3.Der Perzeptronalgorithmus
Unter Hinweis auf die Wichtigkeit eines Lernalgorithmuses wird der Perzeptronalgorithmus erlutert. Unsicherheiten im Umgang mit Vektorrechnung kann eventuell das Modul "Vektor" beseitigen.
Das Modul "Perzeptronlernen" ist mit Beispieldaten fr AND, OR und XOR ausgestattet. Das XOR-Beispiel wird im nchsten Punkt genauer untersucht.

4.Was ein einzelnes Neuron nicht kann
Wiederum mit dem Modul "Einzelnes Neuron" soll das XOR-Problem gelst werden.
Da das nicht funktionieren kann, wird die Aufgabe auf das Modul "Netz" bertragen, und zwar entweder mit frei whlbaren Netzgren, oder mit einem 2-1-1 / 2-2-1 Netz.
Am zweidimensionalen Beispiel wird deutlich, da ein einzelnes Neuron den Eingaberaum nur linear trennen kann. Das XOR-Beispiel ist so nicht trennbar. An dieser Stelle kann auf die Perzeptronvisualisierung zurckgegriffen werden (xor.pat).

5.Der Backpropagationalgorithmus
Aus einem Textbuch (z.B. [1] oder [2]) kann eine mathematische/theoretische Erluterung des Backpropagationalgorithmus entnommen werden.
Zur Veranschaulichung dient das Modul "Backpropagation" mit dem Untermodul "Ausgabegraph". Mit verschiedenen Trainingsmusterdateien knnen unterschiedliche Aspekte von Backprop-Netzen beleuchtet werden: 
ENCODER.PAT 	Ein 4-X-4 Netz soll die Eingabe genau reproduzieren
			2 Hidden-Neuronen reichen dazu aus. (Auch 1?)
ONEPIX.PAT	Positive Beispiele: Genau eine Eingabe = 1
			Negative Beispiele: Alle anderen
ONEPIX2.PAT	Beispiele, die in ONEPIX.PAT nicht enthalten sind, geeignet
			zum Testen der Generalisierungsfhigkeit des trainierten
			Netzes.
COUNT.PAT		Ein binrer Zhler: 4 Eingabe werden binr kodiert
MEX.PAT 		Daten, die besonders zur Anzeige als Ausgabegraph
WAVE.PAT		geeignet sind.

6.Anwendung Backpropagation
Aufgabe: 15 Beispieldaten fr das Neuro-Auto Problem finden, die Daten haben die Form: Eigene Geschwindigkeit (0-100 km/h) - Geschwindigkeit vorausfahrendes Auto (0-100 km/h) - Abstand (0-200 m) -> Geschwindigkeitsnderung (-9 .. +9 km/h)
Diese Daten mssen in den Bereich [0;1] normiert werden
Training der selbsterstellten Daten mit dem Modul "Backpropagationlernen"
Das so gelernte Netz kann mit dem Modul "Neuro Auto" getestet und mit den vortrainierten Netzen verglichen werden.
Aufgabe: die Beispieldaten verbessern, nachdem mit Tests die "Schwachpunkte" gefunden wurden.

7.Kohonens selbstorganisierende Karten
Als guter Einstieg kann die Tierklassifikation im Modul "SOM - mehrdimensional" dienen; die Datei animal.kpt enthlt die erforderlichen Daten. Eventuell sollte vorher versucht werden, aufgrund der Tierdaten von Hand eine zweidimensionale Karte zu erstellen.
Die Darstellung des Algorithmus kann wieder einem beliebigen Textbuch entnommen werden.
Den Einflu der Parameter auf das Verhalten des Netzes kann am besten mit dem Modul "SOM - 2dimensional" beobachtet werden. Ein Eta-Wert von 0.2 z.B. fhrt hufig dazu, da ein 4-Nachbarn-Netz sich "verknotet", d.h. nicht frei entfaltet. 
Als hbsche Anwendung bietet sich das Travelling Salesman Problem an.

4 Installieren und Starten von NNelmos

NNelmos wurde mit einer Konfigurationsroutine ausgestattet, die in den meisten Fllen problemlos arbeitet und es berflssig macht, systemspezifische Parameter von Hand einzustellen. Kapitel 4.1 beschreibt die Standardinstallation, die als erstes ausprobiert werden sollte. Kommt es zu Problemen, beschreibt Kapitel 4.2 einige typische Probleme und Lsungsmglichkeiten.

4.1 Standardinstallation

NNelmos steht in der Regel als selbstentpackende Archivdatei zur Verfgung, aus dem Namen dieser Datei lt sich auch die Versionsnummer ablesen: nnlmos112.exe enthlt NNelmos, Version 1.12.
Nach Anlegen eines neuen Verzeichnisses und Kopieren der NNelmos Archivdatei in dieses Verzeichnis mu diese Datei ausgefhrt werden. NNelmos entpackt sich selbst und legt einige Unterverzeichnisse an. In diesen Verzeichnissen befinden sich Beispieldaten und vom Programm bentigte Dateien (data) und eine ASCII-Version dieser Dokumentation (doc).
4.2 Typische Probleme
Fehlermeldung: no dpmi: NNelmos (und alle mit djgpp 2.x compilierten Programme) bentigen einen dpmi-Treiber, das kann entweder Windows sein (wenn NNelmos in einer DOS-Box gestartet wird), oder ein kostenloser Treiber wie cwsdpmi (erhltlich ber die NNelmos-Homepage, jeden FTP-Server, der das djgpp-Paket spiegelt, oder z.B. http://www.leo.org)
Es ist kein Mauszeiger zu sehen: Es mu ein Standardmaustreiber (z.B. mouse.com) geladen sein. In der Regel liegt jeder Maus ein solcher Treiber bei.
Das Programm strzt an Stelle xy ab: Das Problem ist wahrscheinlich ein Programmfehler, allerdings werden auch Fehler in Eingabe- und Netzdateien schlecht bis gar nicht toleriert. Lsung: Email an uns und wir werden uns des Problems annehmen (wahrscheinlich).
Beim Starten erscheint eine Fehlermeldung wie: Couldn't find data directory. NNelmos geht davon aus, da es in dem Verzeichnis, von dem aus es gestartet wurde ein Unterverzeichnis data gibt. In unserer NNelmosdistribution ist dieses Verzeichnis immer vorhanden und enthlt die Beispieldaten. Wenn sie ein NNelmos ohne dieses Verzeichnis haben, teilen sie uns bitte mit, woher sie es erhalten haben und erzeugen sie vorlufig ein leeres Verzeichnis data.
Unter Windows 95 / OS/2 / dosemu luft NNelmos nicht korrekt: Das kann sein, denn wir haben NNelmos nur unter DOS getestet. Eine kurze Mitteilung ber das Problem wrde uns freuen.
Die Schrift erscheint immer gleich/gar nicht: Ohne die Datei gui.dat knnen keine korrekten Fonts benutzt werden. 

5 Literatur

1.R. Rojas: Theorie der Neuronalen Netze
	1. Aufl.; Springer-Verlag Berlin Heidelberg New York; 1993
	Preis: 48,- DM
Umfassende Darstellung aller klassischen NN-Algorithmen inkl. vieler schner Beweise. Wunderbar zum Nachschlagen, aber auch zum Lesen und Lernen geeignet. Etwas kurz kommen selbstorganisierende Modelle, das Kapitel ber genetische Algorithmen ist sehr knapp geraten.

2.A. Zell: Simulation Neuronaler Netze
	1. Aufl.; Addison-Wesley, 1994
	Preis: 59,90 DM
Noch umfassender als umfassend eilt der Leiter der Gruppe, die den Stuttgarter Neuronale Simulator entwickelt haben und weiterhin pflegen, durch die Welt der Neuronalen Netze. Kaum ein Ansatz fehlt, jedoch ist hufig kaum mehr als ein Ansatz vorhanden: Algorithmen sucht man oft vergebens. Sehr schn sind die Kapitel ber Visualisierungstechniken und Anwendungen.

3.T. Kohonen: Self-organizing maps
	1. Aufl.; Springer-Verlag Berlin Heidelberg New York, 1995
	Preis: $49,95 = ca. 98,- DM 
Direkt vom Erfinder findet sich hier alles ber selbstorganisierende Karten, Vektorquantifikation, aber auch nicht-neuronale hnlichkeitsalgorithmen. Eine umfangreiche mathematische Einfhrung in das Thema und eine riesige Literaturliste (allerdings ohne Titel) machen das Buch darber hinaus empfehlenswert.

4.E.D. Schmitter: Neuronale Netze
	1. Aufl.; Hofacker, Holzkirchen, 1991
Ein kleines Bchlein, das vom Ansatz her gar nicht so schlecht ist, aber leider sehr oberflchlich bleibt. Grter Pluspunkt: Alle Algorithmen sind als C-Programme abgedruckt.
