Signatur
Beschreibung
fann_set_activation_steepness legt die Steilheit (Steepness) der Aktivierungsfunktion für ein einzelnes Neuron in einer bestimmten Schicht eines FANN-Netzes fest. Die Steilheit beeinflusst, wie stark die Aktivierungsfunktion reagiert – ein höherer Wert erzeugt schärfere Übergänge, während ein niedrigerer Wert sanftere Kurven bewirkt.
Die Steilheit wirkt sich direkt auf das Trainingsverhalten aus: Bei einer sigmoiden Aktivierungsfunktion steuert sie, wie steil die S-Kurve ist. Typischerweise liegt der Standardwert bei 0.5. Durch Anpassen der Steilheit kann die Konvergenzgeschwindigkeit des Trainings beeinflusst werden.
Diese Funktion ist nützlich, wenn einzelne Neuronen oder Schichten unterschiedliche Aktivierungscharakteristika benötigen. Für das Setzen der Steilheit für alle Neuronen in einer Schicht steht fann_set_activation_steepness_layer zur Verfügung, für das gesamte Netz fann_set_activation_steepness_hidden bzw. fann_set_activation_steepness_output.
Die FANN-Erweiterung muss installiert und aktiviert sein. Diese Funktion ist Teil der prozeduralen FANN-API; bei der objektorientierten Variante wird FANNConnection bzw. die Methode des FANN-Objekts verwendet.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Netzwerk-Ressource, die zuvor mit fann_create_standard oder einer ähnlichen Funktion erstellt wurde. |
|
| $steepness Pflicht | float | Die gewünschte Steilheit der Aktivierungsfunktion als Gleitkommazahl. Typische Werte liegen zwischen 0.01 und 10.0; der Standardwert in FANN ist 0.5. |
|
| $layer Pflicht | int | Der Index der Schicht (nullbasiert), in der das Neuron liegt. Der Index 0 bezeichnet die Eingabeschicht. |
|
| $neuron Pflicht | int | Der Index des Neurons (nullbasiert) innerhalb der angegebenen Schicht, für das die Steilheit gesetzt werden soll. |
Rückgabewert
true zurück, wenn die Steilheit erfolgreich gesetzt wurde, oder false bei einem Fehler (z. B. ungültige Ressource oder Schicht-/Neuronindex außerhalb des gültigen Bereichs).Beispiele
Aktivierungssteilheit für ein einzelnes Neuron setzen
<?php
// Erstelle ein einfaches vorwärts-gerichtetes Netz: 2 Eingaben, 3 verdeckte Neuronen, 1 Ausgabe
$ann = fann_create_standard(3, 2, 3, 1);
if ($ann) {
// Setze Aktivierungsfunktion auf sigmoid für die verdeckte Schicht
fann_set_activation_function_layer($ann, FANN_SIGMOID, 1);
// Setze Steilheit 1.0 für das zweite Neuron (Index 1) in der verdeckten Schicht (Index 1)
$result = fann_set_activation_steepness($ann, 1.0, 1, 1);
if ($result) {
echo "Aktivierungssteilheit erfolgreich gesetzt." . PHP_EOL;
} else {
echo "Fehler beim Setzen der Aktivierungssteilheit." . PHP_EOL;
}
fann_destroy($ann);
} else {
echo "Fehler beim Erstellen des neuronalen Netzes." . PHP_EOL;
}
?>
Verschiedene Steilheiten für mehrere Neuronen konfigurieren
<?php
// Netz mit Struktur: 3 Eingaben, 4 verdeckte Neuronen, 2 Ausgaben
$ann = fann_create_standard(3, 3, 4, 2);
if ($ann) {
// Aktivierungsfunktionen setzen
fann_set_activation_function_layer($ann, FANN_SIGMOID_SYMMETRIC, 1);
fann_set_activation_function_layer($ann, FANN_SIGMOID, 2);
// Unterschiedliche Steilheiten für jedes Neuron in der verdeckten Schicht (Schicht 1)
$steepnesses = [0.25, 0.5, 0.75, 1.0];
foreach ($steepnesses as $index => $steepness) {
$ok = fann_set_activation_steepness($ann, $steepness, 1, $index);
echo "Neuron $index, Steilheit $steepness: " . ($ok ? 'OK' : 'Fehler') . PHP_EOL;
}
// Steilheit für Ausgabeneuronen
fann_set_activation_steepness($ann, 0.5, 2, 0);
fann_set_activation_steepness($ann, 0.5, 2, 1);
fann_destroy($ann);
}
?>
// Wichtig · Fallstricke
Hinweis zu Schicht-Indizes: Der Index der Eingabeschicht ist 0. Für ein Netz mit einer verdeckten Schicht hat diese den Index 1, die Ausgabeschicht den Index 2. Ein falscher Index führt dazu, dass die Funktion false zurückgibt.
Wahl der Steilheit: Sehr hohe Steilheitswerte können zu Problemen beim Training führen (Vanishing/Exploding Gradients). Es empfiehlt sich, mit dem Standardwert 0.5 zu beginnen und bei Bedarf anzupassen.
Verfügbarkeit: Die FANN-Erweiterung (Fast Artificial Neural Network Library) ist kein Bestandteil des PHP-Kerns und muss separat installiert werden. Ab PHP 8 ist die Unterstützung eingeschränkt; es sollte geprüft werden, ob die Erweiterung für die verwendete PHP-Version verfügbar ist.