Comme l’indique une autre réponse, la raison principale d’utiliser SGD est de réduire le coût de calcul du gradient tout en maintenant en grande partie la direction du gradient lorsqu’une moyenne est calculée sur plusieurs mini-lots ou échantillons, ce qui contribue certainement à vous ramener aux minima locaux.
- Pourquoi le minibatch fonctionne-t-il ?
La mathématique derrière cela est que le "vrai" gradient de la fonction de coût (le gradient pour l'erreur de généralisation ou pour un ensemble d'échantillons infiniment grand) est l'attente du gradient sur la distribution générant les données vraies ; le gradient réel calculé sur un lot d'échantillons est toujours une approximation du gradient réel avec la distribution de données empiriques .
pdatap^data
g=Epdata(∂J(θ)∂θ)
La descente de gradient par lots peut vous apporter le possible gradient "optimal" étant donné tous vos échantillons de données. Ce n'est toutefois pas le "vrai" gradient. Un lot plus petit (minibatch) n'est probablement pas aussi optimal que le lot complet, mais il s'agit d'approximations; il en va de même pour le minibatch à échantillon unique (SGD). La différence entre leurs erreurs-types est inversement proportionnelle à la taille du minibatch. Autrement dit,
SE(g^(n))SE(g^(m))=mn−−−√
En d'autres termes, la réduction de l'erreur type est la racine carrée de l'augmentation de la taille de l'échantillon. L'équation ci-dessus concerne les gradients calculés en une étape de la descente du gradient du minibatch. Lorsque vous parcourez les étapes des mises à jour de gradients de minibatch et utilisez tous les échantillons d'apprentissage à la fin d'une même époque, vous calculez virtuellement la moyenne des gradients en fonction de tous les échantillons donnés. C'est-à-dire que, pour la taille du mini-lot ,
À partir des équations ci-dessus, nous pouvons conclure que, avec une époque, vos gradients moyennés avec différentes tailles de mini-lots
mEp^data(g^(m))=Ep^data(∂J(θ)∂θ)
m (de l’un au lot complet) ont la même erreur type et, ce qui est plus important encore, ce sont toutes des approximations fidèles du gradient "vrai", c’est-à-dire qu’ils se déplacent dans la bonne direction du gradient "vrai".
- Pourquoi un minibatch peut-il mieux fonctionner ?
Tout d’abord, le minibatch permet de résoudre certains problèmes d’apprentissage techniquement impossibles à attaquer en raison de la réduction de la demande de calcul avec une taille de lot inférieure.
Deuxièmement, une taille de lot réduite ne signifie pas nécessairement une précision de gradient réduite. Les échantillons d'apprentissage ont souvent beaucoup de bruits, de valeurs aberrantes ou de préjugés. Un mini-lot échantillonné de manière aléatoire peut refléter la distribution générant les données réelles mieux (ou pas pire) que le lot complet original. Si certaines itérations des mises à jour du gradient du mini-lot vous donnent une meilleure estimation, globalement, le résultat moyen d'une époque peut être supérieur au gradient calculé à partir d'un lot complet.
Troisièmement, le minibatch ne permet pas seulement de traiter des échantillons de données déplaisants, mais également de gérer une fonction de coût déplaisante comportant de nombreux minima locaux. Comme le mentionne Jason_L_Bens, il est parfois plus facile pour les variétés d'erreur de piéger un dégradé régulier dans des minima locaux, alors qu'il est plus difficile de piéger le dégradé temporairement aléatoire calculé avec minibatch.
Enfin, avec la descente de gradient, vous n'atteignez pas les minima globaux en une étape, mais vous effectuez une itération sur la variété erro. Gradient ne vous donne en grande partie que la direction à parcourir. Avec un minibatch, vous pouvez itérer beaucoup plus rapidement. Dans de nombreux cas, plus il y a d'itérations, meilleur est le point que vous pouvez atteindre. Vous ne vous souciez pas vraiment du tout, le point est optimal globalement ou même localement. Vous voulez juste atteindre un modèle raisonnable qui vous apporte une erreur de généralisation acceptable. Minibatch facilite les choses.
Vous pouvez trouver que le livre "Deep learning" de Ian Goodfellow, et autres, a de très bonnes discussions sur ce sujet si vous le lisez attentivement.