introduction
La première étape
J'ai écrit un réseau neuronal à rétropropagation standard, et pour le tester, j'ai décidé de le faire mapper XOR.
C'est un réseau 2-2-1 (avec fonction d'activation tanh)
X1 M1
O1
X2 M2
B1 B2
À des fins de test, j'ai configuré manuellement le neurone moyen supérieur (M1) pour être une porte ET et le neurone inférieur (M2) pour être une porte OU (les deux produisent 1 si vrai et -1 si faux).
Maintenant, j'ai également configuré manuellement la connexion M1-O1 à -.5, M2-O1 à 1 et B2 à -.75
Donc, si M1 = 1 et M2 = 1, la somme est (-0,5 +1 -0,75 = -,25) tanh (0,25) = -0,24
si M1 = -1 et M2 = 1, la somme est ((-0,5) * (- 1) +1 -0,75 = 0,75) tanh (0,75) = 0,63
si M1 = -1 et M2 = -1, la somme est ((-0,5) * (- 1) -1 -0,75 = -1,25) tanh (1,25) = -0,8
C'est un résultat relativement bon pour une "première itération".
Deuxième étape
J'ai ensuite procédé à un peu de modification de ces poids, puis je les ai entraînés à l'aide d'un algorithme de propagation d'erreur (basé sur la descente de gradient). À ce stade, je laisse les poids entre les neurones d'entrée et du milieu intacts, et je modifie simplement les poids entre le milieu (et le biais) et la sortie.
Pour les tests, j'ai défini les poids à et .5 .4 .3 (respectivement pour M1, M2 et biais)
Ici, cependant, je commence à avoir des problèmes.
Ma question
J'ai défini mon taux d'apprentissage sur .2 et j'ai laissé le programme parcourir les données d'entraînement (ABA ^ B) pour 10000 itérations ou plus.
La plupart du temps, les poids convergent vers un bon résultat. Cependant, à certains moments, ces poids convergent vers (disons) 1,5, 5,7 et 0,9, ce qui se traduit par une sortie +1 (paire) vers une entrée de {1, 1} (lorsque le résultat doit être un -1).
Est-il possible pour un ANN relativement simple qui a une solution de ne pas converger du tout ou y a-t-il un bug dans mon implémentation?
la source
Si vous avez fixé les poids entre les unités d'entrée et les unités cachées et que vous modifiez uniquement les poids cachés aux poids de sortie pendant l'entraînement, il n'y aura pas de minimum local. Avec une entrée fixe pour les poids cachés, le problème d'optimisation que vous résolvez est similaire à la régression logistique, mais avec un tanh au lieu de la fonction sigmoïde. Quoi qu'il en soit, le problème est convexe et il ne devrait y avoir qu'un seul minimum mondial.
Étant donné que les minima locaux ne sont pas à l'origine de votre problème, je recommanderais d'approximer numériquement vos dérivés, puis de les comparer aux valeurs que vous calculez. Si vous ne savez pas comment faire, le didacticiel Standford ULFDL a une belle vue d'ensemble.
la source