Aproksymacja funkcji nieliniowej siecią neuronową

0

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.

  1. 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?

  2. 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

3

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?

A jakie funkcje aproksymujesz?

Ad. 2 I dobrze, dowolne wejście się normalizuje do przedziału, 0...1.

Więcej: http://neuralnetworksanddeeplearning.com/chap4.html

0

Wymyśliłem je na poczekaniu podczas pisania programu i tak już zostały :
x1^2 + 2x2+ x3
x1 + (2x^2)2 + x3^3
x1^3 + x2 + x3^2 (zmieniłem z 3
x2 na x2)
W momencie zadania pytania uświadomiłem sobie, że może trzeba to zrobić tak, żeby na każdym wyjściu była aproksymacja innej funkcji. Za chwilkę będę to sprawdzał.

2

Nie rozumiem, co to za funkcję opisałeś, ale sensownie będzie założyć, że jeżeli sieć ma M wyjść i trzy wyjścia, to aproksymuje funkcję, R^{M} \rightarrow R^{3}

0

Mógłbyś podać przykład takiej funkcji?

3

Np. R^3 \rightarrow R^3:
F(x_1, x_2, x_3) = {x_1}^2 + 2x_2, {x_2}^2 + 1, x_3

0

dzięki wielkie!

nie spotkałem się jeszcze z takim zapisem funkcji, dlatego miałbym jeszcze kilka pytań do postaci tej funkcji.

  1. Czy argument
    x_{3} w tym wypadku nie jest liniowy?
  2. Czy funkcja
    F( x_{1} , x_{2}, x_{3} ) = x_1 + 2x_2^2, x_{2}^2+x_3, 2x_2 + x_3^2
    jest prawidłowa do aproksymacji tym MLP?
  3. Czy analogicznie
    F(x_{1}, x_{2}, x_{3}, x_{4}, x_{5}, x_{6}, x_{7} ) = x_{1}^2 + x_{2}^2 + x_{3}^2 + x_{4}, 2x_{5} + x_{6}^2, x_{7}^2
    jest funkcją prawidłową do aproksymacji tym MLP ?
3

Ad 1. Funkcja jest nieliniowa, gdyż co najmniej jeden wynik jest nieliniowy.
Ad 2, 3. Kazda funkcję można aproksymować, zachęcam do przeczytania podlinkowanego materiału, a najlepiej całości.

0

dzięki jeszcze raz!
no to się biorę za czytanie

1 użytkowników online, w tym zalogowanych: 0, gości: 1