Como outra resposta sugere, o principal motivo para usar o SGD é reduzir o custo de computação do gradiente, mantendo a direção do gradiente em grande parte, quando a média é calculada sobre muitos mini lotes ou amostras - o que certamente ajuda a levá-lo aos mínimos locais.
- Por que o minibatch funciona .
A matemática por trás disso é que, o gradiente "verdadeiro" da função de custo (o gradiente para o erro de generalização ou para amostras infinitamente grandes configuradas) é a expectativa do gradiente sobre os dados verdadeiros que geram a distribuição ; o gradiente real calculado sobre um lote de amostras é sempre uma aproximação ao gradiente real com a distribuição empírica de dados .
pdatap^data
g=Epdata(∂J(θ)∂θ)
A descida do gradiente em lote pode fornecer o possível gradiente "ideal", considerando todas as amostras de dados, embora não seja o gradiente "verdadeiro". Um lote menor (minibatch) provavelmente não é tão ideal quanto o lote inteiro, mas ambas são aproximações - o mesmo ocorre com o minibatch de amostra única (SGD). A diferença entre os erros padrão deles é inversamente proporcional aos tamanhos do minibatch. Ou seja,
SE(g^(n))SE(g^(m))=mn−−−√
Ou seja, a redução do erro padrão é a raiz quadrada do aumento do tamanho da amostra. A equação acima é para os gradientes calculados em uma etapa da descida do gradiente de minibatch. Ao iterar as etapas das atualizações de gradiente de minibatch e usar todas as amostras de treinamento finalmente em uma época, você está virtualmente computando a média dos gradientes com base em todas as amostras fornecidas. Ou seja, para minibatch tamanho ,
A partir das equações acima, podemos concluir que, em uma época, seus gradientes médios com diferentes tamanhos de minibatch
mEp^data(g^(m))=Ep^data(∂J(θ)∂θ)
m (de um para o lote completo) têm o mesmo erro padrão e, mais importante, todas são aproximações fiéis ao gradiente "verdadeiro", ou seja, movendo-se para a direção correta do gradiente "verdadeiro".
- Por que o minibatch pode funcionar melhor .
Em primeiro lugar, o minibatch faz com que alguns problemas de aprendizado sejam tecnicamente invencíveis para serem atacáveis devido à demanda reduzida de computação com menor tamanho de lote.
Em segundo lugar, o tamanho reduzido do lote não significa necessariamente precisão reduzida do gradiente. As amostras de treinamento têm muitos ruídos, outliers ou vieses. Um minibatch amostrado aleatoriamente pode refletir a verdadeira distribuição de dados melhor (ou não pior) que o lote completo original. Se algumas iterações das atualizações de gradiente de minibatch fornecerem uma estimativa melhor, em geral o resultado médio de uma época pode ser melhor do que o gradiente calculado a partir de um lote completo.
Em terceiro lugar, o minibatch não apenas ajuda a lidar com amostras de dados desagradáveis, mas também ajuda a lidar com a função de custo desagradável que possui muitos mínimos locais. Como Jason_L_Bens menciona, algumas vezes os coletores de erro podem ser mais fáceis de capturar um gradiente regular em mínimos locais, enquanto mais difícil de capturar o gradiente temporariamente aleatório calculado com minibatch.
Finalmente, com a descida gradiente, você não está alcançando os mínimos globais em uma única etapa, mas repetindo a variedade de erros. O gradiente em grande parte fornece apenas a direção para iterar. Com o minibatch, você pode iterar muito mais rápido. Em muitos casos, quanto mais iterações, melhor o ponto que você pode alcançar. Você realmente não se importa em todas as condições climáticas, o ponto é ideal globalmente ou mesmo localmente. Você só deseja alcançar um modelo razoável que traga um erro de generalização aceitável. O Minibatch facilita isso.
Você pode achar que o livro "Deep learning", de Ian Goodfellow et al., Tem boas discussões sobre esse tópico, se você o ler com atenção.