Blog

Part 7 : Comment un réseau de neurones mesure et apprend de ces erreurs

Cet article fait partie d’une série d’articles qui vous permettra de comprendre étape par étape comment fonctionne l’intelligence artificielle et plus particulièrement les réseaux de neurones.

Je vous invite à lire, si vous ne l’avez pas déjà fait, les articles précédents :

Part 1 : Les réseaux de neurones artificielles

Part 2 : Comment fonctionne le Perceptron

Part 3 : Comment les réseaux de neurones prennent des décisions

Part 4 : Qu’appelle t-on apprentissage automatique

Part 5 : Les réseaux de neurones : la fonction d’activation sigmoide

Part 6 : L’architecture des réseaux de neurones


Maintenant que nous savons comment construire un réseau de neurones (architecture par couches avec des neurones (perceptrons ou sigmoides)).

Comment un réseau de neurones peut-il être en mesure d’apprendre??

La première chose dont nous allons avoir besoin est un jeu de donnée (data set) afin d’apprendre à partir d’un jeu d’entraînement (training data set).

Nous utiliserons ensuite un jeu de test (test data) pour comparer le résultat prédit par le réseau de neurones intelligent et le jeu de test. Ainsi, dès lors ou vous avez un jeu de donnée à disposition, vous pouvez créer avec 2 datasets :

  • 1 jeu d’entraînement : qui sera utilisé lors de l’apprentissage par le réseau.
  • 1 jeu de test : Pour tester si votre réseau a bien appris.

Il est primordial que le jeu de test ne contienne pas les mêmes données utilisées par le réseau lors de son apprentissage, sinon le résultat sera biaisé, le réseau connaîtra toutes les réponses.

Nous utiliserons la notation x pour parler d’une donnée d’entrée à présent (quelque soit le data set).

Nous utiliserons désormais la sortie désirée du réseau de neurone par : y=y(x).

Ce que nous aimerions est un algorithme capable de trouver les poids (weights) et seuils (biases) afin d’approximer la bonne valeur de sortie y(x) en fonction de toutes les variables d’entrées x (inputs data).

 

La fonction de coût d’un réseau de neurones : loss function

Afin de quantifier et mesurer la pertinence et du coup le taux d’erreur du réseau intelligent, nous avons désormais besoin de ce que l’on appelle une fonction de coût ou de perte (“loss or cost function” en anglais). Cette fonction permettra ainsi au réseau de se dire, “tiens je peux mieux faire”, “super, j’ai de meilleurs résultats” et de mesurer sa performance par lui-même. Encore une fois, c’est le même principe que pour des enfants, pour apprendre, ils ont besoin d’être conscients lorsqu’ils font des erreurs ou qu’au contraire, ils arrivent à résoudre leurs problèmes et trouver la bonne réponse.

Nous appellerons la fonction coût par la lettre C :

C(w,b)≡1/2n*∑x||y(x)−a||^2

fonction-coût

Dans cette formule de calcul de la fonction coût C, “w” représente la liste de tous les poids (weights) dans le réseau et “b”, tous les seuils (biases), “n” est le nombre total des variables d’entrées et “a” est le vecteur de sorties du réseau de neurones (les réponses prédites/proposées par le réseau) et “x” reste les variables d’entrées et la somme effectuée dans l’équation est réalisée sur toutes les variables d’entrées.

Enfin, la notation ||V|| correspond à la taille d’un vecteur V.

Nous appellerons C la fonction coût quadratique (quadratic cost function) qui est également appelée parfois la MSE (Mean Squared Error).

Si l’on inspecte la forme géométrique de cette fonction quadratique, on peut s’apercevoir que C(w, b) est non négative, vu que chaque terme de la somme est non négatif. Ainsi, le coût C(w, b) devient petit et se rapproche de 0 lorsque y(x) est presque identique à la sortie “a”. Ainsi, plus le coût est petit, plus cela signifie que notre réseau a effectué un bon boulot si il a réussi à trouver les poids (weights) et seuils (biases) qui lui permettent de prédire une sortie y(x) qui corresponde à la valeur attendue “a”.

En comparaison, ce ne sera pas concluant dans les cas où le coût C(w, b) est élevé. Cela signifiera que la proposition du réseau y(x) n’est pas bonne et donc éloignée de la sortie “a” prévue par le jeu d’entraînement pour une majeure partie des données.
A ce stade, nous pouvons donc en conclure que l’objectif de notre algorithme intelligent (notre réseau de neurones) est de minimiser le coût C(w, b). En d’autres termes, nous souhaitons grâce à cette fonction être capables de déterminer les poids (weights) et seuils (biases) qui produisent un coût le plus faible possible. Trouver le minimum de cette fonction est possible grâce à un algorithme appelé “Gradient Descent” que nous étudierons dans le prochain article.

 

Related image

Conclusion

Dans le prochain article, nous verrons plus en détail comment un algorithme intelligent est capable d’apprentissage grâce à la technique du « Gradient Descent« . Bien que mathématiquement compliquée, cette technique est vraiment importante pour vous aider à appréhender les réseaux de neurones efficacement. C’est un must-have!! Et bien que cela paraisse complexe, étape par étape, vous verrez que vous comprendrez les concepts très bien.

Cet article fait partie d’une série d’articles qui vous permettra de comprendre étape par étape comment fonctionne l’intelligence artificielle et plus particulièrement les réseaux de neurones.

Je vous invite à lire, si vous ne l’avez pas déjà fait, les articles précédents :

Part 1 : Les réseaux de neurones artificielles

Part 2 : Comment fonctionne le Perceptron

Part 3 : Comment les réseaux de neurones prennent des décisions

Part 4 : Qu’appelle t-on apprentissage automatique

Part 5 : Les réseaux de neurones : la fonction d’activation sigmoide

Part 6 : L’architecture des réseaux de neurones