Les réseaux de neurones doivent-ils toujours converger?


16

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?

Réponses:


13

(Je suppose que par "propagation d'erreur", vous entendez ce que j'appelle " propagation de retour d' erreur ".)

À la page 231 de Neural Networks (par Haykin), il déclare que la propagation arrière converge toujours, bien que le taux puisse être (selon ses mots) "atrocement lent".

Je pense que ce que vous demandez, ce n'est pas si l'algorithme convergera toujours, mais s'il convergera toujours vers la réponse optimale. Et malheureusement, ce ne sera pas le cas. Même dans des cas simples comme le vôtre, il est tout à fait possible qu'il existe des minima locaux qui ne soient pas des minima globaux.

Le traitement des extrema locaux est un sujet extrêmement important dans l'optimisation, et vous pouvez trouver une pléthore de conseils sur la façon de le gérer. L'un des plus courants est ce que cela ressemble à ce que vous faites: redémarrages aléatoires (c'est-à-dire qu'il suffit d'exécuter l'algorithme plusieurs fois, chacun à partir d'un endroit aléatoire).

Pour savoir s'il y a un bogue dans votre code, j'imprime le terme d'erreur et vérifie qu'il diminue à chaque itération. Si oui, alors vous atteignez probablement un minimum local.


Tous les poids augmentent (le poids du neurone OR augmente plus rapidement), ce qui minimise l'erreur lorsque l'entrée est {1,0}, {0,1}, {0,0} mais maximise l'erreur lorsque {1,1}. Est-ce un problème avec l'apprentissage en ligne par rapport à l'apprentissage par lots?

@Shmuel: à la fois en ligne et en batch vont aller dans le sens du gradient. Si ce gradient pointe dans la mauvaise direction, ils iront tous les deux dans la mauvaise direction. La page Wikipédia sur l' escalade a quelques moyens de contourner cela, si vous êtes intéressé.
Xodarap

6

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.