Quelle est la taille du lot dans le réseau neuronal?

Je « m utilise Python Keras package pour le réseau de neurones. Voici le link . batch_size est-il égal au nombre déchantillons de test? Sur Wikipedia, nous avons ceci information:

Cependant, dans dautres cas, lévaluation du gradient de somme peut nécessiter des évaluations coûteuses des gradients de toutes les fonctions de sommation. Lorsque lensemble dapprentissage est énorme et il nexiste pas de formule simple, lévaluation des sommes des gradients devient très coûteuse, car lévaluation du gradient nécessite dévaluer tous les gradients des fonctions de sommation. Pour économiser le coût de calcul à chaque itération, la descente de gradient stochastique échantillonne un sous-ensemble de fonctions de sommation à chaque étape. Ceci est très efficace dans le cas de problèmes dapprentissage automatique à grande échelle.

Les informations ci-dessus décrivent les données de test? Est-ce la même chose que batch_size dans keras (nombre déchantillons par mise à jour du gradient)?

Commentaires

  • Il est bon de ‘ de voir le cours class.coursera.org/ml-005/lecture/preview , en particulier pour vous semaine 4-6 + 10. Wikipédia nest peut-être pas une ressource si précieuse pour lapprentissage des réseaux de neurones.

Réponse

La taille du lot définit le nombre déchantillons qui seront propagés à travers le réseau.

Par exemple , disons que vous avez 1050 échantillons d’apprentissage et que vous souhaitez configurer un batch_size égal à 100. L’algorithme prend les 100 premiers échantillons (du 1er au 100e) de l’ensemble de données d’apprentissage et forme le réseau. Ensuite, il prend les 100 seconds échantillons (du 101ème au 200ème) et entraîne à nouveau le réseau. Nous pouvons continuer à faire cette procédure jusquà ce que nous ayons propagé tous les échantillons à travers le réseau. P roblem peut se produire avec le dernier ensemble déchantillons. Dans notre exemple, nous avons utilisé 1050 qui ne sont pas divisibles par 100 sans reste. La solution la plus simple consiste simplement à obtenir les 50 derniers échantillons et à former le réseau.

Avantages de lutilisation dune taille de lot < nombre de tous les échantillons:

  • Cela nécessite moins de mémoire. Comme vous entraînez le réseau en utilisant moins déchantillons, la procédure globale dapprentissage nécessite moins de mémoire. « est particulièrement important si vous ne parvenez pas à insérer lensemble de données dans la mémoire de votre ordinateur.

  • En général, les réseaux sentraînent plus rapidement avec des mini-lots. Cest parce que nous mettons à jour les poids après chaque propagation. Dans notre exemple, nous avons propagé 11 lots (10 dentre eux avaient 100 échantillons et 1 avait 50 échantillons) et après chacun deux, nous avons mis à jour les paramètres de notre réseau. Si nous utilisions tous les échantillons pendant la propagation, nous ne ferions quune seule mise à jour pour le paramètre du réseau.

Inconvénients dutiliser une taille de lot < nombre de tous les échantillons:

  • Plus le lot est petit, moins lestimation du gradient sera précise. Dans la figure ci-dessous, vous pouvez voir que la direction du dégradé du mini-lot (couleur verte) fluctue beaucoup plus par rapport à la direction du dégradé du lot complet (couleur bleue).

Directions de dégradé pour différentes configurations de lots

Stochastic est juste un mini-lot avec batch_size égal à 1. Dans ce cas, le dégradé change de direction encore plus souvent quun dégradé mini-batch.

Commentaires

  • Non, je nai ‘ t. Cest une technique populaire dans les réseaux de neurones et cette terminologie que vous pouvez voir dans différentes bibliothèques, livres et articles. Voulez-vous vérifier les erreurs de données de test à chaque époque ou simplement vérifier le modèle après lentraînement?
  • Le réseau converge également plus rapidement car le nombre de mises à jour est considérablement plus élevé. Configurer la taille du mini lot est une sorte dart, trop petit et vous risquez de rendre votre apprentissage trop stochastique, plus rapide mais convergera vers des modèles peu fiables, trop gros et cela ne rentrera pas dans la mémoire et prendra encore des siècles.
  • Cela signifie-t-il que batch_size=<size of dataset> est considéré comme un apprentissage en ligne, ou plutôt batch_size=1? Et tout cela reste-t-il également vrai pour les RNN? Lorsque vous utilisez batch_size dans les RNN, le lot est-il considéré comme une sorte de pas de temps virtuel en ce que toutes les instances de ce lot seront calculées comme si elles se produisaient en même temps ?
  • Généralement, lorsque les gens disent « apprentissage en ligne », ils veulent dire batch_size=1. Lidée derrière lapprentissage en ligne est de mettre à jour votre modèle dès que vous voyez lexemple. Avec une taille de lot plus grande, cela signifie que vous examinez dabord les multiples échantillons avant de faire la mise à jour. Dans RNN, la taille du lot peut avoir différentes significations.Habituellement, il ‘ est courant de diviser la séquence dentraînement en une fenêtre de taille fixe (comme 10 mots). Dans ce cas, inclure 100 de ces fenêtres pendant la formation signifie que vous avez batch_size=100.
  • @Oleg Melnikov, si votre dernier lot a une taille nettement plus petite (soit ‘ disent que ce serait 1 au lieu de 50) alors lestimation du gradient serait moins précise et cela peut bousiller un peu vos poids. Dans limage ci-dessus, imaginez que vous effectuez 10 mises à jour avec un mini lot 100 (lignes vertes) et une avec le mini lot 1 (ligne rouge). Ce qui signifie quà lépoque suivante, quelques premières itérations peuvent commencer à résoudre le problème avec la dernière mise à jour du mini-lot 1 de lépoque précédente.

Réponse

Dans la terminologie des réseaux neuronaux:

  • une epoch = une passe avant et une passe arrière de tous les exemples dentraînement
  • taille du lot = le nombre dexemples dentraînement dans une passe avant / arrière. Plus la taille du lot est élevée, plus vous aurez besoin despace mémoire.
  • nombre ditérations = nombre de passes, chaque passe utilisant [taille du lot] nombre dexemples. Pour être clair, une passe = une passe avant + une passe arrière (nous ne comptons pas la passe avant et arrière comme deux passes différentes).

Exemple: si vous avez 1000 exemples dentraînement et que la taille de votre lot est de 500, il vous faudra 2 itérations pour terminer 1 époque.

Pour info: Compromis entre la taille du lot et le nombre ditérations pour entraîner un réseau neuronal

Commentaires

  • Mais quelle est la différence entre en utilisant le nombre dexemples de [taille du lot] et formez le réseau sur chaque exemple et passez aux exemples de numéros de [taille du lot] suivants. Puisque vous passez un exemple à travers le réseau et appliquez SGD et prenez lexemple suivant, etc. différence si la taille du lot est de 10, 1000 ou 100000. Après [batc h size] nombre dexemples est fait, lexemple suivant du prochain lot suivra. Cela ne fait une différence que si le nombre dexemples de [taille du lot] va passer [nombre ditérations] fois le réseau et ensuite passer aux exemples suivants de [taille du lot].
  • Une distinction importante est que létape dapprentissage (une étape) est appliquée une fois pour chaque lot, tandis que vous devez parcourir tous les lots pour créer une époque. La différence est donc également algorithmique non seulement en mémoire: des lots plus importants signifient que vous faites la moyenne du gradient sur plus déchantillons.
  • Quest-ce que ‘ est la différence entre lépoque et les itérations ?
  • @Goldname 1 epoch inclut tous les exemples de formation alors quune itération inclut seulement [taille du lot] nombre dexemples de formation.
  • Donc: si le nombre dépoques est constant, et nous ‘ en traçant le tracé de convergence avec chaque point représentant le résultat après chaque époque, nous pouvons nous attendre à ce que le tracé résultant soit ‘ plus lisse ‘ (et lentraînement à être plus lent) à mesure que nous diminuons batch_size?

Réponse

Lors de la résolution dun problème doptimisation avec un CPU ou un GPU, vous appliquez itérativement un algorithme sur certaines données dentrée. Dans chacune de ces itérations, vous mettez généralement à jour une métrique de votre problème en effectuant des calculs sur les données. Désormais, lorsque la taille de vos données est importante, la réalisation de chaque itération peut nécessiter un temps considérable et consommer beaucoup de ressources. Vous choisissez donc parfois dappliquer ces calculs itératifs sur une partie des données pour gagner du temps et gagner des ressources de calcul. Cette partie est le batch_size et le processus est appelé (dans Neural Network Lingo) traitement de données par lots. Lorsque vous appliquez vos calculs sur toutes vos données, vous effectuez un traitement de données en ligne. Je suppose que la terminologie vient des années 60, et même avant. Quelquun se souvient-il des fichiers DOS .bat? Mais bien sûr, le concept incarné pour désigner un fil ou une partie des données à utiliser.

Réponse

La documentation de Keras sur la taille du lot se trouve sous le fit fonction de la page Modèles (API fonctionnelle)

batch_size: Entier ou Aucun. Nombre déchantillons par mise à jour du gradient. Si non spécifié, batch_size sera par défaut de 32.

Si vous avez un petit jeu de données, il serait préférable de rendre la taille du lot égale à la taille du données dentraînement. Essayez dabord avec un petit lot puis augmentez pour gagner du temps. Comme itdxer mentionné, il ya un compromis entre précision et vitesse.

Réponse

La taille du lot est un hyperparamètre qui définit le nombre déchantillons à traiter avant de mettre à jour les paramètres internes du modèle.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *