| Operatoren |
train_class_mlp — Trainieren eines mehrschichtigen Perzeptrons.
train_class_mlp( : : MLPHandle, MaxIterations, WeightTolerance, ErrorTolerance : Error, ErrorLog)
train_class_mlp trainiert das durch MLPHandle angegebene mehrschichtige Perzeptron (MLP). Bevor das MLP trainiert werden kann, müssen mit add_sample_class_mlp oder read_samples_class_mlp alle zum Training zu verwendenden Trainingsmuster in dem MLP abgespeichert werden. Falls nach dem Training neue zusätzliche Trainingsmuster zum Trainieren verwendet werden sollen, muss ein neues MLP mit create_class_mlp erzeugt werden, bei dem wiederum alle zum Training zu verwendenden Trainingsmuster (also die ursprünglichen und die zusätzlich zu verwendenden) abgespeichert werden. Hierbei empfiehlt sich die Verwendung von write_samples_class_mlp und read_samples_class_mlp. Ein Nachtrainieren mit neuen Trainingsmustern ist programmtechnisch zwar nicht verboten, führt aber typischerweise nicht zu guten Ergebnissen, da das Training eines MLP ein komplexes nichtlineares Optimierungsproblem ist, und das mehrmalige Trainieren mit neuen Trainingsdaten mit hoher Wahrscheinlichkeit dazu führt, dass die Optimierung in einem lokalen Minimum steckenbleibt.
Falls eine Rückweisungsklasse mittels set_rejection_params_class_mlp spezifiziert wurde, werden vor dem eigentlichen Training die Trainingsdaten für die Rückweisungsklasse erzeugt.
Beim Training wird der Fehler, den das MLP auf den gespeicherten Trainingsdaten erzielt, durch ein nichtlineares Optimierungsverfahren minimiert. Falls das MLP mittels set_regularization_params_class_mlp regularisiert wurde, wird ein zusätzlicher Gewichtsstrafterm berücksichtigt. Dadurch werden die bei create_class_mlp beschriebenen Gewichte des MLP bestimmt. Falls mittels set_regularization_params_class_mlp eine automatische Bestimmung der Regularisierungsparameter spezifiziert wurde, werden auch diese Parameter optimiert. Wie bei set_regularization_params_class_mlp beschrieben, benötigt das Training eines MLPs bei gleichzeitiger Bestimmung der Regularisierungsparameter signifikant mehr Zeit als das Training eines unregularisierten MLPs oder eines MLPs mit festen Regularisierungsparametern.
Als Startwerte werden die Gewichte von create_class_mlp auf zufällige Werte gesetzt, um mit hoher Wahrscheinlichkeit zu ermöglichen, dass die Optimierung zum globalen Minimum der Fehlerfunktion konvergiert. Nichtsdestotrotz kann es eventuell dazu kommen, dass mit den durch RandSeed in create_class_mlp 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 Netz mit einem anderen Wert für RandSeed erzeugt werden, um zu überprüfen, ob ein signifikant kleinerer Fehler erzeugt werden kann.
Die Parameter MaxIterations, WeightTolerance und ErrorTolerance dienen der Steuerung des nichtlinearen Optimierungsverfahrens. Es ist zu beachten, dass diese Parameter sich auf ein Training innerhalb eines Schrittes der Evidenzprozedur beziehen, falls mittels set_regularization_params_class_mlp eine automatische Bestimmung der Regularisierungsparameter spezifiziert wurde. MaxIterations spezifiziert die maximale Anzahl von Iterationen des Optimierungsverfahrens. In der Praxis sollten Werte zwischen 100 und 200 ausreichend für die meisten Probleme sein. WeightTolerance spezifiziert eine Schwelle für die Änderung der Gewichte pro Iteration. Dabei wird der Betrag der Änderung der Gewichte aufsummiert. Dieser Wert hängt also von der Anzahl der Gewichte im MLP und der Größe der Gewichte ab, welche wiederum von der Skalierung der Eingabedaten abhängt. Typischerweise sollten hier Werte zwischen 0.00001 und 1 vorgegeben werden. ErrorTolerance spezifiziert eine Schwelle für die Änderung des Fehlerwertes pro Iteration. Hier hängt der Wert von der Anzahl der Trainingsdaten und der Anzahl der Ausgabevariablen ab. Auch hier sollten typischerweise Werte zwischen 0.00001 und 1 vorgegeben werden. Die Optimierung wird beendet, falls die Gewichtsänderung in einer Iteration unter WeightTolerance und die Änderung des Fehlers unter ErrorTolerance liegt. Spätestens nach MaxIterations Iterationen wird die Optimierung aber auf jeden Fall beendet. Es ist zu beachten, dass je nach Größe des MLP und der Anzahl der Trainingsmuster das Trainieren zwischen wenigen Sekunden und einigen Stunden dauern kann.
Als Ausgabe liefert train_class_mlp in Error den Fehler mit den optimalen Gewichten des MLP auf den Trainingsdaten zurück. Außerdem wird in ErrorLog der Fehler des MLP pro Iteration zurückgeliefert. Somit ist Error der letzte Wert von ErrorLog. Der Verlauf des Fehlers in ErrorLog kann dazu verwendet werden, zu entscheiden, ob ein nochmaliges Training des MLP mit train_class_mlp mit denselben Trainingsdaten ohne das MLP neu zu erzeugen sinnvoll ist. Als Funktion betrachtet sollte ErrorLog am Anfang steil abfallen und zum Ende hin sehr flach werden. Falls ErrorLog am Ende noch relativ steil ist, ist normalerweise ein erneuter Aufruf von train_class_mlp sinnvoll. Es ist zu beachten, dass dieser Mechanismus nicht dazu verwendet werden sollte, das MLP jeweils mit MaxIterations = 1 (oder anderen sehr kleinen Werten von MaxIterations) zu trainieren, da dadurch die Anzahl der nötigen Iterationen erheblich steigt. Falls mittels set_regularization_params_class_mlp eine automatische Bestimmung der Regularisierungsparameter spezifiziert wurde, beziehen sich Error und ErrorLog auf das letzte Training, das innerhalb der Evidenzprozedur ausgeführt wurde. Falls der Fehlerverlauf innerhalb der einzelnen Iterationen der Evidenzprozedur beobachtet werden soll, muss die äußere Iteration der Evidenzprozedur explizit, wie bei set_regularization_params_class_mlp beschrieben, implementiert werden.
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Der Wert dieses Parameters darf nicht über mehrere Threads verwendet werden.Handle des MLP.
Maximale Anzahl von Iterationen des Optimierungsverfahrens.
Defaultwert: 200
Wertevorschläge: 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300
Schwellwert für den Unterschied der Gewichte des MLP zwischen zwei Iterationen des Optimierungsverfahrens.
Defaultwert: 1.0
Wertevorschläge: 1.0, 0.1, 0.01, 0.001, 0.0001, 0.00001
Restriktion: WeightTolerance >= 1.0e-8
Schwellwert für den Unterschied des mittleren Fehlers des MLP auf den Trainingsdaten zwischen zwei Iterationen des Optimierungsverfahrens.
Defaultwert: 0.01
Wertevorschläge: 1.0, 0.1, 0.01, 0.001, 0.0001, 0.00001
Restriktion: ErrorTolerance >= 1.0e-8
Mittlerer Fehler des MLP auf den Trainingsdaten.
Mittlerer Fehler des MLP auf den Trainingsdaten pro Iteration des Optimierungsverfahrens.
* Train an MLP
create_class_mlp (NumIn, NumHidden, NumOut, 'softmax', \
'normalization', 1, 42, MLPHandle)
read_samples_class_mlp (MLPHandle, 'samples.mtf')
train_class_mlp (MLPHandle, 100, 1, 0.01, Error, ErrorLog)
write_class_mlp (MLPHandle, 'classifier.mlp')
clear_class_mlp (MLPHandle)
Sind die Parameterwerte korrekt, dann liefert train_class_mlp den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Falls train_class_mlp den Fehler 9211 (Matrix ist nicht positiv definit) bei Preprocessing = 'canonical_variates' zurückliefert, bedeutet dies typischerweise, dass für die verschiedenen Klassen zu wenige Trainingsmuster gespeichert worden sind.
add_sample_class_mlp, read_samples_class_mlp, set_regularization_params_class_mlp
evaluate_class_mlp, classify_class_mlp, write_class_mlp, create_class_lut_mlp
train_dl_classifier_batch, read_class_mlp
Christopher M. Bishop: „Neural Networks for Pattern Recognition“;
Oxford University Press, Oxford; 1995.
Andrew Webb: „Statistical Pattern Recognition“; Arnold, London;
1999.
Foundation
| Operatoren |