L'idée centrale derrière SGD

Sep 30 2020

Pr. Hinton, dans son cours populaire sur Coursera, fait référence au fait suivant :

Rprop ne fonctionne pas vraiment lorsque nous avons de très grands ensembles de données et que nous devons effectuer des mises à jour de poids par mini-lots. Pourquoi cela ne fonctionne pas avec les mini-lots? Eh bien, les gens l'ont essayé, mais ont eu du mal à le faire fonctionner. La raison pour laquelle cela ne fonctionne pas est que cela viole l'idée centrale derrière la descente de gradient stochastique , c'est-à-dire que lorsque nous avons un taux d'apprentissage suffisamment petit, il fait la moyenne des gradients sur des mini-lots successifs. Considérez le poids, qui obtient le gradient 0,1 sur neuf mini-lots, et le gradient de -0,9 sur le dixième mini-lot. Ce que nous aimerions, c'est que ces dégradés s'annulent à peu près les uns les autres, de sorte qu'ils restent à peu près les mêmes. Mais ce n'est pas ce qui se passe avec rprop. Avec rprop, nous incrémentons le poids 9 fois et le décrémentons une seule fois, de sorte que le poids augmente beaucoup plus.

Comme vous pouvez le voir, l'idée centrale derrière SGD est que les gradients successifs dans les mini-lots doivent être moyennés. Quelqu'un a-t-il une source formelle valide pour cela? y a-t-il une justification? Je n'ai rencontré aucune preuve jusqu'à présent.

Réponses

2 JavierTG Oct 07 2020 at 04:39

Influence de la distribution génératrice de données

Pour voir cela, nous devons d'abord mentionner que, ni en utilisant la descente de gradient par lots (en utilisant l'ensemble de données pour calculer le gradient), ni en utilisant la descente de gradient par mini-lots, nous calculons la vraie valeur (exacte) du gradient.

Pour calculer la vraie valeur du gradient, nous devrions utiliser l'ensemble de toutes les valeurs possibles des entités, $x$, (et donc les sorties $y$).

Plus formellement, et faisant référence à la quantité que nous voulons minimiser comme valeur attendue de la fonction de perte par exemple ($J(x,y,\theta)$, où $\theta$ sont les paramètres) avec tout le possible $x,y$ valeurs, le vrai dégradé $g$ est donné par: $$g = \frac{\partial}{\partial \theta}\mathbb{E}_{x,y\sim p_{data}}(J(x,y,\theta)) $$Et si nous supposons certaines conditions, nous avons cela:$$g = \mathbb{E}_{x,y\sim p_{data}}\left(\frac{\partial}{\partial \theta}J(x,y,\theta)\right) $$

Où $p_{data}$est la distribution génératrice de données (la distribution à partir de laquelle les valeurs de$x$ et $y$sont dessinés). Cependant, cette distribution générant des données est généralement inconnue. Nous connaissons simplement l'ensemble de données qui nous est fourni.

Pour cette raison, pour mettre à jour les paramètres en utilisant toutes les informations données (l'ensemble d'apprentissage), nous utilisons à la place la distribution empirique définie par les données d'apprentissage ($\hat{p}_{data}$) qui met une probabilité de $1/m$ sur chacun des $m$ échantillons $(x^{(1)}, y^{(1)}), \,(x^{(2)}, y^{(2)}),\,...\,,(x^{(m)}, y^{(m)})$de l'ensemble de données. Ainsi, le gradient est approximé par:$$ \begin{aligned} \hat{g}&=\frac{\partial}{\partial \theta}\mathbb{E}_{x,y\sim \hat{p}_{data}}(J(x,y,\theta))\\&=\frac{\partial}{\partial \theta}\left(\sum_{i=1}^m \frac{1}{m}J_i(x^{(i)},y^{(i)},\theta)\right)\\ &= \frac{1}{m}\sum_{i=1}^m\frac{\partial }{\partial \theta}J_i(x^{(i)},y^{(i)},\theta) \end{aligned} $$ Fin de la descente de gradient par lots.

Mais que se passe-t-il avec les mini-lots?

En utilisant les mises à jour des mini-bains, nous voyons continuellement de nouvelles données (en supposant que nous ne calculons qu'une seule époque). Donc, dans ce cas, en utilisant des mini-lots, nous utilisons la distribution génératrice de données.

Cela signifie qu'à chaque mise à jour mini-batch, en échantillonnant cette distribution génératrice de données, on aboutit à une estimation ($\hat{g}$) du vrai gradient ($g$) qui est impartiale ie $\mathbb{E}_{x,y\sim p_{data}}(\hat{g})=g$. Pour voir cela, et en considérant$\text{s-sized}$ mini-lots: $$\begin{aligned} \mathbb{E}_{x,y\sim p_{data}}(\hat{g})&=\mathbb{E}_{x,y\sim p_{data}}\left(\frac{g^{(1)}+...+g^{(s)}}{s}\right)\\ &=\frac{1}{s}(\mathbb{E}_{x,y\sim p_{data}}(g^{(1)}+...+g^{(s)}))\\ &=\frac{1}{s}s\,\,g=g \end{aligned} $$Ainsi, en effectuant des mises à jour successives de mini-lots, nous aurions tendance en moyenne (comme le montre$\mathbb{E}_{x,y\sim p_{data}}(\hat{g})$) pour mettre à jour nos paramètres avec la vraie valeur du gradient. Et c'est ce à quoi je pense que les auteurs se réfèrent dans la citation de la question.


Excellentes références:

Livre Deep Learning, Ian Goodfellow et. al Chapitre 8.1
Réponses d' ici

1 cmn Oct 09 2020 at 23:07

Dans une étape de descente de gradient complète, la fonction de perte est définie comme la moyenne du terme de perte à des points d'échantillonnage individuels. Pour minimiser la fonction de perte, nous devons faire la moyenne sur les gradients individuels.

Dans la descente de gradient stochastique, s'il n'y a pas de biais dans la sélection des lots, le calcul de la moyenne sur les lots aboutirait à une estimation sans biais du gradient complet.

Veuillez jeter un œil à ces notes de cours http://www.stat.cmu.edu/~ryantibs/convexopt-F18/scribes/Lecture_24.pdf