Acoustic Word-Recognizer
theoretische Grundlagen und Implementierung
Ein Signal in der Zeitdarstellung ist meistens zu komplex um dessen
Eigenschaften ausreichend erfassen zu können, deswegen wandelt man es in die
viel aussagekräftigere Frequenzdarstellung um. Ein mathematisches Verfahren mit
dem diese Berechnung durchgeführt werden kann ist die Fouriertransformation.
Die Fouriertransformation eines zeitkontinuierlichen, periodischen Signals
führt zu einem diskreten Spektrum (Linienspektrum) in der Frequenzebene. Bei
der Transformierung einer endlichen Folge zeitdiskreter Werte erhält man
ebenfalls ein diskretes Spektrum. Diese Transformation ist als Diskrete
Fouriertransformation (DFT) bekannt.
Die DFT wandelt eine Eingangsfolge von N reellen Werten aus einem Zeitsignal der Länge Ta in N komplexe Werte im Frequenzbereich um. Die Werte sind dabei gleichmäßig auf der Frequenzachse im Intervall von 0 bis N/Ta verteilt, wobei der Endpunkt des Intervalls gleich der Abtastfrequenz ist. Allerdings ergibt die DFT nicht N verschiedene Frequenzwerte, da die Werte symmetrisch konjugiert komplex zur Mitte des Intervalls, bzw. zur halben Abtastfrequenz, liegen. Der Stern * drückt die konjugiert komplexe Beziehung (a + jb)* = (a - jb) aus.
Das Ergebnis der DFT ist nur für periodische Signale korrekt, da die
Gleichung eine periodische Eingangsfolge voraussetzt. Da dies bei Sprachsignalen
aber nicht gegeben ist können nur Signalsegmente gefunden werden, die
annähernd periodisch sind. Dazu wird mit Hilfe einer Fensterfunktion ein
Abschnitt aus dem Sprachsignal herausgeschnitten, der anschließend mit der DFT
analysiert wird. Da die Funktion eine Rechteckform hat, wird das Signal hart
ausgeschnitten, wodurch es an den beiden Grenzen zu starken Unstetigkeiten mit
zusätzlich hohen Frequenzanteilen kommt, die das Spektrum verfälschen.
Die Berechnung der DFT erfordert N komplexe Multiplikationen und Additionen,
wobei diese Berechnung bei der Spracherkennung meistens in Echtzeit während
eines festgelegten Intervalls von z.B. 10 ms durchzuführen ist. Um diese
Operationen zu beschleunigen wurde das Rechenverfahren der Fast-Fouriertransformation
(FFT) entwickelt, mit dem die DFT mit weit
weniger Rechenoperationen ermittelt werden kann.
Das Verfahren der FFT wird hier kurz vorgestellt:
Als erstes wird eine Eingangsfolge s(n) mit n = 0 ... N-1 in zwei Teilfolgen getrennt, in eine Folge der geraden Abtastzeitpunkte e(n) und eine Folge der ungeraden Abtastzeitpunkte o(n).
e(n) ergibt sich aus e(0), e(2T),
... , e(N-2)
o(n) ergibt sich aus o(1), o(3T), ...
, o(N-1)
Die Transformation von e(n) heißt E(k) und die Transformation von o(n) ist O(k). Die beiden Teilfunktionen können wie folgt addiert werden.
Da E(k) und O(k) periodisch mit der Periodendauer N/2 sind, kann die Gleichung auch wie folgt geschrieben werden.
Die Berechnung von E(k) und O(k) erfordert jeweils (N/2)2
Operationen, die Addition der beiden nochmals N Operationen, so dass man
insgesamt auf N + N2/2 Operationen kommt. Dies ist schon eine
beträchtliche Reduktion an Rechenaufwand gegenüber den N2 komplexen
Operationen der DFT. Wenn aber die Zahl der Abtastwerte als Potenz von 2
gewählt wird, können die beiden Reihen solange in Folgen gerader und ungerader
Werte aufgeteilt werden bis jede Reihe nur noch aus einem Wert besteht. Die Zahl
der Operationen reduziert sich auf diese Weise auf genau N * ld N.
Die theoretischen Grundlagen zur DFT
und FFT können im Buch Sprachverarbeitung [1] unter dem Abschnitt Kurzzeit-Fourier-Analyse
vertiefend nachgelesen werden.
AWR benutzt für die FFT die Funktion von Steve Sampson [2]. Als Eingabedaten bekommt die FFT-Funktion
aller 10 ms einen Datenvektor, der die
aufeinanderfolgenden Werte des akustischen Signals aus der Wave-Datei enthält.
Die Anzahl der Datenelement des Vektors entspricht der Anzahl der gewünschten
Frequenzstützpunkte und ist außerdem eine Potenz von 2. Nach der Transformation
wird ein Datenvektor zurückgegeben der die gleiche Anzahl von Elementen enthält
wie der Eingabevektor. Die Elemente enthalten jetzt die Intensität der
Frequenzstützpunkte des gemessenen Frequenzbereiches. Die Frequenzstützpunkte
sind, wie oben erläutert, gleichmäßig über den gemessenen Frequenzbereich verteilt, der gemäß dem
Abtasttheorem nach Shannon der Hälfte der Samplerate entspricht mit der das
Wort aufgenommen wurde. Außerdem wird wegen des beschriebenen Effektes der
Rechteckfenster-Funktion das erste und letzte
Datenelement entfernt, um ein unverzerrtes Frequenzbild zu erhalten. Deshalb ist im AWR-Programm die Zahl
der Inputneuronen des Kohonennetzes um zwei geringer als die Zahl der
Frequenzstützpunkte.
Die Algorithmen für die Berechnung des Kohonennetz basieren auf den
Vorschlägen des Buches Programmierung Neuronaler Netze [3].
Um das Erregungszentrum zu bestimmen wird das Neuron j, dessen Gewichtsvektor wi
dem Eingabesignalvektor x am ähnlichsten ist, ermittelt.
Dieses Neuron ist das Winnerneuron. Der Ähnlichkeitsvergleich erfolgt über die
Berechnung der euklidischen Distanz zwischen den Vektoren.
Das Neuron, dessen Gewichtsvektor die geringste Distanz zum Eingabevektor
aufweist, wird ausgewählt.

Während des Lernverfahrens werden die Gewichte der Neuronen der Kohonenkarte innerhalb eines vorher festgelegten Radius um das Erregungszentrum an den präsentierten Datenvektor angenähert.
wj[t] :
Verbindungsstärken wj = (w1j, . . . , wnj) des
Neurons j zum Zeitpunkt t;
x[t] :
Eingabesignalvektor x = (x1, . . . , xn) zum Zeitpunkt t.
Um die Eigenschaft der Kohonenkarte zu realisieren, dass die Neuronen die näher am Erregungszentrum stärker beeinflusst werden als die am Rand des Adaptionsradius, muss in die Gleichung noch eine geeignete Funktion eingefügt werden. Am einfachsten lässt sich das mit der Gaußschen Glockenkurve realisieren, die sich ähnlich der Mexican-Hat-Funktion verhält.

j - z :
Abstand vom Neuron j zum Erregungszentrum z;
Sigmaz : Radius, innerhalb
dessen die Einheiten verändert werden.
Um die Größe der Gewichtsveränderung bei fortlaufendem Lernen zu verringern wird noch ein zusätzlicher Faktor eingefügt, die Lernrate Epsilon. Dadurch wird es möglich am Anfang des Lernvorgangs die Verbindungsgewichte der Karteneuronen grob zu Organisieren und zum Ende hin die Veränderungen auf Feinabstufungen in kleinen Bereichen zu konzentrieren. Zusammen mit der Funktion hjz ergibt sich dann folgende entgültige Formel zur Gewichtsanpassung.
Der Wert der Änderung der Verbindungsstärken ergibt sich somit aus:
Der Adaptionsradius Sigma und die Lernrate Epsilon werden mit fortlaufender Anzahl der Lernschritte verringert um eine Spezialisierung der Karteneuronen auf die Merkmale der Eingabedaten zu ermöglichen.
Feedforward - Backpropagation - Netz
Die Algorithmen für die Berechnung des Backpropagationnetz basieren ebenfalls
auf den Vorschlägen des Buches Programmierung Neuronaler Netze [3].
Zur Berechnung des Nettoinputs des Neuron j wird die Summe aus den Produkten
der Ausgabewerte der Neuronen der vorgelagerten Schicht mit den jeweiligen
Gewichten des Neuron j gebildet. Dazu wird noch das Bias (auch Schwellwert) addiert. Das Bias
(hier dargestellt als Theta) kann
als ein Verbindungsgewicht zu einem Neuron gesehen werden, das immer ein
konstant positives Signal der Höhe 1 sendet.
Zur Berechnung des Aktivierungswertes wurde eine sigmoide Aktivierungsfunktion gewählt.
Um beim Backpropagation-Lernverfahren festzustellen wie groß die Abweichung der tatsächlichen Ausgabe von der gewünschten Ausgabe ist, wird der quadratische Fehler E über alle Musterpaare ermittelt.
Durch Veränderung einzelner Verbindungsgewichte des Netzwerkes ändert sich auch der Ausgabewert von Neuronen in der Ausgabeschicht und damit auch der gesamte Fehler E des Netzwerkes. Ziel ist es nun den gesamten Fehler E des Netzwerkes zu minimieren um somit die gewünschte Ausgabe zu erreichen. Dafür bietet sich das Gradientenabstiegsverfahren an, das es ermöglicht für jedes Verbindungsgewicht Werte zu finden die den Fehler für das angelegte Muster minimieren.
Nach einigen Umformungen und dem Hinzufügen der Lernrate Epsilon ergibt sich folgende Formel.
Bei linearer Aktivierungsfunktion erhält man die Delta-Regel.
Bei Backpropagation-Netzwerken kann diese Lernregel aber nicht angewandt
werden, da hier nichtlineare Aktivierungsfunktionen verwendet werden. Außerdem
ist der Zielwert tj für die Neuronen der inneren Sicht nicht
bekannt.
Unter Verwendung einer nichtlinearen und differenzierbaren Aktivierungsfunktion
kann das Fehlersignal Delta eines Ausgabeneurons j aus dem Produkt des Lernziels und
der Steigung der Aktivierungsfunktion für den aktuellen Nettoinput netj
gebildet werden.
Mit der Ableitung der sigmoiden Aktivierungsfunktion
und der Identitätsfunktion als Ausgabefunktion wird das Fehlersignal für ein Neuron j durch folgenden Term gebildet.
Diese Gleichung kann aber nur auf Neuronen der Ausgabeschicht angewandt
werden, da für die inneren Neuronen kein Ausgabewert tj vorgegeben
ist.
Um den Fehler für die inneren Neuronen berechnen zu können, muss der Lernfehler
für Ausgabeneuronen durch einen äquivalenten Faktor ersetzt werden.
Durch Anwendung der Kettenregel kann der Lernfehler eines inneren Neurons aus
dem Produkt des Fehlersignals der übergeordneten Neuronen und
den entsprechenden Verbindungsgewichten bestimmt werden.
Da die Berechnung des Fehlersignals hierbei entgegengesetzt der
vorwärtsgerichteten Propagierung der Eingabesignale erfolgt, wird das Verfahren
Backpropagation-Lernverfahren genannt.
Mit einer sigmoiden Aktivierungsfunktion wird das Fehlersignal für die Neuronen
der inneren Schichten durch die folgende Gleichung berechnet.
Um bei der Annäherung der Werte der Verbindungsgewichte an das gewünschte
Minimum zu verhindern, dass auf Grund einer zu großen Lernrate das Minimum
übersprungen wird, so dass es zu einer Oszillation der Gewichtsveränderung
kommt, müssen noch einige Modifikationen an der Formel vorgenommen werden.
Eine Möglichkeit diesen Effekt zu vermeiden erreicht man dadurch, dass man den
Wert der vorherigen Gewichtsveränderung in die Berechnung der aktuellen
Gewichtsveränderung mit einbezieht. Zusätzlich wird noch der konstante Faktor
Alpha, das sogenannte Momentum, eingefügt. Dieser Faktor ist eine
Art Erinnerungsfaktor an und gibt an wie stark der Wert der alten
Gewichtsveränderung in die Berechnung der neuen einfließen soll.
[1] Sprachverarbeitung, B. Eppinger, E. Herter.
Reihe:
Informationstechnik/Nachrichtentechnik, Hanser Verlag.
[2] FFT.C, C Version 1.0 by
Steve Sampson, Public Domain.
This program is based on the work by W. D. Stanley and
S. J. Peterson, Old Dominion University.
[3] Programmierung Neuronaler Netze, Eine Turbo Pascal Toolbox.
H. Kruse, R. Mangold, B. Mechler, O. Penger.
ADDISON-WESLEY.
Jens Fiedler, 23. November 2001