Acoustic Word-Recognizer

theoretische Grundlagen und Implementierung

 

 

Inhalt

 


 

Fouriertransformation

 

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.

 

(zum Inhalt)

 


 

Kohonen - Netz

 

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.

       

       

 

(zum Inhalt)

 


 

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.

 

(zum Inhalt)

 


 

Quellenverzeichnis

 

[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.

 

(zum Inhalt)

 


Jens Fiedler, 23. November 2001