Bonjour,
Ne sachant pas trop vers quelle structure me tourner, j'ai préparé un réseau de neurones de taille flexible et j'ai prévu plusieurs neurones différents pour faire des tests avec différentes fonctions de transfert. J'ai prévu de procéder par apprentissage supervisé (feed forward + back propagation, learning rate et momentum).
Après quelques tests (XOR, tests de valeurs), j'en ai conclu que le réseau fonctionnait correctement. Appliqué a mon pong, le réseau est caractérisé de la manière suivante :
- Les deux paddle sont contrôlés par des réseaux de neurones
- 4 données sont attendues en entrée : position et direction de la balle
- Un résultat est attendu : position en Y du paddle
- Le réseau est constitué de trois couches de 4 / 10 / 1 neurones (modifiable facilement)
Quand la balle touche un paddle :
- J'envoie en entrée du réseau du paddle opposé la position et la direction de la balle (après rebond)
- J'effectue le feedforward
- Je simule l'endroit où la balle doit atteindre le côté qui effectue le calcul
- J'effectue la backpropagation à l'aide de la simulation
- Je déplace le paddle à l'endroit indiqué par le réseau de neurone
Au final, la réponse du réseau converge très rapidement vers 1 et ne bouge plus ensuite. J'ai fait les tests avec des fonctions de transfert en tanh et sigmoïde et en modifiants les constantes de momentum et learning rate, sans résultat probant.
Je me retrouve avec une erreur moyenne très grande (*e^61) mais qui tend vers des valeurs entre 200 et 800 après plusieurs centaines de passage et ce sans que la réponse du réseau ne change.
Je ne sais pas trop quels tests faire... Faut-il modifier la structure du réseau, les fonctions de transfert, les constantes momentum et vitesse d'apprentissage ?
Partager