Signatur
Beschreibung
fann_set_train_error_function legt fest, welche Fehlerfunktion (auch Kostenfunktion genannt) beim Training eines neuronalen Netzes mit der FANN-Bibliothek (Fast Artificial Neural Network) eingesetzt wird. Die Wahl der Fehlerfunktion beeinflusst direkt, wie die Abweichung zwischen dem tatsächlichen Netzausgang und dem gewünschten Zielwert berechnet und minimiert wird.
Verfügbare Fehlerfunktionen werden über vordefinierte Konstanten angegeben. FANN_ERRORFUNC_LINEAR berechnet den mittleren quadratischen Fehler (MSE), während FANN_ERRORFUNC_TANH eine Tangens-Hyperbolicus-basierte Fehlerfunktion verwendet, die robuster gegenüber Ausreißern ist und häufig bei Klassifikationsproblemen bessere Ergebnisse liefert.
Die Funktion sollte vor dem eigentlichen Trainingsdurchlauf aufgerufen werden – idealerweise nach dem Erstellen des Netzes und dem Laden der Trainingsdaten, aber vor dem Aufruf von fann_train_on_data oder ähnlichen Trainingsfunktionen. Eine falsch gewählte Fehlerfunktion kann die Konvergenz verlangsamen oder zu suboptimalen Ergebnissen führen.
- FANN_ERRORFUNC_LINEAR: Standardmäßiger mittlerer quadratischer Fehler, geeignet für Regressionsprobleme.
- FANN_ERRORFUNC_TANH: Empfohlen bei Klassifikationsproblemen; robuster gegenüber Ausreißern im Datensatz.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Netzressource, die zuvor mit fann_create_standard, fann_create_sparse oder einer ähnlichen Funktion erstellt wurde. |
|
| $error_function Pflicht | int | Die zu verwendende Fehlerfunktion, angegeben als FANN-Konstante. Mögliche Werte: FANN_ERRORFUNC_LINEAR (mittlerer quadratischer Fehler) oder FANN_ERRORFUNC_TANH (Tangens-Hyperbolicus-Fehler). |
Rückgabewert
true zurück, wenn die Fehlerfunktion erfolgreich gesetzt wurde. Bei einem Fehler (z. B. ungültige Netzressource oder ungültiger Konstantenwert) wird false zurückgegeben.Beispiele
Fehlerfunktion vor dem Training setzen
<?php
// Neuronales Netz mit 2 Eingabe-, 3 versteckten und 1 Ausgabeneuron erstellen
$ann = fann_create_standard(3, 2, 3, 1);
if ($ann) {
// Tanh-Fehlerfunktion setzen (geeignet für Klassifikation)
if (fann_set_train_error_function($ann, FANN_ERRORFUNC_TANH)) {
echo "Fehlerfunktion erfolgreich gesetzt." . PHP_EOL;
} else {
echo "Fehler beim Setzen der Fehlerfunktion." . PHP_EOL;
}
// Trainingsdaten laden und Training starten
$train_data = fann_read_train_from_file('training.data');
if ($train_data) {
fann_train_on_data($ann, $train_data, 500, 10, 0.001);
fann_save($ann, 'trained_network.net');
fann_destroy_train($train_data);
}
fann_destroy($ann);
}
Aktuelle Fehlerfunktion abfragen und ändern
<?php
$ann = fann_create_standard(3, 2, 4, 1);
if ($ann) {
// Aktuelle Fehlerfunktion auslesen
$current = fann_get_train_error_function($ann);
echo "Aktuelle Fehlerfunktion: " . $current . PHP_EOL;
// Auf lineare Fehlerfunktion (MSE) wechseln
fann_set_train_error_function($ann, FANN_ERRORFUNC_LINEAR);
echo "Neue Fehlerfunktion: " . fann_get_train_error_function($ann) . PHP_EOL;
fann_destroy($ann);
}
// Wichtig · Fallstricke
Erweiterung erforderlich: Diese Funktion setzt die installierte und aktivierte fann-PHP-Erweiterung voraus. Die FANN-Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat installiert werden (z. B. via PECL: pecl install fann).
Trainingsauswirkungen: Die Wahl zwischen FANN_ERRORFUNC_LINEAR und FANN_ERRORFUNC_TANH sollte wohlüberlegt sein. FANN_ERRORFUNC_TANH eignet sich besonders bei verrauschten Daten und Klassifikationsaufgaben, da sie Ausreißer weniger stark gewichtet. Für Regressionsprobleme mit gleichmäßig verteilten Fehlern ist FANN_ERRORFUNC_LINEAR häufig die bessere Wahl.
Kompatibilität: Ab PHP 8.0 ist die FANN-Erweiterung möglicherweise nicht mehr aktiv gepflegt. Prüfe die PECL-Kompatibilität mit deiner PHP-Version, bevor du die Erweiterung in Produktivumgebungen einsetzt.