| Operatoren |
train_class_gmm — Trainieren eines Gaussian Mixture Models.
train_class_gmm( : : GMMHandle, MaxIter, Threshold, ClassPriors, Regularize : Centers, Iter)
train_class_gmm trainiert das durch GMMHandle angegebene Gaussian Mixture Model (GMM). Bevor das GMM trainiert werden kann, müssen mit add_sample_class_gmm, add_samples_image_class_gmm oder read_samples_class_gmm alle im Training zu verwendenden Trainingsmuster in dem GMM abgespeichert werden. Es können auch nach dem Training noch neue zusätzliche Trainingsmuster hinzugefügt und trainiert werden.
Beim Training wird der Fehler, den das GMM auf den gespeicherten Trainingsdaten erzielt, durch das expectation maximization (EM) Verfahren minimiert.
MaxIter spezifiziert die maximale Anzahl von Iterationen pro Klasse für den EM-Algorithmus. In der Praxis sollten Werte zwischen 20 und 200 ausreichend für die meisten Probleme sein. Threshold spezifiziert eine Schwelle für die relative Änderung des Fehlers. Sollte bis zum Erreichen von MaxIter Iterationen die relative Änderung des Fehlers nicht unter Threshold liegen, so wird der Algorithmus für diese Klasse abgebrochen. Da der Algorithmus mit der maximal spezifizierten Anzahl Zentren (Parameter NumCenters in create_class_gmm) begonnen wird ist im Falle des vorzeitigen Abbruchs von einer nicht optimalen Anzahl Zentren und einem nicht optimalen Fehler für diese Klasse auszugehen. In diesem Fall kann ein neues Trainung mit veränderten Parametern (z.B. einem anderen Wert für RandSeed in create_class_gmm) versucht werden.
ClassPriors bestimmt die Berechnungsweise von a-priori-Wahrscheinlichkeiten der Klassen. Falls 'training' eingegeben ist, wird die Wahrscheinlichkeit einer Klasse von dem Anteil der entsprechenden Trainingsmuster im Vergleich zu der gesamten Anzahl von Mustern berechnet. Falls 'uniform' eingegeben ist, werden alle a-priori-Wahrscheinlichkeiten zu 1/NumClasses gesetzt.
Regularize regularisiert (beinahe) singuläre Kovarianzmatrizen während des Trainings. Singuläre Kovarianzmatrizen treten nur bei ausschließlich linear abhängigen Trainingsvektoren auf. In diesem Fall wird Regularize wird zur Hauptdiagonale der Matrix addiert, so dass die Matrix nicht singulär wird. Es ist empfehlenswert einen Wert von 1e-4 zu übergeben. Wenn Regularize auf 0.0 gesetzt wird, wird keine Regularisierung der Matrix durchgeführt.
Die Mittelpunkte der Zentren werden anfangs auf zufällige Werte gesetzt. In Einzelfällen kann es dazu kommen, dass mit den durch RandSeed in create_class_gmm festgelegten Werten ein relativ hoher Fehler als optimaler Wert bestimmt wird, d.h., dass die Optimierung in einem lokalen Minimum steckenbleibt. Falls vermutet werden kann, dass dies passiert ist, sollte ein neues GMM mit einem anderen Wert für RandSeed erzeugt werden, um zu überprüfen, ob ein signifikant kleinerer Fehler erzeugt werden kann.
Es ist zu beachten, dass je nach Anzahl der Zentren, des Typs der Kovarianzmatrizen und der Anzahl der Trainingsmuster das Trainieren zwischen wenigen Sekunden und einigen Stunden dauern kann.
Als Ausgabe liefert train_class_gmm in Centers die Anzahl Zentren pro Klasse zurück, die von dem EM-Algorithmus als am besten geeignet festgestellt wurde. Diese Rückgabe kann als Referenz für zukünftig zu erstellende GMMs in NumCenters (in create_class_gmm) dienen. Wenn die Anzahl der gefundenen Zentren beim GMM-Training mit Integer-Daten unerwartet hoch ist, kann dass durch Anpassung des Randomize-Parameters in add_sample_class_gmm korrigiert werden. In Iter wird die Anzahl der durchgeführten Iterationen pro Klasse zurückgeliefert. Sollte ein Wert gleich MaxIter sein, so wurde der Algorithmus abgebrochen (s.o.).
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Der Wert dieses Parameters darf nicht über mehrere Threads verwendet werden.Handle des GMM.
Maximale Anzahl von Iterationen des Expectation Maximization Algorithmus
Defaultwert: 100
Wertevorschläge: 10, 20, 30, 50, 100, 200
Schwellwert für die relative Änderung des Fehlers damit der expectation maximization Algorithmus endet.
Defaultwert: 0.001
Wertevorschläge: 0.001, 0.0001
Restriktion: Threshold >= 0.0 && Threshold <= 1.0
Modus zur Bestimmung der a-priori-Wahrscheinlichkeiten der Klassen
Defaultwert: 'training'
Werteliste: 'training', 'uniform'
Regularisationswert zur Vermeidung der Singularität der Kovarianzmatrizen.
Defaultwert: 0.0001
Restriktion: Regularize >= 0.0 && Regularize < 1.0
Anzahl der gefundenen Zentren pro Klasse
Anzahl der durchgeführten Iterationen pro Klasse
create_class_gmm (NumDim, NumClasses, [1,5], 'full', 'none', 0, 42,\
GMMHandle)
* Add the training data
read_samples_class_gmm (GMMHandle, 'samples.gsf')
* Train the GMM
train_class_gmm (GMMHandle, 100, 1e-4, 'training', 1e-4, Centers, Iter)
* Write the Gaussian Mixture Model to file
write_class_gmm (GMMHandle, 'gmmclassifier.gmm')
clear_class_gmm (GMMHandle)
Sind die Parameterwerte korrekt, dann liefert train_class_gmm den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
add_sample_class_gmm, read_samples_class_gmm
evaluate_class_gmm, classify_class_gmm, write_class_gmm, create_class_lut_gmm
Christopher M. Bishop: „Neural Networks for Pattern Recognition“;
Oxford University Press, Oxford; 1995.
Mario A.T. Figueiredo: „Unsupervised Learning of Finite Mixture
Models“; IEEE Transactions on Pattern Analysis and Machine
Intelligence, Vol. 24, No. 3; March 2002.
Foundation
| Operatoren |