Normalizacja i standaryzacja danych w sieciach neuronowych

40

Próbuję przewidzieć wynik złożonego układu wykorzystującego sieci neuronowe (ANN). Wartości wyników (zależne) wynoszą od 0 do 10 000. Różne zmienne wejściowe mają różne zakresy. Wszystkie zmienne mają z grubsza normalne rozkłady.

Rozważam różne opcje skalowania danych przed treningiem. Jedną z opcji jest skalowanie wejściowych (niezależnych) i wyjściowych (zależnych) zmiennych do [0, 1] o obliczenie skumulowanej funkcji rozkładu przy użyciu niezależnie wartości średniej i odchylenia standardowego każdej zmiennej. Problem z tą metodą polega na tym, że jeśli użyję funkcji aktywacji sigmoidalnej na wyjściu, najprawdopodobniej przegapię ekstremalne dane, szczególnie te niewidoczne w zestawie treningowym

Inną opcją jest użycie wyniku Z. W takim przypadku nie mam ekstremalnego problemu z danymi; jestem jednak ograniczony do liniowej funkcji aktywacji na wyjściu.

Jakie są inne akceptowane techniki normalizacyjne, które są używane z ANN? Próbowałem poszukać recenzji na ten temat, ale nie znalazłem nic przydatnego.

Boris Gorelik
źródło
Czasami używana jest normalizacja Z-score, ale mam dziwne wrażenie, że może to inna nazwa odpowiedzi Bayera?
osknows
To samo z wyjątkiem części wybielającej.
bayerj
1
Jeśli prognozujesz wartość (taką jaka jesteś), a nie prawdopodobieństwo (tj. Regresję zamiast klasyfikacji), zawsze powinieneś używać liniowej funkcji wyjściowej.
seanv507
Rank-Gauss Michaela Jahrera . Jest to ranga, a następnie gaussowski.
user3226167,

Odpowiedzi:

32

Standardowym podejściem jest skalowanie danych wejściowych tak, aby miały średnią 0 i wariancję 1. Bardzo pomaga również dekorelacja liniowa / wybielanie / pca.

Jeśli interesują Cię sztuczki w handlu, mogę polecić wydajny papier Lepropa.

bayerj
źródło
1
Oczywiście nigdy nie należy próbować ślepo normalizować danych, jeśli dane nie mają (pojedynczego) rozkładu normalnego. stats.stackexchange.com/a/816/4581
user4581
24
Z sieciami neuronowymi musisz. W przeciwnym razie natychmiast nasycisz ukryte jednostki, wtedy ich gradienty będą bliskie zeru i żadna nauka nie będzie możliwa. Nie chodzi o modelowanie (sieci neuronowe nie zakładają żadnego rozkładu danych wejściowych), ale o kwestie numeryczne.
bayerj
Jestem całkiem zdezorientowany. Ten link ( machinelearningmastery.com/… ) mówi, że standaryzacja jest przydatna, gdy używany algorytm przyjmuje założenia, że ​​dane mają rozkład Gaussa (nie dotyczy to NN). W przeciwnym razie mówi, że powinieneś użyć Normalizacji. Czy ktoś może mnie oświecić?
ihebiheb
21

Normalizacja 1- min-maks. Zachowuje pierwotny rozkład wyników z wyjątkiem współczynnika skalowania i przekształca wszystkie wyniki we wspólny zakres [0, 1]. Jednak ta metoda nie jest niezawodna (tj. Metoda jest bardzo wrażliwa na wartości odstające).

2- Standaryzacja (normalizacja Z-score) Najczęściej stosowana technika, która jest obliczana na podstawie średniej arytmetycznej i odchylenia standardowego danych. Jednak zarówno średnia, jak i odchylenie standardowe są wrażliwe na wartości odstające, a ta technika nie gwarantuje wspólnego zakresu liczbowego dla znormalizowanych wyników. Ponadto, jeśli wyniki wejściowe nie są rozkładem Gaussa, technika ta nie zachowuje rozkładu wejściowego na wyjściu.

3- Mediana i MAD: Mediana i mediana bezwzględnego odchylenia (MAD) są niewrażliwe na wartości odstające i punkty w skrajnych ogonach rozkładu. dlatego jest solidny. Jednak ta technika nie zachowuje rozkładu wejściowego i nie przekształca wyników we wspólny zakres liczbowy.

4- estry tanh: estymatory tanh wprowadzone przez Hampela i in. są solidne i wysoce wydajne. Normalizację podaje

estymatory tanh gdzie μGH i σGH są, odpowiednio, oszacowaniami średniej i odchylenia standardowego rzeczywistego rozkładu wyników, podanymi przez estymatory Hampela.

Dlatego polecam estymatory tanh.

odniesienie https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt

Ahmad Hassanat
źródło
Trudno mi znaleźć informacje o tym estymatorze tanga. Czy ktoś może rzucić na to trochę światła?
Ben Ogorek
W końcu znalazłem artykuł, który spisuje się dobrze, opisując estymatory tanga do normalizacji: wjscheirer.com/papers/wjs_eccv2010_fusion.pdf . Nie wydają się one opłacalne jako opcja normalizacji ogólnego przeznaczenia. „[Estymatory Tanha] są znacznie bardziej skomplikowane do obliczenia w porównaniu do adaptacyjnych wyników Z ... Punkty końcowe dla trzech różnych przedziałów od mediany wyniku rozkładu muszą być określone w sposób ad hoc. Parametry te mogą być trudne określić eksperymentalnie, a jeśli zostanie wybrany nieprawidłowo, ograniczyć skuteczność estymatorów tanga. ”
Ben Ogorek
8

Podałem podobną odpowiedź tutaj Kiedy przeprowadzając regresję wielokrotną, powinieneś wycentrować zmienne predykcyjne i kiedy je ujednolicić? ale pomyślał, że to wystarczająco różny kontekst, by znaleźć odpowiedź.

Istnieje świetny zasób usenet http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html

W prosty sposób podaje niektóre kwestie i rozważania, kiedy chce się znormalizować / znormalizować / przeskalować dane. Ponieważ traktuje to zagadnienie z perspektywy uczenia maszynowego, a ponieważ twoje pytanie dotyczy ML, może to mieć pewne znaczenie.

Paweł
źródło
Powinieneś tutaj napisać główne punkty każdego linku, więc nie jest potrzebna dodatkowa „nawigacja”
leoschet
2

Mógłbyś

  • min-maks. normalizacja (Normalizuj dane wejściowe / docelowe, aby mieściły się w zakresie [-1, 1]), lub
  • normalizacja średniej-odchylenia standardowego (Normalizuj dane wejściowe / docelowe, aby mieć zerową średnią i wariancję jedności / odchylenie standardowe)
prashanth
źródło
1

Jeśli pracujesz python, sklearnma metodę wykonania tego przy użyciu różnych technik w swoim preprocessingmodule (plus ciekawą funkcję potoku, z przykładem w swoich dokumentach):

import sklearn

# Normalize X, shape (n_samples, n_features)
X_norm = sklearn.preprocessing.normalize(X)
ryanjdillon
źródło
0

Cóż, [0,1] jest standardowym podejściem. W przypadku sieci neuronowych działa najlepiej w zakresie 0-1. Skalowanie od Min-Max (lub Normalizacja) to podejście, którego należy przestrzegać.

Teraz na wartości odstające, w większości scenariuszy musimy je przyciąć, ponieważ wartości odstające nie są powszechne, nie chcesz, aby wartości odstające wpływały na twój model (chyba że wykrywanie anomalii jest problemem, który rozwiązujesz). Możesz przyciąć go w oparciu o zasadę empiryczną 68-95-99.7 lub wykonać wykres pudełkowy, obserwować i odpowiednio go przyciąć.

Formuła MinMax - (xi - min(x)) / (max(x) - min(x)) lub można użyćsklearn.preprocessing.MinMaxScaler

D Nietykalny
źródło
-1

„Zaakceptowane” jest tym, co działa najlepiej dla Ciebie - wtedy je akceptujesz.

Z mojego doświadczenia wynika, że ​​dopasowanie dystrybucji z rodziny Johnson do każdej z funkcji ciągłych działa dobrze, ponieważ rozkłady są bardzo elastyczne i mogą przekształcić większość funkcji unimodalnych w standardowe rozkłady normalne. Pomoże to również w przypadku funkcji multimodalnych, ale najważniejsze jest to, że generalnie nadaje on funkcje najbardziej pożądanej możliwej formie (standardowe dane rozpowszechniane przez Gaussa są idealne do pracy - są kompatybilne, a czasem optymalne dla większości dostępna metoda statystyczna / ML).

http://qualityamerica.com/LSS-Knowledge-Center/statystycznyinference/johnson_distribution.php

JPJ
źródło