De la règle du Perceptron à la descente en gradient: en quoi les Perceptrons avec une fonction d'activation sigmoïde sont-ils différents de la régression logistique?

21

Essentiellement, ma question est que dans les Perceptrons multicouches, les perceptrons sont utilisés avec une fonction d'activation sigmoïde. Alors que dans la règle de mise à jour y est calculée comme suity^

y^=11+exp(wTxi)

En quoi ce Perceptron "sigmoïde" diffère-t-il alors d'une régression logistique?

Je dis qu'un perceptron sigmoïde mono-couche est équivalente à une régression logistique dans la mesure où une utilisation y = 1y^=11+exp(wTxi) dans la règle de mise à jour. En outre,foisretoursign(y^=11+exp(wTxi))dans la prédiction. Cependant, dans les perceptrons multicouches, la fonction d'activation sigmoïde est utilisée pour renvoyer une probabilité, pas un signal d'activation contrairement à la régression logistique et un perceptron monocouche.

Je pense que l'utilisation du terme "Perceptron" peut être un peu ambiguë, alors permettez-moi de fournir quelques informations sur la base de ma compréhension actuelle des perceptrons monocouche:

Règle de perceptron classique

Tout d'abord, le perceptron classique de F. Rosenblatt où nous avons une fonction de pas:

Δwd=η(yiyi^)xidyi,yi^{1,1}

pour mettre à jour les poids

wk:=wk+Δwk(k{1,...,d})

Alors que y est calculé commey^

y^=sign(wTxi)=sign(w0+w1xi1+...+wdxid)


Descente graduelle

En utilisant la descente de gradient, nous optimisons (minimisons) la fonction de coût

J(w)=i12(yiyi^)2yi,yi^R

où nous avons des nombres "réels", donc je vois cela essentiellement analogue à la régression linéaire avec la différence que notre sortie de classification est seuillée.

Ici, nous faisons un pas dans la direction négative du gradient lorsque nous mettons à jour les poids

Δwk=ηJwk=ηi(yiyi^)(xik)=ηi(yiyi^)xik

Mais ici, nous avons y = w T x i au lieu de y = signe ( w T x i )y^=wTxiy^=sign(wTxi)

wk:=wk+Δwk(k{1,...,d})

De plus, nous calculons la somme des erreurs quadratiques pour un passage complet sur l'ensemble des données d'entraînement (en mode d'apprentissage par lots) contrairement à la règle classique du perceptron qui met à jour les poids à mesure que de nouveaux échantillons d'apprentissage arrivent (analogue à la descente de gradient stochastique - en ligne apprentissage).


Fonction d'activation sigmoïde

Maintenant, voici ma question:

Dans les Perceptrons multicouches, les perceptrons sont utilisés avec une fonction d'activation sigmoïde. Alors que dans la règle de mise à jour y est calculée comme suity^

y^=11+exp(wTxi)

En quoi ce Perceptron "sigmoïde" diffère-t-il alors d'une régression logistique?


la source
4
Incroyable, cette question à elle seule m'a permis de condenser mon apprentissage automatique et les bases du réseau neuronal!
varun

Réponses:

4

En utilisant la descente de gradient, nous optimisons (minimisons) la fonction de coût

J(w)=i12(yiyi^)2yi,yi^R

Si vous minimisez l'erreur quadratique moyenne, c'est différent de la régression logistique. La régression logistique est normalement associée à la perte d'entropie croisée, voici une page d'introduction de la bibliothèque scikit-learn .


(Je suppose que les perceptrons multicouches sont la même chose que les réseaux de neurones.)

Si vous avez utilisé la perte d'entropie croisée (avec régularisation) pour un réseau neuronal monocouche, alors ce sera le même modèle (modèle log-linéaire) que la régression logistique. Si vous utilisez plutôt un réseau multicouche, il peut être considéré comme une régression logistique avec des fonctions de base non linéaires paramétriques.


Cependant, dans les perceptrons multicouches, la fonction d'activation sigmoïde est utilisée pour renvoyer une probabilité, pas un signal d'activation contrairement à la régression logistique et un perceptron monocouche.

La sortie de la régression logistique et des réseaux de neurones avec fonction d'activation sigmoïde peut être interprétée comme une probabilité. Comme la perte d'entropie croisée est en fait la probabilité logarithmique négative définie par la distribution de Bernoulli.

dontloo
la source
2

Parce que la descente de gradient met à jour chaque paramètre de manière à réduire l'erreur de sortie qui doit continuer de fonctionner en fonction de tous les paramètres. L'activation basée sur le seuil n'est pas différenciable, c'est pourquoi l'activation sigmoïde ou tanh est utilisée.

Voici un NN monocouche

dJ(w,b)dωkj=dJ(w,b)dzkdzkdωkj

dJ(w,b)dzk=(akyk)(ak(1ak))

dzkdωkj=xk

J(w,b)=12(yk-unek)2

unek=sjegm(zk)=sjegm(WkjXk+bk)

si la fonction d'activation était une fonction de pas de base (seuil), dérivée de J wrt zk serait non différenciable.

voici un lien qui l'explique en général.

Edit: Peut-être, j'ai mal compris ce que vous entendez par perceptron. Si je ne me trompe pas, le perceptron est la somme pondérée des intrants. Si vous modifiez la détention avec la fonction logistique, cela se transforme en régression logistique. Le NN multicouche avec des fonctions d'activation sigmoïde (logistique) est constitué de couches en cascade composées de régressions logistiques.

yasin.yazici
la source
3
Cela ne répond pas à la question.
Neil G
Merci d'avoir écrit ce gentil commentaire, mais ce n'était pas ce que je demandais. Ma question n'était pas "pourquoi la descente du gradient" mais "qu'est-ce qui rend un perceptron avec une fonction d'activation sigmoïde différent de la régression logistique"
@SebastianRaschka Ce sont les mêmes. Qu'est-ce qui vous fait penser qu'ils sont différents? J'ai conduit une descente en pente parce que j'ai vu une erreur dans votre évaluation de la descente en pente. Vous avez supposéy=WTXquand vous le conduisiez. C'est pourquoi vous avez trouvé la même dérivation pour la mise à jour Perceptron et Gradient.
yasin.yazici
1
"Qu'est-ce qui vous fait penser qu'ils sont différents?" - la nomenclature, donc je me demandais s'il y avait autre chose; Je suis simplement curieux de savoir pourquoi nous avons 2 termes différents pour la même chose. Btw. Je ne vois aucune erreur dans la descente de gradient dans ma question.y=wjTXjjeest correct. Et je n'ai pas non plus trouvé la même dérivation entre la mise à jour de la "règle du perceptron" et celle de la "descente de gradient". Le premier se fait de manière d'apprentissage en ligne (échantillon par échantillon), le second se fait en batch, et nous minimisons également la somme des erreurs quadratiques au lieu d'utiliser une fonction pas à pas.
Je pense que ce qui pourrait causer la confusion, c'est que vous avez fait la distinction entre l'étape de «classification» et celle «d'apprentissage». L'étape de classification est toujours seuillée (-1 ou 1, ou 0 et 1 si vous le souhaitez). Cependant, la mise à jour est différente, dans le perceptron classique, la mise à jour se fait viaη(y-sjegn(wTXje))X alors qu'en disons la descente de gradient stochastique, il est η(y-wTXje)Xje
2

Intuitivement, je pense à un perceptron multicouche comme calculant une transformation non linéaire sur mes entités en entrée, puis alimentant ces variables transformées en une régression logistique.

Le cas multinomial (c'est-à-dire N> 2 étiquettes possibles) peut rendre cela plus clair. Dans la régression logistique traditionnelle, pour un point de données donné, vous voulez calculer un "score",βjeX, pour chaque classe, je. Et la façon dont vous les convertissez en probabilités consiste simplement à prendre le score de la classe donnée sur la somme des scores de toutes les classes,βjeXjβjX. Ainsi, une classe avec un score élevé a une plus grande part du score combiné et donc une probabilité plus élevée. Si vous êtes obligé de prédire une seule classe, vous choisissez la classe avec la plus grande probabilité (qui est également le score le plus élevé).

Je ne sais pas pour vous, mais dans mes cours de modélisation et de recherche, j'ai essayé toutes sortes de transformations sensibles et stupides des fonctionnalités d'entrée pour améliorer leur signification et la prédiction globale du modèle. Squaring des choses, prendre des journaux, combiner deux en un taux, etc. Je n'avais aucune honte, mais j'avais une patience limitée.

Un perceptron multicouche est comme un étudiant diplômé avec beaucoup trop de temps sur ses mains. Grâce à l'entraînement à la descente en gradient et aux activations sigmoïdes, il va calculer des combinaisons non linéaires arbitraires de vos variables d'entrée d'origine. Dans la dernière couche du perceptron, ces variables deviennent effectivement leX dans l'équation ci-dessus, et votre descente de gradient calcule également une finale associée βje. Le cadre MLP n'est qu'une abstraction de cela.

Dan Van Boxel
la source