Start · Sprachen · PHP · Referenz · fann_set_rprop_delta_zero

fann_set_rprop_delta_zero

Funktion

Setzt die anfängliche Schrittweite (Delta Zero) für den RPROP-Trainingsalgorithmus eines neuronalen Netzes.

seit PHP 5.0.0 Kategorie: misc

Signatur

fann_set_rprop_delta_zero(resource $ann, float $rprop_delta_zero): bool

Beschreibung

fann_set_rprop_delta_zero legt den Startwert der Schrittweite für den RPROP-Algorithmus (Resilient Backpropagation) fest. Dieser Wert bestimmt, wie groß die Gewichtsänderungen zu Beginn des Trainings sind, bevor die adaptiven Anpassungen des RPROP-Algorithmus greifen.

Der RPROP-Algorithmus passt die Schrittweite während des Trainings dynamisch an, indem er sie erhöht oder verringert, abhängig davon, ob der Gradient sein Vorzeichen beibehält oder wechselt. Der Delta Zero-Wert gibt dabei die initiale Schrittweite vor, von der aus diese Anpassung startet.

Ein zu kleiner Startwert kann das Training verlangsamen, da mehr Iterationen benötigt werden, um eine effektive Schrittweite zu erreichen. Ein zu großer Wert kann anfänglich zu Instabilität führen. Der Standardwert in der FANN-Bibliothek beträgt typischerweise 0.1.

Diese Funktion ist nur relevant, wenn als Trainingsalgorithmus FANN_TRAIN_RPROP verwendet wird. Sie sollte vor dem eigentlichen Training mit fann_train_on_data oder fann_train_on_file aufgerufen werden.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine gültige FANN-Ressource, die mit fann_create_standard, fann_create_sparse oder fann_create_shortcut erzeugt wurde.
$rprop_delta_zero Pflicht float Die anfängliche Schrittweite (Delta Zero) für den RPROP-Algorithmus. Muss ein positiver Gleitkommawert sein. Typischer Standardwert ist 0.1.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Wert erfolgreich gesetzt wurde, oder false im Fehlerfall (z. B. wenn eine ungültige FANN-Ressource übergeben wurde).

Beispiele

Anfängliche RPROP-Schrittweite vor dem Training setzen

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

if ($ann) {
    // RPROP als Trainingsalgorithmus festlegen
    fann_set_training_algorithm($ann, FANN_TRAIN_RPROP);

    // Anfängliche Schrittweite auf 0.05 setzen (kleiner als Standard)
    $result = fann_set_rprop_delta_zero($ann, 0.05);

    if ($result) {
        echo "Delta Zero erfolgreich gesetzt: " . fann_get_rprop_delta_zero($ann) . PHP_EOL;
    } else {
        echo "Fehler beim Setzen von Delta Zero." . PHP_EOL;
    }

    // Training starten
    fann_train_on_file($ann, 'trainingsdaten.data', 1000, 10, 0.001);

    fann_destroy($ann);
} else {
    echo "Fehler beim Erstellen des neuronalen Netzes." . PHP_EOL;
}
?>
Delta Zero erfolgreich gesetzt: 0.05

RPROP-Parameter vergleichen und anpassen

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

if ($ann) {
    fann_set_training_algorithm($ann, FANN_TRAIN_RPROP);

    // Aktuelle Werte ausgeben
    echo "Standard Delta Zero: " . fann_get_rprop_delta_zero($ann) . PHP_EOL;
    echo "Standard Delta Min:  " . fann_get_rprop_delta_min($ann) . PHP_EOL;
    echo "Standard Delta Max:  " . fann_get_rprop_delta_max($ann) . PHP_EOL;

    // Angepasste Werte setzen
    fann_set_rprop_delta_zero($ann, 0.2);
    fann_set_rprop_delta_min($ann, 0.0);
    fann_set_rprop_delta_max($ann, 50.0);

    echo "Neuer Delta Zero: " . fann_get_rprop_delta_zero($ann) . PHP_EOL;

    fann_destroy($ann);
}
?>
Standard Delta Zero: 0.1 Standard Delta Min: 0 Standard Delta Max: 50 Neuer Delta Zero: 0.2

// Wichtig · Fallstricke

Hinweis: Diese Funktion steht nur zur Verfügung, wenn die FANN-Bibliothek (Fast Artificial Neural Network) installiert und die PHP-FANN-Erweiterung aktiviert ist. Sie ist nicht Teil der Standard-PHP-Distribution.

Der Wert für rprop_delta_zero muss positiv sein und sollte zwischen rprop_delta_min und rprop_delta_max liegen, um ein sinnvolles Trainingsverhalten zu gewährleisten. Werte außerhalb dieses Bereichs können zu unerwartetem Trainingsverhalten führen.

Die FANN-PHP-Erweiterung gilt als weitgehend nicht mehr aktiv gepflegt. Für neue Projekte sollte geprüft werden, ob alternative Bibliotheken (z. B. über FFI oder andere ML-Pakete) besser geeignet sind.