Moja sieć neuronowa nie może nawet nauczyć się odległości euklidesowej


9

Próbuję więc nauczyć się sieci neuronowych (do zastosowań regresji, nie klasyfikując zdjęć kotów).

Moje pierwsze eksperymenty polegały na uczeniu sieci implementacji filtra FIR i dyskretnej transformaty Fouriera (trening sygnałów „przed” i „po”), ponieważ są to operacje liniowe, które mogą być realizowane przez pojedynczą warstwę bez funkcji aktywacji. Oba działały dobrze.

Chciałem więc sprawdzić, czy mogę dodać abs()i nauczyć się widma amplitudy. Najpierw pomyślałem o tym, ile węzłów będzie potrzebował w warstwie ukrytej, i zdałem sobie sprawę, że 3 ReLU są wystarczające do przybliżonego przybliżenia abs(x+jy) = sqrt(x² + y²), więc przetestowałem tę operację samodzielnie na pojedynczych liczbach zespolonych (2 wejścia → 3 ukryte warstwy węzłów ReLU → 1 wynik). Czasami działa:

3 jednostki ReLU wdrażające odległość euklidesową jako odwróconą piramidę sześciokątną

Ale przez większość czasu, gdy próbuję, utknie w lokalnym minimum i nie znajduje odpowiedniego kształtu:

3 jednostki ReLU tworzące sieć w kształcie doliny

strata a epoki

Wypróbowałem wszystkie optymalizatory i warianty ReLU w Keras, ale nie mają one większego znaczenia. Czy jest coś innego, co mogę zrobić, aby proste sieci takie jak ta niezawodnie zbiegały się? A może po prostu podchodzę do tego z niewłaściwym podejściem, a ty powinieneś rzucić o wiele więcej węzłów niż to konieczne w przypadku problemu, a jeśli połowa z nich umrze, nie jest to wielka sprawa?


1
Twoja fabuła pokazuje kilka różnych eksperymentów, z których niektóre działają, a niektóre nie. Co tłumaczy różnice?
Sycorax mówi Przywróć Monikę

@Sycorax To tylko powtarzane próby tego samego. Czasami znajduje sześciokątne rozwiązanie piramidy, ale zwykle nie.
endolith

Czy próbowałeś z dwiema ukrytymi warstwami i tanh jako funkcją aktywacyjną?
Ketan,

@KetanNie, dlaczego? Zamieściłem prostszy wariant tutaj: stats.stackexchange.com/q/379884/11633
endolit

możesz na to spojrzeć. stats.stackexchange.com/q/375655/27556 . Ale czy możesz wyjaśnić, dlaczego uważasz, że potrzebujesz tylko 3 relusów? „naturalny” rozkład byłby jedną ukrytą warstwą dla przybliżenia kwadratu za pomocą relus i kolejną warstwą dla wykonania pierwiastka kwadratowego - w zasadzie relus dokonuje częściowych przybliżeń liniowych.
seanv507

Odpowiedzi:


6

Wynik wydaje się silnie sugerować, że jeden lub więcej twoich neuronów nie żyje (lub być może hiperpłaszczyzna wag dla dwóch twoich neuronów połączyła się). Możesz zobaczyć, że z 3 Relu, dostajesz 3 mroczne podziały w środku, kiedy zbierzesz się do bardziej rozsądnego rozwiązania. Możesz łatwo zweryfikować, czy to prawda, sprawdzając wartości wyjściowe każdego neuronu, aby sprawdzić, czy pozostaje on martwy przez większość próbek. Alternatywnie, możesz wykreślić wszystkie masy neuronów 2x3 = 6, pogrupowane według ich odpowiednich neuronów, aby sprawdzić, czy dwa neurony zapadną się do tej samej pary wag.

Podejrzewam, że jedną z możliwych przyczyn jest przechylenie kierunku jednej współrzędnej, np. , w którym to przypadku próbujesz odtworzyć tożsamość, a następnie . Naprawdę niewiele można tutaj zrobić, aby temu zaradzić. Jedną z opcji jest dodanie większej liczby neuronów podczas próby. Drugą opcją jest próba ciągłej aktywacji, takiej jak sigmoid, lub może coś niezwiązanego, jak wykładniczy. Możesz także spróbować porzucić (z powiedzmy 10% prawdopodobieństwem). Możesz użyć regularnej implementacji porzucania w keras, która jest na tyle inteligentna, że ​​zignoruje sytuacje, gdy wszystkie 3 neurony wypadną.x+jayxyzabs(x+jay)x


1
+1, prawie na pewno to. Kiedy używasz ReLU z tak małą liczbą ciężarów, martwe neurony prawie zawsze wchodzą w grę.
kbrose

1
Jest to prawdopodobne przypuszczenie w przypadku ReLU. Ale OP pisze, że wypróbowali kilka różnych wariantów ReLU - czy martwe neurony występują również w wariantach takich jak ELU lub Leaky Relu lub PReLU?
Sycorax mówi Przywróć Monikę

3 shadowy splits in the center when you converge to the more reasonable solution.Tak, mam na myśli przybliżone przybliżenie; odwrócona sześciokątna piramida. or perhaps something unbounded like an exponential Próbowałem elu i selu, które nie działały znacznie lepiej. two neurons collapse to the same pair of weightsAch, nie myślałem o tym; Po prostu założyłem, że nie żyją.
endolith

Podczas korzystania z ReLU uzyskałem dostęp do wyjścia ukrytej warstwy i potwierdziłem, że zwykle jeden z neuronów nie żyje. Rzadziej dwie pokrywają się i robią to samo. Zastanawiam się, czy istnieje sposób, aby neurony „odpychały” się od siebie, aby nie osiadły w zbędnych rolach.
endolith

1
@endolith Dropout jest wyraźnie zaprojektowany wokół budowy niezależnych neuronów. ELU nigdy nie „umierają”, ale mają zanikający gradient po lewej stronie.
Sycorax mówi Przywróć Monikę
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.