Learning Vector Quantization


2.2 Die Wahl der Programmierumgebung

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:
 

 2.3 Die Implementierung und Beschreibung des Simulators

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

Leistungsfähigkeit des Simulators:
Die Leistungsfähigkeit des Simulators läßt sich relativ leicht bestimmen. Der Rechenaufwand  des LVQ ist der Gleichung (1) bzw. (2) zu suchen. Der Euklidische Abstand ist die Summe der Quadrate, die aus den Komponenten der Eingabevektoren und den Komponenten der Gewichtsvektoren durch Subtraktion gebildet werden. Der wesentliche Aufwand steckt für den Prozessor in der Quadrierung. Die Summe aus den Operationen zur Quadrierung und den restlichen Operationen (Adressierung, Subtraktion,...) nenne ich Atomare Berechnung.
Zwischen allen Gewichtsvektoren und Eingabevektoren muß der Euklidische Abstand gebildet werden. Diese Abstände werden jeweils für alle gewählten Eingabevektoren des Trainingsdatensatzes berechnet. Die Abarbeitung eines Trainingsdatensatzes (Epoche) wird mehrfach erledigt. Das Produkt der Eingabevektoren je Trainingssatz und der Anzahl der Epochen ergibt bekanntlich die Anzahl der Iterationen (= Gewichtsänderungen). Somit kann man eine Formel für die tatsächlichen Atomare Berechnung erstellen.

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.
 
 
Neuronen
Merkmale
Iterationen
Atomare Berechnungen
Zeit P200 
Zeit P2/266 
10
10
1 000 000
100 Millionen
23s 
11s 
50 
1 000 000
100 Millionen
29s 
14s 
 Tabelle 2.3 Berechnungszeiten des LVQ-Simulators auf einem P200MMX und P2/266

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 
 
 


Learning Vector Quantization