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:
Ale przez większość czasu, gdy próbuję, utknie w lokalnym minimum i nie znajduje odpowiedniego kształtu:
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?


