Question

Il est un fait bien connu qu'un réseau 1-couche ne peut pas prédire la fonction XOR, puisqu'il n'est pas linéairement séparables. J'ai essayé de créer un réseau de 2 couches, en utilisant la fonction logistique sigmoïde et backprop, de prédire XOR. Mon réseau dispose de 2 neurones (et une polarisation) sur la couche d'entrée, 2 neurones et une polarisation dans la couche cachée, et une neurone de sortie. À ma grande surprise, ce ne sera pas converger. si j'ajouter une nouvelle couche, de sorte que j'ai un réseau à 3 couches avec l'entrée (2 + 1), hidden1 (2 + 1), hidden2 (2 + 1), et la sortie, il fonctionne. De plus, si je garde un réseau 2 couches, mais j'augmenter la taille de la couche cachée 4 neurones + 1 biais, elle aussi converge. Y at-il une raison pour laquelle un réseau 2 couches avec 3 ou moins neurones cachés ne sera pas en mesure de modéliser la fonction XOR?

Était-ce utile?

La solution

Oui, il y a une raison. Il a à voir avec la façon dont vous initialisez votre poids.

Il y a 16 minimums locaux qui ont la plus forte probabilité de convergence entre 0,5 - 1.

Voici un document qui analyse le problème de XOR.

Autres conseils

Un réseau avec une couche cachée contenant deux neurones doit être suffisante pour séparer le problème du XOR. Le premier neurone agit en tant que porte OU et la deuxième comme une porte NON ET. Ajouter les neurones et s'ils passent le seuil, il est positif. Vous pouvez simplement utiliser des neurones de décision linéaires pour cela avec l'ajustement des biais pour les Seuils. Les entrées de la porte NON ET devrait être négatif pour les 0/1 entrées. Cette image devrait le rendre plus clair, les valeurs sur les connexions sont les poids, les valeurs des neurones sont les partis pris, les fonctions de décision agissent comme 0/1 des décisions (ou seulement les travaux de la fonction des signes dans ce cas aussi).

image grâce à "Abhranil blog"

Si vous utilisez descente de gradient de base (sans autre optimisation, comme la dynamique), et un réseau minimum 2 entrées, 2 neurones cachés, 1 neurone de sortie, il est certainement possible de former pour apprendre XOR, mais peut être très difficile et peu fiable.

  • Vous pouvez avoir besoin d'ajuster le taux d'apprentissage. La plupart erreur habituelle est de mettre trop haut, de sorte que le réseau oscillera ou diverger au lieu d'apprendre.

  • Il peut prendre un nombre étonnamment élevé d'époques pour former le réseau en utilisant un minimum de descente de gradient en ligne ou en lot. Peut-être que plusieurs milliers époques seront nécessaires.

  • Avec un faible nombre de poids (seulement 6), parfois aléatoire peut initialisation créer une combinaison qui se coince facilement. Donc, vous devrez peut-être essayer, les résultats de la vérification, puis redémarrage. Je vous suggère d'utiliser un générateur de nombres aléatoires tête de série pour l'initialisation, et d'ajuster la valeur de départ si les valeurs d'erreur sont bloqués et n'améliorent pas.

Licencié sous: CC-BY-SA avec attribution
scroll top