Quelle est la différence entre la descente de gradient et la descente de gradient stochastique?
Je ne suis pas très familier avec ces derniers, pouvez-vous décrire la différence avec un court exemple?
Réponse
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 derreur.
Dans GD, vous devez parcourir TOUS les échantillons de votre ensemble dentraînement pour faire une seule mise à jour pour un paramètre dans une itération particulière, dans SGD, par contre, vous utilisez UNIQUEMENT ou UN SEUL SUBSET déchantillon dapprentissage de votre ensemble dentraînement pour effectuer la mise à jour dun 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 dapprentissage est grand, en fait très grand, lutilisation de la descente de gradient peut prendre trop de temps car à chaque itération lorsque vous mettez à jour les valeurs des paramètres, vous exécutez lensemble dentraînement complet. Dun autre côté, lutilisation de SGD sera plus rapide car vous nutilisez quun seul échantillon dapprentissage et il commence à saméliorer immédiatement à partir du premier échantillon.
SGD converge souvent beaucoup plus rapidement que GD mais la fonction derreur ne lest pas aussi minimisé que dans le cas de GD. Souvent, dans la plupart des cas, lapproximation proche que vous obtenez dans SGD pour les valeurs des paramètres est suffisante car elles atteignent les valeurs optimales et continuent dosciller là-bas.
Si vous avez besoin dun exemple de ceci avec un cas pratique, vérifiez Les notes dAndrew NG ici où il vous montre clairement les étapes impliquées dans les deux cas. cs229-notes
Source: Discussion de Quora
Commentaires
- merci, Brièvement comme ça? Il existe trois variantes du Gradient Descent: Batch, Stochastic and Minibatch: Batch met à jour les poids une fois que tous les échantillons dapprentissage ont été évalués. Stochastique, les poids sont mis à jour après chaque échantillon dapprentissage. Le Minibatch combine le meilleur des deux mondes. Nous nutilisons pas lensemble de données complet, mais nous nutilisons pas le point de données unique. Nous utilisons un ensemble de données sélectionné au hasard dans notre ensemble de données. De cette manière, nous réduisons le coût de calcul et obtenons une variance plus faible que la version stochastique.
- Notez que le lien ci-dessus vers cs229-notes est en panne. Cependant, Wayback Machine, aligné sur la date de publication, livre – yay! web.archive.org/web/20180618211933/http://cs229.stanford.edu/…
Réponse
Linclusion du mot stochastique signifie simplement que les échantillons aléatoires des données dapprentissage sont choisis à chaque exécution pour mettre à jour le paramètre lors de loptimisation, dans le cadre de la descente de gradient .
Non seulement les erreurs de calcul et les mises à jour des pondérations sont mises à jour plus rapidement (car nous ne traitons quune petite sélection déchantillons en une seule fois), mais cela aide aussi souvent à aller vers un optimum plus rapidement. regardez les réponses ici , pour plus d’informations sur les raisons pour lesquelles l’utilisation des minibatches stochastiques pour la formation présente des avantages.
Un inconvénient est peut-être que le chemin vers loptimum (en supposant quil serait toujours le même optimum) peut être beaucoup plus bruyant. Donc, au lieu dune belle courbe de perte lisse, montrant comment lerreur diminue à chaque itération de descente de gradient, vous pourriez voir quelque chose comme ceci:
Nous voyons clairement la perte diminuer avec le temps, cependant il y a de grandes variations dépoque en époque (lot dentraînement en lot dentraînement), donc la courbe est bruyante.
Cest simplement parce que nous calculons lerreur moyenne sur notre sous-ensemble sélectionné de manière stochastique / aléatoire, à partir de lensemble de données, à chaque itération. Certains échantillons produiront une erreur élevée, dautres faibles. Donc, la moyenne peut varier, en fonction des échantillons que nous avons utilisés au hasard pour une itération de descente de gradient.
Commentaires
- merci, Brièvement comme ça? Il existe trois variantes de la descente de gradient: Batch, Stochastic et Minibatch: Batch met à jour les poids une fois que tous les échantillons dapprentissage ont été évalués. Stochastique, les poids sont mis à jour après chaque échantillon dapprentissage. Le Minibatch combine le meilleur des deux mondes. Nous nutilisons pas lensemble de données complet, mais nous nutilisons pas le point de données unique. Nous utilisons un ensemble de données sélectionné 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.
- Je ‘ d dis quil y a un lot, où un lot est lensemble de lapprentissage complet (donc fondamentalement une époque), puis il y a un mini-lot, où un sous-ensemble est utilisé (donc tout nombre inférieur à lensemble entier $ N $) – ce sous-ensemble est choisi au hasard, il est donc stochastique. Utiliser un seul échantillon serait appelé apprentissage en ligne , et est un sous-ensemble de mini-batch … Ou simplement mini-batch avec
n=1
. - tks, cest clair!
Réponse
En descente de dégradé ou en descente de dégradé par lots , nous utilisons lensemble des données dentraînement par époque alors que, dans Stochastic Gradient Descent, nous nutilisons quun seul exemple dentraînement par époque et Mini-batch Gradient Descent se situe entre ces deux extrêmes, dans lequel nous pouvons utiliser un mini-batch (small portion ) de données dentraînement par époque, la règle empirique pour sélectionner la taille du mini-lot est en puissance de 2 comme 32, 64, 128 etc.
Pour plus de détails: cs231n notes de cours
Commentaires
- merci, Brièvement comme ça? Il existe trois variantes de la descente de gradient: Batch, Stochastic et Minibatch: Batch met à jour les poids une fois que tous les échantillons dapprentissage ont été évalués. Stochastique, les poids sont mis à jour après chaque échantillon dapprentissage. Le Minibatch combine le meilleur des deux mondes. Nous nutilisons pas lensemble de données complet, mais nous nutilisons pas le point de données unique. Nous utilisons un ensemble de données sélectionné 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.
Réponse
Gradient Descent est un algorithme pour minimiser le $ J (\ Theta) $ !
Idée: Pour la valeur actuelle de thêta, calculez la $ J (\ Theta) $ , puis faites un petit pas en direction du gradient négatif. Répétez.
Algorithme:
while True: theta_grad = evaluate_gradient(J,corpus,theta) theta = theta - alpha * theta_grad
Mais le problème est que $ J (\ Theta) $ est la fonction de tous les corpus dans Windows, donc très coûteux à calculer.
Descente de gradient stochastique échantillonnez à plusieurs reprises la fenêtre et mettez-la à jour après chacune
Algorithme de descente de gradient stochastique:
while True: window = sample_window(corpus) theta_grad = evaluate_gradient(J,window,theta) theta = theta - alpha * theta_grad
Habituellement, la taille de la fenêtre de léchantillon est la puissance de 2, disons 32, 64 en mini-lot.
Réponse
Les deux algorithmes sont assez similaires. La seule différence vient lors de litération. Dans Gradient Descent, nous considérons tous les points dans le calcul de la perte et de la dérivée, tandis que dans la descente de gradient stochastique, nous utilisons un point unique dans la fonction de perte et sa dérivée au hasard. Consultez ces deux articles, les deux sont interdépendants et bien expliqués. Jespère que cela aidera.