Start · Sprachen · PHP · Referenz · fann_set_quickprop_decay

fann_set_quickprop_decay

Funktion

Setzt den Quickprop-Decay-Faktor für ein neuronales Netz, der das Gewichtswachstum während des Trainings begrenzt.

seit PHP 5.0.0 Kategorie: misc

Signatur

fann_set_quickprop_decay(resource $ann, float $quickprop_decay): bool

Beschreibung

fann_set_quickprop_decay legt den sogenannten Quickprop-Decay-Faktor für ein mit der FANN-Erweiterung (Fast Artificial Neural Network) erstelltes neuronales Netz fest. Der Decay-Faktor wirkt als kleiner negativer Wert, der bei jedem Trainingsschritt auf die Gewichte angewendet wird und so verhindert, dass die Gewichte unbegrenzt wachsen (Regularisierung).

Quickprop ist ein schneller Optimierungsalgorithmus für neuronale Netze, der auf einer quadratischen Näherung der Fehlerkovarianz basiert. Der Decay-Wert entspricht einem L2-Regularisierungsterm: Er wird mit dem aktuellen Gewicht multipliziert und zum Gradienten addiert, wodurch große Gewichte effektiv bestraft werden.

Typische Werte für den Quickprop-Decay liegen im negativen Bereich zwischen -0.0001 und -0.001. Ein Wert von 0.0 deaktiviert den Decay-Effekt vollständig. Die Standardeinstellung in FANN ist -0.0001.

Diese Funktion ist Teil der FANN-PHP-Erweiterung und setzt voraus, dass diese installiert und aktiviert ist. Sie ist nur relevant, wenn als Trainingsalgorithmus FANN_TRAIN_QUICKPROP verwendet wird.

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.
$quickprop_decay Pflicht float Der neue Quickprop-Decay-Faktor. Typischerweise ein kleiner negativer Wert wie -0.0001. Ein Wert von 0.0 deaktiviert den Decay.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Wert erfolgreich gesetzt wurde, andernfalls false (z. B. wenn $ann keine gültige FANN-Ressource ist).

Beispiele

Quickprop-Decay für ein neuronales Netz setzen

<?php
// Neuronales Netz mit 2 Eingabe-, 3 Hidden- und 1 Ausgabeneuron erstellen
$ann = fann_create_standard(3, 2, 3, 1);

if ($ann) {
    // Trainingsalgorithmus auf Quickprop setzen
    fann_set_training_algorithm($ann, FANN_TRAIN_QUICKPROP);

    // Quickprop-Decay-Faktor setzen
    $result = fann_set_quickprop_decay($ann, -0.0001);

    if ($result) {
        echo "Quickprop-Decay erfolgreich gesetzt: " . fann_get_quickprop_decay($ann) . PHP_EOL;
    } else {
        echo "Fehler beim Setzen des Quickprop-Decay-Faktors." . PHP_EOL;
    }

    fann_destroy($ann);
}
Quickprop-Decay erfolgreich gesetzt: -0.0001

Vergleich verschiedener Decay-Werte beim Training

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

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

    // Stärkeren Decay setzen, um Overfitting zu reduzieren
    $decayValues = [0.0, -0.0001, -0.0005, -0.001];

    foreach ($decayValues as $decay) {
        fann_set_quickprop_decay($ann, $decay);
        $current = fann_get_quickprop_decay($ann);
        echo "Gesetzter Decay: {$decay} | Aktueller Decay: {$current}" . PHP_EOL;
    }

    fann_destroy($ann);
}
Gesetzter Decay: 0 | Aktueller Decay: 0 Gesetzter Decay: -0.0001 | Aktueller Decay: -0.0001 Gesetzter Decay: -0.0005 | Aktueller Decay: -0.0005 Gesetzter Decay: -0.001 | Aktueller Decay: -0.001

// Wichtig · Fallstricke

Hinweis: fann_set_quickprop_decay hat nur Auswirkungen, wenn der Trainingsalgorithmus auf FANN_TRAIN_QUICKPROP gesetzt ist. Bei anderen Algorithmen wie FANN_TRAIN_RPROP oder FANN_TRAIN_BACKPROP wird dieser Wert ignoriert.

Zu starke Decay-Werte (z. B. -0.01 oder kleiner) können das Lernen des Netzes behindern und dazu führen, dass Gewichte gegen null gezogen werden, was die Repräsentationsfähigkeit des Netzes verschlechtert. Es empfiehlt sich, mit dem Standardwert -0.0001 zu beginnen und diesen bei Bedarf anzupassen.

Die FANN-Erweiterung ist ab PHP 5 verfügbar, wird jedoch nicht standardmäßig mitgeliefert und muss separat installiert werden (pecl install fann).