Witam,
dostałem do zrobienia zadanie na studiach, w którym mam wykonać sieć neuronową aproksymująca funkcję nieliniową (funkcja ma mieć od 3 do 7 argumentów). Pełna treść zadania :
MLP – aproksymacja funkcji
Wykonać program do badania wpływu ilości neuronów perceptronu na jakość aproksymacji w
sieciach neuronowych typu MLP uczonych algorytmem wstecznej propagacji błędu.
Metoda: Zaimplementować algorytm działania sieci MLP (aproksymacji nauczonej
funkcji) i algorytm uczenia tej sieci.
Przewidzieć możliwość aproksymacji zbioru funkcji za pomocą sieci neuronowej MLP o
M wejściach, 3 wyjściach i dwóch warstwach ukrytych (o zmiennej liczbie neuronów N od
N=M do N = 10M).
Problem: Wygenerować dane uczące i dane testujące – przyjąć 3 nieliniowe funkcje M argumentowe (M=3, 5, 7).
Sterowanie: Sprawdzić działanie procedury uczenia sieci i procedury aproksymacji funkcji
– zmieniać liczbę neuronów w warstwie ukrytej, warunki początkowe i liczbę iteracji
procesu uczenia (I od I=100 do 1000).
Wynik ma postać zależności uzyskanych wyników aproksymacji trzech funkcji (średniego
błędu aproksymacji każdej z funkcji w zadanym przedziale wartości argumentów) od
parametrów M i N oraz liczby iteracji I.
Przedstawić statystyki procesów uczenia i aproksymacji oraz podać wnioski
Sieć mam już wykonaną ale w realizacji całego projektu napotykam na 2 problemy.
-
Nie jestem pewien w jaki sposób przedstawia się wynik aproksymacji za pomocą 3 wyjść? Czy wyjścia mają po kolei odpowiadać setkom, dziesiątkom i jednościom?
-
Pomimo zastosowania funkcji aktywacji LRelu w 2, 3 i ostatniej warstwie, sieć neuronowa jest w stanie aproksymować tylko funkcje które zawierają się w przedziale od 0 do 1. Kiedy zwiększam zakres losowania liczb, następuje eksplozja gradientu i wyniki dążą do nieskończoności.
Proszę o wskazówki
Pozdrawiam