Signatur
Beschreibung
Die Funktion fann_set_rprop_decrease_factor legt den Faktor fest, um den die Schrittweite (Step Size) beim RPROP-Algorithmus (Resilient Backpropagation) verringert wird, wenn sich das Vorzeichen des Gradienten im Vergleich zum vorherigen Schritt geändert hat. Ein Vorzeichenwechsel deutet darauf hin, dass das Minimum übersprungen wurde, weshalb die Schrittweite reduziert werden muss.
Der Standardwert für den Verringerungsfaktor beträgt 0.5. Typischerweise liegt ein sinnvoller Wert im Bereich 0.0 bis 1.0. Ein kleinerer Wert führt zu einer aggressiveren Reduktion der Schrittweite und kann die Konvergenzstabilität verbessern, während ein zu kleiner Wert das Training verlangsamen kann.
RPROP ist ein adaptives Lernverfahren, das die Schrittweiten für jeden Gewichtungsparameter individuell anpasst. Neben dem Verringerungsfaktor existiert ein Erhöhungsfaktor (fann_set_rprop_increase_factor), der greift, wenn der Gradient das gleiche Vorzeichen wie im vorherigen Schritt hat. Beide Faktoren zusammen steuern die Dynamik des Lernprozesses maßgeblich.
Diese Funktion ist Teil der FANN-Erweiterung (Fast Artificial Neural Network) und erfordert, dass PHP mit der entsprechenden FANN-Bibliothek kompiliert wurde.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Netzwerk-Ressource, die zuvor mit Funktionen wie fann_create_standard() erstellt wurde. |
|
| $rprop_decrease_factor Pflicht | float | Der Verringerungsfaktor als Gleitkommazahl. Der Standardwert ist 0.5. Sinnvolle Werte liegen zwischen 0.0 (exklusiv) und 1.0 (exklusiv). |
Rückgabewert
true zurück, wenn der Faktor erfolgreich gesetzt wurde, andernfalls false (z. B. bei einer ungültigen Netzwerk-Ressource).Beispiele
RPROP-Verringerungsfaktor setzen und Netz trainieren
<?php
// Neuronales Netz erstellen: 2 Eingaben, 1 versteckte Schicht mit 3 Neuronen, 1 Ausgabe
$ann = fann_create_standard(3, 2, 3, 1);
if ($ann) {
// Standardwert des Verringerungsfaktors ausgeben
$current = fann_get_rprop_decrease_factor($ann);
echo "Aktueller Verringerungsfaktor: " . $current . PHP_EOL;
// Neuen Verringerungsfaktor setzen (etwas konservativer als Standard)
if (fann_set_rprop_decrease_factor($ann, 0.4)) {
echo "Verringerungsfaktor erfolgreich auf 0.4 gesetzt." . PHP_EOL;
} else {
echo "Fehler beim Setzen des Verringerungsfaktors." . PHP_EOL;
}
// Trainingsalgorithmus auf RPROP setzen
fann_set_training_algorithm($ann, FANN_TRAIN_RPROP);
// Training mit Trainingsdaten-Datei
// fann_train_on_file($ann, 'training_data.data', 1000, 10, 0.001);
fann_destroy($ann);
} else {
echo "Fehler beim Erstellen des neuronalen Netzes." . PHP_EOL;
}
Vergleich verschiedener Verringerungsfaktoren
<?php
// Verschiedene Verringerungsfaktoren testen
$faktoren = [0.3, 0.5, 0.7];
foreach ($faktoren as $faktor) {
$ann = fann_create_standard(3, 2, 4, 1);
if ($ann) {
fann_set_training_algorithm($ann, FANN_TRAIN_RPROP);
fann_set_rprop_decrease_factor($ann, $faktor);
$gesetzt = fann_get_rprop_decrease_factor($ann);
echo "Verringerungsfaktor gesetzt: " . $gesetzt . PHP_EOL;
fann_destroy($ann);
}
}
// Wichtig · Fallstricke
Hinweis: Diese Funktion hat nur Auswirkung, wenn als Trainingsalgorithmus FANN_TRAIN_RPROP verwendet wird. Bei anderen Algorithmen wie FANN_TRAIN_BACKPROP oder FANN_TRAIN_QUICKPROP wird dieser Parameter ignoriert.
Ein Verringerungsfaktor von 0.0 würde die Schrittweite komplett auf null reduzieren und das Training zum Stillstand bringen. Werte größer oder gleich 1.0 sind ebenfalls nicht sinnvoll, da die Schrittweite in diesem Fall nicht verringert würde. Empfohlen werden Werte im Bereich 0.3 bis 0.7.
Die FANN-Extension ist nicht Teil des PHP-Kerns und muss separat installiert werden. Ab PHP 8.0 ist die Unterstützung möglicherweise eingeschränkt — überprüfe die Kompatibilität deiner FANN-Extension-Version.