RÉSEAU DE NEURONES ARTIFICIELS

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 9 mai 2011 à 14:11
marwenjava Messages postés 15 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 17 octobre 2009 - 21 mai 2011 à 12:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53136-reseau-de-neurones-artificiels

marwenjava Messages postés 15 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 17 octobre 2009
21 mai 2011 à 12:32
Chers amis : Julien39 , lynxtyle

avant que je vous répond , touts d'abord je suis le propriétaire de ce code la (voila la preuve : http://www.javafr.com/codes/RESEAUX-NEURONES-FONCTION-LOGIQUES-RETROPROPAGATION-BEN-RACHED-MARWEN_47543.aspx )
j'ai publié ce code depuis deux ans :) (merci souicioql pour le copier coller lol et STP rappel moi le jour de ton anniversaire et je vais te donner deux autres codes comme cadeaux )

ce code la c'est ma première manipulation avec réseaux de neurones donc j’essayai d’être plus simple pour avoir une première résultat .

mais comme remarque ce code de point vue algorithmique il n'est pas juste et j'ai découvrir que le calcule du delta (Erreur quadratique )et la rétro-propagation ne sont pas juste , c vrai qu'il donne des bonnes résultats mais lorsque on augmente le nombre des entrés les résultats vont être fausse.
et de cela j'ai corrigé tous ces problèmes dans des autres codes(Reconnaissance de Visage , Détection suivi et prévision de mouvement à partir d'un flux vidéo ...etc ), ou j'ai travaillé avec l'orienté objet a 100% , j'ai remplacé l'utilisation des tableau par des Vector() avec : le nombre des couches cachés , le nombre neurones d'entrés , le nombre neurones de sorties ....etc tous sont paramétrables et n'ont plus fixe .
lynxtyle Messages postés 79 Date d'inscription samedi 25 septembre 2004 Statut Membre Dernière intervention 31 octobre 2011 2
16 mai 2011 à 12:12
oui mais tu n'as pas compris mon commentaire : là tu créé un réseau de neuronne de taille totalement fixe : dans le cas où tu veux augmenter la taille de ton réseau tu dois rajouter copier coller un grand nombre de ligne... si tu défini tes variable en tableau (ex : po[i]) avec des boucles pour 1 to Max (Max étant une variable défini) alors tu peux créer le nombre de neurone que tu souahaite sans faire des pages et des pages de copier/coller...
les exemples que j'ai donné après étant la même chose que ton exemple mais en traitant un nombre important de pixel si tu n'intégre pas cette notion de tabeau/boucle tu ne seras pas rendu...

En espérent que tu as compris cette fois
souicioql Messages postés 24 Date d'inscription mercredi 12 mai 2010 Statut Membre Dernière intervention 26 mai 2011
16 mai 2011 à 10:17
un problème artificiel et sur un problème réel de filtrage, la nécessité
d'ajouter un terme de weight decay à la fonction de coût usuelle pour les problèmes où le
nombre d'exemples de la base d'apprentissage est limité.
lynxtyle Messages postés 79 Date d'inscription samedi 25 septembre 2004 Statut Membre Dernière intervention 31 octobre 2011 2
16 mai 2011 à 09:25
Je rejoins JULIEN39 sur le point de l'utilisation de Java. Malgré tout on peut facilement comprendre l'intérêt d'avoir fait une telle chose (la programmation de neurone est à la base fonctionnelle... et avoir une réseau neuronal dans une application java pouvant facilement être utilisé en réseau ça peut avoir du bon^^).

Donc pour cette première partie je vais répondre ceci : un réseau neuronal est "une base de données" intelligente, donc tu devrais l'externaliser de Java et l'utiliser comme source de données (le développer par exemple en C++/socket et le faire communiquer avec Java par les sockets)

Passons et attaquons nous au code : alors je n'ai pas eu le temps de tout regarder mais dans une première approche il me semble que la taille de ton réseau de neurone est fixe... ce qui est interessant quand on développe un réseau de neurone c'est de lui donner une taille variable (tu pourras ainsi réutiliser ton code pour d'autres apprentissages).
Il me semble aussi que tu utilise un algorithme intelligent pour la reconnaissance de forme... sachant qu'il en existe d'autre algorithme pour d'autre type d'application, il serait judicieux de l'indiquer.

Pour aller plus loin voilà 2 exemples d'utilisation d'un tel réseau de neurone :
- le reconnaissance de signature (pour par exemple protéger le contenu de son application : cela devient en quelques sorte le mot de passe)<-comparaison dans la différence de formes
- la retrouver une plaque minéralogique effacé <- déduction de formes

(théoriquement ton réseau de neuronne serait capable sans modification de faire ces applications s'il était de taille variable, avec juste un bénole : il consommerait beaucoup [mais vraiment beaucoup trop] de mémoire)

Voilà je le regarderai plus en détail plus tard... je te met une note de 7,5/10 donc 8/10 (je suis plus indulgent que JULIEN39 sur le point du choix du Java car il y a un bon travail derrière)

Bon courage !
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
9 mai 2011 à 14:11
Je pense que du point de vue fonctionnel ton code doit être bon. Et je te félicite pour l'effort de documentation de ta source.

Par contre, je suis incapable de lire ton code, tu utilises Java pour faire de la programmation fonctionnelle, rassures toi, tu n'es pas le seul. Mais tu es un des rares à le faire pour écrire un code de cette complexité. Tu devrais pouvoir améliorer grandement ton code en utilisant une méthode d'analyse objet. De plus, il est assez simple de décomposer un réseau de neurones en objets plus simples. Mais bon, ce n'est peut être pas du tout ton but.

Tu dois surement avoir une formation de statisticien plus que d'informaticien.

Je te donnes une note de 6/10 parce que tu as fais un effort important de documentation et que l'essentiel est que le code tourne.
Rejoignez-nous