Escolhendo um tamanho de minibatch apropriado para descida do gradiente estocástico (SGD)

13

Existe alguma literatura que examine a escolha do tamanho de minibatch ao realizar a descida do gradiente estocástico? Na minha experiência, parece ser uma escolha empírica, geralmente encontrada por meio de validação cruzada ou usando regras práticas variadas.

É uma boa ideia aumentar lentamente o tamanho do minibatch à medida que o erro de validação diminui? Que efeitos isso teria no erro de generalização? Estou melhor usando um minibatch extremamente pequeno e atualizando meu modelo centenas de milhares de vezes? Eu estaria melhor com um número equilibrado em algum lugar entre extremamente pequeno e lote?
Devo dimensionar o tamanho do meu minibatch com o tamanho do conjunto de dados ou o número esperado de recursos dentro do conjunto de dados?

Obviamente, tenho muitas perguntas sobre a implementação de esquemas de aprendizado de minibatch. Infelizmente, a maioria dos artigos que li realmente não especifica como eles escolheram esse hiperparâmetro. Tive algum sucesso de autores como Yann LeCun, especialmente da coleção de artigos Truques do Comércio. No entanto, ainda não vi essas perguntas totalmente abordadas. Alguém tem alguma recomendação para documentos ou conselhos sobre quais critérios eu posso usar para determinar bons tamanhos de minibatch ao tentar aprender recursos?

Jason_L_Bens
fonte
Parece que não estou conseguindo muitos hits nesse tópico. Existe um site de troca de pilhas melhor para fazer perguntas sobre aprendizado de máquina ou aprendizado profundo como este?
Jason_L_Bens

Respostas:

6

A teoria para a eficácia do SGD foi elaborada em atualizações de exemplo único (ou seja, minibatch tamanho 1), portanto, usar minibatches maiores não é teoricamente necessário. Tem duas vantagens práticas:

Primeiro , se o cálculo puder ser vetorizado, você poderá calcular gradientes para um pequeno minibatch> 1 quase da mesma forma rapidamente, levando a aumentos significativos de velocidade no treinamento.

Nesse caso, o tamanho ideal de minibatch é uma função do hardware e da implementação em particular com os quais você está trabalhando, portanto é melhor experimentar o ponto ideal.

Segundo , calcular o gradiente em um tamanho de minibatch> 1 levará a gradientes mais precisos e a etapas mais ideais. Mas esse benefício chegará e se estabilizará rapidamente assim que o tamanho do minibatch for maior que 1, para que você possa se concentrar principalmente no primeiro objetivo.

David Kelley
fonte