Signatur
Beschreibung
fann_set_learning_rate() legt die Lernrate (engl. learning rate) für ein mit der FANN-Erweiterung (Fast Artificial Neural Network) erstelltes neuronales Netz fest. Die Lernrate steuert, wie stark die Gewichte des Netzes bei jedem Trainingsschritt angepasst werden.
Eine hohe Lernrate führt zu schnellerem Training, kann aber dazu führen, dass das Netz über das Optimum hinausschießt und instabil wird. Eine zu niedrige Lernrate macht das Training langsamer und kann in lokalen Minima stecken bleiben. Typische Werte liegen zwischen 0.01 und 0.7, abhängig vom Trainingsalgorithmus und der Netzarchitektur.
Die Lernrate wird primär beim Standard-Backpropagation-Training verwendet. Bei anderen Trainingsalgorithmen wie RPROP (Resilient Backpropagation) spielt sie eine untergeordnete oder keine Rolle. Mit fann_get_learning_rate() lässt sich der aktuell gesetzte Wert auslesen.
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() erstellt wurde. |
|
| $learning_rate Pflicht | float | Der neue Wert der Lernrate als Gleitkommazahl. Typische Werte liegen im Bereich 0.01 bis 0.7. Der Standardwert nach der Netzerstellung beträgt 0.7. |
Rückgabewert
true zurück, wenn die Lernrate erfolgreich gesetzt wurde, oder false im Fehlerfall (z. B. wenn ann keine gültige FANN-Ressource ist).Beispiele
Lernrate vor dem Training setzen
<?php
// Erstelle ein neuronales Netz mit 3 Schichten: 2 Eingabe-, 3 versteckte und 1 Ausgabeneuron
$ann = fann_create_standard(3, 2, 3, 1);
if ($ann) {
// Setze die Lernrate auf einen moderaten Wert
if (fann_set_learning_rate($ann, 0.5)) {
echo 'Lernrate erfolgreich gesetzt: ' . fann_get_learning_rate($ann) . PHP_EOL;
} else {
echo 'Fehler beim Setzen der Lernrate.' . PHP_EOL;
}
fann_destroy($ann);
}
Lernrate dynamisch während des Trainings anpassen
<?php
$ann = fann_create_standard(3, 2, 4, 1);
if ($ann) {
$train_data = fann_read_train_from_file('xor.data');
// Starte mit einer höheren Lernrate und reduziere sie nach der Hälfte der Epochen
fann_set_learning_rate($ann, 0.7);
fann_train_on_data($ann, $train_data, 500, 100, 0.001);
// Feinabstimmung mit niedrigerer Lernrate
fann_set_learning_rate($ann, 0.1);
fann_train_on_data($ann, $train_data, 500, 100, 0.0001);
echo 'Aktuelle Lernrate nach Feinabstimmung: ' . fann_get_learning_rate($ann) . PHP_EOL;
fann_save($ann, 'trained_net.net');
fann_destroy_train($train_data);
fann_destroy($ann);
}
// Wichtig · Fallstricke
Trainingsalgorithmus beachten: Die Lernrate hat nur beim Standard-Backpropagation-Algorithmus (FANN_TRAIN_BACKPROP) und beim Batch-Backpropagation eine direkte Wirkung. Bei RPROP (FANN_TRAIN_RPROP) wird die Lernrate intern adaptiv angepasst und der gesetzte Wert wird ignoriert.
FANN-Erweiterung: Die FANN-Funktionen sind nur verfügbar, wenn PHP mit der fann-Erweiterung kompiliert oder als Modul geladen wurde. Seit PHP 8.x ist die Unterstützung über PECL zu beziehen.