184 votes

Pourquoi devons-nous normaliser l'entrée d'un réseau neuronal artificiel ?

Pourquoi doit-on normaliser l'entrée d'un réseau neuronal ?

Je comprends que parfois, lorsque par exemple les valeurs d'entrée sont non-numériques, une certaine transformation doit être effectuée, mais lorsque nous avons une entrée numérique ? Pourquoi les nombres doivent-ils être dans un certain intervalle ?

Que se passera-t-il si les données ne sont pas normalisées ?

1 votes

Je vote pour fermer cette question comme hors sujet car elle appartient à Stats SE ou AI SE.

121voto

finnw Points 24592

C'est bien expliqué aquí .

Si les variables d'entrée sont combinées de manière linéaire, comme dans un MLP [perceptron multicouche], il est rarement nécessaire de normaliser les entrées, au moins pour les variables d'entrée. rarement nécessaire de normaliser les entrées, du moins en théorie. La raison en est La raison en est que tout changement d'échelle d'un vecteur d'entrée peut être efficacement annulé en modifiant les poids et les biais correspondants, ce qui laisse le vecteur d'entrée intact. en changeant les poids et les biais correspondants, ce qui permet d'obtenir exactement les les mêmes résultats que précédemment. Cependant, il existe une variété de raisons pratiques raisons pratiques pour lesquelles la normalisation des entrées peut accélérer l'apprentissage et réduire les chances d'obtenir des résultats erronés. les chances de rester bloqué dans des optima locaux. De plus, la décroissance des poids et l'estimation bayésienne peuvent être effectuées plus facilement avec des entrées normalisées.

2 votes

Bonjour, Dans les MLP, la normalisation des caractéristiques tout en utilisant un taux d'apprentissage constant ne peut-elle pas entraîner une sur/sous-compensation dans les corrections de rétropropagation pour différentes dimensions ? Je me demande d'après le post suivant si cela est exclusif aux CNNs, ou si les MLPs pourraient partager ce problème : stats.stackexchange.com/questions/185853/

2 votes

Problème : Le processus d'opt. de descente par gradient peut prendre beaucoup plus de temps. Pourquoi ? Lorsque les caractéristiques sont de différentes échelles (x1=0-1 et x2=0..1000), la surface de la fonction d'erreur peut devenir allongée. Signification : différentes échelles pour différentes dimensions (w1,w2). Mais le taux d'apprentissage est le même SAME pour toutes les dims --> les pas dans la dim allongée (w2) sont très petits jusqu'à atteindre le min local. Problème : Impossible d'incrémenter LR, car cela va sauter le min local dans l'autre dim (w1). Voir la démo à youtube.com/watch?reload=9&v=UIp2CMI0748

0 votes

Voici un exemple linéaire, où les choses sont très mauvaises sans mise à l'échelle : stackoverflow.com/q/59319643 . Savez-vous pourquoi ?

73voto

Yura Zaletskyy Points 3300

Dans les réseaux neuronaux, il est bon non seulement de normaliser les données, mais aussi de les mettre à l'échelle. Ceci a pour but d'accélérer l'approche des minima globaux à la surface d'erreur. Voir les images suivantes : error surface before and after normalization

error surface before and after scaling

Les photos sont prises à partir du cours de langue sur les réseaux neuronaux. Auteur du cours est Geoffrey Hinton.

19 votes

Il aurait été gentil de votre part de créditer l'auteur du graphique que vous avez posté. Le graphique a été clairement pris de Le coursera de Geoffrey Hinton .

7 votes

J'ai trouvé cette vidéo a été très utile pour expliquer le diagramme ci-dessus, qui n'était pas évident pour moi.

23voto

Mchl Points 32343

Certaines entrées du NN peuvent ne pas avoir une gamme de valeurs "naturellement définie". Par exemple, la valeur moyenne peut augmenter lentement mais continuellement dans le temps (par exemple, le nombre d'enregistrements dans la base de données).

Dans ce cas, l'introduction de cette valeur brute dans votre réseau ne fonctionnera pas très bien. Vous apprendrez à votre réseau à utiliser des valeurs situées dans la partie inférieure de la plage, alors que les entrées réelles seront situées dans la partie supérieure de cette plage (et peut-être même au-dessus de la plage avec laquelle le réseau a appris à travailler).

Vous devez normaliser cette valeur. Vous pourriez par exemple indiquer au réseau de combien la valeur a changé depuis la saisie précédente. Cet incrément peut généralement être défini avec une forte probabilité dans une plage spécifique, ce qui en fait une bonne entrée pour le réseau.

0 votes

Bonne remarque sur la normalisation à partir de l'ensemble des entrées précédentes. Cela évite à l'utilisateur de définir un facteur de normalisation arbitraire. Cependant, je pense que le réseau s'entraînera plus précisément si le facteur de normalisation est une constante globale appliquée à chaque vecteur d'entrée.

20voto

Tensorflow Support Points 1706

Il existe deux raisons pour lesquelles il faut normaliser les caractéristiques d'entrée avant de les transmettre au réseau neuronal :

Raison 1 : Si un Feature dans le Dataset est de grande taille par rapport aux autres, cette caractéristique de grande taille devient dominante et, par conséquent, les prédictions du réseau neuronal ne seront pas exactes.

Exemple : Dans le cas des données sur les employés, si nous considérons l'âge et le salaire, l'âge sera un nombre à deux chiffres tandis que le salaire peut avoir 7 ou 8 chiffres (1 million, etc.). Dans ce cas, le salaire dominera la prédiction du réseau neuronal. Mais si nous normalisons ces caractéristiques, les valeurs des deux caractéristiques se situeront dans la plage de (0 à 1).

Raison 2 : La propagation frontale des réseaux neuronaux implique le produit scalaire des pondérations avec les caractéristiques d'entrée. Donc, si les valeurs sont très élevées (pour les données d'image et non d'image), le calcul de la sortie prend beaucoup de temps de calcul et de mémoire. Il en va de même pendant la propagation arrière. Par conséquent, le modèle converge lentement, si les entrées ne sont pas normalisées.

Exemple : Si nous effectuons une classification d'image, la taille de l'image sera très grande, car la valeur de chaque pixel va de 0 à 255. La normalisation dans ce cas est très importante.

Voici les cas où la normalisation est très importante :

  1. K-Means
  2. K-Nearest-Neighbours
  3. Analyse en composantes principales (ACP)
  4. Descente en gradient

0 votes

Comment suggérez-vous de normaliser un élément non limité comme le salaire ? Les salaires peuvent être arbitrairement élevés. Donc, si vous les normalisez simplement en utilisant une moyenne et un écart-type, le modèle que vous apprenez se détériorera au fil du temps à mesure que la distribution se modifie. À l'extrême, que se passe-t-il si vous avez un problème de RL qui implique de l'argent ? Comment un modèle de décision d'une entreprise doit-il gérer (normaliser) le fait de n'avoir aucun revenu au début, puis un petit revenu, et enfin des ordres de grandeur de revenus supplémentaires ?

10voto

crypdick Points 837

Lorsque vous utilisez des caractéristiques d'entrée non normalisées, la fonction de perte est susceptible d'avoir des vallées très allongées. Lors de l'optimisation par descente de gradient, cela devient un problème car le gradient sera raide par rapport à certains des paramètres. Cela entraîne de grandes oscillations dans l'espace de recherche, car vous rebondissez entre les pentes raides. Pour compenser, vous devez stabiliser l'optimisation avec de petits taux d'apprentissage.

Considérons les caractéristiques x1 et x2, qui vont respectivement de 0 à 1 et de 0 à 1 million. Il s'avère que les rapports pour les paramètres correspondants (disons, w1 et w2) seront également grands.

La normalisation tend à rendre la fonction de perte plus symétrique/sphérique. Ces fonctions sont plus faciles à optimiser car les gradients tendent à pointer vers le minimum global et vous pouvez faire des pas plus grands.

0 votes

Par Andrew Ng à partir de cette vidéo : youtube.com/watch?v=UIp2CMI0748

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X