J'essaye de régler l'hyper paramètre i.e taille de lot dans CNN.J'ai un ordinateur de Corei7, RAM 12GB et je forme un réseau CNN avec l'ensemble de données CIFAR-10 qui peut être trouvé dans ce blog.
Maintenant Dans un premier temps ce que j'ai lu et appris sur la taille des lots dans l'apprentissage de la machine:Une taille de lot plus importante rendra-t-elle le temps de calcul inférieur dans l'apprentissage automatique?
nous allons d'abord supposons que nous faisons l'apprentissage en ligne, à savoir que nous sommes en utilisant une taille de minibatch de 1. L'inquiétude évidente à propos de l'apprentissage en ligne est que l'utilisation de minibatches qui ne contiennent qu'un seul exemple de formation entraînera des erreurs significatives dans notre estimation du gradient. En fait, cependant, les erreurs se révèlent ne pas être un tel problème. La raison est que les estimations de gradient individuelles n'ont pas besoin d'être super-précises. Tout ce dont nous avons besoin, c'est d'une estimation suffisamment précise pour que notre fonction de coût ait tendance à continuer à diminuer. C'est comme si vous essayez pour atteindre le pôle magnétique nord, mais que vous avez une boussole bancale qui fait 0 à 10 degrés à chaque fois que vous le regardez. Pourvu que vous arrêtez à vérifier la boussole fréquemment, et la boussole obtient la bonne direction en moyenne, vous finirez au pôle magnétique Nord juste bien.
Sur la base de cet argument, il semble que nous devrions utiliser l'apprentissage en ligne . En fait, la situation s'avère plus compliquée que que. Comme nous le savons, nous pouvons utiliser des techniques matricielles pour calculer le gradient mise à jour pour tous les exemples dans une minibatch simultanément, plutôt que en boucle sur eux. Selon les détails de notre bibliothèque d'algèbre linéaire cela peut rendre un peu plus rapide de calculer l'estimation de gradient pour une minibatch de (par exemple) taille 100, plutôt que de calculer l'estimation de gradient minibatch en bouclant sur le 100 exemples d'entraînement séparément. Il pourrait prendre (disons) seulement 50 fois longtemps, plutôt que 100 fois plus longtemps. Maintenant, au début, il semble que si cela ne nous aide pas beaucoup.
Avec notre minibatch de taille 100 la règle d'apprentissage pour les poids ressemble:
où la somme est sur des exemples de formation dans le minibatch. C'est par rapport à
pour l'apprentissage en ligne. Même si cela ne prend que 50 fois plus de temps pour faire la mise à jour minibatch, il semble toujours être préférable de faire de l'apprentissage en ligne, parce que nous serions mise à jour beaucoup plus fréquemment. Supposons, cependant, que dans le minibatch cas, nous augmentons le taux d'apprentissage par un facteur 100, de sorte que la règle de mise à jour devient
C'est un peu comme faire des instances distinctes de l'apprentissage en ligne avec un taux d'apprentissage deη
. Mais cela prend seulement 50 fois plus de temps que de faire un seul exemple d'apprentissage en ligne. Cependant, il semble possible que l'utilisation de la plus grande minibatch accélérerait les choses.
Maintenant, je l'ai essayé avec MNIST digit dataset
et dirigé un programme d'échantillonnage et définissez la taille du lot 1
à first.I noté le temps de formation nécessaire à la pleine dataset.Then i augmenté la taille du lot et J'ai remarqué que c'est devenu plus rapide. Mais en cas de formation avec ce code et github link changer la taille du lot ne diminue pas le temps d'entraînement.Il est resté le même si j'utilise 30 ou 128 ou 64.Ils disent qu'ils ont obtenu 92%
précision.Après deux ou trois époque où ils ont eu plus de 40%
précision.Mais quand j'ai couru le code dans mon ordinateur sans rien changer autre que la taille du lot j'ai eu pire résultat après 10 époque comme seulement 28% et la précision du test coincé là dans l'époque suivante. ils ont utilisé la taille de lot de 128 j'ai besoin d'utiliser that.Then j'ai utilisé la même chose, mais il est devenu plus mauvais seulement donner 11% après 10 époque et coincé là-bas. Pourquoi est-ce ??
La taille du lot est-elle liée à la précision? –
@setubasak Lorsque vous avez l'algorithme d'entraînement adéquat et que vous vous entraînez assez longtemps, la taille du lot ne devrait pas avoir d'influence significative sur la précision. –
la plus grande taille du lot fera-t-elle diminuer le temps de formation si mon matériel le supporte? –