J'ai implémenté un réseau neuronal (utilisant CUDA) avec 2 couches. (2 neurones par couche). J'essaie de lui faire apprendre 2 fonctions polynomiales quadratiques simples en utilisant la rétropropagation .
Mais au lieu de converger, il diverge (la sortie devient l'infini)
Voici quelques détails supplémentaires sur ce que j'ai essayé:
- J'avais mis les poids initiaux à 0, mais comme il divergeait, j'ai randomisé les poids initiaux (plage: -0,5 à 0,5)
- J'ai lu qu'un réseau de neurones pouvait diverger si le taux d'apprentissage était trop élevé, j'ai donc réduit le taux d'apprentissage à 0,000001
- Les deux fonctions que j'essaie d'obtenir pour l'ajouter sont: 3 * i + 7 * j + 9 et j * j + i * i + 24 (je donne en entrée les couches i et j)
- Je l'avais implémenté en une seule couche auparavant et cela pourrait mieux rapprocher les fonctions polynomiales qu'aujourd'hui
- Je pense à mettre en place une dynamique dans ce réseau mais je ne suis pas sûr que cela l'aiderait à apprendre
- J'utilise une fonction d'activation linéaire (comme en aucun)
- Il y a une oscillation au début mais la sortie commence à diverger au moment où l'un des poids devient supérieur à 1
J'ai vérifié et revérifié mon code, mais il ne semble pas y avoir de problème.
Alors, voici ma question: qu'est-ce qui ne va pas ici?
Tout pointeur sera apprécié.