TL; DR: Une taille de mini-lot trop grande entraîne généralement une précision inférieure !
Pour ceux que ça intéresse, voici une explication.
Il y a deux notions de vitesse:
- Vitesse de calcul
- Vitesse de convergence d'un algorithme
La vitesse de calcul est simplement la vitesse d'exécution des calculs numériques dans le matériel. Comme vous l'avez dit, il est généralement plus élevé avec une taille de mini-lot plus grande. En effet, les bibliothèques d’algèbre linéaire utilisent la vectorisation pour les opérations vectorielles et matricielles afin de les accélérer, au détriment de l’utilisation de plus de mémoire. Les gains peuvent être importants jusqu'à un certain point. D'après mon expérience, il y a un point après lequel il n'y a que des gains de vitesse marginaux, le cas échéant. Le point dépend de l'ensemble de données, du matériel et d'une bibliothèque utilisée pour les calculs numériques (sous le capot).
Mais n'oublions pas qu'il existe également une autre notion de vitesse, qui nous dit à quelle vitesse notre algorithme converge.
Tout d’abord, que signifie la convergence de notre algorithme? Eh bien, c’est à nous de définir et de décider quand nous sommes satisfaits d’une précision, ou d’une erreur, que nous obtenons, calculée sur le jeu de validation. Nous pouvons soit le définir à l'avance et attendre que l'algorithme arrive à ce point, soit surveiller le processus de formation et décider de l'arrêter lorsque l'erreur de validation commence à augmenter de manière significative (le modèle commence à sur-adapter l'ensemble de données). Nous ne devrions vraiment pas l’arrêter immédiatement, au premier moment où l’erreur commence à monter, si nous travaillons avec des mini-lots, car nous utilisons une descente de gradient stochastique, SGD. En cas de descente de gradient (par lot complet), après chaque époque, l'algorithme s'installera au minimum, qu'il soit local ou global. SGD ne s'installe jamais vraiment dans un minimum. Il continue à osciller autour de lui. Cela pourrait durer indéfiniment,
Maintenant, après toute cette théorie, il y a une "prise" sur laquelle nous devons faire attention. Lorsque vous utilisez une taille de lot plus petite, le calcul de l'erreur génère plus de bruit que lorsque vous utilisez une taille de lot plus grande. On dirait, bon, c'est mauvais, n'est-ce pas? Le fait est que ce bruit peut aider l’algorithme à sortir d’un mauvais minimum local et à avoir plus de chances de trouver un meilleur minimum local ou, espérons-le, le minimum global.
Ainsi, si nous pouvons trouver une meilleure solution plus rapidement en utilisant une taille de lot plus petite au lieu d'un plus grand, simplement à l'aide du bruit "indésirable", nous pouvons régler le temps total nécessaire à notre algorithme pour trouver une solution satisfaisante. solution et une plus grande précision.
Ce que je veux dire, c’est que, pour une précision (ou une erreur) donnée, une taille de lot plus petite peut entraîner une durée totale de formation plus courte, et non plus, comme beaucoup le pensent.
Ou, si nous décidons de conserver le même temps de formation qu'auparavant, nous pourrions obtenir une précision légèrement supérieure avec une taille de lot plus petite, ce qui sera probablement le cas, en particulier si nous avons choisi notre vitesse d'apprentissage de manière appropriée.
Si vous avez le temps, consultez ce document:
Évaluation systématique des avancées de CNN sur ImageNet
En particulier, consultez "3.7. Taille des lots et vitesse d’apprentissage", et Figure 8. Vous constaterez que des tailles de mini-lots importantes entraînent une plus faible précision. , même si l’ajustement du taux d’apprentissage à une heuristique.
En général, la taille de lot de 32 est un bon point de départ et vous devriez également essayer avec 64, 128 et 256. D'autres valeurs (inférieures ou supérieures) peuvent convenir pour certains ensembles de données, mais la plage donnée est généralement la meilleure pour commencer à expérimenter avec. Cependant, moins de 32 ans, cela pourrait devenir trop lent en raison d'une vitesse de calcul nettement inférieure, en raison de la non-exploitation maximale de la vectorisation. Si vous obtenez une erreur «mémoire insuffisante», vous devriez quand même essayer de réduire la taille du mini-lot.
Il ne s’agit donc pas simplement d’utiliser la taille de mini-lot la plus grande possible qui tienne dans la mémoire.
Pour conclure et répondre à votre question, une taille de mini-lot plus petite (pas trop petite) entraîne généralement non seulement un plus petit nombre d'itérations d'un algorithme d'apprentissage, qu'une taille de lot importante, mais également une précision globale plus grande, à savoir: un réseau de neurones plus performant, dans le même temps d’entraînement ou moins.
N'oubliez pas que le niveau de bruit le plus élevé peut l'aider à sortir d'un minimum local médiocre, au lieu de le laisser coincé.