Page 1 sur 1

Réseau de neurones artificiel basic: voiture sur un circuit

Publié : jeu. 15/févr./2018 0:03
par Fig
Ces voitures apprennent à conduire sur le circuit. Elles ont des télémtres laser (en quelque sorte) et chacune un reseau de neuron artificiel (2-3 couches selon comme on les compte)
L'algo génétique fonctionne bof, l'évaluation des voitures se base sur le temps pendant lequel elles restent sur la piste. Je les reproduit en moyennant les poids des synapse, pas sûr que ce soit très pertinent.

Quoiqu'il en soit, au bout de quelques dizaines de générations, une voiture devrait effectuer un tour complet.

On peut changer le nombre de laser (ça change le nombre de neurone aussi), la distance de détection et le taux de mutation avec les constantes.

La librairie élémentaire encore, permet de créer facilement des réseaux. Je vais m'atteler à rajouter la rétropropagation de gradiant pour l'apprentissage, maintenant.
A la fin de la dll, en commentaire un petit programme pour visualiser le réseau.


Code sur le forum anglais :
http://www.purebasic.fr/english/viewtop ... 16&t=70209

Edit: modification de l'algo génétique de sélection.
Edit2: ajout du bias aux neurones.

Re: Réseau de neurones artificiel basic: voiture sur un circ

Publié : jeu. 15/févr./2018 20:11
par comtois
Je n'ai pas encore testé, mais c'est le genre de projet qui m'intéresse. Merci pour le partage, dès que je trouve du temps je me plonge dans le code.

Re: Réseau de neurones artificiel basic: voiture sur un circ

Publié : jeu. 15/févr./2018 22:31
par comtois
ça commence bien , comment tu passes d'une dll à une lib ?

Dans un premier temps tu demandes de créer une dll à partir du premier code source
Save as Dll "NeuralNetLib"

Dans le second code source tu ouvres une lib ?
Import "NeuroNetLib.lib"

J'ai loupé un truc ?

[EDIT]

ok j'ai trouvé, il faut sauver sous le nom 'NeuroNetLib' et pas 'NeuralNetLib'

Je laisse le message pour les benêts comme moi qui appliquent scrupuleusement les instructions sans réfléchir

(la lib est créée en même temps que la dll)

Et maintenant ça marche !! à la 17e génération , pas mal , faut que j'analyse ça maintenant.

Re: Réseau de neurones artificiel basic: voiture sur un circ

Publié : ven. 16/févr./2018 17:51
par Fig
Bonjour Comtois,
J'ai corrigé le nom de la lib, j'ai inversé anglais et français.
17 genérations, tu as eu de la chance. L'algo génétique d'évolution et la fonction de fitness ne sont vraiment pas adaptés. Je vois des améliorations à faire, mais ce n'est pas le plus important dans l'immédiat (pas plus que les lourdeurs et les choses redondantes et inutiles qui sont dans le code des voitures) la retropropagation de gradient est le plus urgent. (à tester sur l'approximation d'une fonction XOR puis une reconnaissance de caractères manuscrites)

Ce n'est pas un code très didactique au sens où la mémoire n'est pas structurée clairement pour faciliter la lecture. Néanmoins, ce n'est guère complexe à suivre.

Ultimement, il faudrait traiter le réseau comme des matrices et utiliser un shader et opengl afin d'accélérer grandement le traitement d'un nombre faramineux de neurones. Pb nous permet d'écrire des shaders, nous verrons ...

Re: Réseau de neurones artificiel basic: voiture sur un circ

Publié : dim. 08/avr./2018 17:01
par poshu
Oh. Je suis intéressé. Très très TRES intéressé.

Re: Réseau de neurones artificiel basic: voiture sur un circ

Publié : lun. 09/avr./2018 16:21
par Fig
Dans le sujet sur retropropagation de gradian XOR,AND,OR. Il y a la dernière version de la librairie. http://www.purebasic.fr/french/viewtopi ... =2&t=17169

Je suis actuellement bloqué sur les réseaux de convolution car je ne sais pas propager à l'envers à travers cette @$^¨!§ de couche de convolution. Dès que j'ai trouvé la solution, on s'attaque (vraiment) à la reconnaissance d'images.
Actuellement avec un réseau FC (full connected) et apprentissage supervisé, je n'obtiens que des résultats médiocres sur la reconnaissance de chiffres manuscrits (75% sur MNIST https://en.wikipedia.org/wiki/MNIST_database ).

Re: Réseau de neurones artificiel basic: voiture sur un circ

Publié : lun. 09/avr./2018 17:38
par Ollivier
Bonjour Fig,

si tu n'avais pas jeté un oeil sur ce partage de MiLoo, je te le recommande.

MiLoo a intégré la notion d'échelonnement au sein de chaque neurone.

http://www.purebasic.fr/english/viewtop ... 13&t=68406