7
votes

Perceptron unique - Fonction d'évaluation non linéaire

Dans le cas d'une seule phraseptron - littérature indique qu'il ne peut pas être utilisé pour séparer des cas discriminants non linéaires comme la fonction XOR. Ceci est compréhensible car la dimension VC d'une ligne (en 2-D) est de 3 et une seule ligne 2-D ne peut donc pas discriminer les sorties telles que XOR.

Cependant, ma question est de savoir pourquoi la fonction d'évaluation du seul perceptron est-elle une fonction de pas linéaire? Clairement, si nous avons une fonction d'évaluation non linéaire comme un sigmoïde, ce perceptron peut discriminer entre les 1 et les 0s de XOR. Alors, je manque quelque chose ici?


0 commentaires

3 Réponses :


12
votes

Si nous avons une fonction d'évaluation non linéaire comme un sigmoïde, ce perceptron peut discriminer entre les 1 et 0 de xor

Ce n'est pas vrai du tout. Les critères de discrimination ne sont pas la forme de la ligne (ou de l'hyperplane dans des dimensions supérieures), mais si la fonction permet de Séparabilité linéaire .

Il n'y a pas de la fonction unique qui produit un hyperplan capable de séparer les points de la fonction XOR. La courbe de l'image sépare les points, mais ce n'est pas une fonction.

Vous ne pouvez pas séparer les points bleus et rouges en Hyperplanes distincts à l'aide d'une seule fonction

Pour séparer les points de XOR, vous devrez utiliser au moins deux lignes (ou toute autre fonction de forme). Cela nécessitera deux percepteurs distincts. Ensuite, vous pouvez utiliser un troisième perceptron pour séparer les résultats intermédiaires sur la base du signe.

Si vous utilisez deux lignes, vous pouvez créer deux discriminants, puis fusionner le résultat


2 commentaires

"Si nous avons une fonction d'évaluation non linéaire comme un sigmoïde ..." "Ce n'est pas vrai du tout." De tout ce que la fonction sigmoïde n'a pas beaucoup de sens, mais je crois que je suis venu avec un exemple de fonction d'évaluation non linéaire où un classificateur binaire plus compliqué fonctionnerait; Voir ma réponse si vous êtes intéressé.


La fonction que vous avez suggérée fonctionnera, mais elle ne peut pas être traitée par un seul perceptron. Voir le commentaire sur l'autre réponse.



3
votes

Je suppose que par Sigmoid, vous ne voulez vraiment pas dire un sigmoïde, mais quelque chose avec un maximum local. Tandis que le classificateur binaire Perceptron normal est de la forme: xxx

Vous pouvez avoir une fonction: xxx

Cela fonctionnerait certainement, mais Soyez assez artificiel, en ce que vous adaptez efficacement votre modèle à votre jeu de données, ce qui est mauvais.

si l'algorithme de perceptron normal convergerait est presque certainement hors de la question, bien que je puisse être trompé. machine de vecteur de support , qui est comme Perceptron, mais est capable de gérer des cas plus compliqués en utilisant le tour du noyau .


2 commentaires

Mais en introduisant l'opérateur de modulus, vous créez des fonctions deux , qui compare (W.X + B) avec 0,5, l'autre qui compare la même (W.X + B) avec - 0,5, puis en utilisant les signes des résultats intermédiaires dans une troisième classification. Cela équivaut à utiliser un perceptron multicouche.


Pas assez équivalent à l'utilisation d'un perceptron multicouche, car vous ne pouvez pas former les poids séparément. Vous allez ajouter une contrainte entre les poids dans un perceptron multicouche et je ne sais pas si c'est bon.



0
votes

Une ancienne question, mais je veux laisser mes pensées (tout le monde me corrige si je me trompe).

Je pense que vous êtes mélangé les concepts de modèle linéaire et perte ou erreur . Le Perceptron est par définition un modèle linéaire, de sorte qu'il définit une ligne / un plan / hypertplane que vous pouvez utiliser pour séparer vos classes.

L'algorithme de perceptron standard extrait le signal de votre sortie, donnant -1 ou 1 : xxx

c'est bien et finalement converger si vos données sont séparables linéairement

pour améliorer cela, vous pouvez utiliser un sigmoid pour lisser la fonction de perte dans la plage [-1, 1]: xxx

puis utilisez un optimiseur numérique comme une descente de gradient pour minimiser la erreur sur votre ensemble de données. Ici w0, w1, w2, ..., wn sont vos variables.

Maintenant, si vos données d'origine ne sont pas séparables linéairement , vous pouvez le transformer d'une manière qui fait Il séparable linéairement puis appliquez un modèle linéaire. Ceci est vrai car le modèle est linéaire sur les poids .

Ceci est essentiellement quels modèles comme SVM font sous les hottes font pour classer vos données non linéaires.

PS: J'apprends ce genre de choses aussi, alors les experts ne sont donc pas en colère contre moi si je disais une merde.


0 commentaires