A ideia central por trás do SGD
Pr. Hinton em seu popular curso no Coursera se refere ao seguinte fato :
Rprop não funciona realmente quando temos conjuntos de dados muito grandes e precisamos realizar atualizações de pesos de minilote. Por que não funciona com minilotes? Bem, as pessoas tentaram, mas acharam difícil fazer funcionar. O motivo pelo qual não funciona é que viola a ideia central por trás da descida do gradiente estocástico , que é quando temos uma taxa de aprendizado pequena o suficiente, ele calcula a média dos gradientes em minilotes sucessivos. Considere o peso, que obtém o gradiente de 0,1 em nove minilotes e o gradiente de -0,9 em décimos de minilotes. O que gostaríamos é que esses gradientes se cancelassem aproximadamente, de modo que permanecessem aproximadamente os mesmos. Mas não é o que acontece com rprop. Com rprop, aumentamos o peso 9 vezes e diminuímos apenas uma vez, de modo que o peso fica muito maior.
Como você pode ver, a ideia central por trás do SGD é que os gradientes sucessivos em minilotes devem ser calculados em média. Alguém tem alguma fonte formal válida para isso? existe alguma justificativa? Eu não encontrei nenhuma prova até agora.
Respostas
Influência da distribuição de geração de dados
Para ver isso, primeiro temos que mencionar que, nem usando a descida de gradiente em lote (usando todo o conjunto de dados para calcular o gradiente), nem usando a descida de gradiente em minilote, estamos calculando o valor verdadeiro (exato) do gradiente.
Para calcular o valor verdadeiro do gradiente, teríamos que usar o conjunto de todos os valores possíveis dos recursos, $x$, (e, portanto, as saídas $y$)
Mais formalmente, e referindo-se à quantidade que queremos minimizar como o valor esperado da função de perda por exemplo ($J(x,y,\theta)$, Onde $\theta$ são os parâmetros) wrt todo o possível $x,y$ valores, o verdadeiro gradiente $g$ É dado por: $$g = \frac{\partial}{\partial \theta}\mathbb{E}_{x,y\sim p_{data}}(J(x,y,\theta)) $$E se assumirmos certas condições, temos que:$$g = \mathbb{E}_{x,y\sim p_{data}}\left(\frac{\partial}{\partial \theta}J(x,y,\theta)\right) $$
Onde $p_{data}$é a distribuição de geração de dados (a distribuição a partir da qual os valores de$x$ e $y$são desenhados). No entanto, essa distribuição de geração de dados geralmente é desconhecida. Nós apenas conhecemos o conjunto de dados que recebemos.
Por causa disso, para atualizar os parâmetros usando todas as informações fornecidas (o conjunto de treinamento), em vez disso, usamos a distribuição empírica definida pelos dados de treinamento ($\hat{p}_{data}$), que coloca uma probabilidade de $1/m$ em cada um dos $m$ amostras $(x^{(1)}, y^{(1)}), \,(x^{(2)}, y^{(2)}),\,...\,,(x^{(m)}, y^{(m)})$do conjunto de dados. Portanto, o gradiente é aproximado por:$$ \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} $$ Terminando com a descida do gradiente em lote.
Mas o que acontece com os minilotes?
Ao usar atualizações de mini-banhos, estamos continuamente vendo novos dados (assumindo que calculamos apenas uma época). Portanto, neste caso, usando minilotes, estamos usando a distribuição de geração de dados.
Isso significa que em cada atualização de minilote, ao amostrar essa distribuição de geração de dados, terminamos com uma estimativa ($\hat{g}$) do gradiente verdadeiro ($g$) que é imparcial, ou seja $\mathbb{E}_{x,y\sim p_{data}}(\hat{g})=g$. Para ver isso, e considerando$\text{s-sized}$ minilotes: $$\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} $$Desse modo, fazendo atualizações sucessivas de minilote, estaríamos tendendo em média (como mostrado por$\mathbb{E}_{x,y\sim p_{data}}(\hat{g})$) para atualizar nossos parâmetros com o valor real do gradiente. E é a isso que acho que os autores se referem na citação da pergunta.
Ótimas referências:
Livro de Aprendizado Profundo, Ian Goodfellow et. al Capítulo 8.1
Respostas daqui
Em uma etapa de descida de gradiente completo, a função de perda é definida como a média do termo de perda em pontos de amostra individuais. Para minimizar a função de perda, precisamos calcular a média dos gradientes individuais.
Na descida do gradiente estocástico, se não houver viés na seleção dos lotes, a média sobre os lotes resultaria em uma estimativa sem viés de todo o gradiente.
Por favor, dê uma olhada nas notas desta aula http://www.stat.cmu.edu/~ryantibs/convexopt-F18/scribes/Lecture_24.pdf