Une époque en descente de gradient stochastique est définie comme un passage unique dans les données. Pour chaque minibatch SGD, échantillons sont extraits, le gradient calculé et les paramètres mis à jour. Dans le réglage d'époque, les échantillons sont prélevés sans remplacement.
Mais cela semble inutile. Pourquoi ne pas dessiner chaque minibatch SGD car tirage aléatoire de l'ensemble des données à chaque itération? Sur un grand nombre d'époques, les petits écarts dont on voit les échantillons plus ou moins souvent sembleraient sans importance.
neural-networks
deep-learning
gradient-descent
Rétablir Monica
la source
la source
Réponses:
Outre les réponses de Franck sur les aspects pratiques et celles de David sur les sous-groupes restreints (deux points importants), il existe des raisons théoriques de préférer l'échantillonnage sans remplacement. La raison est peut-être liée au point de David (qui est essentiellement le problème du collecteur de coupon ).
En 2009, Léon Bottou a comparé les performances de convergence d'un problème de classification de texte particulier ( ).n = 781 , 265
Il a formé une machine à vecteurs de support via SGD selon trois approches:
C θ t tE [C( θt) - minθC( θ ) ] C θt t
Voici sa figure 1 illustrant que:
Ceci fut théoriquement confirmé par la suite:
Leur preuve ne s'applique qu'au cas où la fonction de perte est fortement convexe, c'est-à-dire pas aux réseaux de neurones. Il est toutefois raisonnable de s'attendre à ce qu'un raisonnement similaire puisse s'appliquer au cas du réseau neuronal (ce qui est beaucoup plus difficile à analyser).
la source
Il est en effet tout à fait inutile du point de vue des performances avec un grand ensemble d’entraînement, mais utiliser des époques peut être pratique, par exemple:
[1] donne une raison de plus, qui n'est pas tellement pertinente compte tenu de la configuration informatique actuelle:
[1] Bengio, Yoshua. " Recommandations pratiques pour la formation d'architectures profondes basée sur le gradient. " Réseaux de neurones: astuces du métier. Springer Berlin Heidelberg, 2012. 437-478.
la source
Je suis en désaccord quelque peu que ce ne sera clairement pas important. Disons qu'il y a un million d'exemples de formation et que nous prenons dix millions d'échantillons.
En R, on peut rapidement voir à quoi ressemble la distribution avec
plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")
Certains exemples seront visités plus de 20 fois, tandis que 1% d’entre eux le seront 3 fois ou moins. Si l'ensemble de formation a été choisi avec soin pour représenter la distribution attendue d'exemples dans des données réelles, cela pourrait avoir un impact réel sur certains domaines de l'ensemble de données, en particulier une fois que vous avez commencé à découper les données en groupes plus petits.
Prenons le cas récent où un électeur de l'Illinois a effectivement été suréchantillonné 30 fois et a considérablement modifié les estimations du modèle pour son groupe démographique (et dans une moindre mesure, pour l'ensemble de la population américaine). Si nous sur-échantillonnons accidentellement des images de "gélinotte huppée" prises sur un arrière-plan vert par temps nuageux avec une profondeur de champ étroite et que nous sous-échantillonnons les autres types d'images de grouse, le modèle pourrait associer ces caractéristiques non pertinentes à l'étiquette de catégorie. Plus il y a de façons de séparer les données, plus il y aura de sous-groupes et plus il y aura de possibilités pour ce type d'erreur.
la source
samples = sample(1:1E6, size = 1E7, replace = TRUE)
. A partir de là, vous pouvez tracer la distribution de fréquence avecplot(table(table(samples)) / 1E7)
. Cela ressemble à la distribution binomiale que j'ai décrite ci-dessus.