Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Ableitungen von Aktivierungsfunktionen

Berechne die Ableitung von Sigmoid, ReLU, Leaky ReLU oder tanh an jedem Wert, die Steigungen, die Backpropagation braucht.

Das lernst du

  • Steigungen gängiger Aktivierungen berechnen
  • Die Sigmoid-Ausgabe für ihre Ableitung wiederverwenden
  • Die Bausteine für Backpropagation vorbereiten

Problem

Backpropagation multipliziert Gradienten mit der Ableitung jeder Aktivierungsfunktion. Implementiere activation_derivative(name, values) und gib die Ableitung an jedem Wert zurück:

nameAbleitung
"sigmoid"s × (1 - s), wobei s = 1 / (1 + e^(-x))
"relu"1, wenn x > 0, sonst 0
"leaky_relu"1, wenn x > 0, sonst 0.01
"tanh"1 - tanh(x)²

Eingabe

name: Einer der Werte "sigmoid", "relu", "leaky_relu" oder "tanh".

values: Die Eingaben x der Aktivierung.

Ausgabe

Gib die Ableitung an jedem Wert in derselben Reihenfolge zurück.

Einschränkungen

1 ≤ Länge ≤ 1.000

-50 ≤ jeder Wert ≤ 50

Beispiele

Beispiel 1
Eingabe:
name = "sigmoid"
values = [0.0, 2.0]

Erwartete Ausgabe:
expected = [0.25, 0.104994]
Eingabe:
std::string name = "sigmoid";
std::vector<double> values = {0.0, 2.0};

Erwartete Ausgabe:
std::vector<double> expected = {0.25, 0.104994};
Eingabe:
string name = "sigmoid";
double[] values = new double[] {0.0, 2.0};

Erwartete Ausgabe:
double[] expected = new double[] {0.25, 0.104994};

Erläuterung

Bei 0 ist s = 0.5 und die Steigung 0.5 × 0.5 = 0.25, die steilste Stelle der Sigmoidfunktion. Bei 2 ist s ≈ 0.880797 und die Steigung etwa 0.104994.

Beispiel 2
Eingabe:
name = "relu"
values = [-3.0, 0.0, 4.5]

Erwartete Ausgabe:
expected = [0.0, 0.0, 1.0]
Eingabe:
std::string name = "relu";
std::vector<double> values = {-3.0, 0.0, 4.5};

Erwartete Ausgabe:
std::vector<double> expected = {0.0, 0.0, 1.0};
Eingabe:
string name = "relu";
double[] values = new double[] {-3.0, 0.0, 4.5};

Erwartete Ausgabe:
double[] expected = new double[] {0.0, 0.0, 1.0};

Erläuterung

ReLU ist für x ≤ 0 flach (Steigung 0) und hat für x > 0 die Steigung 1, also ist das Ergebnis [0, 0, 1].

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.