Aller au contenu


Photo
- - - - -

Réseau de neurone Apprentissage


8 réponses à ce sujet

#1 Juzamoth

Juzamoth

    Nouveau membre

  • Membres
  • 4 messages

Posté 19 avril 2016 - 08:14

Bonjour,

 

Je m'intéresse au réseau de neurones et je lisais le tutorial.

 

Je regardais la formule qui permet de mettre à jour les poids des neurones.

Et qui découle manifestement de la formule de windrow hoff ...

 

float result = (valeur+(valeur_desiree-valeur_obtenue)*valeur_entree*10.0);

 

Mais je ne comprends pas pourquoi du coup les poids ne sont pas tous des multiples de 10 à la fin ...

Et question subsidiaire si on a plusieurs couches, comment mettre à jour les poids des neurones de toutes les couches.

Bref, il y a quelque chose que je ne comprends pas bien ...

 

Merci d'avance pour vos explications.

 

Edit : Je crois que j'ai compris, puisqu'il y a une initialisation aléatoire entre -50 et 50.

Par contre si il y a plusieurs couches, je ne vois pas la généralisation ... 


  • Wrimourry aime ceci

#2 Jan

Jan

    Webmaster

  • Membres
  • PipPipPipPipPip
  • 4 747 messages
  • Gender:Male
  • Location:Rhône Alpes

Posté 19 avril 2016 - 09:14

Salut,

 

le top serait que tu passes par la case présentation pour qu'on sache un petit peu pourquoi tu t’intéresses à ça, ton profil... ça donne souvent plus envie aux membres d'aider quand ils savent à qui ils ont à faire et pourquoi...

 

Idem quand tu parles d'un tutoriel c'est sympa de faire un lien vers ce dernier afin qu'on sache de quoi tu parles...



#3 Juzamoth

Juzamoth

    Nouveau membre

  • Membres
  • 4 messages

Posté 19 avril 2016 - 09:59

Pardon si j'ai été impoli.

C'est que j'ai jamais de bonnes idées pour me présenter.

Je cherchais un projet sympa pour m'entraîner à programmer en C++.

Ca fait vraiment longtemps que je n'ai pas programmé ...

 

Je pensais que le titre était explicite, mais voila le lien :

http://www.robot-maker.com/forum/tutorials/article/21-les-reseaux-de-neurones/

 

PS : Peut on changer la photo qui est celle de Facebook ?



#4 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 20 avril 2016 - 02:30

float result = (valeur+(valeur_desiree-valeur_obtenue)*valeur_entree*10.0);
 
Mais je ne comprends pas pourquoi du coup les poids ne sont pas tous des multiples de 10 à la fin ...
Et question subsidiaire si on a plusieurs couches, comment mettre à jour les poids des neurones de toutes les couches.
(...)
Edit : Je crois que j'ai compris, puisqu'il y a une initialisation aléatoire entre -50 et 50.
Par contre si il y a plusieurs couches, je ne vois pas la généralisation ...

Il n'y a pas de raison que les poids soient des multiples de 10, indépendamment de l'initialisation : pour des valeurs d'entrée et de sortie comprises entre 0 et 1 (voir dans l'ensemble {0,1} si on veut faire simple), l'erreur (valeur désirée - valeur obtenue) tend vers 0.
À chaque itération de l'apprentissage, le poids est modifié avec une partie de l'erreur pour répondre la sortie désirée. D'ailleurs, c'est bizarre, cette multiplication par 10.0. Si ça correspond au taux d'apprentissage, ça devrait être un truc entre 1 et epsilon, pour epsilon petit.
Si tu as testé cet exemple, je ne suis pas sur que le réseau ait appris grand chose : l'apprentissage est plutôt instable.
Pour plusieurs couches, regarde du côté de l'algorithme de rétropropagation du gradient : c'est la méthode classique. Il y a des travaux récents qui vont au delà, mais je ne suis pas à jour sur les détails.
Le problème quand tu as plusieurs couches, c'est que tu n'as pas accès directement à l'erreur sur la sortie désirée, il faut donc la (rétro)propager en passant la non-linéarité (d'où le choix de fonctions dérivables).
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#5 Jan

Jan

    Webmaster

  • Membres
  • PipPipPipPipPip
  • 4 747 messages
  • Gender:Male
  • Location:Rhône Alpes

Posté 20 avril 2016 - 07:25

 

PS : Peut on changer la photo qui est celle de Facebook ?

 

oui tu dois pouvoir faire la modification en cliquant sur ton pseudo en haut à droite de l'écran dans l'onglet "mon profil". Si tu n'y parviens pas fais le moi savoir. Je peux la supprimer ou la changer si tu m'en fait suivre une autre par MP.



#6 Juzamoth

Juzamoth

    Nouveau membre

  • Membres
  • 4 messages

Posté 20 avril 2016 - 11:12

Il n'y a pas de raison que les poids soient des multiples de 10, indépendamment de l'initialisation : pour des valeurs d'entrée et de sortie comprises entre 0 et 1 (voir dans l'ensemble {0,1} si on veut faire simple), l'erreur (valeur désirée - valeur obtenue) tend vers 0.
À chaque itération de l'apprentissage, le poids est modifié avec une partie de l'erreur pour répondre la sortie désirée. D'ailleurs, c'est bizarre, cette multiplication par 10.0. Si ça correspond au taux d'apprentissage, ça devrait être un truc entre 1 et epsilon, pour epsilon petit.
Si tu as testé cet exemple, je ne suis pas sur que le réseau ait appris grand chose : l'apprentissage est plutôt instable.
Pour plusieurs couches, regarde du côté de l'algorithme de rétropropagation du gradient : c'est la méthode classique. Il y a des travaux récents qui vont au delà, mais je ne suis pas à jour sur les détails.
Le problème quand tu as plusieurs couches, c'est que tu n'as pas accès directement à l'erreur sur la sortie désirée, il faut donc la (rétro)propager en passant la non-linéarité (d'où le choix de fonctions dérivables).

 

Mais dans ce cas là c'est soit 1 soit 0. La différence valeur désirée - valeur obtenue est donc soit 1 0 ou -1.

D'ailleurs oui, il y a un schéma avec l'erreur qui part de 50 et tend vers 0, mais comment calcule t on cette erreur ?

J'ai vu un article sur la retropropagation, mais je n'ai pas compris grand chose ...

Merci pour ta réponse ...



#7 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 20 avril 2016 - 03:41

J'ai vu un article sur la retropropagation, mais je n'ai pas compris grand chose ...

Regarde l'article de wikipédia mais en Anglais, il est mieux fait que celui en français et tu as le code de l'algo (en pseudo code) ;)

https://en.wikipedia...Backpropagation


Mon site internet : http://ferdinandpiette.com/


#8 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 20 avril 2016 - 10:30

Mais dans ce cas là c'est soit 1 soit 0. La différence valeur désirée - valeur obtenue est donc soit 1 0 ou -1.
D'ailleurs oui, il y a un schéma avec l'erreur qui part de 50 et tend vers 0, mais comment calcule t on cette erreur ?
J'ai vu un article sur la retropropagation, mais je n'ai pas compris grand chose ...
Merci pour ta réponse ...

En effet. Ce tuto est pas clair à souhait :/
Comme l'image a l'air tiré d'une autre source, je ne sais pas quelle est cette erreur précisément. Peut-être est-ce peut-être la somme des erreurs pour une passe sur la base d'apprentissage (donc somme des yd - y) ? Ca représenterait bien une évolution de la capacité de prédire du réseau sur les échantillons présentés.
Ca peut être la somme des modifications des poids aussi : lorsque le réseau à (sur)appris sur les exemples, ses poids n'évoluent plus ... Ces deux erreurs sont des mesures de l'apprentissage, à toi de voir ecque tu préfères dans ton implémentation (la première a l'air moins foireuse).
Avant d'attaquer la rétropropagation, asssure-toi d'avoir bien compris comment fonctionne le réseau sans couche cachée, puis essaie d'écrire les équations / implémenter la version avec une couche cachée : ça devrait te faire poser les bonnes questions pour comprendre la rétropropagation.
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#9 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 02 mai 2016 - 10:19

J'ai retrouvé ce podcast qui m'avais beaucoup plu à ce sujet. Ça me parait une bonne introduction.

http://techcafe.fr/chronique-composants-25-deep-learning/

 

Par ailleurs, excellent podcast en général ! (Je suis très podcast)

 





Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users