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:
Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.
GMMHandle
(input_control, Zustand wird modifiziert) class_gmm →
(handle)
Handle des GMM.
MaxIter
(input_control) integer →
(integer)
Maximale Anzahl von Iterationen des Expectation Maximization Algorithmus
Defaultwert: 100
Wertevorschläge: 10, 20, 30, 50, 100, 200
Threshold
(input_control) real →
(real)
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
ClassPriors
(input_control) string →
(string)
Modus zur Bestimmung der a-priori-Wahrscheinlichkeiten der Klassen
Defaultwert: 'training'
Werteliste: 'training' , 'uniform'
Regularize
(input_control) real →
(real)
Regularisationswert zur Vermeidung der Singularität der Kovarianzmatrizen.
Defaultwert: 0.0001
Restriktion: Regularize >= 0.0 && Regularize < 1.0
Centers
(output_control) integer-array →
(integer)
Anzahl der gefundenen Zentren pro Klasse
Iter
(output_control) integer-array →
(integer)
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')
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