Quelle est la différence entre la descente de gradient et la descente de gradient stochastique?

Réponses:

28

Pour une explication simple et rapide:

Dans la descente de gradient (GD) et la descente de gradient stochastique (SGD), vous mettez à jour un ensemble de paramètres de manière itérative pour minimiser une fonction d'erreur.

Dans GD, vous devez parcourir TOUS les échantillons de votre ensemble d'entraînement pour effectuer une mise à jour unique pour un paramètre dans une itération particulière, dans SGD, d'autre part, vous utilisez UNIQUEMENT UN ou SOUS-ENSEMBLE d'échantillon d'apprentissage de votre ensemble d'entraînement. pour faire la mise à jour d'un paramètre dans une itération particulière. Si vous utilisez SUBSET, il est appelé descente de gradient stochastique Minibatch.

Ainsi, si le nombre d'échantillons d'apprentissage est grand, en fait très grand, l'utilisation de la descente de gradient peut prendre trop de temps car à chaque itération lorsque vous mettez à jour les valeurs des paramètres, vous parcourez l'ensemble complet d'apprentissage. D'un autre côté, l'utilisation de SGD sera plus rapide car vous n'utilisez qu'un seul échantillon de formation et il commence à s'améliorer immédiatement à partir du premier échantillon.

SGD converge souvent beaucoup plus rapidement que GD mais la fonction d'erreur n'est pas aussi bien minimisée que dans le cas de GD. Souvent, dans la plupart des cas, l'approximation étroite que vous obtenez dans SGD pour les valeurs des paramètres est suffisante car elles atteignent les valeurs optimales et y oscillent.

Si vous avez besoin d'un exemple de cela avec un cas pratique, consultez les notes d'Andrew NG ici où il vous montre clairement les étapes impliquées dans les deux cas. cs229-notes

Source: Quora Thread

AkshayNevrekar
la source
merci, brièvement comme ça? Il existe trois variantes de la descente de gradient: Batch, Stochastic et Minibatch: Batch met à jour les poids après que tous les échantillons d'apprentissage ont été évalués. Stochastiques, les poids sont mis à jour après chaque échantillon d'apprentissage. Le Minibatch combine le meilleur des deux mondes. Nous n'utilisons pas l'ensemble de données complet, mais nous n'utilisons pas le point de données unique. Nous utilisons un ensemble de données sélectionnées au hasard dans notre ensemble de données. De cette façon, nous réduisons le coût de calcul et obtenons une variance plus faible que la version stochastique.
Développeur
5

L'inclusion du mot stochastique signifie simplement que les échantillons aléatoires des données d'apprentissage sont choisis à chaque passage pour mettre à jour le paramètre lors de l'optimisation, dans le cadre de la descente de gradient .

Cela permet non seulement de calculer les erreurs et de mettre à jour les pondérations dans des itérations plus rapides (parce que nous ne traitons qu'une petite sélection d'échantillons en une seule fois), cela aide également souvent à progresser plus rapidement vers un optimum. Jetez un œil aux réponses ici , pour plus d'informations sur les raisons pour lesquelles l'utilisation de minibatches stochastiques pour la formation offre des avantages.

Un inconvénient, peut-être, est que le chemin vers l'optimum (en supposant qu'il serait toujours le même optimum) peut être beaucoup plus bruyant. Donc, au lieu d'une belle courbe de perte lisse, montrant comment l'erreur diminue à chaque itération de la descente du gradient, vous pourriez voir quelque chose comme ceci:

courbe de perte bruyante

Nous voyons clairement que la perte diminue avec le temps, mais il y a de grandes variations d'une époque à l'autre (lot d'entraînement à lot d'apprentissage), donc la courbe est bruyante.

C'est simplement parce que nous calculons l'erreur moyenne sur notre sous-ensemble sélectionné de manière stochastique / aléatoire, à partir de l'ensemble de données, à chaque itération. Certains échantillons produiront une erreur élevée, d'autres faibles. La moyenne peut donc varier en fonction des échantillons que nous avons utilisés au hasard pour une itération de descente de gradient.

n1k31t4
la source
merci, brièvement comme ça? Il existe trois variantes de la descente de gradient: Batch, Stochastic et Minibatch: Batch met à jour les poids après que tous les échantillons d'apprentissage ont été évalués. Stochastiques, les poids sont mis à jour après chaque échantillon d'apprentissage. Le Minibatch combine le meilleur des deux mondes. Nous n'utilisons pas l'ensemble de données complet, mais nous n'utilisons pas le point de données unique. Nous utilisons un ensemble de données sélectionnées au hasard dans notre ensemble de données. De cette façon, nous réduisons le coût de calcul et obtenons une variance plus faible que la version stochastique.
Développeur
Nn=1
tks, c'est clair!
datdinhquoc
5

Dans Gradient Descent ou Batch Gradient Descent, nous utilisons la totalité des données d'entraînement par époque alors que, dans Stochastic Gradient Descent, nous n'utilisons qu'un seul exemple d'apprentissage par époque et le Mini-batch Gradient Descent se situe entre ces deux extrêmes, dans lesquels nous pouvons utiliser un mini-lot (petite portion) de données d'entraînement par époque, la règle générale pour sélectionner la taille du mini-lot est au pouvoir de 2 comme 32, 64, 128 etc.
Pour plus de détails: notes de cours cs231n

Rajat Gupta
la source
merci, brièvement comme ça? Il existe trois variantes de la descente de gradient: Batch, Stochastic et Minibatch: Batch met à jour les poids après que tous les échantillons d'apprentissage ont été évalués. Stochastiques, les poids sont mis à jour après chaque échantillon d'apprentissage. Le Minibatch combine le meilleur des deux mondes. Nous n'utilisons pas l'ensemble de données complet, mais nous n'utilisons pas le point de données unique. Nous utilisons un ensemble de données sélectionnées au hasard dans notre ensemble de données. De cette façon, nous réduisons le coût de calcul et obtenons une variance plus faible que la version stochastique.
Développeur