Artificial Neural Network Règles de la chaine pour le calcul du gradient :
-
∂C/∂A(2) = 2 * (A(2) - Y) / Nout
-
∂C/∂Z(2) = ∂C/∂A(2) * ∂A(2)/∂Z(2)
∂C/∂Z(2) = ∂C/∂A(2) * σ'(Z(2)) ∂C/∂Z(2) = ∂C/∂A(2) * σ(Z(2)) * (1-σ(Z(2))) ∂C/∂Z(2) = ∂C/∂A(2) * A(2) * (1 - A(2)) -
∂C/∂W(2) = ∂C/∂Z(2) * ∂Z(2)/∂W(2) ∂C/∂W(2) = ∂C/∂Z(2) * A(1)
-
∂C/∂B(2) = ∂C/∂Z(2) * ∂Z(2)/∂B(2) ∂C/∂B(2) = sum(∂C/∂Z(2), axis=0)
-
∂C/∂A(1) = ∂C/∂Z(2) * ∂Z(2)/∂A(1) ∂C/∂A(1) = ∂C/∂Z(2) * W(2)
-
∂C/∂Z(1) = ∂C/∂A(1) * σ'(Z(1)) ∂C/∂Z(1) = ∂C/∂A(1) * A(1) * (1 - A(1))
-
∂C/∂W(1) = ∂C/∂Z(1) * A(0)
-
∂C/∂B(1) = sum(∂C/∂Z(1), axis=0)
En analysant le graphique knn, on peut voir que le maximum de précision est obtenu pour k = 1, ce qui parait logique puisque chaque point prendra alors son propre label. L'autre pic de précision se situe aux alentours de k=7. On privilégiera donc ces valeurs afin d'obtenir la meilleure précision possible. On voit que le temps d'éxécution pour les différentes valeurs de k reste stable autour de 28s.
En analysant le graphique mlp, on observe que la précision augmente de 10% au début de l'apprentissage jusqu'à 18% à la fin. Notre modèle apprend correctement sur les données d'entrainement.