Réseaux de neurones et implémentaion

Le problème exposé dans ce sujet a été résolu.

Bonjour, ou plutôt bonsoir,

Je m’intéresse depuis pas mal de temps au deep learning et tout ce qui est du style des Neural Network et compagnie.

Recemment j’ai décider de me lancer en python et de créer mon propre réseau de neurones assez basique du type feed forward (le plus simple de tous). J’ai lu pas mal d’article et j’ai vu pas mal de vidéos à ce propos et j’ai commencé à élaborer un résaux simpliste sans phase d’apprentissage (pour le moment). Jusque là tout fonctionnait parfaitement et j’ai très bien compris le principe de fonctionnement de tout ce bazard.

La phase suivante était logiquement l’implémentation de la notion d’apprentissage du réseau de neurone. Comme mon réseau de neurone est basique, je devais implémenter un apprentissage basique lui aussi en utilisant le "backward propagation".

Mais malgré les nombreux articles que j’ai pu lire à ce sujet, je n’ai toujours pas compris comment ça fonctionne en détail et n’y la manière de l’implémenter. Ca parle beaucoup de dériver de fonctions et ca ne devrait pas trop me poser de problème (j’ai eu mon Bac S), mais il y a toujours quelque chose qui m’échappe. Les équations que l’on me montre me paraissent toujours incompréhensible et je ne comprends pas à quoi elles correspondent au niveau du code.

De ce que j’ai compris:

  • On donne des données à analysé au réseau de neurones tout en sachant le résultat attendu.

  • On compare les résultats obtenus et les résultats attendu afin d’en retirer une " marge d’erreur"

  • Cette marge d’erreur nous permet de modifier la valeur de certaines connexions entre neurones afin d’ajuster les résultats en prenant la dérivé de la fonction du neurone pour savoir si l’on doit augmenter ou diminuer la valeur de la connexion

Mais c’est au nivaux des calculs que j’ai un peu de mal, il y a trop de dérivées et ça m’embrouille un peu. Est ce que quelqu’un aurait l’amabilité de m’expliquer plus en détail la partie apprentissage des réseaux de neurones ou quelques articles de plus à me montrer ou même un code assez simplifié ?

C’est en particulier la partie Gradient que j’ai du mal à saisir.

(Cette série de vidéos est pas mal pour comprendre, mais au risque de me répéter je n’ai pas compris la partie math)

+0 -0

J’ai l’impression que pour te répondre il faudrait faire un cours sur la backpropagation. Je vais plutôt te conseiller des ressources sur le sujet :

+0 -0

Pour faire simple, ton réseau peut se résumer à une boite noire qui a des entrées, des sorties et des paramètres (les poids des liens entre neurones). Comme données tu as plein de jeux de sorties qui correspondent à des jeux d’entrées mais tu n’as pas les paramètres pour que ta boite noire puisse reproduire ce comportement.

L’objectif de l’apprentissage est de trouver les meilleurs paramètres qui permettent de faire coller le plus possible tes jeux d’entrées et de sorties avec ce que tu attends. Pour cela tu vas procéder par essais successifs en commençant par des paramètres au hasard. Ta boîte noire va te donner des jeux de sorties à partir des jeux d’entrées d’entrainement. Ces sorties seront différentes de celles attendues et donc tu pourras calculer une erreur en faisant la norme de la différence par exemple.

L’objectif de l’apprentissage est de faire tendre cette erreur vers zéro. Pour cela tu vas calculer la "dérivée" locale de l’erreur par rapport à chacun des paramètres, tu vas obtenir autant de valeurs de dérivée que de paramètre, c’est ce qu’on appelle le gradient de l’erreur par rapport aux paramètres. Pour te représenter ça visuellement, si tu est en montagne, le gradient de l’altitude va être un vecteur qui va pointer en direction de la montée la plus raide à un point donné. Donc si ton objectif est de "descendre" tu vas aller dans la direction opposée au gradient. C’est la méthode du gradient.

Si tu ne connais pas du tout le système que tu étudies et que c’est une vrai boite noire, tu vas devoir faire varier chaque paramètre un par un pour pouvoir calculer numériquement le gradient. Cependant ici tu sais que tu étudies un réseau de neurones donc tu connais les formules qui le régissent et tu peux calculer analytiquement le gradient de l’erreur. C’est la back propagation (il me semble)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte