C'est une question principale, concernant la théorie des réseaux de neurones:
Pourquoi devons-nous normaliser l'entrée d'un réseau de neurones?
Je comprends que parfois, lorsque par exemple les valeurs d'entrée ne sont pas 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?
Réponses:
C'est bien expliqué ici .
la source
Dans les réseaux de neurones, il est judicieux non seulement de normaliser les données, mais également de les mettre à l'échelle. Ceci est destiné à une approche plus rapide des minima globaux à la surface d'erreur. Voir les images suivantes:
Les photos sont tirées du cours sur les réseaux de neurones. L'auteur du cours est Geoffrey Hinton.
la source
Certaines entrées de NN peuvent ne pas avoir une plage de valeurs «naturellement définie». Par exemple, la valeur moyenne peut être lente, mais en augmentation continue avec le temps (par exemple, un certain 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 devez normaliser cette valeur. Vous pouvez par exemple indiquer au réseau de combien la valeur a changé depuis l'entrée précédente. 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.
la source
En regardant le réseau neuronal de l'extérieur, c'est juste une fonction qui prend quelques 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 neuronal 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 approprié.
Le comportement exact du réseau de neurones sur des arguments en dehors du domaine dépend de la mise en œuvre du réseau de neurones. Mais globalement, le résultat est inutile si les arguments ne sont pas dans le domaine.
la source
Il y a 2 raisons pour lesquelles nous devons normaliser les caractéristiques d'entrée avant de les alimenter au réseau neuronal:
Raison 1 : Si un
Feature
dans leDataset
est à grande échelle par rapport aux autres, alors cette fonctionnalité à grande échelle devient dominante et en conséquence, 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 être de 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 entités se situeront dans la plage de (0 à 1).
Raison 2 : La propagation frontale des réseaux de neurones implique le produit scalaire de poids avec des caractéristiques d'entrée. Ainsi, si les valeurs sont très élevées (pour les données d'image et non-image), le calcul de la sortie prend beaucoup de temps de calcul ainsi que de mémoire. Il en va de même lors de 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 énorme, car la valeur de chaque pixel va de 0 à 255. La normalisation dans ce cas est très importante.
Ci-dessous sont mentionnés les exemples où la normalisation est très importante:
la source
Je pense que la réponse dépend du scénario.
Considérez NN (réseau neuronal) comme un opérateur F, de sorte que F (entrée) = sortie . Dans le cas où cette relation est linéaire de sorte que F (A * entrée) = A * sortie , alors vous pouvez choisir soit de laisser l'entrée / sortie non normalisée dans leurs formes brutes, soit de normaliser les deux pour éliminer A. Évidemment, cette hypothèse de linéarité est violé dans les tâches de classification, ou presque n'importe quelle tâche qui génère une probabilité, où F (A * entrée) = 1 * sortie
En pratique, la normalisation permet aux réseaux non adaptables d'être adaptables, ce qui est crucial pour les expérimentateurs / programmeurs. Néanmoins, l'impact précis de la normalisation dépendra non seulement de l'architecture / de l'algorithme du réseau, mais également du préalable statistique pour l'entrée et la sortie.
De plus, NN est souvent implémenté pour résoudre des problèmes très difficiles à la manière d'une 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, provoquant l'avantage technique (devenir adaptable) dominer son impact sur les statistiques.
Au sens statistique, la normalisation supprime la variation considérée comme non causale dans la prédiction de la sortie, afin d'empêcher NN d'apprendre cette variation comme un prédicteur ( NN ne voit pas cette variation et ne peut donc pas l'utiliser ).
la source
Lorsque vous utilisez des entités 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 avec la descente de gradient, cela devient un problème car la pente sera raide par rapport à certains des paramètres. Cela conduit à de grandes oscillations dans l'espace de recherche, car vous rebondissez entre des pentes raides. Pour compenser, vous devez stabiliser l'optimisation avec de faibles taux d'apprentissage.
Considérez les fonctionnalités x1 et x2, où vont respectivement de 0 à 1 et de 0 à 1 million. Il s'avère que les rapports pour les paramètres correspondants (par exemple, w1 et w2) seront également grands.
La normalisation tend à rendre la fonction de perte plus symétrique / sphérique. Celles-ci sont plus faciles à optimiser car les dégradés ont tendance à pointer vers le minimum global et vous pouvez faire des pas plus importants.
la source
La raison pour laquelle la normalisation est nécessaire est que si vous regardez comment une étape adaptative se déroule à un endroit dans le domaine de la fonction, et que vous transportez simplement le problème à l'équivalent de la même étape traduite par une grande valeur dans une direction dans le 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. Dans quelle mesure 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 dans le résultat de l'entraînement. Je n'ai pas écrit cela, mais vous pouvez simplement regarder les mathématiques pour une fonction linéaire simple et comment elle est entraîné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. Dans les ALN, le problème a été corrigé et je peux vous envoyer un article si vous écrivez à wwarmstrong AT shaw.ca
la source
Les couches cachées sont utilisées en fonction de la complexité de nos données. Si nous avons des données d'entrée qui sont linéairement séparables, nous n'avons pas besoin d'utiliser de couche cachée, par exemple une porte OU, mais si nous avons des données non séparables linéairement, nous devons utiliser une couche cachée, par exemple une porte logique ExOR. Le nombre de nœuds pris à n'importe quelle couche dépend du degré de validation croisée de notre sortie.
la source