Signatur
Beschreibung
fann_set_activation_steepness_hidden legt die Steilheit (Steepness) der Aktivierungsfunktion für sämtliche Neuronen aller verdeckten Schichten (Hidden Layers) eines Künstlichen Neuronalen Netzes fest, das mit der FANN-Bibliothek (Fast Artificial Neural Network) erstellt wurde.
Die Aktivierungssteilheit bestimmt, wie stark die Aktivierungsfunktion auf ihre Eingabe reagiert. Ein höherer Steilheitswert führt zu einer steileren Kurve der Aktivierungsfunktion, was das Netz sensibler gegenüber kleinen Eingabeunterschieden macht. Typische Werte liegen im Bereich von 0.1 bis 1.0, wobei 0.5 ein verbreiteter Standardwert ist.
Diese Funktion beeinflusst ausschließlich die verdeckten Schichten – die Ausgabeschicht bleibt unverändert. Soll die Steilheit nur für einzelne Neuronen oder Schichten geändert werden, können die Funktionen fann_set_activation_steepness bzw. fann_set_activation_steepness_layer verwendet werden.
Die korrekte Wahl der Aktivierungssteilheit zusammen mit der passenden Aktivierungsfunktion (fann_set_activation_function_hidden) hat großen Einfluss auf die Konvergenzgeschwindigkeit und Qualität des Trainings.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine FANN-Neuronales-Netz-Ressource, wie sie von fann_create_standard oder einer ähnlichen Funktion erzeugt wurde. |
|
| $steepness Pflicht | float | Der Steilheitswert der Aktivierungsfunktion für alle Neuronen aller verdeckten Schichten. Typische Werte liegen zwischen 0.1 und 1.0. |
Rückgabewert
true zurück, wenn die Steilheit erfolgreich gesetzt wurde, andernfalls false (z. B. wenn die Ressource ungültig ist).Beispiele
Einfaches Netz mit gesetzter Aktivierungssteilheit für verdeckte Schichten
<?php
// Netz mit 2 Eingängen, 1 verdeckter Schicht (3 Neuronen) und 1 Ausgang erstellen
$ann = fann_create_standard(3, 2, 3, 1);
if ($ann) {
// Aktivierungsfunktion für verdeckte Schichten setzen (Sigmoid)
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
// Steilheit der Aktivierungsfunktion für alle verdeckten Schichten setzen
$result = fann_set_activation_steepness_hidden($ann, 0.5);
if ($result) {
echo "Aktivierungssteilheit erfolgreich gesetzt." . PHP_EOL;
} else {
echo "Fehler beim Setzen der Aktivierungssteilheit." . PHP_EOL;
}
fann_destroy($ann);
}
?>
Trainings-Setup mit angepasster Steilheit für bessere Konvergenz
<?php
// Netz erstellen: 3 Eingänge, 2 verdeckte Schichten (je 5 Neuronen), 1 Ausgang
$ann = fann_create_standard(4, 3, 5, 5, 1);
if ($ann) {
// Aktivierungsfunktionen setzen
fann_set_activation_function_hidden($ann, FANN_SIGMOID);
fann_set_activation_function_output($ann, FANN_LINEAR);
// Höhere Steilheit für schnellere Reaktion auf Eingaben
fann_set_activation_steepness_hidden($ann, 0.8);
fann_set_activation_steepness_output($ann, 1.0);
// Lernrate setzen und Training starten
fann_set_learning_rate($ann, 0.7);
if (fann_train_on_file($ann, 'trainingsdaten.data', 1000, 100, 0.001)) {
echo "Training abgeschlossen." . PHP_EOL;
fann_save($ann, 'netz_trained.net');
}
fann_destroy($ann);
}
?>
// Wichtig · Fallstricke
Hinweis zur FANN-Erweiterung: Die FANN-Funktionen sind nur verfügbar, wenn die PHP-Erweiterung php-fann installiert und aktiviert ist. Diese Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat installiert werden.
Ein zu hoher Steilheitswert kann dazu führen, dass das Netz in lokalen Minima stecken bleibt oder beim Training instabil wird (Überschwingen). Ein zu niedriger Wert kann das Training unnötig verlangsamen. Experimentierten Sie mit Werten im Bereich 0.1–1.0 für optimale Ergebnisse.
Soll die Steilheit nur für eine bestimmte Schicht gesetzt werden, verwenden Sie fann_set_activation_steepness_layer. Für einzelne Neuronen steht fann_set_activation_steepness zur Verfügung.