7
votes

Réseau de neurones: résolution de xor

Quelqu'un pourrait-il me donner une explication correcte mathématique pourquoi un Perceptron multicouche peut résoudre le problème XOR?

Mon interprétation du Perceptron est la suivante:

Un perceptron avec deux entrées  Entrez la description de l'image ici et < img src = "https://i.stack.imgur.com/avjml.png" alt = "Entrez la description de l'image ici"> a suivi la fonction linéaire et est donc capable de résoudre des problèmes séparables linéaires tels que et et Ou.

 Entrez la description de l'image ici

 Entrez la description de l'image ici est la fonction de base étape.

La façon dont je pense, c'est que je substitue les deux parties de  Entrez la description de l'image ici séparé par le signe + comme  Entrez la description de l'image ici et  Entrez la description de l'image ici et je reçois  Entrez la description de l'image ici qui est une ligne. En appliquant la fonction étape, j'obtiens l'une des clusters en ce qui concerne l'entrée. Que j'interprète comme l'un des espaces séparés par cette ligne.

Parce que la fonction d'un MLP est toujours linéaire, comment interpréter cela de manière mathématique et plus importante: pourquoi est-il capable de résoudre le problème XOR quand il est toujours linéaire? Est-ce parce que son interpolation d'un polynôme?


0 commentaires

3 Réponses :


3
votes

Qu'est-ce que Perceptron est vraiment en train de diviser un espace d'entrée (en cas de xor - un avion réel) en deux parties séparées par un sous-espace affiné de dimension inférieure (en cas de ligne XOR - une ligne) et d'attribuer différentes classes à différentes parties. . Il n'y a pas de telle ligne qui divise un plan de cette façon que des points (0,0), (1,1) sont séparés de (1,0), (0,1).

Perceptron multicouche divise également un espace d'entrée en deux parties, mais cette division n'est pas limitée uniquement à la séparation affine, il est donc possible de séparer les classes XOR.


0 commentaires

7
votes

Essayez de tracer l'espace d'échantillon d'une fonction XOR de deux variables x 1 et x 2 . La décision de décision sépère le positif ( Y = 1) et des exemples négatifs ( y = 0) n'est clairement pas une ligne droite mais une limite de décision non linéaire comme suit: < / p>

 Entrez la description de l'image ici

Depuis, la modélisation d'une limite de décision non linéaire ne peut être effectuée par un simple réseau de neurones constitué uniquement de couches d'entrée et de sortie. Par conséquent, une couche cachée est nécessaire pour modéliser la limite de décision non linéaire requise. D'autre part, des fonctions comme et, ou ne disposent pas de la limite de décision linéaire et peuvent donc être modélisées par de simples filets neurants de sortie d'entrée-sortie.


0 commentaires

7
votes

Vous recherchez une explication mathématique, alors jetons d'abord un coup d'oeil sur la façon dont un perceptron fonctionne:

Perceptron simple avec une entrée en deux pentes

L'entrée est pondérée et résumée. S'il dépasse un seuil Theta, 1 est renvoyé, sinon 0. Dans le cas XOR x1 et x2 peut être 1 ou 0 et vous recherchez des poids w1 et w2 w2 ainsi qu'un seuil thêta tel que dans le cas de x1 xor x2 :

w1 * x1 + w2 * x2 > = theta

ou

w1 * x1 + w2 * x2 - theta> = 0

Tout d'abord, vous pouvez voir que la fonction est linéaire. Cela signifie qu'il définit une ligne. Mais lorsque vous regardez l'espace de l'échantillon, il n'y a aucune ligne qui peut séparer le positif des cas négatifs.

second, vous pouvez l'essayer. Prenez un thêta arbitraire, disons 0,5.

Case 1: x1 = 1, x2 = 0 => w1 doit être> 0.5

Case 2: x1 = 0, x2 = 1 => w2 doit être> 0.5

cas 3: x1 = 1, x2 = 1 => w1 + w2 doit être < 0.5 => impossible en raison de deux cas précédents

En général, avec un perceptron, vous ne pouvez définir que des fonctions linéaires séparables, c'est-à-dire des lignes, des plans, des hyperplanes, etc.

Mais pour le boîtier XOR, vous avez besoin de deux lignes:

 Entrez la description de l'image ici

Pour chaque ligne, vous avez besoin d'un nœud caché, puis combinez des choses ensemble tout en prenant en compte la négation.

Vous pouvez voir une solution ici:

Comment résoudre le problème XOR avec le réseau neural MLP? < / a>

Donc, l'astuce n'est pas de ne pas être non linéaire mais de réécrire Xor dans quelque chose comme:

x1 xor x2 == Non ( x1 et x2 ) et ( x1 ou x2 )


2 commentaires

Oui, je le sais. Mais comment s'agit-il en ajoutant une couche cachée et une fonction de courage qu'il gagne la capacité de résoudre le problème XOR? La façon dont j'estime est qu'il devient capable d'interpoler des polynômes car elle peut créer de nombreuses lignes interconnectées à certains points car la fonction d'un MLP est toujours linéaire. Il n'y a pas de confontrice, à l'exception de la fonction logistique ... qui jette simplement les valeurs à un sous-espace.


Cela m'a vraiment aidé beaucoup à comprendre un perceptron et les problèmes / possibilités de traiter le problème XOR, merci! Ce qui aiderait encore plus, est d'inclure un graphique tel que celui du percepteur unique de la couche, mais pour un percepteur multicouche qui peut résoudre le problème XOR.