Versuch 6: Training

In diesem Versuch wollen wir mit Janus trainieren. Sie sollten bis jetzt das Konzept der Objekte, Unterobjekte und Methoden verstanden haben und von den wichtigsten Objektklassen wissen, wozu sie da sind und wie im wesentlichen ihre Verwendung funktioniert. In diesem Versuch werden Sie noch ein paar weitere Objektklassen kennenlernen, nämlich die, die für das Trainieren eines kontextunabhängigen Erkenners benötigt werden.

Trainieren bedeutet prinzipiell, das Abarbeiten der gesamten Trainingsdaten und dem Verändern der akustischen Parameter so, daß sie auf die Trainingsdaten besser passen.

Das Training, das in diesem Versuch durchgeführt wird, besteht im wesentlichen aus vier Schritten: dem Erzeugen von Labels, dem Berechnen einer LDA Matrix, dem Erzeugen von Codebüchern mit k-means, und dem EM-Training entlang Labels. Prinzipiell könnte man auch auf das Schreiben der Labels verzichten, aber wenn sie erst mal existieren, dann werden die darauffolgenden Trainingsläufe wesentlich schneller durchgefürt. Am Ende werden wir den trainierten Erkenner auf den Testdaten auswerten und hoffentlich feststellen, daß er besser funktioniert als der im letzten Versuch getestete.

Schreiben von Labels

Aufgabe 6.1: Verwenden Sie ein Script zum Hochfahren des Janus, so wie es im letzten Versuch benötigt wurde. Erzeugen Sie im Verzeichnis step4 ein Unterverzeichnis labels. Ein Viterbi-Alignment haben Sie schon im letzten Versuch durchgeführt, Sie müßten also wissen, wie es abläuft. Schreiben Sie jetzt auf der Basis des "Hochfahr"-Scriptes ein Script, das für alle Trainingssätze einen Viterbi berechnet, und speichern sie die Labels für jeden Satz unter dem Namen der Satz-ID im Unterverzeichnis labels mit Hilfe der Methode bsave der Path Objektklasse ab. Einige Erklärungen dazu finden Sie im Schritt 4 des Do-It-Yourself-Threads.

Verständnisfragen

Aufgabe 6.2:Veranschaulichen Sie sich noch einmal, welche Objekte in Janus für das Training benötigt werden. Beantworten Sie dann die Fragen von Aufgabe 6.2.

LDA

Aufgabe 6.3: Lesen Sie die Beschreibung von Schritt 5 des Tutoriums durch, und führen Sie die darin beschriebenen Schritte aus. Schauen Sie sich die Eigenwerte-Matrix an. Erzeugen Sie ein Feature im FeatureSet und weisen sie ihm die LDA-Matrix zu. Sehen Sie sich die Graustufendarstellung der LDA-Matrix an. Was erkennen Sie?

Codebücher Erzeugen mit K-means

Aufgabe 6.4: Lesen Sie die Beschreibung von Schritt 8 des Tutoriums durch und führen Sie die darin beschriebenen Kommandos im Verzeichnis step8 aus.

Die erzeugten Sample-Files sind vom Type FMatrix und können mit bload geladen werden. Sehen Sie sich ein paar der Sample-Files and und prüfen Sie, ob die darin enthaltenen Vektoren eine gewisse Ähnlichkeit besitzen. Schauen Sie sich auch ein paar frisch erzeugte Codebücher mit showDSS an.

Kramen Sie Ihr Test-Script vom letzten Versuch hervor ... Was? Immer noch nicht gemacht? Na dann aber los! ... und modifizieren Sie es so, daß sie damit die eben frisch erzeugen Gewichte evaluieren können.

EM Training entlang Labels

Aufgabe 6.5: Lesen Sie die Beschreibung von Schritt 9 des Tutoriums durch und führen Sie die darin beschriebenen Kommandos im Verzeichnis step9 aus. Es genügt, wenn Sie nur eine Iteration trainieren.

Wenn das Training beendet ist, schreiben Sie ein Script zum Testen der Erkennungsleistung mit den Gewichten nach der ersten Iteration.

Hand-In

Schicken Sie bis zum Abgabetermin die Antworten auf die Fragen von Aufgabe 6.2 an Sebastian Stüker.

Schicken Sie bis zum Abgabetermin die Diagonalen Werte der Eigenwertematrix aus Aufgabe 6.3 an Sebastian Stüker.

Schicken Sie bis zum Abgabetermin die Werte für die Wortakkuratheit für den Erkenner auf den frisch "ge-k-means-ten" Gewichten und den Erkenner auf den eine Iteration trainierten Gewichten an Sebastian Stüker.