Start · Sprachen · PHP · Referenz · fann_get_rprop_increase_factor

fann_get_rprop_increase_factor

Funktion

Gibt den Erhöhungsfaktor zurück, der beim RPROP-Training eines neuronalen Netzes verwendet wird.

Kategorie: misc

Signatur

fann_get_rprop_increase_factor(resource $ann): float

Beschreibung

fann_get_rprop_increase_factor liest den aktuellen Erhöhungsfaktor (increase factor) aus einem neuronalen Netz aus, das mit dem RPROP-Algorithmus (Resilient Backpropagation) trainiert wird. Dieser Faktor bestimmt, um welchen Multiplikator der Gewichts-Update-Schritt vergrößert wird, wenn sich das Vorzeichen des Gradienten gegenüber dem vorherigen Schritt nicht geändert hat.

Beim RPROP-Algorithmus wird nicht die Größe des Gradienten verwendet, sondern ausschließlich sein Vorzeichen. Ändert sich das Vorzeichen nicht (d. h. die Optimierung schreitet in die gleiche Richtung fort), wird der Schrittweite mit dem Erhöhungsfaktor multipliziert, um die Konvergenz zu beschleunigen. Der Standardwert liegt typischerweise bei 1.2.

Die Funktion ist Teil der FANN-Erweiterung (Fast Artificial Neural Network Library) für PHP und wird eingesetzt, wenn man das Trainingsverhalten eines neuronalen Netzes analysieren oder anpassen möchte. Zum Setzen des Faktors dient die Funktion fann_set_rprop_increase_factor.

Ein zu hoher Erhöhungsfaktor kann dazu führen, dass die Schrittweiten sehr schnell anwachsen und die Optimierung instabil wird. Ein zu niedriger Wert verlangsamt das Training. Der Standardwert von 1.2 hat sich in der Praxis als guter Ausgangspunkt bewährt.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine gültige FANN-Ressource, die mit fann_create_standard, fann_create_sparse oder einer ähnlichen Funktion erstellt wurde.

Rückgabewert

Typ
float
Beschreibung
Gibt den aktuellen RPROP-Erhöhungsfaktor als Gleitkommazahl zurück. Im Fehlerfall (z. B. ungültige Ressource) wird false zurückgegeben.

Beispiele

Aktuellen Erhöhungsfaktor auslesen

<?php
// Neuronales Netz mit 2 Eingaben, einer versteckten Schicht (3 Neuronen) und 1 Ausgabe erstellen
$ann = fann_create_standard(3, 2, 3, 1);

if ($ann) {
    // Standardmäßigen Erhöhungsfaktor ausgeben
    $increaseFactor = fann_get_rprop_increase_factor($ann);
    echo "RPROP Erhöhungsfaktor: " . $increaseFactor . PHP_EOL;

    fann_destroy($ann);
} else {
    echo "Fehler beim Erstellen des neuronalen Netzes." . PHP_EOL;
}
?>
RPROP Erhöhungsfaktor: 1.2

Erhöhungsfaktor lesen und anpassen

<?php
$ann = fann_create_standard(3, 2, 4, 1);

if ($ann) {
    $currentFactor = fann_get_rprop_increase_factor($ann);
    echo "Aktueller Erhöhungsfaktor: " . $currentFactor . PHP_EOL;

    // Erhöhungsfaktor leicht erhöhen, um das Training zu beschleunigen
    $newFactor = 1.3;
    fann_set_rprop_increase_factor($ann, $newFactor);

    // Überprüfen, ob der neue Wert gesetzt wurde
    $updatedFactor = fann_get_rprop_increase_factor($ann);
    echo "Neuer Erhöhungsfaktor: " . $updatedFactor . PHP_EOL;

    fann_destroy($ann);
}
?>
Aktueller Erhöhungsfaktor: 1.2 Neuer Erhöhungsfaktor: 1.3

// Wichtig · Fallstricke

Die FANN-Erweiterung muss in PHP aktiviert sein (extension=fann in der php.ini). Sie ist nicht standardmäßig enthalten und muss über PECL installiert werden. Ab PHP 8 kann die Verfügbarkeit dieser Erweiterung eingeschränkt sein – prüfen Sie die Kompatibilität Ihrer PHP-Version mit der installierten FANN-Version.

Der Erhöhungsfaktor sollte stets größer als 1.0 sein, da ein Wert ≤ 1,0 dazu führen würde, dass die Schrittweite nicht wächst oder schrumpft, wenn keine Vorzeichenänderung des Gradienten auftritt. Dies würde das RPROP-Verfahren korrumpieren.