Tutorial
Anhand dieses Beispielprojektes wird das Erstellen und Trainieren eines Netzes mit dem Acoustic Word-Recognizer vorgeführt.
Als erstes muss überlegt werden welche Wörter das Netz lernen
soll. In diesem Beispiel werden die Ziffern "Eins", "Zwei"
und "Drei" dem Netz beigebracht. Dazu müssen als erstes die
Trainingsdaten erstellt werden. Das kann mit jedem beliebigen
Ton-Aufnahmeprogramm durchgeführt werden, welches die akustischen Daten im
Wave-Format speichern kann.
Die Länge einer Aufnahme muss ungefähr eine Sekunde betragen. Längere
Aufnahmen werden von AWR nach einer Sekunde abgeschnitten, kürzere Aufnahmen
werden mit Stille aufgefüllt. Das Format der Wave-Datei muss eine Samplingrate
von 22050 Hz, eine Datenbreite von 8 Bit und in Mono vorliegen.
Das Format des Namens der Wave-Datei besteht aus der Bezeichnung des Wortes, wie
sie in AWR angegeben werden soll, gefolgt von einer aufsteigenden zweistelligen
Nummer, beginnend von 00 bis maximal 99, für jedes Muster des Wortes. Die
Nummer ist von der Bezeichnung durch einen Unterstrich getrennt. Im
Beispielprojekt werden für jedes Wort 10 Muster angelegt.
| eins_00.wav | zwei_00.wav | drei_00.wav |
| eins_01.wav | zwei_01.wav | drei_01.wav |
| eins_02.wav | zwei_02.wav | drei_02.wav |
| . . . | . . . | . . . |
| eins_09.wav | zwei_09.wav | drei_09.wav |
Jetzt wird das Netz erstellt. Dazu werden im Dialog
"Projekt verwalten" die Grunddaten des Netzes eingegeben.
In der Gruppe "Erkennungsleistung" werden die Fähigkeiten des Netzes
spezifiziert. Das sind die Anzahl der zu lernenden Wörter, 3 im Beispiel, die
Anzahl der Frequenzstützpunkte pro Wort, 32 im Beispiel, und die zu lernenden
Wörter selbst. Die Anzahl der Frequenzstützpunkte gibt an, wie hoch die
Auflösung des aufgenommenen Frequenzspektrum ist. Bei einer Samplingrate von
22050 Hz beträgt das Spektrum weniger als 11025 Hz. Die Mindestanzahl ist 3, da
der erste und letzte Wert wegen des Rechteckfenster-Effektes abgeschnitten wird.
Als nächstes werden in der Gruppe "Kohonen - Netz" die Parameter für
das Kohonennetz eingegeben. Da die Anzahl der Eingabeneuronen programmintern von
der Anzahl der Frequenzstützpunkte abgeleitet wird, muss nur noch die Größe
der Ausgabekarte spezifiziert werden. Dies geschieht über die Angabe der
Neuronenanzahl in horizontaler und vertikaler Richtung. Im Beispiel beträgt sie
jeweils 5.
Zuletzt müssen noch die Werte für das Backpropagationnetz eingegeben werden.
Die Anzahl der Eingabeneuronen wird hier wieder programmintern von der Anzahl
der Ausgabeneuronen des Kohonennetz abgeleitet. Genauso ist die Anzahl der
Ausgabeneuronen von der Anzahl der zu lernenden Wörter abgeleitet, für jedes
Wort ein Neuron. Somit müssen nur noch die versteckten Schichten spezifiziert
werden. Als erstes wird die Anzahl der versteckten Schichten angegeben, im
Beispiel 3, dann die Anzahl der Neuronen pro Schicht, beginnend mit der ersten
nach der Eingabeschicht, das sind im Beispiel jeweils 10.
Das folgende Bild zeigt den Dialog, nach dem alle Parameter eingegeben wurden.

Jetzt kann der Button "Projekt erstellen" gedrückt werden um die Netze und alle anderen notwendigen Strukturen zu erstellen. Um das Projekt später nicht noch einmal erstellen zu müssen, oder wenn man verschiedene Projekte erstellen will, kann es über den Button "Projekt speichern" gespeichert werden. Im Beispiel bekommt das Projekt den Namen "ziffern".

Hierbei werden für jedes Projekt 3 Dateien im ASCII-Textformat angelegt. Die Namen der Dateien entsprechen dem Projektnamen. Die Endungen werden in der folgenden Tabelle erklärt.
| ziffern.awr | Hier werden die gelernten Wörter gespeichert. |
| ziffern.bkp | Hier werden die Parameter des Backpropagationnetz, sowie die Werte der Verbindungsgewichte der Neuronen gespeichert. |
| ziffern.koh | Hier werden die Parameter des Kohonennetz, sowie die Werte der Verbindungsgewichte der Neuronen gespeichert. |
Ein vorhandenes Projekt kann über den Button "Projekt laden" wieder geöffnet werden.

Zum Speichern und Laden arbeitet man nur mit der Datei mit der Endung *.awr, die anderen Dateien werden automatisch bearbeitet.
Nachdem die Netze erstellt wurden, kann man sie nun trainieren.
Das geschieht über den Dialog "Netz trainieren".
Als erstes muss die Anzahl der Muster pro Wort, die vorher angelegt wurden,
angegeben werden. Das sind im Beispiel jeweils 10. Danach wird über den Button
"Trainingsdaten laden" das Verzeichnis ausgewählt, in dem die
Wave-Dateien gespeichert wurden.

Durch die Auswahl einer beliebigen Musterdatei ist das
Verzeichnis ausgewählt und kann geöffnet werden. Das Programm liest jetzt alle
Musterdateien automatisch ein und führt für jede Datei die
Fouriertransformation durch. Die so ermittelten Frequenzdaten werden dann in
einem Feld abgelegt und stehen nun für den Lernprozess zur Verfügung.
Jetzt müssen die Lernparameter für das Kohonennetz eingegeben werden. Als
erstes werden die Startwerte für die Verbindungsgewichte zufällig
initialisiert. Dazu muss vorher die Unter- und Obergrenze des Bereiches
festgelegt werden in dem die Startwerte liegen können. Im Beispiel wurde dazu 0
für die Untergrenze und 30 für die Obergrenze gewählt. Durch betätigen des
Button "Gewichte initialisieren" werden die Startwerte festgestellt.
Die Gewichte können aber auch durch zufällig ausgewählte Trainingsvektoren
initialisiert werden. Dazu müssen die Werte für Unter- und Obergrenze auf 0
stehen.
Nun müssen noch die Lernrate, im Beispiel 0.4, der Anpassungsradius, im
Beispiel 5, und die Zahl der Lernschritte, im Beispiel 1000, festgelegt werden.
Der Anpassungsradius sollte höchstens die maximale Ausdehnung das Netzes
betragen und muss mindestens 1 sein. Bei einer Größe von 1 werden nur die Gewichte des Winnerneurons verändert. Die optimalen
Werte für die Parameter können nur durch Probieren herausgefunden werden.
Nachdem alle Werte eingegeben wurden kann der Lernvorgang durch den Button
"Netz trainieren" aktiviert werden. Der Lernfortschritt wird im Feld
Lernstatus und mit der Fortschrittsanzeige angegeben.
Nach dem Training des Kohonennetz kann nun das Backpropagationnetz trainiert
werden. Dazu müssen die Lernparameter äquivalent zum Kohonennetz definiert und
initialisiert werden. Die Werte des Beispiels betragen -1 für die
Gewicht-Untergrenze, 1 für die Gewicht-Obergrenze, 0.3 für die Lernrate, 0.9
für das Momentum und 10000 Lernschritte.
Im folgenden Bild sieht man nochmal den komplette Dialog mit allen Angaben.

Nach dem Training der Netze kann das fertige Projekt wieder im Dialog "Projekt verwalten" gespeichert werden.
Jetzt kann die Leistung des Netzes im Dialog "Erkennen" überprüft werden. Dazu wird zuerst eine Wave-Datei geöffnet, aus der das Netz ein Wort erkennen soll. Dies geschieht über den Button "WAVE-Datei öffnen", wie es im folgenden Bild demonstriert wird.

Der Name der geöffneten Wave-Datei wird zur Kontrolle im Feld
"geöffnete WAVE-Datei" angezeigt.
Nachdem eine Wave-Datei geöffnet wurde kann mit dem Button
"Erkennen" der Erkennvorgang angestoßen werden. Das vom Netz erkannte
Wort wird dann im Feld "erkanntes Wort" angezeigt. Zur akustischen
Kontrolle wird der Inhalt der Wave-Datei auch abgespielt.
Um die Ausgabe der Netze überprüfen zu können, kann die entsprechende
Checkbox "Ausgabe des Kohonennetz anzeigen" bzw. "Ausgabe des
Backpropagationnetz anzeigen" ausgewählt werden. Dann wird für jedes Netz
ein Fenster geöffnet in dem die aktiven Neuronen durch "X" und die
inaktiven Neuronen durch "O" markiert sind, wie in den folgenden
Bildern zu sehen ist.


Im folgenden Bild ist nochmal der komplette Dialog "Erkennen" aus dem Beispiel zu sehen.

Das ist alles was notwendig ist um mit AWR ein Neuronales Netz zur Erkennung von Wörtern zu erstellen.
Auf diese Weise können beliebige Projekte mit den
verschiedensten Parametereinstellungen erstellt werden.
Viel Spaß beim Experimentieren.
Jens Fiedler, 22. November 2001