Czy głęboka sieć neuronowa może przybliżać funkcję mnożenia bez normalizacji?


27

Powiedzmy, że chcemy wykonać regresję dla prostego f = x * yużycia standardowej głębokiej sieci neuronowej.

Pamiętam, że istnieją powtórzenia, które mówią, że NN z jedną warstwą ukrytą może apoksymować dowolną funkcję, ale próbowałem i bez normalizacji NN nie był w stanie zbliżyć nawet tego prostego mnożenia. Pomogła tylko normalizacja logów danych m = x*y => ln(m) = ln(x) + ln(y). Ale to wygląda na oszustwo. Czy NN może to zrobić bez normalizacji logów? Odpowiedź jest oczywiście (jak dla mnie) - tak, więc pytanie brzmi bardziej, jaki powinien być typ / konfiguracja / układ takiej NN?

Odpowiedzi:


13

Duży gradient funkcji zwielokrotnienia zmusza sieć prawdopodobnie niemal natychmiast do przerażającego stanu, w którym wszystkie jego ukryte węzły mają zerowy gradient (z powodu szczegółów implementacji sieci neuronowej i ograniczeń). Możemy zastosować dwa podejścia:

  1. Podziel przez stałą. Po prostu dzielimy wszystko przed nauką i mnożymy po niej.
  2. Użyj normalizacji dziennika. To dodaje mnożenie:

    m=xyln(m)=ln(x)+ln(y)


5

Podobne pytanie uderzyło mnie dzisiaj i byłem zaskoczony, że nie mogłem znaleźć szybkiej odpowiedzi. Moje pytanie brzmiało, że biorąc pod uwagę, że NN ma tylko funkcje sumowania, w jaki sposób mogą modelować funkcje multiplikatywne.

Ten rodzaj odpowiedzi na to pytanie był długi. Moje streszczenie byłoby takie, że NN modeluje powierzchnię funkcji, a nie samą funkcję. Co jest oczywiste, z perspektywy…


5

NN z funkcją aktywacji relu może przybliżać mnożenie, gdy zakres wejść jest ograniczony. Przypomnij sobie relu(x) = max(x, 0).

Wystarczy, jeśli NN aproksymuje funkcję kwadratową g(z) = z^2, ponieważ x*y = ((x-y)^2 - x^2 - y^2)/(-2). Prawa strona ma tylko liniowe kombinacje i kwadraty.

NN można aproksymować z^2za pomocą częściowej funkcji liniowej. Na przykład w zasięgu [0, 2]kombinacja xi relu(2(x-1))nie jest taka zła. Poniższy rysunek przedstawia to. Nie mam pojęcia, czy jest to przydatne poza teorią :-) wprowadź opis zdjęcia tutaj


0

„jedna ukryta warstwa” nie ogranicza liczby neuronów i rodzajów używanych funkcji aktywacji, wciąż ma dużą przestrzeń reprezentacji. Jedna prosta metoda zweryfikowania istnienia tego problemu: wytrenuj ten problem regresji za pomocą prawdziwej sieci neuronów, zapisz każdą masę i odchylenie, użyj tych parametrów, wykreśl krzywą prognozowania, porównaj ją z krzywą funkcji celu. Ten esej może pomóc.


0

Nie mogę komentować, ponieważ jestem nowo aktywnym użytkownikiem StackExchange. Ale myślę, że to ważne pytanie, ponieważ jest tak cholernie proste do zrozumienia, ale trudne do wyjaśnienia. Z szacunkiem nie sądzę, aby zaakceptowana odpowiedź była wystarczająca. Jeśli zastanowisz się nad podstawowymi operacjami standardowego sprzężenia zwrotnego NN z aktywacjami formularza s(W*x+b)dla niektórych nieliniowych funkcji aktywacyjnych s, w rzeczywistości nie jest oczywiste, jak „uzyskać” z tego mnożenie nawet w złożonej (wielowarstwowej) sieci. Wydaje się, że skalowanie (pierwszy punkt w zaakceptowanej odpowiedzi) wcale nie odpowiada na pytanie ... przez co skalować? Dane wejściowe xi yprzypuszczalnie są różne dla każdej próbki. I biorąc dziennik jest w porządku, o ile wieszwłaśnie to musisz zrobić i zadbać o problem ze znakiem podczas przetwarzania wstępnego (ponieważ oczywiście log nie jest zdefiniowany dla negatywnych danych wejściowych). Zasadniczo nie jest to jednak sprzeczne z poglądem, że sieci neuronowe mogą po prostu „uczyć się” (to jak oszustwo, jak powiedział PO). Nie sądzę, aby pytanie zostało uznane za udzielone przez kogoś mądrzejszego ode mnie!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.