Quelle doit être la taille du lot pour la descente de gradient stochastique?

49

Je comprends que la descente de gradient stochastique peut être utilisée pour optimiser un réseau de neurones en utilisant la rétropropagation en mettant à jour chaque itération avec un échantillon différent de l'ensemble de données d'apprentissage. Quelle doit être la taille du lot?

Simon Kuang
la source
1
voir aussi stats.stackexchange.com/questions/164876
Andre Holzner

Réponses:

72

La « taille de l' échantillon » vous parlez est appelée la taille des lots , . Le paramètre de taille de lot est l’un des hyper-paramètres que vous réglerez lors de la formation d’un réseau de neurones avec une descente de gradient stochastique en mini-lots (SGD) et dépend des données. La méthode la plus simple de recherche par hyper-paramètre consiste à effectuer une recherche sur la grille sur la vitesse d'apprentissage et la taille du lot afin de trouver une paire qui fasse converger le réseau.B

Pour comprendre la taille du lot, il est important de voir la relation entre la descente en gradient de lot, le SGD en ligne et le SGD de mini-lot. Voici la formule générale pour l'étape de mise à jour du poids dans SGD en mini-lot, qui est une généralisation des trois types. [ 2 ]

θt+1θtϵ(t)1Bb=0B1L(θ,mb)θ
  1. Descente de gradient par lots,B=|x|
  2. Descente de gradient stochastique en ligne:B=1
  3. Descente de gradient stochastique en mini-groupe: mais.B>1B<|x|

Notez qu'avec 1, la fonction de perte n'est plus une variable aléatoire ni une approximation stochastique.

SGD converge plus rapidement que la descente de gradient normale "par lots" car il met à jour les poids après avoir examiné un sous-ensemble de l'ensemble d'apprentissage sélectionné de manière aléatoire. Soit notre ensemble d’entraînement et . La taille du lot est juste la cardinalité de :.xmxBmB=|m|

La descente de gradient par lots met à jour les poids utilisant les gradients de l'ensemble de données ; alors que SGD met à jour les poids en utilisant une moyenne des gradients pour un mini-lot . (L'utilisation de la moyenne par opposition à la somme empêche l'algorithme de prendre des mesures trop volumineuses si le jeu de données est très volumineux. Sinon, vous devrez ajuster votre taux d'apprentissage en fonction de la taille du jeu de données.) l'approximation stochastique du gradient utilisé dans SGD est égale au gradient déterministe utilisé dans la descente en gradient par lots. .θxmE[LSGD(θ,m)]=L(θ,x)

Chaque fois que nous prenons un échantillon et mettons à jour nos poids, il s’appelle un mini-lot . Chaque fois que nous parcourons l'intégralité du jeu de données, cela s'appelle une époque .

Supposons que nous ayons un vecteur de données , un vecteur de poids initial paramétrant notre réseau de neurones, et une fonction de perte que nous essayons de minimiser . Si nous avons exemples de formation et une taille de lot de , nous pouvons alors scinder ces exemples de formation en mini-lots C:x:RDθ0:RSL(θ,x):RSRDRSTB

C=T/B

Par souci de simplicité, nous pouvons supposer que T est divisible par B. Même si, dans le cas contraire, comme souvent, un poids correct doit être attribué à chaque mini-lot en fonction de sa taille.

Un algorithme itératif pour SGD à époques est donné ci-dessous:M

t0while t<Mθt+1θtϵ(t)1Bb=0B1L(θ,mb)θtt+1

Remarque: dans la réalité, nous lisons ces exemples d’entraînement dans la mémoire et, en raison de la pré-extraction de cache et autres astuces de mémoire effectuées par votre ordinateur, votre algorithme fonctionnera plus rapidement si les accès à la mémoire sont fusionnés , c.-à-d. Lorsque vous lisez la mémoire. dans l'ordre et ne saute pas au hasard. Ainsi, la plupart des implémentations SGD mélangent le jeu de données puis chargent les exemples en mémoire dans l'ordre dans lequel ils seront lus.

Les principaux paramètres du SGD vanille (sans élan) décrits ci-dessus sont les suivants:

  1. Taux d'apprentissage:ϵ

J'aime penser à epsilon en fonction du nombre d'époques jusqu'à un taux d'apprentissage. Cette fonction s'appelle la planification du taux d'apprentissage .

ϵ(t):NR

Si vous souhaitez que le taux d’apprentissage soit fixe, définissez simplement epsilon en tant que fonction constante.

  1. Taille du lot

La taille du lot détermine le nombre d’exemples que vous consultez avant d’effectuer une mise à jour du poids. Plus il est bas, plus le signal d’entraînement sera bruyant, plus il sera haut, plus il faudra de temps pour calculer le gradient pour chaque étape.

Citations et lectures supplémentaires:

  1. Introduction à l'apprentissage basé sur le gradient
  2. Recommandations pratiques pour la formation en dégradé d'architectures profondes
  3. Formation efficace en mini-lots pour l'optimisation stochastique
sabalaba
la source
1
For simplicity we can assume that D is evenly divisible by B. Ne voulez-vous pas dire que T devrait être divisible par B?
Antoine
4
et pour effectivement répondre à la question du PO, vous pouvez ajouter B is typically chosen between 1 and a few hundreds, e.g. B = 32 is a good default value, with values above 10 taking advantage of the speed-up of matrix-matrix products over matrix-vector products.(extrait du papier de Bengio de 2012)
Antoine
@ Sabalaba Belle réponse. Mais ce n’est pas que dans l’équation "Un algorithme itératif pour SGD avec M époques est donnée ci-dessous", nous mettrons à jour le poids après avoir passé en revue chaque mini-lot. En d'autres termes, ne devrait-il pas y avoir une autre boucle (sur les mini-lots C) à l'intérieur de la boucle sur l'époque, c.-à-d. Pendant que t <M
Kaushik Acharya
2
En statistique, un échantillon est constitué de plusieurs observations. La taille de l'échantillon est donc correctement interprétée par les statisticiens. En informatique (en particulier dans l'apprentissage automatique), un échantillon est une observation unique et un lot est une collection d'échantillons. Cela pourrait être un peu déroutant. Un échantillon pour les statisticiens est un lot pour les scientifiques de données;) Source: en.wikipedia.org/wiki/Sample_size_determination
Oleg Melnikov
"Le paramètre de taille de lot n'est que l'un des hyper-paramètres que vous allez ajuster." L'exécution de plusieurs modèles de réglage ne compromettrait-elle pas l'objectif même de SGD? Je pense que le PO demande une règle générale pour la taille de l'échantillon. Si vos données contiennent enregistrements et variables, quelle est la taille d'échantillon appropriée pour calculer correctement le gradient? mnm
RobertF