Start · Sprachen · PHP · Referenz · fann_set_train_stop_function

fann_set_train_stop_function

Funktion

Setzt die Stoppfunktion, die während des Trainings eines neuronalen Netzes verwendet wird, um zu entscheiden, wann das Training beendet werden soll.

seit PHP 5.0.0 Kategorie: misc

Signatur

fann_set_train_stop_function(resource $ann, int $stop_function): bool

Beschreibung

fann_set_train_stop_function legt fest, nach welchem Kriterium das Training eines neuronalen Netzes abgebrochen wird. Die gewählte Stoppfunktion bestimmt, ob das Training auf Basis des mittleren quadratischen Fehlers (MSE) oder des Bit-Fehlers beendet wird.

Typischerweise wird das Training gestoppt, wenn der berechnete Fehler einen definierten Schwellenwert unterschreitet. Die zwei gebräuchlichsten Konstanten für die Stoppfunktion sind FANN_STOPFUNC_MSE (stoppt basierend auf dem mittleren quadratischen Fehler) und FANN_STOPFUNC_BIT (stoppt basierend auf der Anzahl falsch klassifizierter Bits).

Diese Funktion ist Teil der FANN-Erweiterung (Fast Artificial Neural Network) und wird zusammen mit Funktionen wie fann_train_on_file oder fann_train_on_data eingesetzt. Sie sollte vor Beginn des eigentlichen Trainings aufgerufen werden, um das gewünschte Abbruchverhalten zu konfigurieren.

Die Auswahl der passenden Stoppfunktion hängt vom konkreten Anwendungsfall ab: FANN_STOPFUNC_MSE eignet sich gut für Regressionsprobleme, während FANN_STOPFUNC_BIT bei Klassifikationsaufgaben bevorzugt wird, bei denen eine binäre Ausgabe erwartet wird.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine gültige FANN-Netzwerk-Ressource, wie sie von fann_create_standard oder ähnlichen Funktionen zurückgegeben wird.
$stop_function Pflicht int Die zu verwendende Stoppfunktion. Mögliche Werte: FANN_STOPFUNC_MSE (0) für den mittleren quadratischen Fehler oder FANN_STOPFUNC_BIT (1) für den Bit-Fehler.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, oder false, wenn ein Fehler aufgetreten ist (z. B. wenn die übergebene Ressource ungültig ist).

Beispiele

Training mit MSE-Stoppfunktion konfigurieren

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

if ($ann) {
    // Stoppfunktion auf mittleren quadratischen Fehler setzen
    fann_set_train_stop_function($ann, FANN_STOPFUNC_MSE);

    // Gewünschten maximalen MSE festlegen
    fann_set_train_error_function($ann, FANN_ERRORFUNC_TANH);
    fann_set_training_algorithm($ann, FANN_TRAIN_RPROP);

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

    // Netz speichern
    fann_save($ann, 'netz.net');
    fann_destroy($ann);
} else {
    echo 'Fehler beim Erstellen des neuronalen Netzes.';
}
?>

Training mit Bit-Fehler-Stoppfunktion für Klassifikation

<?php
// Neuronales Netz für binäre Klassifikation erstellen
$ann = fann_create_standard(3, 2, 4, 1);

if ($ann) {
    // Stoppfunktion auf Bit-Fehler setzen (ideal für Klassifikation)
    $result = fann_set_train_stop_function($ann, FANN_STOPFUNC_BIT);

    if ($result) {
        echo 'Stoppfunktion erfolgreich gesetzt: FANN_STOPFUNC_BIT' . PHP_EOL;

        // Bit-Fehler-Schwellenwert setzen (Anzahl erlaubter Fehlklassifikationen)
        fann_set_bit_fail_limit($ann, 0.35);

        // Training durchführen
        fann_train_on_file($ann, 'klassifikation.data', 500, 50, 0.0);
    } else {
        echo 'Fehler beim Setzen der Stoppfunktion.' . PHP_EOL;
    }

    fann_destroy($ann);
}
?>
Stoppfunktion erfolgreich gesetzt: FANN_STOPFUNC_BIT

// Wichtig · Fallstricke

Erweiterung erforderlich: Diese Funktion ist nur verfügbar, wenn die fann-Erweiterung in PHP kompiliert und aktiviert ist. Überprüfen Sie die Verfügbarkeit mit extension_loaded('fann').

Bei der Verwendung von FANN_STOPFUNC_BIT muss zusätzlich ein Schwellenwert mit fann_set_bit_fail_limit definiert werden, da sonst der Standard-Schwellenwert verwendet wird, was möglicherweise nicht dem gewünschten Verhalten entspricht.

Die aktuell gesetzte Stoppfunktion kann mit fann_get_train_stop_function abgefragt werden.