Pourquoi devrions-nous mélanger les données lors de la formation d'un réseau neuronal?


15

Dans la formation en mini-lots d'un réseau de neurones, j'ai entendu qu'une pratique importante est de mélanger les données d'entraînement avant chaque époque. Quelqu'un peut-il expliquer pourquoi le brassage à chaque époque aide?

De la recherche google, j'ai trouvé les réponses suivantes:

  • il aide la formation à converger rapidement
  • il évite tout biais lors de la formation
  • il empêche le modèle d'apprendre l'ordre de la formation

Mais, j'ai de la difficulté à comprendre pourquoi l'un de ces effets est causé par le brassage aléatoire. Quelqu'un peut-il fournir une explication intuitive?

Réponses:


8

Pour essayer de donner une autre explication:

L'une des choses les plus puissantes des réseaux de neurones est qu'ils peuvent être des fonctions très complexes, permettant d'apprendre des relations très complexes entre vos données d'entrée et de sortie. Ces relations peuvent inclure des choses auxquelles vous ne vous attendez jamais, comme l'ordre dans lequel les données sont introduites par époque. Si l'ordre des données à chaque époque est le même, le modèle peut l'utiliser pour réduire l'erreur d'apprentissage, ce qui est une sorte de sur-ajustement.

En ce qui concerne la vitesse: les méthodes Mini-batch reposent sur la descente de gradient stochastique (et les améliorations qui y sont apportées), ce qui signifie qu'elles s'appuient sur le caractère aléatoire pour trouver un minimum. Le fait de mélanger des mini-lots rend les gradients plus variables, ce qui peut favoriser la convergence car il augmente la probabilité de prendre une bonne direction (ou du moins c'est ainsi que je le comprends).


1
Comment un réseau de neurones peut-il apprendre l'ordre dans lequel les données sont alimentées à chaque époque?
Code Pope

1
En un mot, ils ne peuvent pas. Si vous utilisez la formation en mini-lots (c.-à-d. Plus d'un lot par époque), un ordre particulier des données peut influencer la formation dans le sens où en se formant d'abord sur un mini-lot, le solveur peut entrer dans une certaine région (contenant peut-être un local minimum ...) plutôt qu'un autre. Mais dire qu'un NN à action directe "apprend" sur l'ordre des données n'est pas vraiment correct parce que chaque prédiction est faite indépendamment de toute autre prédiction, et l'ordre dans des mini-lots n'aura, bien sûr, aucun effet.
Josh

6

D'un point de vue très simpliste, les données sont introduites séquentiellement, ce qui suggère qu'au moins, il est possible que l'ordre des données ait un effet sur la sortie. Si l'ordre n'a pas d'importance, la randomisation ne fera certainement pas de mal. Si l'ordre importe, la randomisation aidera à lisser ces effets aléatoires afin qu'ils ne deviennent pas des biais systématiques. En bref, la randomisation est bon marché et ne fait jamais de mal, et minimise souvent les effets de commande des données.


6

Remarque: tout au long de cette réponse, je fais référence à la minimisation de la perte d'entraînement et je ne discute pas des critères d'arrêt tels que la perte de validation. Le choix des critères d'arrêt n'affecte pas le processus / les concepts décrits ci-dessous.

Le processus d'apprentissage d'un réseau neuronal consiste à trouver la valeur minimale d'une fonction de perte , où représente une matrice (ou plusieurs matrices) de poids entre les neurones et représente l'ensemble de données d'apprentissage. J'utilise un indice pour pour indiquer que notre minimisation de se produit uniquement sur les poids (c'est-à-dire que nous recherchons tel que soit minimisé) tandis que est fixe.X(W)WXXWWX

Maintenant, si nous supposons que nous avons éléments dans (c'est-à-dire qu'il y a poids dans le réseau), est une surface dans un espace dimensionnel . Pour donner un analogue visuel, imaginez que nous n'avons que deux poids de neurones ( ). Alors a une interprétation géométrique facile: c'est une surface dans un espace tridimensionnel. Cela vient du fait que pour toute matrice de poids donnée , la fonction de perte peut être évaluée sur et cette valeur devient l'élévation de la surface.PWPP+1P=2WX

Mais il y a le problème de la non-convexité; la surface que j'ai décrite aura de nombreux minima locaux, et donc les algorithmes de descente de gradient sont susceptibles de se "coincer" dans ces minima tandis qu'une solution plus profonde / inférieure / meilleure peut se trouver à proximité. Cela peut se produire si est inchangé sur toutes les itérations d'apprentissage, car la surface est fixe pour un donné ; toutes ses fonctionnalités sont statiques, y compris ses différents minima.XX

Une solution à cela est une formation en mini-lot combinée à un mélange. En mélangeant les lignes et en ne les entraînant que sur un sous-ensemble d'entre elles au cours d'une itération donnée, change à chaque itération, et il est en fait tout à fait possible qu'aucune deux itérations sur la séquence entière d'itérations et d'époques de formation ne soient effectuées sur le même . L'effet est que le solveur peut facilement "rebondir" sur un minimum local. Imaginez que le solveur soit bloqué dans un minimum local à l'itération avec la formation du mini-lot . Ce minimum local correspond à évalué à une valeur particulière de poids; nous l'appelleronsX i X i X i ( W i ) X i + 1 X i + 1 ( W i ) X i ( W i ) X i + 1X i X W WXXiXiXi(Wi). À l'itération suivante, la forme de notre surface de perte change en fait parce que nous utilisons , c'est-à-dire que peut prendre une valeur très différente de et il est fort possible que cela ne corresponde pas à un minimum local! Nous pouvons maintenant calculer une mise à jour de gradient et continuer la formation. Pour être clair: la forme de sera - en général - différente de celle de . Notez que je me réfère ici à la fonction de perte évaluée sur un ensemble d'apprentissage ; c'est une surface complète définie sur toutes les valeurs possibles deXi+1Xi+1(Wi)Xi(Wi)Xi+1XiXWPlutôt que l'évaluation de cette perte (qui est juste un scalaire) pour une valeur spécifique de . Notez également que si des mini-lots sont utilisés sans mélange, il existe toujours un certain degré de "diversification" des surfaces de perte, mais il y aura un nombre fini (et relativement petit) de surfaces d'erreur uniques vues par le solveur (en particulier, il verra le même ensemble exact de mini-lots - et donc de surfaces de perte - à chaque époque).W

Une chose que j'ai délibérément évitée a été une discussion sur les tailles des mini-lots, car il y a un million d'avis à ce sujet et cela a des implications pratiques importantes (une plus grande parallélisation peut être obtenue avec des lots plus importants). Cependant, je pense que ce qui suit mérite d'être mentionné. Étant donné que est évalué en calculant une valeur pour chaque ligne de (et en additionnant ou en prenant la moyenne, c'est-à-dire un opérateur commutatif) pour un ensemble donné de matrices de poids , la disposition des lignes de n'a aucun effet lors de l'utilisation de descente de gradient de lot (c'est-à-dire lorsque chaque lot est le complet et que les itérations et les époques sont la même chose). X W X XXWX X


Merci pour cette explication utile. Après avoir lu votre réponse en profondeur, j'ai deux questions: 1. Vous avez mentionné que le mini-lot fournit un degré de diversification limitée. Je ne comprends pas pourquoi cela ne suffit pas pour éviter de rester coincé dans le minimum local. Si le solveur est dans les minima locaux de la surface d'un lot, il est très probable qu'il ne se trouve pas dans les minima locaux de la surface du lot suivant, il ne devrait donc pas rester collé. 2. Comment le solveur converge-t-il dans la surface de la fonction de perte alors que la surface change toujours en utilisant des lots différents?
Code Pope

L'avantage de diversification est toujours là sans mélange, mais il n'est pas aussi important que lorsque le mélange est utilisé car il voit constamment la même séquence de surfaces de perte, alors que si nous utilisons le mélange, il ne verra probablement jamais la même surface de perte exacte plus d'une fois. En ce qui concerne les critères d'arrêt, j'ai généralement écrit le mien de telle sorte qu'une fois que le pourcentage moyen de réduction des pertes sur un nombre spécifié d'itérations est inférieur à une certaine tolérance, la formation s'arrête.
Josh

2
Peut-être que je n'ai pas vraiment bien répondu à votre question sur les minima locaux. En théorie, ces surfaces de perte devraient toutes présenter un certain degré de similitude, car la distribution de probabilité de la réponse (conditionnelle aux prédicteurs du modèle) est supposée constante sur l'ensemble des données d'apprentissage. Donc, si un minimum est suffisamment profond, il devrait apparaître sur un grand nombre de mini-lots, il est donc peu probable que le solveur en rebondisse. Mais si le minimum est fondamentalement juste du «bruit», cette stratégie devrait plutôt bien fonctionner et permettre au modèle de continuer à s'entraîner.
Josh

Merci. Votre deuxième réponse permet de comprendre clairement pourquoi le NN converge malgré les différentes surfaces. En ce qui concerne ma première question, est-il exact de dire que le fait d'avoir la même séquence aurait juste une possibilité plus élevée qu'un "bruit" se répète dans de nombreuses surfaces de perte des lots que lors de l'utilisation du brassage? C'est la seule explication que je peux donner pourquoi il est toujours possible de rester coincé dans les minima locaux lors de l'utilisation de mini-lots sans mélange.
Code Pope

@CodePope Je pense que c'est vrai. De plus, une fois que la perte a été considérablement réduite depuis le début de la formation, les gradients seront assez petits et il peut même être possible que le solveur se retrouve coincé dans une "boucle" car il continue de voir la même séquence de surfaces de perte. Veuillez noter qu'il s'agit d'une explication spéculative basée sur mon expérience plutôt limitée, donc si vous avez un intérêt théorique sérieux à ce sujet, vous feriez mieux de consulter un expert.
Josh

4

Imaginez que vos dernières étiquettes de minibatch aient plus de bruit. Ensuite, ces lots tireront les poids finaux appris dans la mauvaise direction. Si vous mélangez à chaque fois, les chances que les derniers lots soient disproportionnellement bruyants diminuent.


1

Lorsque vous entraînez votre réseau à l'aide d'un ensemble de données fixe, ce qui signifie des données que vous ne mélangez jamais pendant la formation. Vous êtes très susceptible d'obtenir des poids très élevés et très bas tels que 40,70, -101,200 ... etc. Cela signifie simplement que votre réseau n'a pas appris les données d'entraînement mais qu'il a appris le bruit de vos données d'entraînement. Cas classique d'un modèle overfit. Avec un tel réseau, vous obtiendrez des prévisions sur les données que vous avez utilisées pour la formation. Si vous utilisez d'autres entrées pour le tester, votre modèle s'effondrera. Maintenant, lorsque vous mélangez les données d'entraînement après chaque époque (itération de l'ensemble global), vous alimentez simplement les neurones à chaque époque et cela régule simplement les poids, ce qui signifie que vous êtes plus susceptible d'obtenir des poids «inférieurs» plus proches de zéro , ce qui signifie que votre réseau peut effectuer de meilleures généralisations.

J'espère que c'était clair.


1

Voici une explication plus intuitive:

Lorsque vous utilisez la descente de gradient, nous voulons que la perte soit réduite dans une direction de gradient. Le gradient est calculé par les données d'un mini-lot unique pour chaque cycle de mise à jour du poids. Ce que nous voulons, c'est que ce gradient basé sur des mini-lots soit à peu près le gradient de population, car cela devrait produire une convergence plus rapide. (Imaginez que si vous alimentez le réseau 100 données de classe 1 dans un mini-lot, et 100 données de classe 2 dans un autre, le réseau planera. Une meilleure façon est de l'alimenter avec 50 classes 1 + 50 classes 2 dans chaque mini-lot.)

Comment y parvenir puisque nous ne pouvons pas utiliser les données de population dans un mini-lot? L'art de la statistique nous dit: mélangez la population et les premières données batch_size peuvent représenter la population. C'est pourquoi nous devons mélanger la population.

Je dois dire que le brassage n'est pas nécessaire si vous avez une autre méthode pour échantillonner les données de la population et vous assurer que les échantillons peuvent produire un gradient raisonnable.

Voilà ma compréhension. J'espère que cela aide.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.