Tous les défis
Facile 0 résolus 0 % de réussite

Dérivées des fonctions d'activation

Calculez la dérivée de sigmoid, ReLU, Leaky ReLU ou tanh en chaque valeur, les pentes dont la rétropropagation a besoin.

Ce que vous allez apprendre

  • Calculer les pentes des activations courantes
  • Réutiliser la sortie de la sigmoïde pour sa dérivée
  • Préparer les éléments dont la rétropropagation a besoin

Problème

La rétropropagation multiplie les gradients par la dérivée de chaque fonction d'activation. Implémentez activation_derivative(name, values) et renvoyez la dérivée en chaque valeur :

nameDérivée
"sigmoid"s × (1 - s), où s = 1 / (1 + e^(-x))
"relu"1 si x > 0, sinon 0
"leaky_relu"1 si x > 0, sinon 0.01
"tanh"1 - tanh(x)²

Entrée

name : L'une des valeurs "sigmoid", "relu", "leaky_relu" ou "tanh".

values : Les entrées x de l'activation.

Sortie

Renvoyez la dérivée en chaque valeur, dans le même ordre.

Contraintes

1 ≤ longueur ≤ 1 000

-50 ≤ chaque valeur ≤ 50

Exemples

Exemple 1
Entrée :
name = "sigmoid"
values = [0.0, 2.0]

Sortie attendue :
expected = [0.25, 0.104994]
Entrée :
std::string name = "sigmoid";
std::vector<double> values = {0.0, 2.0};

Sortie attendue :
std::vector<double> expected = {0.25, 0.104994};
Entrée :
string name = "sigmoid";
double[] values = new double[] {0.0, 2.0};

Sortie attendue :
double[] expected = new double[] {0.25, 0.104994};

Explication

En 0, s = 0.5 et la pente vaut 0.5 × 0.5 = 0.25, le point le plus raide de la sigmoïde. En 2, s ≈ 0.880797 et la pente vaut environ 0.104994.

Exemple 2
Entrée :
name = "relu"
values = [-3.0, 0.0, 4.5]

Sortie attendue :
expected = [0.0, 0.0, 1.0]
Entrée :
std::string name = "relu";
std::vector<double> values = {-3.0, 0.0, 4.5};

Sortie attendue :
std::vector<double> expected = {0.0, 0.0, 1.0};
Entrée :
string name = "relu";
double[] values = new double[] {-3.0, 0.0, 4.5};

Sortie attendue :
double[] expected = new double[] {0.0, 0.0, 1.0};

Explication

ReLU est plate pour x ≤ 0 (pente 0) et a une pente de 1 pour x > 0, donc le résultat est [0, 0, 1].

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.