Normalisation des données et normalisation dans les réseaux de neurones


40

J'essaie de prédire le résultat d'un système complexe en utilisant des réseaux de neurones (ANN). Les résultats (dépendants) vont de 0 à 10 000. Les différentes variables d'entrée ont des plages différentes. Toutes les variables ont des distributions à peu près normales.

Je considère différentes options pour mettre à l'échelle les données avant l'entraînement. Une option consiste à mettre à l'échelle les variables d'entrée (indépendantes) et de sortie (dépendantes) à [0, 1] en calculant la fonction de distribution cumulative à l'aide des valeurs de déviation moyenne et standard de chaque variable, indépendamment. Le problème avec cette méthode est que si j'utilise la fonction d'activation sigmoïde à la sortie, il est très probable que je raterai des données extrêmes, en particulier celles qui n'apparaissent pas dans l'ensemble de formation.

Une autre option consiste à utiliser un z-score. Dans ce cas, je n'ai pas le problème extrême de données; Cependant, je suis limité à une fonction d'activation linéaire à la sortie.

Quelles sont les autres techniques de normalisation acceptées qui sont utilisées avec les ANN? J'ai essayé de chercher des critiques sur ce sujet, mais je n'ai rien trouvé d'utile.


La normalisation des scores Z est parfois utilisée, mais j'ai le sentiment drôle que cela pourrait donner un autre nom à la réponse de bayer ??
Osknows

C'est la même chose sauf pour la partie blanchissante.
Bayerj

1
Si vous prédisez une valeur (comme vous êtes) plutôt qu'une probabilité (c'est-à-dire une régression plutôt qu'une classification), vous devez toujours utiliser une fonction de sortie linéaire.
Seanv507

Rank-Gauss de Michael Jahrer . C'est rang puis faites-le gaussien.
user3226167

Réponses:


32

Une approche standard consiste à mettre à l'échelle les entrées pour obtenir une moyenne de 0 et une variance de 1. De plus, la décorrélation linéaire / blanchiment / pca aide beaucoup.

Si vous êtes intéressé par les ficelles du métier, je peux vous recommander le papier backprop efficace de LeCun.


1
Bien sûr, il ne faut jamais essayer de normaliser aveuglément les données si celles-ci ne suivent pas une distribution (unique) normale. stats.stackexchange.com/a/816/4581
user4581

24
Avec les réseaux de neurones, vous devez le faire. Sinon, vous allez immédiatement saturer les unités cachées, puis leurs gradients seront proches de zéro et aucun apprentissage ne sera possible. Il ne s'agit pas de modélisation (les réseaux de neurones ne supposent aucune distribution dans les données d'entrée), mais de problèmes numériques.
Bayerj

Je suis assez confus. Ce lien ( machinelearningmastery.com/… ) indique que la normalisation est utile lorsque l’algorithme que vous utilisez fait des hypothèses sur les données dont la distribution est gaussienne (ce n’est pas le cas du NN). Sinon, il est indiqué que vous devez utiliser la normalisation. Est-ce que quelqu'un peut m'éclairer?
ihebiheb

21

1- La normalisation Min-Max conserve la distribution originale des scores à l'exception d'un facteur de mise à l'échelle et transforme tous les scores en une plage commune [0, 1]. Toutefois, cette méthode n’est pas robuste (c’est-à-dire qu’elle est très sensible aux valeurs aberrantes.

2- Normalisation (normalisation du score Z) Technique la plus couramment utilisée, calculée à l'aide de la moyenne arithmétique et de l'écart type des données fournies. Cependant, l'écart moyen et l'écart type sont tous deux sensibles aux valeurs aberrantes et cette technique ne garantit pas une plage numérique commune pour les scores normalisés. De plus, si les partitions d’entrée ne sont pas distribuées gaussiennes, cette technique ne conserve pas la distribution d’entrée à la sortie.

3- Médiane et MAD: La déviation absolue médiane et médiane (MAD) est insensible aux valeurs aberrantes et aux points dans les extrémités extrêmes de la distribution. donc c'est robuste. Cependant, cette technique ne conserve pas la distribution d'entrée et ne transforme pas les scores en une plage numérique commune.

Estimateurs 4- tanh: Les estimateurs tanh introduits par Hampel et al. sont robustes et très efficaces. La normalisation est donnée par

estimateurs tanh où μGH et σGH sont les estimations de la moyenne et de l'écart type, respectivement, de la distribution des scores réels telle que donnée par les estimateurs de Hampel.

Par conséquent, je recommande les estimateurs de tanh.

référence https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt


J'ai du mal à trouver des informations sur cet estimateur tanh. Quelqu'un peut-il nous éclairer?
Ben Ogorek

Enfin, nous avons trouvé un article qui décrit bien les estimateurs tanh pour la normalisation: wjscheirer.com/papers/wjs_eccv2010_fusion.pdf . Ils ne semblent pas viables comme une option de normalisation à usage général. "[Les estimateurs de Tanh] sont beaucoup plus compliqués à calculer que les scores z adaptatifs ... Les points de queue pour trois intervalles différents du score médian de la distribution doivent être définis de manière ad hoc. Ces paramètres peuvent être difficiles pour déterminer expérimentalement, et si choisi incorrectement, limiter l'efficacité des estimateurs de tanh. "
Ben Ogorek

8

J'ai donné une réponse similaire ici. Lorsque vous effectuez une régression multiple, quand devriez-vous centrer vos variables prédictives et quand devriez-vous les normaliser? mais pensé que c'était un contexte suffisamment différent pour qu'une réponse puisse aller ici.

Il existe une excellente ressource Usenet http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html

Il résume en termes simples certains des problèmes et considérations à prendre en compte lorsque l'on souhaite normaliser / normaliser / redimensionner les données. Comme il traite le sujet du point de vue de l’apprentissage automatique et que votre question est ML, cela pourrait avoir une certaine pertinence.


Vous devriez écrire ici les points principaux de chaque lien, aucune "navigation" supplémentaire n'est donc nécessaire
leoschet

2

Vous pourriez faire

  • normalisation min-max (normalisez les entrées / cibles pour qu'elles se situent dans la plage [−1,1]), ou
  • normalisation de l'écart type moyen (normaliser les entrées / objectifs pour qu'ils aient une variance / écart type nul et un)

1

Si vous travaillez dans python, sklearna une méthode pour ce faire en utilisant différentes techniques dans leur preprocessingmodule (plus une fonctionnalité de pipeline astucieuse, avec un exemple dans leur documentation):

import sklearn

# Normalize X, shape (n_samples, n_features)
X_norm = sklearn.preprocessing.normalize(X)

0

Eh bien, [0,1] est l'approche standard. Pour les réseaux de neurones, fonctionne le mieux dans la plage 0-1. L'échelle Min-Max (ou normalisation) est l'approche à suivre.

Maintenant sur les valeurs aberrantes, dans la plupart des scénarios, nous devons les éliminer, car les valeurs aberrantes ne sont pas courantes, vous ne voulez pas que les valeurs éloignées affectent votre modèle (à moins que la détection d'anomalie ne soit le problème que vous résolvez). Vous pouvez le découper en fonction de la règle empirique 68-95-99.7 ou créer un diagramme à parcelles, l'observer et le découper en conséquence.

Formule MinMax - (xi - min(x)) / (max(x) - min(x)) ou peut utilisersklearn.preprocessing.MinMaxScaler


-1

"Accepté" est ce qui vous convient le mieux - alors vous l'acceptez.

D'après mon expérience, adapter une distribution de la famille de distributions Johnson à chacune des entités continues fonctionne bien car les distributions sont très flexibles et peuvent transformer la plupart des entités unimodales en distributions normales normales. Cela aidera également avec les fonctionnalités multimodales, mais il est généralement préférable de les utiliser dans la forme la plus souhaitable (les données distribuées gaussiennes standard sont idéales, car elles sont compatibles et parfois optimales pour la plupart des applications. méthode statistique / ML disponible).

http://qualityamerica.com/LSS-Knowledge-Center/statisticalinference/johnson_distributions.php

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.