Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Entraînement du Perceptron | Réseau de Neurones à Partir de Zéro
Introduction aux Réseaux de Neurones

bookDéfi : Entraînement du Perceptron

Avant de procéder à l'entraînement du perceptron, il est important de noter qu'il utilise la fonction de perte d'entropie croisée binaire abordée précédemment. Le dernier concept clé avant la mise en œuvre de la rétropropagation est la formule de la dérivée de cette fonction de perte par rapport aux activations de sortie, ana^n. Ci-dessous figurent les formules de la fonction de perte et de sa dérivée :

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

an=y^a^n = \hat{y}

Pour vérifier que le perceptron s'entraîne correctement, la méthode fit() affiche également la perte moyenne à chaque époque. Celle-ci est calculée en faisant la moyenne de la perte sur l'ensemble des exemples d'entraînement de cette époque :

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Enfin, les formules pour le calcul des gradients sont les suivantes :

dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Les données d'entraînement d'exemple (X_train) ainsi que les étiquettes correspondantes (y_train) sont stockées sous forme de tableaux NumPy dans le fichier utils.py. De plus, les instances des fonctions d'activation y sont également définies :

relu = ReLU()
sigmoid = Sigmoid()
Tâche

Swipe to start coding

  1. Calculez les gradients suivants : dz, d_weights, d_biases et da_prev dans la méthode backward() de la classe Layer.
  2. Calculez la output du modèle dans la méthode fit() de la classe Perceptron.
  3. Calculez da (danda^n) avant la boucle, qui correspond au gradient de la perte par rapport aux activations de sortie.
  4. Calculez da et effectuez la rétropropagation dans la boucle en appelant la méthode appropriée pour chacune des couches.

Si l'entraînement est correctement implémenté, avec un taux d'apprentissage de 0.01, la perte doit diminuer progressivement à chaque époque.

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 10
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

Can you explain how the derivative of the binary cross-entropy loss is used in backpropagation?

What is the purpose of printing the average loss at each epoch?

Can you clarify how the gradients are computed using the provided formulas?

close

Awesome!

Completion rate improved to 4

bookDéfi : Entraînement du Perceptron

Glissez pour afficher le menu

Avant de procéder à l'entraînement du perceptron, il est important de noter qu'il utilise la fonction de perte d'entropie croisée binaire abordée précédemment. Le dernier concept clé avant la mise en œuvre de la rétropropagation est la formule de la dérivée de cette fonction de perte par rapport aux activations de sortie, ana^n. Ci-dessous figurent les formules de la fonction de perte et de sa dérivée :

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

an=y^a^n = \hat{y}

Pour vérifier que le perceptron s'entraîne correctement, la méthode fit() affiche également la perte moyenne à chaque époque. Celle-ci est calculée en faisant la moyenne de la perte sur l'ensemble des exemples d'entraînement de cette époque :

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Enfin, les formules pour le calcul des gradients sont les suivantes :

dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Les données d'entraînement d'exemple (X_train) ainsi que les étiquettes correspondantes (y_train) sont stockées sous forme de tableaux NumPy dans le fichier utils.py. De plus, les instances des fonctions d'activation y sont également définies :

relu = ReLU()
sigmoid = Sigmoid()
Tâche

Swipe to start coding

  1. Calculez les gradients suivants : dz, d_weights, d_biases et da_prev dans la méthode backward() de la classe Layer.
  2. Calculez la output du modèle dans la méthode fit() de la classe Perceptron.
  3. Calculez da (danda^n) avant la boucle, qui correspond au gradient de la perte par rapport aux activations de sortie.
  4. Calculez da et effectuez la rétropropagation dans la boucle en appelant la méthode appropriée pour chacune des couches.

Si l'entraînement est correctement implémenté, avec un taux d'apprentissage de 0.01, la perte doit diminuer progressivement à chaque époque.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 10
single

single

some-alt