C'est une question principale, concernant la théorie des réseaux de neurones:
Pourquoi devons-nous normaliser l'entrée pour un réseau de neurones?
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 être dans un certain intervalle?
Que se passera-t-il si les données ne sont pas normalisées?
C'est bien expliqué ici .
Si les variables d'entrée sont combinées linéairement, comme dans un MLP, alors il s'agit de rarement strictement nécessaire pour normaliser les entrées, du moins en théorie. Le La raison en est que toute remise à l'échelle d'un vecteur d'entrée peut être efficacement annulée de changer les poids et les biais correspondants, vous laissant avec l'exacte mêmes sorties que vous aviez avant. Cependant, il existe une variété de pratiques raisons pour lesquelles la normalisation des entrées peut accélérer l’entraînement et réduire le chances de rester coincé dans les optima locaux. En outre, la décroissance du poids et Bayesian l'estimation peut être effectuée plus facilement avec des entrées normalisées.
Dans les réseaux de neurones, il convient non seulement de normaliser les données, mais également de les mettre à l'échelle. Ceci est prévu pour une approche plus rapide des minima globaux en surface d'erreur. Voir les images suivantes:
Les images sont tirées du cours coursera sur les réseaux de neurones. L'auteur du course est Geoffrey Hinton.
Certaines entrées de NN peuvent ne pas avoir de plage de valeurs «naturellement définie». Par exemple, la valeur moyenne peut être lente, mais continue d'augmenter avec le temps (par exemple, un 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 les valeurs de la partie inférieure de la plage, tandis que les entrées réelles proviendront de la partie supérieure de cette plage (et très probablement au-dessus de la plage avec laquelle le réseau a appris à travailler).
Vous devriez normaliser cette valeur. Vous pouvez par exemple indiquer au réseau de combien la valeur a changé depuis la dernière entrée. Cet incrément peut généralement être défini avec une probabilité élevée dans une plage spécifique, ce qui en fait une bonne entrée pour le réseau.
En regardant le réseau de neurones de l'extérieur, c'est simplement une fonction qui prend des arguments et produit un résultat. Comme pour toutes les fonctions, il a un domaine (c’est-à-dire un ensemble d’arguments juridiques). Vous devez normaliser les valeurs que vous souhaitez transmettre au réseau de neurones afin de vous assurer qu'il se trouve dans le domaine. Comme pour toutes les fonctions, si les arguments ne sont pas dans le domaine, le résultat n'est pas garanti.
Le comportement exact du réseau neuronal sur des arguments en dehors du domaine dépend de la mise en œuvre du réseau neuronal. Mais globalement, le résultat est inutile si les arguments ne sont pas dans le domaine.
La normalisation est nécessaire parce que si vous regardez comment une étape adaptative se déroule à un endroit du domaine de la fonction, vous transportez simplement le problème à l’équivalent de la même étape traduite par une valeur importante dans domaine, alors vous obtenez des résultats différents. Cela se résume à la question de l’adaptation d’une pièce linéaire à un point de données. Combien la pièce doit-elle bouger sans tourner et combien doit-elle tourner en réponse à ce point d'entraînement? Cela n'a aucun sens d'avoir une procédure d'adaptation modifiée dans différentes parties du domaine! Une normalisation est donc nécessaire pour réduire la différence de résultat d’entraînement. Je n'ai pas écrit cela, mais vous pouvez simplement regarder les maths pour une fonction linéaire simple et comment elle est formée par un point d'entraînement à deux endroits différents. Ce problème a peut-être été corrigé à certains endroits, mais je ne les connais pas bien. Dans les ALN, le problème a été corrigé et je peux vous envoyer un document si vous écrivez à wwarmstrong AT shaw.ca
Je crois que la réponse dépend du scénario.
Considérons NN (réseau de neurones) en tant qu'opérateur F, de sorte que F(input) = output . Dans le cas où cette relation est linéaire de sorte que F (entrée A *) = A * sortie , vous pouvez choisir de laisser l'entrée/sortie non normalisée dans leur forme brute ou de normaliser les deux pour éliminer A. cette hypothèse de linéarité est violée dans les tâches de classification ou dans presque toutes les tâches générant une probabilité, où F (entrée A *) = 1 * sortie
En pratique, la normalisation permet aux réseaux non adaptables d’être ajustables, ce qui est essentiel pour les expérimentateurs/programmeurs. Néanmoins, l’impact précis de la normalisation dépendra non seulement de l’architecture/algorithme du réseau, mais également du préalable statistique pour les entrées et les sorties.
De plus, NN est souvent mis en œuvre pour résoudre des problèmes très difficiles en mode boîte noire, ce qui signifie que le problème sous-jacent peut avoir une formulation statistique très médiocre, ce qui rend difficile l'évaluation de l'impact de la normalisation, entraînant un avantage technique dominer sur son impact sur les statistiques.
Sur le plan statistique, la normalisation supprime les variations considérées comme non causales dans la prévision du résultat, afin d'empêcher NN d'apprendre cette variation en tant que prédicteur (NN ne voit pas cette variation et ne peut donc pas l'utiliser).