Après un an et demi, je reviens à ma réponse car ma réponse précédente était fausse.
La taille des lots a un impact significatif sur l'apprentissage. Qu'est-ce qui se passe lorsque vous passez un lot sur votre réseau, c'est que vous faites la moyenne des gradients. Le concept est que si la taille de votre lot est suffisamment grande, cela fournira une estimation suffisamment stable de ce que serait le gradient de l'ensemble de données. En prenant des échantillons de votre jeu de données, vous estimez le gradient tout en réduisant considérablement les coûts de calcul. Plus votre estimation est basse, moins votre estimation sera précise. Toutefois, dans certains cas, ces gradients bruyants peuvent réellement aider à échapper aux minima locaux. Lorsque le niveau est trop bas, les pondérations de votre réseau peuvent simplement basculer si vos données sont bruyantes et risquent d’être incapables d’apprendre ou si elles convergent très lentement, ce qui a un impact négatif sur le temps de calcul total.
Un autre avantage du traitement par lots réside dans le calcul GPU. Les GPU sont très aptes à paralléliser les calculs effectués dans les réseaux de neurones si une partie du calcul est identique (par exemple, multiplication de matrice répétée sur la même matrice de pondération de votre réseau). Cela signifie qu’une taille de lot de 16 nécessitera moins de deux fois la quantité d’un lot de 8.
Si vous avez besoin de tailles de lot plus importantes mais que votre GPU ne tient pas, vous pouvez alimenter un petit lot, enregistrer les estimations de gradient et alimenter un ou plusieurs lots, puis effectuer une mise à jour du poids. De cette façon, vous obtenez un dégradé plus stable car vous avez augmenté la taille de votre lot virtuel.
FAUX, VIEILLE RÉPONSE: [[[Non, la taille de lot n'influence en moyenne que la vitesse de votre apprentissage, pas la qualité de l'apprentissage. Les batch_sizes n'ont pas non plus besoin d'être d'une puissance de 2, bien que certains paquets n'autorisent que des puissances de 2. Vous devriez essayer d'obtenir votre batch_size au maximum qui corresponde néanmoins à la mémoire de votre GPU pour obtenir la vitesse maximale possible .]]]]