[Ex] Réseaux neuronaux

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Uranium
Niveau 5
Niveau 5
Messages : 143
Enregistré le : mer. 28 mars 2012 13:13
Status : Hors ligne

[Ex] Réseaux neuronaux

#1

Message par Uranium »

Bonsoir,

Etant passionné par l'IA , je profite de ces vacances interruptions pédagogiques pour approfondir mes connaissances dans ce domaine.
Ce domaine ne faisant pas parti de mes études (ni de ma bibliothèque universitaire!) et les "bon" cours étant peu nombreux sur le net (tous les mêmes , et souvent trop basique) , je trouve l'apprentissage de ce sujet assez complexe !

Cependant , avec les cours trouvées par-ci par-là et quelques rares bons sites , j'ai réussi à commencer à faire des IAs (réseaux neuronaux pour être précis) que je trouve assez bon pour un début. Je viens donc les partager sur ce forum pour rajouter des sources sur le net ( pour faciliter l'apprentissage ) , aider la communauté et j'espère initier/faire découvrir les réseaux neuronaux à quelques programmeurs de ce forum :wink:

Les deux OCRs ont été créer en collaboration de @blacksoul305 , mon très cher ami <3

Je vais vous partager 3 programmes fonctionnant avec un réseau de neurones. Tous les programmes seront en fichier joint et chaque programme est composé d'au moins 2 scripts ( xxx-train.au3 et xxx-test.au3 ) et d'une sauvegarde facultative au fonctionnement du programme ( score.ini ou save.ini ).

- Le premier programme est l'apprentissage d'une fonction logique ; la fonction NOT AND :
- Le second programme est un "OCR" qui reconnait les nombres à l'aide d'un affichage 7-segments
- Le dernier programme est un "OCR" qui reconnait les nombres à travers une image 'basique'

Comment faire marcher ces programmes ?

Dans un premier temps , il va falloir entraîner le programme. Pour cela , rien de plus simple , il suffit de lancer le script finissant par -train. A la fin de son exécution , il sauvegardera automatiquement sa mémoire dans un fichier ini.
Ensuite , nous pouvons tester cet IA. Pour ce faire , il suffit de lancer le script finissant par -test.
Pour le premier programme ( fonction NOT AND ) , la table de vérité est fourni dans le zip afin de vérifier la cohérence des résultats.
Pour les deux autres , je suppose que vous savez à quoi ressemble un nombre :wink:

Infos complémentaires
- Pour le second programme , il est possible d'améliorer la détection des mauvais résultats ( lorsque je dessine un nombre inexistant , le programme doit vous prévenir que ce nombre n'existe pas) pour cela , il faut jouer sur le seuil d'activation ( appelé $sum dans le -train et $tempmax dans le -test ) en l'augmentant , et en augmentant -si nécessaire- le nombre d'entraînement.
(Il faut que la valeur reste identique dans les deux scripts ( de base à 5) ! ).

- Pour le troisième script , il est possible d'améliorer la détection des mauvais résultats avec la même démarche.
Il est également possible de "simuler le cerveau" du programme ( à l'aide de OCR brain vizualisation.au3) afin de voir si le nombre appris correspond physiquement bien à la réalité. ( Il sera plus facile de trouver le seuil d'activation correct pour la détection des mauvais résultats grâce à lui).

Ce post n'est pas un cours sur les réseaux neuronaux mais le partage de mes code-sources.
Je pense donc , très fortement , que beaucoup d'entre vous auront du mal à comprendre à comprendre le fonctionnement 'théorique' de mes programmes ( faut dire que je vous balance mes codes sources comme ça , sans grandes explications et sans que , pour la plupart , n'ayez déjà entendu parler de ça ! ).
Ce sera donc avec plaisir , que je répondrai aux questions sur le fonctionnement des réseaux de neurones et/ou compréhension de mon code !
Je suis également preneur si vous avez des remarques/conseils/cours
voir créer un cours pour que vous puissiez commencer à créer vos propres réseaux !
Fichiers joints
NOT AND.zip
(19.65 Kio) Téléchargé 326 fois
OCr 7-segments.zip
(4.12 Kio) Téléchargé 305 fois
OCR image.zip
(36.71 Kio) Téléchargé 332 fois
Modifié en dernier par Uranium le sam. 22 août 2015 10:54, modifié 2 fois.
« En mathématiques, “évident” est le mot le plus dangereux. »
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [Ex] Réseaux neuronaux

#2

Message par mikell »

Uranium a écrit :Je pense donc , très fortement , que beaucoup d'entre vous auront du mal à comprendre à comprendre le fonctionnement 'théorique' de mes programmes ( faut dire que je vous balance mes codes sources comme ça , sans grandes explications et sans que , pour la plupart , n'ayez déjà entendu parler de ça
C'est clair :mrgreen:
Code pas commenté, pas de readme ou mode d'emploi et pas la moindre explication ... je ne suis pas sûr que dans ces conditions ton partage suscite un gros enthousiasme :?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Uranium
Niveau 5
Niveau 5
Messages : 143
Enregistré le : mer. 28 mars 2012 13:13
Status : Hors ligne

Re: [Ex] Réseaux neuronaux

#3

Message par Uranium »

mikell a écrit :pas de readme ou mode d'emploi et pas la moindre explication
Une erreur de ma part ! Je voulais supprimer le paragraphe "pour la petite histoire" et pas les explications avant l'envoi de mon message. J'ai corriger le tir

Merci d'avoir fait la remarque ! :D

Je vais essayer de commenter mes codes , et parler de comment marche l'entraînement pour vous éclairer encore plus

EDIT : J'ai rajouter les commentaires sur les deux premiers scripts , je finirai le troisième puis ajouterai des infos sur les principes de fonctionnement ( que sont les seuils d'activation , sommes , sorties ?)
« En mathématiques, “évident” est le mot le plus dangereux. »
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [Ex] Réseaux neuronaux

#4

Message par Sea »

Très intéressant !
Je dis pas non sur un mini tuto de comment ça marche exactement.
Les réseaux en général, surtout la partie apprentissage j’avoue être un peu perdu.
Répondre