Signatur
Beschreibung
fann_set_learning_momentum legt das Lern-Momentum für ein mit der FANN-Bibliothek (Fast Artificial Neural Network) erstelltes neuronales Netz fest. Das Momentum ist ein Hyperparameter, der beim inkrementellen Backpropagation-Training verwendet wird und bestimmt, wie stark vorherige Gewichtsänderungen die aktuelle Aktualisierung beeinflussen.
Ein höheres Momentum (typischerweise zwischen 0.0 und 1.0) sorgt dafür, dass das Training in einer konsistenten Richtung fortgesetzt wird und lokale Minima leichter überwunden werden können. Ein Wert von 0.0 bedeutet, dass kein Momentum verwendet wird, während Werte nahe 1.0 eine starke Trägheit in den Gewichtsänderungen erzeugen.
Das Lern-Momentum wird ausschließlich beim inkrementellen Trainingsalgorithmus (FANN_TRAIN_INCREMENTAL) berücksichtigt. Bei anderen Algorithmen wie RPROP oder Quickprop hat dieser Wert keine Auswirkung. Der Standardwert nach der Netz-Erstellung beträgt 0.0.
Diese Funktion ist nur verfügbar, wenn die PHP-FANN-Erweiterung installiert ist. Sie ermöglicht eine feingranulare Steuerung des Trainings, um Konvergenzprobleme zu beheben oder das Training zu beschleunigen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine FANN-Netz-Ressource, die zuvor mit Funktionen wie fann_create_standard() oder fann_create_from_file() erstellt wurde. |
|
| $learning_momentum Pflicht | float | Der neue Wert für das Lern-Momentum. Typischerweise ein Wert zwischen 0.0 (kein Momentum) und 1.0 (maximales Momentum). Werte außerhalb dieses Bereichs sind technisch möglich, aber selten sinnvoll. |
Rückgabewert
true zurück, wenn das Momentum erfolgreich gesetzt wurde. Gibt false zurück, wenn die übergebene Ressource kein gültiges FANN-Netz ist oder ein anderer Fehler aufgetreten ist.Beispiele
Lern-Momentum für inkrementelles Training setzen
<?php
// Neuronales Netz mit 2 Eingabe-, 3 versteckten und 1 Ausgabe-Neuron erstellen
$ann = fann_create_standard(3, 2, 3, 1);
if ($ann) {
// Trainingsalgorithmus auf inkrementelles Backpropagation setzen
fann_set_training_algorithm($ann, FANN_TRAIN_INCREMENTAL);
// Lernrate und Momentum festlegen
fann_set_learning_rate($ann, 0.7);
fann_set_learning_momentum($ann, 0.9);
// Aktuelles Momentum zur Überprüfung ausgeben
echo "Lern-Momentum: " . fann_get_learning_momentum($ann) . PHP_EOL;
fann_destroy($ann);
} else {
echo "Fehler beim Erstellen des neuronalen Netzes." . PHP_EOL;
}
?>
Momentum während des Trainings dynamisch anpassen
<?php
$ann = fann_create_standard(3, 2, 4, 1);
$train_data = fann_read_train_from_file('training.data');
if ($ann && $train_data) {
fann_set_training_algorithm($ann, FANN_TRAIN_INCREMENTAL);
fann_set_learning_rate($ann, 0.5);
// Training in zwei Phasen: zunächst ohne, dann mit Momentum
fann_set_learning_momentum($ann, 0.0);
echo "Phase 1 – Momentum: " . fann_get_learning_momentum($ann) . PHP_EOL;
fann_train_on_data($ann, $train_data, 500, 10, 0.01);
// Momentum erhöhen für die Feinabstimmung
fann_set_learning_momentum($ann, 0.8);
echo "Phase 2 – Momentum: " . fann_get_learning_momentum($ann) . PHP_EOL;
fann_train_on_data($ann, $train_data, 500, 10, 0.001);
fann_save($ann, 'trained_network.net');
fann_destroy($ann);
fann_destroy_train($train_data);
}
?>
// Wichtig · Fallstricke
Algorithmus-Abhängigkeit: Das Lern-Momentum wird nur beim Trainingsalgorithmus FANN_TRAIN_INCREMENTAL berücksichtigt. Bei RPROP (FANN_TRAIN_RPROP) oder Quickprop (FANN_TRAIN_QUICKPROP) hat dieser Wert keinen Einfluss auf das Training.
Wertebereich: Obwohl Werte außerhalb von 0.0 bis 1.0 technisch akzeptiert werden, können sie zu instabilem Training oder Divergenz führen. Typische Praxiswerte liegen zwischen 0.0 und 0.9.
Erweiterung erforderlich: Diese Funktion steht nur zur Verfügung, wenn die PHP-FANN-Erweiterung installiert und aktiviert ist (extension=fann in der php.ini). Die FANN-Erweiterung gilt als experimentell und wird nicht standardmäßig mit PHP ausgeliefert.