Die Leistungsfähigkeit der Computer für den universellen Einsatz
(PCs) wurde in den letzten 15 Jahren immens gesteigert. Neben der Taktfrequenz
und den Architekturmerkmalen der CPU und der FPU wurden auch die Kapazität
der Massenspeicher und des Arbeitsspeichers stark erhöht.
Gleichzeitig ist das Preisniveau dieser Computer etwa konstant geblieben.
Die Verbesserung der Ressourcen ermöglichte eine aufwendige Softwaregestaltung,
die sich unter anderem an der Benutzerfreundlichkeit der Software orientiert.
Betriebssysteme mit grafischen Benutzeroberflächen waren ein wichtiger
Meilenstein dieser Entwicklung. Standards im Bereich der Softwareergonomie
mit genormten Bedienelementen und einheitlichen Entwurfsrichtlinien führten
zu hersteller- und teilweise plattformunabhängigen Benutzeroberflächen,
die einen intuitiv erlernbaren Umgang mit den Softwareprodukten ermöglicht.
Implementierungsziel war, den im Rahmen dieser Arbeit zu erstellenden Simulator für LVQ und SOM so zu programmieren, daß er auch für andere Zwecke in Ausbildung und Forschung verwendet werden kann. Deshalb sollte er auf jedem PC ohne zusätzliche Hardware laufen und zusätzlich leicht zu bedienen sein. Die umfangreiche Anzahl der Parameter erforderte eine übersichtliche Anordnung der Bedienelemente. Die Bearbeitung großer Datenmengen, bspw. 3580 Trainingsvektoren mit jeweils 39 Merkmalen muß ebenfalls möglich sein.
Aus dem bereits erwähnten Grund der universellen Einsetzbarkeit
der Software auf verschiedensten Rechnern, wurde eine Implementation auf
dem Neuro-Parallelrechner CNAPS nicht angestrebt.
Eine Implementation mit dem umfangreichen mathematischen Programmiersystem
MATLAB wurde vor allem wegen der zu geringen Abarbeitungsgeschwindigkeit
gemieden. Bereits vorhandene Implementationen in MATLAB waren für
die Datenmengen bei der EEG-Segmente-Auswertung (Kap. 5) zu langsam /16/.
Aufgrund einer Reihe von Vorzügen wurde das Entwicklungssystem
DELPHI basierend auf der Programmiersprache PASCAL gewählt.
Die Vorteile von Delphi /17/
Delphi bringt alle Hauptvorteile der gegensätzlichen Typen von
Entwicklungssystemen unter einen Hut, doch anstatt dabei etwa einen Mittelweg
zwischen Borland Pascal und Visual Basic einzuschlagen, übertrifft
es beide Systeme in vielen der Punkte, in denen diese bisher jeweils führend
waren:
Obwohl die Implementierung des Simulators einen wesentlichen Teil dieser
Arbeit ausmacht, soll auf detaillierte Ausführungen zu Implementierungsfragen
im schriftlichen Teil der Arbeit nicht eingegangen werden. Nur einige wesentliche
Aspekte sollen angesprochen werden.
Eine Erläuterung zum Kern des LVQ-Simulators
Anwendungsumgebung
Anz. Atomarer Berechnungen: = Anz. Merkmale * Anz. Neuronen * Anz. Iterationen (5)
Den Simulator habe ich auf einem P200MMX und P2/266 getestet, also einem
zur Zeit durchschnittlich leistungsfähigen PC. Verschiedene Einstellungen
wurden in den Tests verwendet. Die Anzahl der Atomaren Berechnungen wurde
auf 100 Millionen festgelegt und darauf die Anzahl der Merkmale, Neuronen
und Iterationen angepaßt. In der Literatur wird häufig bei Performancetests
von Gewichtsänderungen je Sekunde gesprochen, doch das ist meiner
Meinung nach nicht aussagekräftig genug.
|
|
|
|
|
|
|
|
10
|
10
|
1 000 000
|
100 Millionen
|
23s
|
11s
|
|
50
|
2
|
1 000 000
|
100 Millionen
|
29s
|
14s
|
Wie in Tabelle 2.3 zu sehen ist, fallen die Berechnungszeiten trotz
konstanter Anzahl Atomarer Berechnungen unterschiedlich aus. Diese Unterschiede
kommen durch die effektive Ausnutzung der inneren Berechnungsschleife.
Die umfangreichen und aufwendigen Initialisierungen, insbesondere das Laden
der Variablenadressen in die Prozessorregister, müssen sowohl bei
zwei- als auch bei zehnkomponentigen Vektoren durchgeführt werden.
Im Simulatorkern, der in Assembler vorliegt,
kann man diesen Initialisierungsaufwand gut erkennen.
Zusammenfassend kann man sagen, daß der Simulator auf einem P200MMX
im Durchschnitt 4 Millionen Atomare Berechnungen je Sekunde und etwa 8
Millionen auf einem P2/266 schafft. Zum Vergleich seien Berechnungen mit
MATLAB gegenüber gestellt. Auf einem P200MMX schafft ein in MATLAB
implementierter LVQ-Algorithmus durchschnittlich nur 40000 Atomare Berechnungen
je Sekunde.
Die Bedienung des Programms soll anhand ausgewählter Abbildungen
der Benutzeroberfläche erklärt werden.
Die gedrängte Darstellung der Eingabeformulare wurde gewählt,
um gleichzeitig möglichst viele Parametereinstellungen überprüfen
zu können und um trotzdem noch über genügend Bildschirmfläche
für die Diagramm-Ausgabe-Fenster zu verfügen.
Es wurde eine Multi-Prozeß-Window-Technik gewählt, um während
des Simulationslaufes Parameter ändern zu können und mit dem
Knopf „Nehmen“ an den Simulatorkern zu übergeben.
In der Abb. 2.2 ist das Hauptfenster zu sehen. Über das Hauptmenü
können Trainingsdaten in den Simulator geladen werden sowie
alle weiteren Formulare geöffnet werden, bspw. Optionen (Abb 2.3)
und die Auswertung (Abb. 2.4). Mit dem Button „Training“ wird das LVQ-Training
begonnen. Der Trainingsablauf erfolgt genau nach den Schritten 1 bis 4,
die ich im Abschnitt 2.1 beschrieben habe. Ist das Training beendet, dann
kann man sich die Ergebnisse des Trainings anhand der „Auswertung“ (Abb.
2.4) ansehen.
Die wichtigsten Parametereinstellungen habe ich als Erläuterungen
zu den Abbildungen hinzugefügt. Weitere Parameter und deren Einstellungsmöglichkeiten
sind in der Beschreibung oder im Hilfetext
des Simulators, zu finden.
![]() |
Abb. 2.2 Hauptfenster zur Einstellung der wichtigsten
Parameter: Anzahl der Neuronen; Lernschrittweite (Startwert der Lernschrittweite); Anzahl der Epochen |
![]() |
Abb. 2.3 Optionen
(Erweiterte Einstellungen) |
![]() |
Abb. 2.4 Fenster „Auswertung“
Numerische Darstellung der klassenbezogenen und der gesamten Testergebnisse |