Start · Sprachen · PHP · Referenz · fann_set_training_algorithm

fann_set_training_algorithm

Funktion

Setzt den Trainingsalgorithmus für ein neuronales Netz (FANN-Ressource).

seit PHP 5.0.0 Kategorie: misc

Signatur

fann_set_training_algorithm(resource $ann, int $training_algorithm): bool

Beschreibung

fann_set_training_algorithm legt fest, welcher Algorithmus beim Trainieren eines neuronalen Netzes mit der FANN-Bibliothek (Fast Artificial Neural Network) verwendet wird. Der gewählte Algorithmus beeinflusst maßgeblich die Konvergenzgeschwindigkeit und die Qualität des trainierten Netzes.

Zur Verfügung stehen folgende Konstanten als Wert für training_algorithm:

  • FANN_TRAIN_INCREMENTAL – Inkrementelles (Online-)Training: Gewichte werden nach jedem einzelnen Trainingsmuster aktualisiert.
  • FANN_TRAIN_BATCH – Batch-Training: Gewichte werden erst nach einem vollständigen Durchlauf über alle Trainingsmuster aktualisiert.
  • FANN_TRAIN_RPROP – Resilient Backpropagation (Standardwert): Ein robuster Algorithmus, der in den meisten Fällen gute Ergebnisse liefert.
  • FANN_TRAIN_QUICKPROP – QuickProp: Ein schneller Algorithmus, der eine Annäherung zweiter Ordnung verwendet.
  • FANN_TRAIN_SARPROP – SARProp: Eine Weiterentwicklung von RProp mit adaptiver Lernrate (verfügbar ab FANN 2.2).

Die Wahl des Algorithmus sollte auf die Problemstellung abgestimmt sein. Für die meisten Aufgaben ist FANN_TRAIN_RPROP ein guter Ausgangspunkt. FANN_TRAIN_INCREMENTAL eignet sich besonders für Online-Lernen oder sehr große Datensätze, während FANN_TRAIN_BATCH stabilere Gradienten liefert.

Die Funktion gehört zur FANN-Erweiterung (php-fann), die separat installiert werden muss. Der aktuelle Algorithmus kann mit fann_get_training_algorithm abgefragt werden.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine gültige FANN-Ressource, die zuvor mit Funktionen wie fann_create_standard oder fann_create_from_file erzeugt wurde.
$training_algorithm Pflicht int Eine der FANN-Konstanten für den Trainingsalgorithmus: FANN_TRAIN_INCREMENTAL, FANN_TRAIN_BATCH, FANN_TRAIN_RPROP, FANN_TRAIN_QUICKPROP oder FANN_TRAIN_SARPROP.

Rückgabewert

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

Beispiele

Trainingsalgorithmus auf RPROP setzen und Netz trainieren

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

if ($ann) {
    // Trainingsalgorithmus auf Resilient Backpropagation setzen
    if (fann_set_training_algorithm($ann, FANN_TRAIN_RPROP)) {
        echo "Trainingsalgorithmus erfolgreich gesetzt: ";
        echo fann_get_training_algorithm($ann) . PHP_EOL;
    } else {
        echo "Fehler beim Setzen des Trainingsalgorithmus." . PHP_EOL;
    }

    // Netz mit Trainingsdaten trainieren
    $train_data = fann_read_train_from_file('xor.data');
    if ($train_data) {
        fann_train_on_data($ann, $train_data, 1000, 10, 0.001);
        fann_save($ann, 'xor_trained.net');
        fann_destroy_train($train_data);
    }

    fann_destroy($ann);
}
Trainingsalgorithmus erfolgreich gesetzt: 2

Vergleich verschiedener Trainingsalgorithmen

<?php
$algorithmen = [
    FANN_TRAIN_INCREMENTAL => 'FANN_TRAIN_INCREMENTAL',
    FANN_TRAIN_BATCH       => 'FANN_TRAIN_BATCH',
    FANN_TRAIN_RPROP       => 'FANN_TRAIN_RPROP',
    FANN_TRAIN_QUICKPROP   => 'FANN_TRAIN_QUICKPROP',
];

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

if ($ann) {
    foreach ($algorithmen as $konstante => $name) {
        $ergebnis = fann_set_training_algorithm($ann, $konstante);
        $aktuell  = fann_get_training_algorithm($ann);
        printf(
            "Setze %s: %s (aktuell: %d)\n",
            $name,
            $ergebnis ? 'OK' : 'FEHLER',
            $aktuell
        );
    }
    fann_destroy($ann);
}
Setze FANN_TRAIN_INCREMENTAL: OK (aktuell: 0) Setze FANN_TRAIN_BATCH: OK (aktuell: 1) Setze FANN_TRAIN_RPROP: OK (aktuell: 2) Setze FANN_TRAIN_QUICKPROP: OK (aktuell: 3)

// Wichtig · Fallstricke

Erweiterung erforderlich: Die FANN-Erweiterung ist nicht standardmäßig in PHP enthalten und muss über PECL (pecl install fann) oder die Paketverwaltung des Betriebssystems installiert werden.

Algorithmuswahl: Der Standardalgorithmus ist FANN_TRAIN_RPROP (Wert 2). Dieser sollte als erster Versuch gewählt werden. FANN_TRAIN_QUICKPROP kann bei bestimmten Problemen schneller konvergieren, ist aber empfindlicher gegenüber den gewählten Lernparametern.

Lernparameter anpassen: Nach dem Wechsel des Algorithmus sollten die zugehörigen Lernparameter (z. B. Lernrate via fann_set_learning_rate) überprüft und ggf. angepasst werden, da unterschiedliche Algorithmen andere optimale Parameterwerte benötigen.