2011-01-12 17 views
73

Jest to podstawowe pytanie, dotyczące teorii sieci neuronowych:Dlaczego musimy znormalizować wejście dla sztucznej sieci neuronowej?

Dlaczego musimy znormalizować dane wejściowe dla sieci neuronowej?

Rozumiem, że czasami, gdy na przykład wartości wejściowe są nieliczbowe, należy wykonać określoną transformację, ale kiedy mamy dane liczbowe? Dlaczego liczby muszą się znajdować w określonym przedziale czasu?

Co się stanie, jeśli dane nie zostaną znormalizowane?

Odpowiedz

64

Wyjaśnia to dobrze here.

Jeśli zmienne wejściowe są połączone liniowo, jak w MLP, to rzadko bezwzględnie konieczne, aby ujednolicić wejściowe, przynajmniej teoretycznie. Przyczyną jest to, że każde przeskalowanie wektora wejściowego może zostać skutecznie cofnięte przez zmianę odpowiednich wartości i odchyleń, dzięki czemu otrzymasz dokładnie takie same wyniki, jakie wcześniej posiadałeś. Istnieje jednak wiele praktycznych powodów, dla których standaryzacja danych wejściowych może przyspieszyć trening i zmniejszyć szanse utknięcia w lokalnej optimie. Ponadto oszacowanie wagi i estymacji Bayesian można zrobić wygodniej przy standardowych danych wejściowych.

+0

Witam, w MLP, czy nie można ujednolicić funkcji przy stałym współczynniku uczenia się, powodującym nadmiar/niedopompowanie korekcji wstecznej dla różnych wymiarów? Zastanawiam się nad tym z następującego postu, jeśli jest to wyłączne dla CNN, lub jeśli MLP mogą dzielić ten problem: https://stats.stackexchange.com/questions/185853/why-do-we-need-to-normalize-the -images-before-we-put-one-into-cnn – Austin

7

Patrząc na sieć neuronową z zewnątrz, jest to tylko funkcja, która przyjmuje pewne argumenty i daje wynik. Podobnie jak w przypadku wszystkich funkcji, ma on domenę (to jest zbiór argumentów prawnych). Musisz znormalizować wartości, które chcesz przekazać do sieci neuronowej, aby upewnić się, że znajdują się w domenie. Podobnie jak w przypadku wszystkich funkcji, jeśli argumenty nie znajdują się w domenie, wynik nie jest gwarantowany.

Dokładne zachowanie sieci neuronowej na argumentach spoza domeny zależy od implementacji sieci neuronowej. Ale ogólnie rzecz biorąc, wynik jest bezużyteczny, jeśli argumenty nie znajdują się w domenie.

+1

Najlepsze wytłumaczenie ... –

+0

To jest dobre wytłumaczenie – disklosr

15

Niektóre wejścia do NN mogą nie mieć "naturalnie zdefiniowanego" zakresu wartości. Na przykład średnia wartość może powoli, ale stale wzrastać wraz z upływem czasu (na przykład liczba rekordów w bazie danych).

W takim przypadku podawanie tej nieprzetworzonej wartości do sieci nie będzie działało zbyt dobrze. Będziesz nauczał swoją sieć na wartościach z dolnej części zakresu, podczas gdy rzeczywiste dane wejściowe będą pochodzić z wyższej części tego zakresu (i prawdopodobnie powyżej zakresu, z którego sieć nauczyła się pracować).

Powinieneś znormalizować tę wartość. Możesz na przykład powiedzieć sieci, ile zmieniła się wartość od poprzedniego wejścia. Ten przyrost zwykle można zdefiniować z dużym prawdopodobieństwem w określonym zakresie, co czyni go dobrym źródłem danych dla sieci.

+0

Dobra wskazówka na temat normalizowania poprzedniego zestawu wejść. To zwalnia użytkownika z definiowania arbitralnego współczynnika normalizacji. Jednak podejrzewam, że sieć będzie trenować dokładniej, jeśli czynnik normalizacji jest stałą globalną zastosowaną do każdego wektora wejściowego. – davide

-5

Ukryte warstwy są używane zgodnie ze złożonością naszych danych. Jeśli mamy dane wejściowe, które można rozdzielić liniowo, nie musimy używać ukrytej warstwy, np. LUB bramę, ale jeśli mamy dane nieliniowe, to musimy użyć ukrytej warstwy np. Bramy logicznej ExOR. Liczba węzłów pobranych na dowolnej warstwie zależy od stopnia krzyżowej weryfikacji naszego wyniku.

1

Powodem, dla którego normalizacja jest potrzebna, jest to, że jeśli spojrzysz na to, jak krok adaptacyjny przebiega w jednym miejscu w domenie funkcji, a po prostu po prostu przenosisz problem na równoważnik tego samego kroku tłumaczonego przez jakąś dużą wartość w jakiś kierunek w domenie, wtedy otrzymujesz inne wyniki. Sprowadza się to do dostosowania elementu liniowego do punktu danych. Jaka część powinna poruszać się bez obracania i jak bardzo powinna się obracać w odpowiedzi na ten jeden punkt treningowy? Nie ma sensu zmiana procedury adaptacji w różnych częściach domeny! Więc normalizacja jest wymagana, aby zmniejszyć różnicę w wyniku treningu. Nie mam tego napisane, ale możesz po prostu spojrzeć na matematykę dla prostej liniowej funkcji i jak jest ona trenowana przez jeden punkt treningowy w dwóch różnych miejscach. Ten problem mógł zostać rozwiązany w niektórych miejscach, ale nie jestem do nich zaznajomiony. W ALN problem został naprawiony i mogę wysłać ci papier, jeśli napiszesz do firmy wwarmstrong AT shaw.ca

33

W sieciach neuronowych dobrym pomysłem jest nie tylko normalizacja danych, ale także ich skalowanie. Jest to przeznaczone do szybszego zbliżania się do globalnych minimów na powierzchni błędu. Zobacz poniższe zdjęcia: error surface before and after normalization

error surface before and after scaling

Zdjęcia pochodzą z coursera course o sieciach neuronowych. Autorem numeru course jest Geoffrey Hinton.

+3

Byłoby miło z Twojej strony, gdybyś napisał autora opublikowanej grafiki. Grafika wyraźnie została zaczerpnięta z [course course Geoffrey Hintona] (https://www.coursera.org/learn/neural-networks/). –

+3

Dobra uwaga Ricardo !!! –

0

Wierzę, że odpowiedź jest zależna od scenariusza.

Rozważmy NN (sieć neuronowa) jako operatora F, tak aby F (wejście) = wyjście. W przypadku, gdy relacja ta jest liniowa, tak aby F (wejście A *) = A * wyjściowe, możesz wybrać pozostawienie wejścia/wyjścia nienormowanego w ich surowych postaciach lub normalizację obu w celu wyeliminowania A. Oczywiście ta liniowość zakłada się naruszone i klasyfikacyjnych, lub jakiekolwiek zadanie wyprowadza prawdopodobieństwo, gdzie F (wejście *) = 1 * wyjście

w praktyce normalizacja ta pozwala sieci nie nadającą się do zamocowania jest mocowalny, co ma zasadnicze znaczenie dla eksperymentatorzy/programiści. Niemniej jednak, dokładny wpływ normalizacji będzie zależał nie tylko od architektury/algorytmu sieci, ale także od wcześniejszych statystycznych danych wejściowych i wyjściowych.

Co więcej, często stosuje się NN do rozwiązywania bardzo trudnych problemów w trybie czarnej skrzynki, co oznacza, że ​​podstawowy problem może mieć bardzo słabe sformułowanie statystyczne, co utrudnia ocenę wpływu normalizacji, powodując przewagę techniczną (staje się przystosowalny), aby dominować nad jego wpływem na statystyki.

W sensie statystycznym, normalizacja usuwa odmianę, która jest uważana za non-przyczynowego w przewidywaniu wyjście, tak aby zapobiec NN od nauki tę odmianę jako czynnik prognostyczny (NN nie widzi tę odmianę, stąd nie można go używać).

Powiązane problemy