web-dev-qa-db-fra.com

Quelle est la différence entre SGD et rétro-propagation?

Pouvez-vous s'il vous plaît me dire la différence entre la descente de gradient stochastique (SGD) et la rétro-propagation?

La rétropropagation est une méthode efficace pour calculer les gradients dans les graphes orientés de calculs, tels que les réseaux de neurones. Ceci est pas une méthode d’apprentissage, mais plutôt une astuce informatique sympathique qui est souvent utilisée dans les méthodes d’apprentissage. Il s'agit en fait d'une simple implémentation de chain rule de dérivées, ce qui vous donne simplement la possibilité de calculer toutes les dérivées partielles requises en temps linéaire en termes de taille de graphe (alors que les calculs de gradient naïfs seraient proportionnels à la profondeur).

SGD est l’une des nombreuses méthodes d’optimisation, à savoir optimiseur de premier ordre, ce qui signifie qu’elle repose sur l’analyse du gradient de l’objectif. Par conséquent, en termes de réseaux de neurones, il est souvent appliqué avec backprop pour effectuer des mises à jour efficaces. Vous pouvez également appliquer SGD à des gradients obtenus de manière différente (échantillonnage, approximateurs numériques, etc.). Symétriquement, vous pouvez également utiliser d’autres techniques d’optimisation avec backprop, tout ce qui peut utiliser dégradé/jacobien.

Cette idée fausse commune vient du fait que, pour des raisons de simplicité, les gens disent parfois "formés avec backprop", ce qui signifie en réalité (s'ils ne spécifient pas l'optimiseur) "formés avec SGD en utilisant backprop comme technique de calcul dégradé". En outre, dans les anciens manuels, vous pouvez trouver des choses comme "règle delta" et d'autres termes un peu déroutants, qui décrivent exactement la même chose (la communauté de réseau de neurones a longtemps été un peu indépendante de la communauté d'optimisation générale). 

Ainsi, vous avez deux couches d'abstraction:

  • calcul de gradient - où backprop vient à jouer
  • niveau d'optimisation - où interviennent des techniques telles que SGD, Adam, Rprop, BFGS, etc., qui (si elles sont de premier ordre ou supérieures) utilisent le gradient calculé ci-dessus
45
lejlot

La descente de gradient stochastique (SGD) est une méthode d'optimisation utilisée par ex. minimiser une fonction de perte. 

Dans SGD, vous utilisez 1 exemple, à chaque itération, pour mettre à jour les poids de votre modèle, en fonction de l'erreur due à cet exemple, au lieu d'utiliser la moyenne des erreurs de tous comme dans "simple" descente de gradient), à chaque itération. Pour ce faire, SGD doit calculer le "gradient de votre modèle".

La backpropagation est une technique efficace pour calculer ce "gradient" utilisé par SGD.

9
mohamed_18

La rétro-propagation est simplement une méthode de calcul des dérivées multi-variables de votre modèle, tandis que SGD est la méthode de localisation du minimum de votre fonction de perte/coût.

1
lf2225