Online-Hilfe
SImulator Neuronaler Netze
 
         
     
 
Online HelpOnline-Hilfe
 

Übersicht/Allgemeines

Im Folgenden werden die verschiedenen Anwendungen, sortiert nach der Art der verwendeten Netztypen, detailliert beschrieben. Dies stellt hauptsächlich eine Führung durch das System dar, um es dem Benutzer zu erleichtern, die Oberfläche schnell und einfach bedienen zu können.

Bei der Angabe von Parametern oder Einstellungen werden die Eigenschaften mit einem Stern ('*') gekennzeichnet, welche unbedingt einzuhalten sind. Bei der Eingabe numerischer Werte ist darauf zu achten, dass das englische Zahlenformat verwendet wird. Das heisst anstelle des Kommas ist ein Punkt zu verwenden und via versa.

Anwendungen:

Das XOR-Problem

Eine grundlegende Erkenntnis in der theoretische Forschung mit neuronalen Netzen war es, dass mit einem einzelnen Perzeptron solche Funktionen berechnet werdenn können, bei welchen eine Zweiteilung des Eingaberaum durch eine Gerade ausreichend ist um die Menge der Werte zu trennen bei denen das Perzeptron aktiv und bei denen das es inaktiv ist [Roj96].

Die Untersuchung an boolschen Funktionen zeigte, dass eine nicht linear Trennbare Funktion wie die XOR-Funktion nicht durch ein einschichtiges Perzeptron-Netz gelöst werden kann. Um dieses Problem zu veranschaulichen kann man die Fehlerfläche eines solchen Netzes erstellen und sehen, dass bei nicht linear trennbaren Funktionen der Fehler des Netzes nie Null ist.

In SINN 2.1 kann man diese Fehlerfläche wie folgt erstellen:

  1. Netz erstellen
    über das Menü [Netz] [Netz erstellen] wird der Dialog ,,Netz erstellen'' aufgerufen. Im Folgenden die Parameter welche ein einschichtiges Perzeptron-Netz erstellen:
    Netztyp*: Vorwärtsgerichtet
    Ausgangsfunktion*: Schwellwert
    Schwellwert*: 0.5
    Binarisierungswerte*: [ 0 : 1 ]
    Anzahl Eingangsneuronen*: 2
    Anzahl Ausgangsneuronen*: 1
    Anzahl Zwischenschichtneuronen*: 0
    Anzahl Zwischenschichten*: 0
    Initialwert der Gewichte: z

    oder Netz laden
    über den Menüpunkt [Netz] [Netz laden] kann das mit den oben genannten Parametern erstelltes Netz ,,xor_perzeptron.ntz'' geladen werden.
  2. Muster laden
    Ein Mustersatz, welcher die XOR-Funktion repräsentiert ist in der Datei ,,xor.mst'' gespeichert. Sie kann über den Menüpunkt [Netz] [Musterdatei laden] geladen werden
  3. Fehlerfläche erstellen
    Die Erstellung der Fehlerfläche wird über den Menüpunkt [Ansicht] [Fehlerfläche] initialisiert. Im nun folgenden Dialog wird man aufgefordert das Intervall der Eingabewerte und die Schrittweite der Diskretisierung einzugeben:
    Definitionsbereich der Eingabe: D = [ -2 : 2 ]
    Schrittweite der Diskretisierung: 0.1
Fehlerfläche des XOR-Problems.
Bild 1: Fehlerfläche des XOR-Problems.

Eine solche Fehlerfläche kann für jedes Netz ohne Zwischenschichten und mit einem Ausgabe- sowie zwei Eingabeneuronen erstellt werden. Hierzu muss das entsprechende Netz erstellt und das dazugehörige Muster geladen werden.

Vorwärtsgekoppelte-Netze

Die hier aufgeführten Anwendungen bauen alle auf der Benutzung von Vorwärtsgekoppelte-Netzen auf. Diese Anwendungen sowie deren Grundlage wurden bereits in SINN 2 erstellt und in SINN 2.1 nur entsprechend angepasst und verbessert.

OCR-grob

Diese Anwendung dient zur Schrifterkennung anhand der Klassifizierung von Eingabedaten. Hierzu wird ein vorwärtsgerichtetes Netz mit 30 Eingabeneuronen und 5 Neuronen in der Ausgabeschicht benötigt. Die Buchstaben werden in ein Raster von 5 mal 6 Feldern aufgeteilt, welche dann als Eingabe (0 für ,,Feld ist nicht belegt'' und 1 für ,,Feld ist belegt'') in das künstliche neuronale Netz gegeben werden. Die Ausgabe des Netzes ist die binär codierte Nummer des erkannten Buchstabens im Alphabet.

Um die Anwendung zu benutzen, geht man am besten wie folgt vor:

  1. Netz erstellen
    über das Menü [Netz] [Netz erstellen] wird der Dialog ,,Netz erstellen'' aufgerufen. Im Folgenden werden die Parameter aufgeführt, welche für diese Anwendung notwendig bzw. am besten geeignet sind:
    Netztyp: Vorwärtsgerichtet m. Abkürzungen
    Ausgangsfunktion: Logistisch
    Anzahl Eingangsneuronen*: 30
    Anzahl Ausgangsneuronen*: 5
    Anzahl Zwischenschichtneuronen: 30
    Anzahl Zwischenschichten: 1
    Initialwert der Gewichte: z

    oder Netz laden
    Der Menüpunkt [Netz] [Netz laden] öffnet den Dateidialog. Das mitgelieferte Netz ,,ocr_grob_ungelernt.ntz'' wurde mit den unter ,,Netz erstellen'' beschriebenen Parametern erstellt und ist untrainiert. Ein trainiertes Netz ist ,,ocr_grob_gelernt20000.ntz''. Wird dieses geladen, so entfallen die Punkte ,,Muster laden'' und ,,Netz trainieren''.
  2. Muster laden
    Die Musterdatei ,,ocr_grob.mst'' wird ebenfalls über den Dateidialog, welcher durch das Menü [Netz] [Musterdatei laden] geöffnet wird, geladen. Sie enthält die Buchstaben A-Z, welche für das Verwenden mit dieser Anwendung codiert sind. Das heisst, ein Muster besteht aus 30 Eingabewerten (0, 1) und 5 Ausgabewerten (0 ,1), welche den jeweiligen Buchstaben repräsentieren.
  3. Netz trainieren
    Nun muss das Netz mit dem geladenen Muster trainiert werden. Der Menüpunkt hierfür ist [Netz] [Netz trainieren] und die günstigen Parameter für das Trainieren sind:
    Lernfaktor: 0.5
    Gesamtschritte: 10000
    Visualisierungsschritte: 10000
    Lernfunktion*: Backpropagation
    Muster zufällig wählen: nicht selektieren
    Fehler berechnen: Dies wählen, wenn der Fehler des Netzes während des Lernvorgangs berechnet werden soll und so eine Darstellung des Fehlers des Lernvorgangs als Kurve ([Ansicht] [Fehlerfunktion Grafisch]) oder Tabelle ([Ansicht] [Fehlerfunktion Tabellarisch]) dargestellt werden kann.

    Die Dauer des Lernens beträgt für 10.000 Schritte ungefähr 2 Minuten 30 Sekunden, für 20.000 Lernschritte rund 5 Minuten 30 Sekunden mit und ohne Fehlerberechnung. Die Fehlerberechnung nimmt keine extra Zeit in Anspruch, da sie im Lernverfahren enthalten ist.
  4. Anwendung starten
    Nach der mitgelieferten Konfigurationsdatei ,,menu.mnu'' wird die Anwendung über das Menü [Anwendung] [Vorwärtsgekoppelte-Netze] [OCR-grob] gestartet.
Anwendungsfenster ,,OCR-grob''
Bild 2: Anwendungsfenster ,,OCR-grob''

über die Musterauswahl-Box auf der rechten Seite werden einzelne Buchstaben ausgewählt und in die Eingabe geladen. Mit Hilfe des Knopfes ,,Verrauschen'' wird die Eingabe um den im darüber liegenden Feld angegebenen Wert zufällig verändert. Durch Anklicken des ,,Erkennen''-Knopfes wird die Eingabe dem künstlichen neuronalen Netz übergeben und der Benutzungsvorgang gestartet. Das Ergebnis der Berechnung erscheint auf der rechten Seite neben dem Knopf ,,Erkennen'' als Buchstabe (oder Fragezeichen bei Nichterkennung) und darüber liegend als Binärcode.

OCR-fein

Die Anwendung ,,OCR-fein'' versucht, wie auch ,,OCR-grob'', mit Hilfe von Klassifizierung Buchstaben zu erkennen. Die Oberfläche dieser Anwendung ist analog zu ,,OCR-grob'' aufgebaut, nur werdenn hier die Buchstaben in einem Raster von 10x12 Feldern dargestellt. So benötigt diese feinere Version also im Unterschied zu der groben Version 120 Neuronen in der Eingabeschicht.

Zur schnelleren Übersicht im Folgenden der komplette Ablauf zur Benutzung dieser Anwendung:

  1. Netz erstellen
    über das Menü [Netz] [Netz erstellen] wird der Dialog ,,Netz erstellen'' aufgerufen. Im Folgenden werden die Parameter aufgeführt, welche für diese Anwendung notwendig bzw. am besten geeignet sind:
    Netztyp: Vorwärtsgerichtet m. Abkürzungen
    Ausgangsfunktion: Logistisch
    Anzahl Eingangsneuronen*: 120
    Anzahl Ausgangsneuronen*: 5
    Anzahl Zwischenschichtneuronen: 30
    Anzahl Zwischenschichten: 1
    Initialwert der Gewichte: z

    oder Netz laden
    Der Menüpunkt [Netz] [Netz laden] öffnet den Dateidialog. Das mitgelieferte Netz ,,ocr_grob_ungelernt.ntz'' wurde mit den unter ,,Netz erstellen'' beschriebenen Parametern erstellt und ist untrainiert. Ein trainiertes Netz ist ,,ocr_grob_gelernt20000.ntz''. Wird dieses geladen, so entfallen die Punkte ,,Muster laden'' und ,,Netz trainieren''.
  2. Muster laden
    über den Dateidialog, welcher durch das Menü [Netz] [Musterdatei laden] geöffnet wird, wird die Musterdatei ,,ocr_fein.mst'' geladen.
  3. Netz trainieren
    Nun muss das Netz mit dem geladenen Muster trainiert werden. Der Menüpunkt hierfür ist [Netz] [Netz trainieren] und die günstigen Parameter für das Trainieren sind:
    Lernfaktor: 0.5
    Gesamtschritte: 10000
    Visualisierungsschritte: 10000
    Lernfunktion*: Backpropagation
    Muster zufällig wählen: nicht selektieren
    Fehler berechnen: Dies wählen, wenn der Fehler des Netzes während des Lernvorgangs berechnet werden soll und so eine Darstellung des Fehlers des Lernvorgangs als Kurve ([Ansicht] [Fehlerfunktion Grafisch]) oder Tabelle ([Ansicht] [Fehlerfunktion Tabellarisch]) dargestellt werden kann.

    Die Dauer des Lernens beträgt für 10.000 Schritte ungefähr 12 Minuten für 20.000 Lernschritte rund 25 Minuten mit und ohne Fehlerberechnung. Die Fehlerberechnung nimmt keine extra Zeit in Anspruch, da sie im Lernverfahren enthalten ist.
  4. Anwendung starten
    Nach der mitgelieferten Konfigurationsdatei ,,menu.mnu'' wird die Anwendung über das Menü [Anwendung] [Vorwärtsgekoppelte-Netze] [OCR-fein] gestartet.
Anwendungsfenster ,,OCR-fein''
Bild 3: Anwendungsfenster ,,OCR-fein''

über die Musterauswahl-Box auf der rechten Seite werden einzelne Buchstaben ausgewählt und in die Eingabe geladen. Mit Hilfe des Knopfes ,,Verrauschen'' wird die Eingabe um den im darüber liegenden Feld angegebenen Wert zufällig verändert. Durch Anklicken des ,,Erkennen''-Knopfes wird die Eingabe dem künstlichen neuronalen Netz übergeben und der Benutzungsvorgang gestartet. Das Ergebnis der Berechnung erscheint auf der rechten Seite neben dem Knopf ,,Erkennen'' als Buchstabe (oder Fragezeichen bei Nichterkennung) und als Binärcode.

Roboterarm

,,Roboterarm'' ist eine Anwendung welche versucht, den realen Einsatz eines Backpropagation-Netzes zur Steuerung eines Roboterarmes darzustellen.

Als Eingabe in das Netz dient die gewünschte absolute Position des Arms. Als Ausgabe werden die Winkel der zwei Gelenke des Roboterarmes geliefert. Um den Wertebereich der Ausgabe zu vergrössern, werden pro Winkel zwei Werte berechnet. Der erste Wert stellt den absoluten Betrag des Winkels dar und der zweite bestimmt das Vorzeichen (negativ bei kleiner 0; positiv sonst).

  1. Netz erstellen
    Netztyp: Vorwärtsgerichtet m. Abkürzungen
    Ausgangsfunktion*: Logistisch
    Anzahl Eingangsneuronen*: 2
    Anzahl Ausgangsneuronen*: 4
    Anzahl Zwischenschichtneuronen: 30
    Anzahl Zwischenschichten: 1
    Initialwert der Gewichte: z

    oder Netz laden
    Das mitgelieferte Netz ,,robo_ungelernt.ntz'', welches mit den unter ,,Netz erstellen'' beschriebenen Parametern erstellt wurde, kann über den Menüpunkt [Netz] [Netz laden] geladen werden. Ein trainiertes Netz ist ,,robo_10000_gelernt.ntz''. Wird dieses geladen, so entfallen die Punkte ,,Muster laden'' und ,,Netz trainieren''.
  2. Muster laden
    Ein passendes Muster ist ,,robomuster.mst''. Es wird über [Netz] [Musterdatei laden] geladen. Es enthält 27 Muster welche über de gesamten Eingaberaum verteilt sind.
  3. Netz trainieren
    Lernfaktor: 1
    Gesamtschritte: 10000
    Visualisierungsschritte: 10000
    Lernfunktion*: Backpropagation
    Muster zufällig wählen: nicht wählen, da sonst die Interferenzen zu gross werden und der Lernvorgang oszilliert.
    Fehler berechnen: dies wählen, wenn der Fehler des Netzes während des Lernvorgangs berechnet werden soll Die Dauer des Lernens beträgt bei 10.000 Lernschritten etwa 10 Sekunden mit und ohne Fehlerberechnung. Die Fehlerberechnung nimmt keine extra Zeit in Anspruch, da sie im Lernverfahren enthalten ist.
  4. Anwendung starten
    Die Anwendung wird über das Menü [Anwendung] [Vorwärtsgekoppelte-Netze] [Roboterarm] gestartet.
Anwendungsfenster ,,Roboterarm''
Bild 4: Anwendungsfenster ,,Roboterarm''

Beim Anklicken eines Punktes innerhalb des Aktionsradiuses des Roboterarmes wird versucht, mit Hilfe des künstlichen neuronalen Netzes die Gelenke so einzustellen, dass der angeklickte Punkt erreicht wird. In einer Leiste unter dem dargestellten Roboterarm wird zusätzlich der die Klick-Position, eingestellte Winkel, und der absolute Fehler (Abweichung eingestellter Punkt - Klick-Position) numerisch angezeigt.

Hopfield-Netze

Die wohl hauptsächliche Anwendung von Hopfield-Netzen liegt in der Bilderkennung, in der sie auch in real existierenden Systemen eingesetzt werden. Aber auch Optimierungsprobleme können mit Hopfield-Netzen gelöst werden. Stellvertretend für die Optimierungsprobleme soll hier der Ansatz zur Lösung des NP-Vollständigen ,,Traveling-Salesman''-Problems nach J. Hopfield und D. Tank aufgezeigt werden.

Bilderkennung-grob

Hier wird, im Vergleich zur Schrifterkennung mit Backpropagation-Netzen und der Anwendung ,,OCR-grob'', die Schrifterkennung mit Hilfe von Hopfield-Netzen betrachtet.

Bei der Bilderkennung mit Hopfield-Netzen werden die Buchstaben nicht im Trainingsprozess klassifiziert. Da Hopfield-Netze sogenannte Autoassoziativ-Speicher sind, wird nach der Berechnung der Eingabe ein vollständiges Muster ausgegeben, welches im Idealfall das gesucht Bild ist.

Diese Anwendung benötigt ein Hopfield-Netz mit 30 Neuronen.

  1. Netz erstellen
    Netztyp*: Hopfield
    Ausgangsfunktion*: Vorzeichenfunktion
    Anzahl Neuronen*: 30
    Initialwert der Gewichte: 0
    oder Netz laden
    Ein geeignetes ungelerntes Netz ist ,,Netz_30_ungelernt.ntz'', welches über den Menüpunkt [Netz] [Netz laden] geladen werden kann. Ein bereits gelerntes Netz ist ,,Netz_30_A-C_gelernt.ntz'' bzw. ,,Netz_30_A-Z_gelernt.ntz''.
  2. Musterdatei laden
    Die Dateien ,,A-C_30_neuronen.mst'' und ,,A-Z_30_neuronen.mst'' enthalten die jeweiligen Buchstaben. Ein Muster dieser Mustersätze besteht aus 30 Eingabewerten {-1, 1} welche im Raster dargestellt den jeweiligen Buchstaben ergeben.
  3. Netz trainieren
    Für das Trainieren des Netzes über den ,,Trainieren''-Dialog, welcher über den Menüpunkt [Netz] [Netz trainieren] aufgerufen wird, eignen sich folgende Parameter:
    Lernfaktor: 1
    Lernfunktion: Für einen Mustersatz mit nur drei Mustern ist der Hebb-Algorithmus ausreichend. Für einen Mustersatz mit mehr als drei Mustern ist ein besserer Lernalgorithmus nötig (wie Krauth-Mezard).
    Fehler berechnen: dies wählen, wenn der Fehler des Netzes während des Lernvorgangs berechnet werden soll
    Der Lernvorgang mit dem Krauth-Mezard Algorithmus benötigt 13 Minuten mit Fehlerberechnung für 26 Muster. Ohne Fehlerberechnung werden rund 25 Sekunden benötigt.
  4. Anwendung starten Die Anwendung ist unter [Anwendungen] [Hopfield-Netze] [Bilderkennung-grob] zu finden. Die Oberfläche ähnelt sehr der Oberfläche von ,,OCR-grob''. Dies bietet eine gute Möglichkeit, die Mustererkennung mit Hopfield-Netzen mit der Mustererkennung mit Vorwärtsgekoppelte-Netzen zu vergleichen.
Anwendungsfenster ,,Bilderkennung-grob''
Bild 5: Anwendungsfenster ,,Bilderkennung-grob''

Zunächst wird ein Muster über die Musterauswahl-Box ausgewählt und in das Eingabefeld geladen. Dann kann man über den Knopf ,,Verrauschen'' die Eingabe um den Wert verrauschen, der im Eingabefeld über dem ,,Verrauschen''-Knopf eingetragen ist. Das Ergebnis erscheint nach dem Betätigen des ,,Erkennen''-Knopfes im Ausgaberaster auf der rechten Seite.

Bilderkennung-fein

Auch diese Anwendung versucht, trainierte Muster mit Hilfe von Hopfield-Netzen wiederzuerkennen. Für diese Anwendung wird ein Hopfield-Netz mit einer Grösse von 225 Neuronen benötigt. Die Muster werden in einem 15x15 Raster dargestellt.

Die Vorgehensweise für diese Anwendung im Folgenden:

  1. Netz erstellen
    Netztyp*: Hopfield
    Ausgangsfunktion*: Vorzeichenfunktion
    Anzahl Neuronen*: 225
    Initialwert der Gewichte: 0

    Netz laden
    Ein mit den oben genannten Parametern erstelltes ungelerntes Netz ist ,,Hopfield_225_ungelernt.ntz''. Ein gelerntes Netz ist ,,Hopfield_225_A-Z_gelernt.ntz''.
  2. Muster laden
    Die Dateien ,,A-C_225_neuronen.mst'' und ,,A-Z_225_neuronen.mst'' enthalten die jeweiligen Buchstaben. Ein Muster dieser Mustersätze besteht aus 225 Eingabewerten {-1, 1} welche im Raster dargestellt den jeweiligen Buchstaben ergeben. Bei dieser Anwendung ist es zwingend notwendig ein passendes Muster zu laden. Dieses Muster wird nicht nur zum Trainieren des Netzes benötigt, sondern stellt auch die Auswahl der Muster in der Anwendung dar.
  3. Netz trainieren
  4. Lernfaktor: 1
    Lernfunktion: Bei 225 Neuronen sollten laut der Formel zur Berechnung der Auslastung eines Netzes bei Verwendung der Hebb-Regel: Anzahl Muster / Anzahl Neuronen = 0,15 rund 33 Muster speicherbar sein und somit durch die einfache Hebb-Regel trainierbar. Da die Muster aber stark korelliert sind, funktioniert dies nicht. Somit ist der Krauth-Mezard Lernalgorithmus vorzuziehen.
    Fehler berechnen: Bei diesem Netz ist es nicht zu empfehlen neben dem Trainieren auch noch den Fehler berechnen zu lassen, da dieses sehr viel mehr Zeit in Anspruch nimmt.
  5. Anwendung starten
Anwendungsfenster ,,Bilderkennung-fein''
Bild 6: Anwendungsfenster ,,Bilderkennung-fein''

Im Gegensatz zu den anderen Mustererkennungs-Anwendungen werden die hier auswählbaren Muster durch den geladenen Mustersatz bestimmt. Aus diesem Grund ist es notwendig, vor dem Starten der Anwendung eine Musterdatei zu laden. Die Bedienung erfolgt analog zu ,,Bilderkennung-grob''.

Kohonen-Netze

Kohonen-Netze werden gern zur autonomen Steuerung eingesetzt, da sie die Eigenschaft besitzen, ihre Neuronen über den gesamten Eingaberaum nachbarschaftlich zu verteilen.

Die folgenden Anwendungen sollen einerseits die Eigenschaft der Kartierung des Eingaberaums darstellen, aber auch mit dem klassischen Beispiel des Stab-Balancierers eine echte Anwendung simulieren.

Keine der folgenden Anwendungen muss extra trainiert werden, da das Training des Netzes jeweils in der Lösung des Problems enthalte beziehungsweise die Lösung des Problems selbst ist.

SOM (Verteilung)

Diese Anwendung demonstriert die Verteilung der Neuronen der Self Organizing Map (SOM) über den zweidimensionalen Eingaberaum. Als Eingabe dient ein zufällig ausgewählter Punkt auf der Zeichenfläche des Fensters.

  1. Netz erstellen
    Netztyp*: Kohonen
    Dimension des Eingabevektors*: 2
    Anzahl der Ausgabeneuronen: 0
    Anzahl Neuronen: Beliebig - eine Anzahl von rund 40 Neuronen erlaubt ein schnelles und flüssiges Abarbeiten des Algorithmus.
    Anzahl Zwischenschichten:
    1 - für eine lineare Anordnung der Neuronen
    > 1 - für eine planare Anordnung der Neuronen
    Initialwert der Gewichte: 300

    Netz laden
    Die Netz-Datei ,,som_2d_40_linear.ntz'' enthält ein Kohonen-Netz mit 40 Neuronen, welche linear angeordnet sind. Die Datei ,,som_2d_36_planar.ntz'' enthält ein Kohonen-Netz mit 36 Neuronen, welche planar in einer 6x6 Matrix angeordnet sind.
  2. Anwendung starten
Anwendungsfenster ,,SOM(Verteilung)''
Bild 7: Anwendungsfenster ,,SOM(Verteilung)''

Auf der linken Seite der Anwendung, welche über [Anwendung][Kohonen-Netze][SOM(Verteilung)] gestartet wird, sind die Kontrollelemente, mit welchen man sowohl die Parameter des Lernalgorithmus ändern, als auch Einfluss auf die Darstellungsumgebung nehmen kann. So kann über die Auswahlbox ,,Grenzen'' bestimmt werden, innerhalb welcher Grenzen sich das Netz ausbreiten soll. Die Schaltfläche ,,Netz initialisieren'' verteilt die einzelnen Neuronen der SOM zufällig um den Punkt (300, 300) mit einem Radius von eins. ,,Anzahl Schritte'' bestimmt, nach wievielen Lernschritten der Algorithmus automatisch abbrechen soll (durch Betätigen des ,,Stop''-Knopfes kann der Vorgang manuell unterbrochen werden).

SOM (3D)

Das Aussehen des Fensters der Anwendung ,,SOM(3D)'' ist ähnlich dem der Anwendung ,,SOM(Verteilung)''. Der Unterschied besteht darin, dass hier das Netz im dreidimensionalen Raum verteilt wird.

Dementsprechend muss auch das Kohonen-Netz erstellt werden:

  1. Netz erstellen
    Netztyp*: Kohonen
    Dimension des Eingabevektors*: 3
    Anzahl der Ausgabeneuronen: 0
    Anzahl Neuronen: Beliebig - die Anzahl sollte nicht zu hoch sein, da Java3D grosse Speicherleaks hat. Eine Anzahl von 20 Neuronen ist vertretbar.
    Anzahl Zwischenschichten:
    1 - für eine lineare Anordnung der Neuronen
    > 1 - für eine planare Anordnung der Neuronen
    Initialwert der Gewichte: z

    Netz laden
    Die Netz-Datei ,,som_3d_20_linear.ntz'' enthält ein Kohonen-Netz mit 20 Neuronen, welche linear angeordnet sind. Die Datei ,,som_3d_16_planar.ntz'' enthält ein Kohonen-Netz mit 16 Neuronen, welche planar in einer 4x4 Matrix angeordnet sind.
  2. Anwendung starten
Anwendungsfenster ,,SOM(3D)''
Bild 8: Anwendungsfenster ,,SOM(3D)''

über [Anwendung][Kohonen-Netze][SOM(3D)] wird die Anwendung gestartet. Die Bedienung ist analog zu ,,SOM(Verteilung)'', jedoch wird das ,verteilte Netz' im dreidimensionalen Raum dargestellt. Das Netz, welches von einem transparenten Quader umschlossen wird und so die Grenzen der Ausbreitung darstellt, kann mit Hilfe der Maus und dank Java3D gedreht und verschoben werden. Zum Drehen hält man die linke, zum Verschieben die rechte und zum Focusieren die mittlere Maustaste gedrückt.

Durch die bereits erwähnten Speicherleaks von Java3D kann bei grosser Anzahl von Neuronen beziehungsweise hoher Anzahl von Trainingsschritten ein Speicherüberlauf auftreten. Bei einem solchen Speicherüberlauf hilft leider nur das Neustarten von SINN 2.1

SOM (Handlungsreisender)

Dies ist ein anderer Ansatz zur Lösung des Traveling Salesman Problems. Hierbei wird versucht, ein SOM so an die Städte anzunähern, dass der kürzeste Weg zwischen ihnen hergestellt wird. Dazu ist laut Lösungsansatz die Initialisierung des Netzes als kreisförmige Anordnung nötig.

Die folgende Anleitung ist eine Möglichkeit zum Benutzen der Anwendung:

  1. Netz erstellen
    Netztyp*: Kohonen
    Dimension des Eingabevektors*: 2
    Anzahl der Ausgabeneuronen: 0
    Anzahl Neuronen: Beliebig - sollte aber gleich bzw. grösser sein als die Anzahl der Städte.
    Anzahl Zwischenschichten: 1
    Initialwert der Gewichte: 300

    Netz laden
    Die Netz-Datei ,,som_TSP_20_linear.ntz'' enthält ein Kohonen-Netz mit 20 Neuronen.
  2. Anwendung starten
Anwendungsfenster ,,SOM(Handlungsreisender)''
Bild 9: Anwendungsfenster ,,SOM(Handlungsreisender)''

Die Bedienung sowie das Aussehen der Anwendung ist gleich zu ,,SOM(Verteilung)'', einzig das Anlegen und Verteilen der Städte und die Schaltfläche ,,Netz initialisieren'' kommen hinzu.

Mit dem Knopf ,,Netz initialisieren'' kann man das Netz kreisförmig um den Punkt (300, 300) anordnen. Nach betätigen des ,,Start''-Knopfes beginnt das Netz sich in Richtung der Städte auszubreiten.

Je mehr Neuronen das Netz hat um so schneller ist jede Stadt mit einem Neuron belegt. Jedoch dauert es länger bis alle Neuronen sich einer Stadt genähert haben. Ist die Anzahl der Neuronen nahezu gleich der Anzahl der Städte kommt es schneller vor, dass nicht jede Stadt in der Tour enthalten ist, da einzelne Neuronen durch ihre Nachbarn von der ihnen naheliegenden Stadt ,,weggezogen'' werden.

Stab-Balancierer

Eine klassische Steuerungsaufgabe ist das ,,Inverted Pendulum Problem'' oder auch der Stab-Balancierer. Hierbei wird ein Stab auf einem Wagen mit einem Gelenk befestigt, welches das Kippen des Stabes in zwei Richtungen erlaubt. Das Problem besteht darin, den Stab durch das Einwirken einer horizontalen Kraft auf den Wagen in Balance zu halten.

Ein solcher Stab-Balancierer soll in der hier beschriebenen Anwendung simuliert und durch ein Kohonen-Netz gesteuert werden. Das Kohonen-Netz soll in der Lage sein, durch Eingabe der aktuellen Winkelgeschwindigkeit und des aktuellen Winkels eine Kraft zu berechnen, welche einwirkend auf den Wagen den Stab in Balance hält.

  1. Netz erstellen
    Netztyp*: Kohonen
    Dimension des Eingabevektors*: 2
    Anzahl der Ausgabeneuronen: 1
    Anzahl Neuronen: Beliebig - eine Anzahl von 80 Neuronen ist günstig.
    Anzahl Zwischenschichten: 1
    Initialwert der Gewichte: z

    Netz laden
    Die Netz-Datei ,,som_stab_80.ntz'' enthält ein Kohonen-Netz mit 80 Neuronen.
  2. Anwendung starten
Anwendungsfenster ,,Stab-Balancierer''
Bild 10: Anwendungsfenster ,,Stab-Balancierer''

Die Anwendung ist zu finden unter [Anwendung][Kohonen-Netze] [Stab-Balancierer]. Dargestellt wird der Stab-Balancierer und einige Bedienungselemente. Zum einen sind es Bedienungselemente zum Manipulieren des Lernalgorithmus und zum anderen sind es Bedienungselemente zum Beeinflussen der Simulation. ,,Anzahl Lernschritte'', ,,Lernfaktor'', ,,Nachbarschaft'', ,,Start'' und ,,Stop'' bezeichnen die gleichen Bedienungselemente, welche auch in den vorhergeheneden Anwendungen beschrieben wurden.

Der Knopf ,,Zurücksetzen'' bewirkt das Zurücksetzen des Wagens an seine Null-Position und das zufällige Einstellen des Stab-Winkels im Intervall [-1/6, 1/6]. Das Textfeld unter der grafischen Anzeige des Stab-Balancierers zeigt alle im letzten Durchlauf berechneten Werte der Zeit, des Winkels und der horizontalen Kraft.