Eu já vi conclusões semelhantes em muitas discussões, de que à medida que o tamanho de minibatch aumenta, a convergência do SGD fica realmente mais difícil / pior, por exemplo, este artigo e esta resposta . Também ouvi falar de pessoas que usam truques como pequenas taxas de aprendizado ou tamanhos de lote no estágio inicial para resolver essa dificuldade com tamanhos de lotes grandes.
No entanto, parece contra-intuitivo, pois a perda média de um minibatch pode ser considerada uma aproximação à perda esperada na distribuição de dados,
quanto maior o tamanho do lote, mais preciso ele deve ser. Por que na prática não é esse o caso?
Aqui estão alguns dos meus pensamentos (provavelmente errados) que tentam explicar.
Os parâmetros do modelo dependem muito um do outro, quando o lote fica muito grande, ele afeta muitos parâmetros de uma só vez, de modo que é difícil para os parâmetros alcançarem uma dependência inerente estável? (como o problema interno de turno covariável mencionado no documento de normalização do lote )
Ou quando quase todos os parâmetros são responsáveis em todas as iterações, eles tendem a aprender padrões implícitos redundantes, reduzindo a capacidade do modelo? (Quero dizer, por problemas de classificação de dígitos, alguns padrões devem ser responsáveis por pontos, outros por bordas, mas quando isso acontece, todo padrão tenta ser responsável por todas as formas).
Ou porque, quando o tamanho dos lotes se aproxima da escala do conjunto de treinamento, os minibatches não podem mais ser vistos como iid da distribuição de dados, pois haverá uma grande probabilidade de minibatches correlacionados?
Atualização
Como apontado na resposta de Benoit Sanchez, um motivo importante é que minibatches grandes exigem mais computação para concluir uma atualização, e a maioria das análises usa uma quantidade fixa de épocas de treinamento para comparação.
No entanto, este artigo (Wilson e Martinez, 2003) mostra que um tamanho de lote maior ainda é um pouco desvantajoso, mesmo com quantidade suficiente de épocas de treinamento. Geralmente é esse o caso?
Para adicionar à resposta de Curtis White (e adicionar mais algumas referências):
Sim, o SGD funciona como um tipo de regularização. Isso é importante porque, caso contrário, é difícil explicar por que os DNNs nem sempre se ajustam demais, porque podem .
A razão, pelo que entendi, é que o SGD causa 'pulos' no espaço dos parâmetros, portanto, durante o treinamento, os parâmetros não podem permanecer em um mínimo estreito, apenas nos (ou próximos) dos mais amplos. E esses mais amplos aparentemente [1] generalizam melhor (ou seja, menos adaptados).
Mais referências:
"stochastic relaxation, or random diffusion"
que a estocástica inerente ao SGD leva a"maximiz[ation of] the conditional entropy of the layer"
.Ambos dizem que o SGD corresponde a um termo de regularização da entropia.
Definitivamente, poderia haver outras maneiras pelas quais o tamanho do lote influencia a convergência; é esse que eu conheço.
[1] Exemplo: "Uma perspectiva bayesiana sobre generalização e descida estocástica do gradiente", Smith, Le, 2018. Do resumo:
"We propose that the noise introduced by small mini-batches drives the parameters towards minima whose evidence is large."
[2] "A descida do gradiente estocástico realiza inferência variacional, converge para limitar ciclos para redes profundas", Chaudhari, Soatto 2017
[3] "Abrindo a caixa preta das redes neurais profundas via informação" Schwartz-Ziv, Tishby, 2017
[4] "Compreender a aprendizagem profunda requer repensar a generalização", C. Zhang etc. 2016
fonte
Um tamanho de lote muito grande pode impedir a convergência pelo menos ao usar o SGD e o treinamento de MLP usando Keras. Quanto ao motivo, não tenho 100% de certeza se isso tem a ver com a média dos gradientes ou se as atualizações menores oferecem maior probabilidade de escapar dos mínimos locais.
Veja aqui .
fonte