Dans les tâches d'apprentissage automatique, il est courant de mélanger les données et de les normaliser. Le but de la normalisation est clair (pour avoir la même plage de valeurs de caractéristiques). Mais, après beaucoup de difficultés, je n'ai trouvé aucune raison valable de mélanger les données.
J'ai lu ce post ici pour discuter du moment où nous devons mélanger les données, mais il n'est pas évident pourquoi nous devrions mélanger les données. De plus, j'ai vu fréquemment dans des algorithmes tels qu'Adam ou SGD où nous avons besoin d'une descente de gradient par lots (les données doivent être séparées en mini-lots et la taille des lots doit être spécifiée). Il est vital selon ce post de mélanger les données pour chaque époque pour avoir des données différentes pour chaque lot. Donc, peut-être que les données sont mélangées et, plus important encore, modifiées.
Pourquoi faisons-nous cela?
Réponses:
Basé sur Que devons-nous faire lorsqu'une question publiée sur DataScience est une copie d'une question publiée sur CrossValidated? , Je republie ma réponse à la même question posée sur CrossValidated ( /stats//a/311318/89653 ).
Remarque: tout au long de cette réponse, je fais référence à la minimisation de la perte de formation et je ne parle pas de 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 est minimisé) tandis que est fixe.WLX(W) W X X L W W L X
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 découle 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.P W P L P+ 1 P= 2 W XL W X
Mais il y a le problème de la non-convexité; la surface que j'ai décrite aura de nombreux minima locaux et, par conséquent, 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 X
Une solution à cela est une formation en mini-lot combinée à un brassage. 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 que deux itérations sur la séquence entière d'itérations et d'époques de formation ne soient pas exécuté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 + 1 ℒ X i ℒ X W WX X je Xje L LXje( Wje) . À 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 du gradient et continuer la formation. Pour être clair: la forme de sera - en général - différente de celle de . Notez que je fais référence 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 + 1 LXi + 1( Wje) LXje( Wje) LXi + 1 LXje L X W Plutô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 y a 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 était une discussion sur la taille des mini-lots, car il y a un million d'opinions à 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 XL X W X X
la source
Le brassage des données sert à réduire la variance et à garantir que les modèles restent généraux et surajustés.
Le cas évident où vous mélangeriez vos données est si vos données sont triées par leur classe / cible. Ici, vous voudrez mélanger pour vous assurer que vos ensembles de formation / test / validation sont représentatifs de la distribution globale des données.
Pour la descente de gradient par lots, la même logique s'applique. L'idée derrière la descente de gradient par lots est qu'en calculant le gradient sur un seul lot, vous obtiendrez généralement une assez bonne estimation du "vrai" gradient. De cette façon, vous économisez du temps de calcul en n'ayant pas à calculer le "vrai" gradient sur l'ensemble de données à chaque fois.
Vous souhaitez mélanger vos données après chaque époque, car vous aurez toujours le risque de créer des lots qui ne sont pas représentatifs de l'ensemble de données, et par conséquent, votre estimation du gradient sera erronée. Mélanger vos données après chaque époque garantit que vous ne serez pas «coincé» avec trop de mauvais lots.
Dans une descente de gradient stochastique régulière, lorsque chaque lot a la taille 1, vous voulez toujours mélanger vos données après chaque époque pour garder votre apprentissage général. En effet, si le point de données 17 est toujours utilisé après le point de données 16, son propre gradient sera biaisé avec les mises à jour du point de données 16 effectuées sur le modèle. En mélangeant vos données, vous vous assurez que chaque point de données crée un changement "indépendant" sur le modèle, sans être biaisé par les mêmes points avant eux.
la source
Supposons que les données soient triées dans un ordre spécifié. Par exemple, un ensemble de données qui est trié en fonction de leur classe. Donc, si vous sélectionnez des données pour la formation, la validation et le test sans considérer ce sujet, vous sélectionnerez chaque classe pour des tâches différentes, et le processus échouera.
Par conséquent, pour empêcher ce type de problèmes, une solution simple consiste à mélanger les données pour obtenir différents ensembles de données de formation, de validation et de test.
À propos du mini-lot, les réponses à ce message peuvent être une solution à votre question.
la source
Nous devons mélanger uniquement pour les mini-lots / SGD, pas besoin de descente de gradient par lots.
Si vous ne mélangez pas les données, les données peuvent être triées ou des points de données similaires se trouvent côte à côte, ce qui conduit à une convergence lente:
J'ai dessiné le tracé de la fonction de perte L-2 pour la régression linéaire pour
y=2x
icila source
Complétant la réponse de @ Josh, je voudrais ajouter que, pour la même raison, le brassage doit être effectué avant le traitement par lots. Sinon, vous obtenez le même nombre fini de surfaces.
la source
Pour une meilleure précision du modèle, il est toujours recommandé que les données d'entraînement aient toutes les saveurs de données.
Le brassage des données de formation nous aide à atteindre cet objectif.
la source
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 que deux itérations sur la séquence entière d'itérations et d'époques de formation ne soient pas exécutées exactement sur la même 𝑋
la source