IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes prédictives Discussion :

Questions d'ordre général sur les réseaux neuronaux et les algorithmes génétiques


Sujet :

Méthodes prédictives

  1. #1
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 185
    Points : 11 551
    Points
    11 551
    Par défaut Questions d'ordre général sur les réseaux neuronaux et les algorithmes génétiques
    Bonjour,
    Je viens, fraîchement, de lire L'intelligence Artificielle pour les développeurs - concepts et implémentations en C# qui traite entres autres des réseaux de neurones et des algorithmes génétiques.

    Cela dit en passant, c'est un ouvrage impressionnant, il est pratico-pratique, très bien expliqué, il n'y a pas de mathématique à outrance (juste le minimum pour comprendre), l'origine biologique est expliquée, on y trouve des applications typiques et il est vraiment axé développement. La simplicité, d'un auteur, a transmettre un principe est à mon sens, gage d'une grande maîtrise du sujet.

    Suite à cela, je me suis servi de la bibliothèque FANN pour faire un essai avec l'exemple XOR. Jusque là je comprends comment fonctionne un réseau de neurones

    Toutefois n'étant pas informaticien de formation, j'ai quelques questions :
    Est ce qu'un algorithme génétique peut résoudre un problème que l'on confierait naturellement à un réseau de neurones ?
    Qu'est ce qui fait que l'on choisit plus l'un que l'autre ?
    Pourquoi lorsque je lis des sujets sur internet, je m'aperçois que beaucoup de personne se servent des 2 conjointements ? Y a t-il une raison ? Un but ?

    D'avance merci à ceux qui pourront m'éclairer avec des exemples.
    Cordialement,
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 208
    Points
    208
    Par défaut
    Salut,

    J'aurai tendance à différencier le réseau de neurones artificiels qui est un modèle de sa méthode d'apprentissage (mise à jour des poids des synapses).

    Souvent, la première méthode d'apprentissage que l'on va apprendre pour un RN c'est la rétropropagation du gradient.
    Avec cet apprentissage, on connaît le résultat attendu et on corrige donc les poids petit à petit jusqu'à ce qu'une solution apparaisse.

    Sauf que pour les problèmes plus complexes, on ne sait pas quel résultat est attendu, on veut que dans le temps le réseau neuronal produise un résultat.
    On ne connaît pas à un instant T la sortie que devra produire le RN par contre on peut quantifier le score réalisé sur la durée (fitness).

    L'apprentissage via un algorithme génétique va répondre à cette problématique précise.
    L'AG travaille sur un génome, et un réseau neuronal artificiel peut-être facilement converti en génome.
    L'avantage d'utiliser les deux ensemble (RN et AG) est que l'on va pouvoir obtenir une solution efficace à un problème flou et difficilement scriptable autrement.

    ++

  3. #3
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 185
    Points : 11 551
    Points
    11 551
    Par défaut
    Salut lilalex,
    Tout d'abord merci pour ta réponse qui m'éclaire un peu plus.

    Si je résume ce que tu as écrit mais dans mon propre langage :
    Un réseau de neurone est utile pour un résoudre un problème complexe mais tendant vers le déterminisme (on sait en gros ce qu'on veut en sortie par rapport a ce qu'on donne en entrée.) Je nuance par "vers le déterminisme" car si c'est déterministe alors un réseau de neurones ne se justifie pas. Exemple : reconnaissance de forme, de pattern ou tout autre comportement que nous savons nous même percevoir.

    Un AG est utile pour un résoudre un problème complexe mais tendant plutôt vers le non déterminisme (on ne connait pas la sortie attendu par rapport aux paramètres d'entées). Je nuance par "plutôt vers le non déterminisme" car j'ai l'impression qu'on souhaite faire émerger un comportement. Exemple : mimétisme, apprentissage en partant d'un environement un peu comme un robot qui aurait toutes sortes d'actionneurs sur ses membres et a qui on tenterait d'apprendre trouver l'équilibre en se servant justement de ses membres au travers des actionneurs. Il part d'un postulat du genre "j'ai des bras et jambes articulés... comment je trouve mon équilibre ?"

    Est ce que je me trompe lourdement pour le moment ?

    Si je dis par exemple :
    Un RN s'adapte a un problème P à l'instant T.
    Un AG s'adapte à des problèmes P (en ajoutant des gênes par exemple) à l'instant T.

    Si je dis également :
    RN = problème plutôt précis
    AG = problème complexe

    Je commence à comprendre ? ou pas ?
    Merci d'avance
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 208
    Points
    208
    Par défaut
    Salut,

    Ton postulat est presque correct, juste :

    Un RN s'adapte a un problème P à l'instant T.
    et

    RN = problème plutôt précis
    Différencie l'apprentissage des RN avec les RN eux mêmes. On peut appliquer autant d'apprentissage différent que notre imagination le permet alors que les RN ne font qu'une seule et même chose dans tous les cas : créer des groupes.

    Dans ton postulat, remplace RN par Rétropropagation et ce sera bon.

  5. #5
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 185
    Points : 11 551
    Points
    11 551
    Par défaut
    Bonjour lilalex,
    Merci de prendre de ton temps pour me répondre.

    Je pense avoir compris (toujours pareil, je reformule avec mes mots ce que tu dis afin de voir si j'ai bien compris) :

    Rétropropagation
    Un RN + méthode d'apprentissage rétropropagation répond a un problème précis. Pour l'apprentissage rétropropagation, on connait les données d'entrées et celle de sortie. On entraine le RN avec de multiples exemples (toujours dont on connait les résulats) le temps qu'il faut pour que les poids des entrées de neurones d'ajustent jusqu'à avoir la précision désirée.

    Exemple : La démo avec le XOR fourni dans la bibliotèque FANN. Le fichier d'entrainement par rétropropagation n'est d'autre que la table de vérité d'un XOR
    Exemple : La reconnaissance de pattern, on montre des images de l'alphabet manuscrite au RN et par rétropropagation (puisque nous savons nous même déchiffrer le pattern) on entraine le RN.
    Exemple : Reconnaissance de forme sur une image
    Exemple : Reconnaissance de signature vocale issue d'un micro.

    Retropropagation = méthode d'entrainement d'un RN pour répondre a un problème précis qu'on ne sait pas comment mettre en équation mathématique. En revanche on connait le résultat attendu en fonction de ce que l'on met en entrée.

    -------------------------------------------------------------------------------



    Maintenant je me pose des questions sur les algo génétique ou les RN avec mode d'apprentissage par renforcement :
    Admettons que je fasse un robot et je veuille lui apprendre a marcher.
    Le robot a des jambes.
    Le robot a des bras.
    Le robot a un corps.

    Un peu comme un bébé qui veut se tenir debout pour la première fois, il a des membres qu'il sait articuler mais il ne sait pas encore à quoi il servent exactement et dans quel ordre il doit s'en servir pour tenir debout en équilibre. Dans le principe, ses jambes lui serviront à s'élever et ses bras à s'équilibrer, le corps quant à lui est le centre de gravité qui détermine l'inclinaison perçue (ou désirée, plutard, pour avancer).

    Dans un tel cas de figure, un RN appris par renforcement (jusqu'a trouver son équilibre dans l'exemple du dessus) ou AG est le plus adapté ?

    D'avance merci
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 208
    Points
    208
    Par défaut
    Salut Vincent,

    Admettons que je fasse un robot et je veuille lui apprendre a marcher.
    Tu me croira ou pas mais c'est un projet que j'ai en tête depuis un moment et que je n'ai pas encore osé attaquer ^^.
    Pour ma part, je pensais m'aider d'une librairie qui gère la physique, genre bullet, pour rendre l'ensemble encore plus crédible et utiliser un apprentissage personnalisé basé sur la biomimétique.

    Pour répondre à ta question, je ne vois pas comment résoudre ce problème avec un apprentissage par rétropropagation.
    Avec un algorithme génétique tu pourras arriver à un résultat, pas forcément transcendant mais l'apprentissage sera au rendez-vous.

    Notes par contre qu'avec l'algorithme génétique, ce n'est pas un apprentissage temps réel, l'apprentissage se fait à la génération de l'individu.
    Ainsi, soit un individu saura marcher, soit il ne saura pas, mais en aucun cas il apprendra au cours de sa vie (contrairement à l'apprentissage par rétropropagation par exemple).

    ++

  7. #7
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Bonjour Vincent,

    Est-ce qu'un algorithme génétique peut résoudre un problème que l'on confierait naturellement à un réseau de neurones ?
    Il me semble que le réseau de neurones sont des classifieurs alors que les algorithmes génériques sont des outils d'optimisations.

    Qu'est-ce qui fait que l'on choisit plus l'un que l'autre ?
    Les idées sont proches parce que pour classifier on doit en partie optimiser une fonction de coup. Dans le cas d'un réseaux de neurones, c'est le rôle de la rétropropagation.

    On classifie quand on veut différentier plusieurs groupes. Alors qu'on optimise quand on cherche à voir une solution maximale ou minimale.

    Si tu veux approximer une courbe, tu vas choisir les segments de droites qui passent par tous les points que tu as. Tu classifies les droites entre celles qui passent ou ne passent pas par un ensemble de points. Ensuite tu peux utiliser un outil d'optimisation pour trouver un optimum global. Dans cet exemple tu utiliserais en premier le réseau de neurone et ensuite algorithme de évolutionnaire.

    Les algorithmes génétiques sont un algorithme évolutionnaire un peu spécifique.

    Cordialement

  8. #8
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 185
    Points : 11 551
    Points
    11 551
    Par défaut
    Salut dev_ggy, salut lilalex,
    Merci pour vos réponses ça commence a être plus clair même si le choix d'un RN ou d'un AG par rapport à un problème donné reste encore un peu flou à mes yeux.

    lilalex, je comprends que tu ais pensé à ça puisque pour moi aussi c'est très parlant pour une mise en pratique.
    Je pense être encore opérationnel en électronique (hard et soft sur mirco) par contre de la robotique ça j'en ai jamais fait. Je developpais des capteurs et des centrales de détéction de gaz toxic et explosif.

    Si je me lance, car avec 3 enfants et 1 une femme, le temps libre est un tantiné compliqué à trouver (mais faisable)... je pensais à faire quelque chose de rustique (un chien) qui pourrait ressembler à ça pour mes premiers essais.

    Nom : Sans titre.jpg
Affichages : 433
Taille : 60,6 Ko

    Voilà ma vision personnelle, donc peut être fausse, de la "fonction marcher" :
    - Un bébé tente de se lever en gardant l'équilibre, en découvrant la fonctionnalité de ses membres et en faisant des essais avec ses bras, ses jambes et son corps => Réseau de RN avec méthode d'apprentissage par renforcement.
    - Une fois l'équilibre trouvé, un bébé marche et apprend les directions (droite, gauche, etc...) pour découvrir son environnement => Là on est dans l'optimisation, pour moi, RN avec retropropagation puisque une fois en équilibre et debout on peut l'apprendre a tourner a doite ou à gauche. On connait la direction souhaitée en entrée et la direction prise par le robot via un capteur gyroscopique.
    - Ensuite vient la marche rapide... puis la course... les sauts... les pirouettes bref toutes les conneries que font mes enfants quoi.

    Et les algorithmes génétique là dedans ???? Vous les verriez où ?

    Bon je n'en suis pas là et autant l'électronique ne me poserait pas trop de difficulté mais le côté informatique me demanderait plus d'efforts.

    D'avance merci.
    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  9. #9
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 208
    Points
    208
    Par défaut
    Ok, je vois la problématique qui t'occupe.

    En fait ça dépend comment tu prend le problème.
    Si en fonction des entrées envoyées à ton RN tu sais qu'elles sont les sorties attendues, alors tu peux utiliser un apprentissage par rétropropagation.
    En gros, qu'il s'agisse de se lever de se tourner ou d'avancer, et quelque soit la position de l'automate, à chaque passage dans ton RN (toutes les 40 millisecondes par exemples) tu es en mesure que calculer la sortie optimale.
    L'apprentissage par rétropropagation va structurer ton RN de telle sorte que par la suite tu n'auras plus besoin de faire ce calcul et dans des cas similaires, le réseau devrait pouvoir réaliser ces actions.

    Si par contre, ces conditions ne sont pas respectées alors il faut trouver un autre moyen d'apprendre, l'algorithme génétique est un candidat possible dans ce cas (le fitness étant assez simple à déterminer la plupart du temps).

  10. #10
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 185
    Points : 11 551
    Points
    11 551
    Par défaut
    Salut lilalex, Salut dev_ggy
    Merci pour vos réponses, (désolé de répondre si tard mais mon vieux PC a rendu l'âme ce week end, j'ai du en récupérer un autre et réinstaller mon Debian ce qui m'a pris du temps car je ai un niveau moyen sous Linux)

    Pour l'instant et en toute modestie, je pense avoir compris les RN dans leurs globalités. Je vais refaire des essais avec la bibliothèque FANN.

    - un RN avec apprentissage par rétropropagation (j'arrive a peu prêt bien à m'en servir)
    - un RN avec apprentissage par renforcement (pas encore testé)

    Ensuite pour les algorithmes génétique, je vais devoir faire aussi des essais pour comprendre par moi même.
    Je vous remercie et si j'ai des questions plus précise j'ouvrirai une nouvelle discution.

    Cdt,
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question d'ordre général sur les parseurs
    Par myzu69 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 04/09/2010, 16h00
  2. Réponses: 0
    Dernier message: 13/08/2010, 17h53
  3. Question d'ordre général sur les macros sur excel
    Par tzehani dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 29/08/2007, 06h16
  4. [Portlet] Questions d'ordre général sur les portlets
    Par Chabin dans le forum Portails
    Réponses: 1
    Dernier message: 26/06/2007, 00h20
  5. Trier des chaînes et questions d'ordre général sur l'algorithmique
    Par katrena99 dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 19/03/2007, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo