TL; DR: Um tamanho muito pequeno de mini-lote geralmente leva a uma precisão menor !
Para os interessados, aqui está uma explicação.
Existem duas noções de velocidade:
- Velocidade computacional
- Velocidade de convergência de um algoritmo
A velocidade computacional é simplesmente a velocidade de realizar cálculos numéricos no hardware. Como você disse, geralmente é mais alto com um tamanho maior de mini-lote. Isso ocorre porque as bibliotecas de álgebra linear usam vetorização para operações de vetor e matriz para acelerá-las, às custas do uso de mais memória. Os ganhos podem ser significativos até certo ponto. Da minha experiência, há um ponto após o qual existem apenas ganhos marginais de velocidade, se houver. O ponto depende do conjunto de dados, hardware e uma biblioteca usada para cálculos numéricos (sob o capô).
Mas não vamos esquecer que existe também a outra noção de velocidade, que nos diz com que rapidez nosso algoritmo converge.
Em primeiro lugar, o que significa para o nosso algoritmo convergir? Bem, cabe a nós definir e decidir quando estamos satisfeitos com uma precisão ou erro que obtemos, calculado no conjunto de validação. Podemos defini-lo com antecedência e aguardar o algoritmo chegar a esse ponto, ou podemos monitorar o processo de treinamento e decidir pará-lo quando o erro de validação começar a aumentar significativamente (o modelo começa a superajustar o conjunto de dados). Realmente não devemos parar imediatamente, no primeiro momento em que o erro começar a aumentar, se trabalharmos com mini lotes, porque usamos a Descentralização Estocástica por Gradiente, SGD. No caso de descida de gradiente (em lote inteiro), após cada época, o algoritmo será estabelecido no mínimo, seja local ou global. A SGD nunca se instala realmente no mínimo. Ele continua oscilando em torno dele. Poderia continuar indefinidamente,
Agora, depois de toda essa teoria, há um "problema" em que precisamos prestar atenção. Ao usar um tamanho de lote menor, o cálculo do erro tem mais ruído do que quando usamos um tamanho de lote maior. Alguém poderia dizer, bem, isso é ruim, não é? O problema é que esse ruído pode ajudar o algoritmo a saltar de um mínimo local ruim e ter mais chances de encontrar um mínimo local melhor ou, esperançosamente, o mínimo global.
Portanto, se pudermos encontrar uma solução melhor mais rapidamente usando um tamanho de lote menor em vez de um tamanho maior, apenas com a ajuda do ruído "indesejado", podemos ajustar o tempo total necessário para que nosso algoritmo encontre um resultado satisfatório. solução e uma maior precisão.
O que quero dizer é que, para uma determinada precisão (ou erro), um tamanho de lote menor pode levar a um tempo total de treinamento mais curto, não mais, como muitos acreditam.
Ou, se decidirmos manter o mesmo tempo de treinamento de antes, podemos obter uma precisão um pouco mais alta com um tamanho de lote menor, e provavelmente o conseguiremos, especialmente se tivermos escolhido nossa taxa de aprendizado adequadamente.
Se você tiver tempo, confira este documento:
Avaliação sistemática dos avanços da CNN no ImageNet
Especialmente, consulte "3.7. Tamanho do lote e taxa de aprendizado" e Figura 8. Você verá que tamanhos grandes de mini lotes levam a uma precisão menor , mesmo que sintonizando a taxa de aprendizado com uma heurística.
Em geral, o tamanho do lote 32 é um bom ponto de partida e você também deve tentar com 64, 128 e 256. Outros valores (inferiores ou superiores) podem ser bons para alguns conjuntos de dados, mas o intervalo fornecido geralmente é o melhor para comece a experimentar. Embora, com menos de 32 anos, possa ficar muito lento por causa da velocidade computacional significativamente menor, por não explorar a vetorização em toda a extensão. Se você receber um erro de "falta de memória", tente reduzir o tamanho do mini lote de qualquer maneira.
Portanto, não se trata apenas de usar o maior tamanho possível de mini lotes que cabe na memória.
Para concluir e responder à sua pergunta, um tamanho menor de mini-lote (não muito pequeno) geralmente leva não apenas a um número menor de iterações de um algoritmo de treinamento, a um tamanho de lote grande, mas também a uma maior precisão geral, ou seja, uma rede neural com melhor desempenho, na mesma quantidade de tempo de treinamento ou menos.
Não se esqueça que o ruído mais alto pode ajudá-lo a sair de um mínimo local ruim, em vez de deixá-lo preso nele.