Główna idea SGD
Pr. Hinton w swoim popularnym kursie na Coursera odnosi się do następującego faktu :
Rprop tak naprawdę nie działa, gdy mamy bardzo duże zbiory danych i musimy wykonywać aktualizacje wag mini-partii. Dlaczego nie działa z mini-partiami? Cóż, ludzie tego próbowali, ale ciężko im było sprawić, by to działało. Powodem, dla którego to nie działa, jest to, że narusza główną ideę stochastycznego zejścia w gradiencie , która polega na tym, że gdy mamy wystarczająco mały współczynnik uczenia się, uśrednia on gradienty w kolejnych mini-partiach. Rozważ wagę, która daje gradient 0,1 na dziewięciu minipartiach i gradient -0,9 na minipartiach dziesiątych. Chcielibyśmy, aby te gradienty z grubsza znosiły się nawzajem, aby pozostały w przybliżeniu takie same. Ale to nie jest to, co dzieje się z rprop. W przypadku rprop zwiększamy wagę 9-krotnie i zmniejszamy tylko raz, dzięki czemu waga rośnie znacznie.
Jak widać, główną ideą SGD jest to, że należy uśredniać kolejne gradienty w mini partiach. Czy ktoś ma jakieś ważne oficjalne źródło tego? czy jest jakieś uzasadnienie? Do tej pory nie spotkałem się z żadnym dowodem.
Odpowiedzi
Wpływ dystrybucji danych generujących
Aby to zobaczyć, najpierw musimy wspomnieć, że ani przy użyciu Batch gradient descent (używając całego zestawu danych do obliczenia gradientu), ani używając mini-wsadowego gradientu gradientu, nie obliczamy prawdziwej (dokładnej) wartości gradientu.
Aby obliczyć prawdziwą wartość gradientu, musielibyśmy użyć zbioru wszystkich możliwych wartości cech, $x$, (a tym samym wyjścia $y$).
Bardziej formalnie i odnosząc się do ilości, którą chcemy zminimalizować, jako oczekiwanej wartości funkcji straty na przykładzie ($J(x,y,\theta)$, gdzie $\theta$ są parametrami) z wszystkimi możliwymi parametrami $x,y$ wartości, prawdziwy gradient $g$ jest dany przez: $$g = \frac{\partial}{\partial \theta}\mathbb{E}_{x,y\sim p_{data}}(J(x,y,\theta)) $$A jeśli przyjmiemy pewne warunki, mamy to:$$g = \mathbb{E}_{x,y\sim p_{data}}\left(\frac{\partial}{\partial \theta}J(x,y,\theta)\right) $$
Gdzie $p_{data}$to dystrybucja generująca dane (dystrybucja, z której wartości$x$ i $y$są rysowane). Jednak ta dystrybucja generowania danych jest zwykle nieznana. Po prostu znamy otrzymany zbiór danych.
Z tego powodu, aby zaktualizować parametry przy użyciu wszystkich podanych informacji (zestawu uczącego ), zamiast tego używamy empirycznego podziału zdefiniowanego przez dane uczące ($\hat{p}_{data}$), co daje prawdopodobieństwo $1/m$ na każdym z $m$ próbki $(x^{(1)}, y^{(1)}), \,(x^{(2)}, y^{(2)}),\,...\,,(x^{(m)}, y^{(m)})$zbioru danych. Więc gradient jest przybliżony przez:$$ \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} $$ Kończy się zejściem gradientu wsadowego.
Ale co się dzieje z mini-partiami?
Korzystając z aktualizacji mini-kąpieli, stale widzimy nowe dane (zakładając, że obliczamy tylko jedną epokę). Więc w tym przypadku, używając mini-paczek, używamy dystrybucji generującej dane.
Oznacza to, że przy każdej aktualizacji mini-partii, próbkując tej dystrybucji generującej dane, otrzymujemy oszacowanie ($\hat{g}$) prawdziwego gradientu ($g$), który jest bezstronny, tj $\mathbb{E}_{x,y\sim p_{data}}(\hat{g})=g$. Aby to zobaczyć i zastanowić się$\text{s-sized}$ mini-partie: $$\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} $$W ten sposób, dokonując kolejnych aktualizacji mini-partii, będziemy średnio dążyć (jak pokazano na$\mathbb{E}_{x,y\sim p_{data}}(\hat{g})$) do aktualizacji naszych parametrów o prawdziwą wartość gradientu. I do tego, jak sądzę, autorzy odwołują się w cytowaniu pytania.
Świetne referencje:
Książka Deep Learning, Ian Goodfellow et. al Rozdział 8.1
Odpowiedzi z tego miejsca
Na etapie opadania z pełnym gradientem funkcję straty definiuje się jako średnią składnika strat w poszczególnych punktach próbkowania. Aby zminimalizować funkcję strat, musimy uśredniać poszczególne gradienty.
W stochastycznym spadku gradientu, jeśli nie ma odchylenia w wyborze partii, uśrednienie dla partii dałoby nieobciążone oszacowanie pełnego gradientu.
Zapoznaj się z notatkami z wykładu http://www.stat.cmu.edu/~ryantibs/convexopt-F18/scribes/Lecture_24.pdf