Nous définissons une époque comme ayant parcouru l'intégralité de tous les échantillons d'apprentissage disponibles, et la taille du mini-lot comme le nombre d'échantillons sur lesquels nous faisons la moyenne pour trouver les mises à jour des poids / biais nécessaires pour descendre le gradient.
Ma question est de savoir si nous devons puiser sans remplacement dans l'ensemble d'exemples de formation afin de générer chaque mini-lot à une époque. Je pense que nous devrions éviter le remplacement pour nous assurer que nous "tirons tous les échantillons" pour répondre à l'exigence de fin de période, mais j'ai du mal à trouver une réponse définitive d'une manière ou d'une autre.
J'ai essayé de googler et de lire Ch. 1 des réseaux neuronaux et de l'apprentissage profond de Nielsen, mais n'ont pas trouvé de réponse claire. Dans ce texte, Nielsen ne précise pas que l'échantillonnage aléatoire doit être fait sans remplacement, mais semble impliquer que c'est le cas.
Une formalisation plus claire de la formation aux époques peut être trouvée ici si vous le souhaitez - /stats//a/141265/131630
Edit: cette question m'a semblé similaire mais il n'était pas clair comment appliquer le fait que la linéarité de l'attente est indifférente à l'indépendance à cette situation - Si l'échantillonnage a lieu avec ou sans remplacement
Réponses:
Une bonne analyse théorique des schémas avec et sans remplacement dans le contexte d'algorithmes itératifs basés sur des tirages aléatoires (qui sont le nombre de réseaux de neurones profonds discriminants (DNN) formés contre) peut être trouvée ici
Bref, il s'avère que l'échantillonnage sans remplacement conduit à une convergence plus rapide que l'échantillonnage avec remplacement.
Je donnerai ici une brève analyse basée sur l'exemple de jouet qu'ils fournissent: Disons que nous voulons optimiser la fonction objectif suivante:
où la cible . Dans cet exemple, nous essayons de résoudre pour le optimal , étant donné labels de évidemment.x N y iyje∼ N( μ , σ2) X N yje
Ok, donc si nous devions résoudre le optimal directement ci-dessus, nous prendrions ici la dérivée de la fonction de perte, la définirions à 0 et nous résoudrions pour . Donc, pour notre exemple ci-dessus, la perte estxX X
et sa première dérivée serait:
Mettre à 0 et résoudre pour , donne: xδLδX x
En d'autres termes, la solution optimale n'est rien d'autre que la moyenne de l'échantillon de tous les échantillons de .yN y
Maintenant, si nous ne pouvions pas effectuer le calcul ci-dessus d'un coup, nous devions le faire de manière récursive, via l'équation de mise à jour de la descente de gradient ci-dessous:
et simplement insérer nos termes ici donne:
Si nous exécutons ce qui précède pour tous les , alors nous effectuons effectivement cette mise à jour sans remplacement. La question devient alors: pouvons-nous obtenir également la valeur optimale de de cette façon? (N'oubliez pas que la valeur optimale de n'est rien d'autre que la moyenne de l'échantillon de ). La réponse est oui, si vous laissez . Pour voir, cela nous développons: x x y λ i = 1 / ii ∈ 1 , 2 , . . . N X X y λje= 1 / i
La dernière équation n'est cependant que la formule de la moyenne mobile! Ainsi, alors que nous parcourons l'ensemble de , , etc. jusqu'à , nous aurions effectué nos mises à jour sans remplacement, et notre formule de mise à jour nous donne la solution optimale de , qui est la échantillon moyen!i = 2 i = N xi = 1 i = 2 i = N X
En revanche cependant, si nous dessinions avec remplacement, alors que nos tirages seraient alors vraiment indépendants, la valeur optimisée serait différente de la moyenne (optimale) , et l'erreur carrée serait donnée par:XN μ
qui va être une valeur positive, et ce simple exemple de jouet peut être étendu à des dimensions plus élevées. Cela a pour conséquence que nous voudrions effectuer l'échantillonnage sans remplacement comme une solution plus optimale.
J'espère que cela clarifie un peu plus!
la source
Selon le code du référentiel de Nielsen, les mini-lots sont dessinés sans remplacement:
Nous pouvons voir qu'il n'y a pas de remplacement d'échantillons d'apprentissage dans une époque. Fait intéressant, nous pouvons également voir que Nielsen choisit de ne pas se soucier d'ajuster
eta
(le taux d'apprentissage) pour la dernière taille de mini_batch, qui peut ne pas avoir autant d'échantillons d'entraînement que les mini-lots précédents. Vraisemblablement, c'est une modification avancée qu'il laisse pour les chapitres suivants. **** EDIT: En fait, cette mise à l'échelle se produit dans la
def update_mini_batch
fonction. Par exemple, avec les poids:Cela est nécessaire car le dernier mini_batch peut être plus petit que les mini_batches précédents si le nombre d'échantillons d'apprentissage par mini_batch ne se divise pas également en nombre total d'échantillons d'apprentissage disponibles.
Production:
Changer
mini_batch_size
pour3
, qui ne se divise pas également en nos 10 échantillons d'entraînement. Pour la sortie, nous obtenons:Lors de l'évaluation d'une plage sur des indices de liste (quelque chose de la forme
[x:y]
oùx
ety
sont des indices dans la liste), si notre valeur de droite dépasse la longueur de la liste, python renvoie simplement les éléments de la liste jusqu'à ce que la valeur sorte de la plage d'index .Ainsi, le dernier mini-lot peut être plus petit que les mini-lots précédents, mais s'il est pondéré par le même,
eta
ces échantillons d'apprentissage contribueront davantage à l'apprentissage que les échantillons des autres mini-lots plus grands. Étant donné qu'il ne s'agit que du dernier mini-lot, cela ne vaut probablement pas la peine de s'inquiéter de trop, mais peut facilement être résolu en adaptanteta
la longueur du mini-lot.la source