Aproksymacja funkcji przy pomocy wielowarstwowej sieci
Transkrypt
Aproksymacja funkcji przy pomocy wielowarstwowej sieci
Aproksymacja funkcji przy pomocy wielowarstwowej sieci perceptronowej Przedmiot: Sieci neuronowe i ich zastosowania Zadanie polega na zorganizowaniu oraz nastrojeniu sieci perceptronowej składającej się z dwóch warstw. Zadaniem sieci jest aproksymacja funkcji. 1. Przygotowanie próbek. Należy wygenerować próbki treningowe dla wybranej funkcji jednej zmiennej, przykładowo: X=0:10, Y=sin(X/2.5)+cos(X) oraz testujące: X=0:0.01:10, Y=sin(X/2.5)+cos(X). Wykonać wykres próbek (treningowych oraz testujących na jednym układzie współrzędnych). 2. Organizacja sieci. Należy przygotować wielowarstwową sieć perceptronową. Inicjacja sieci: net= newff( X, Y, liczba neuronów, funkcje przejścia, algorytm strojenia). Przykład: net= newff( X, Y, 10, {’logsig’,’purelin’}, ’traingd’) skutkuje inicjacją sieci na podstawie zbioru X, Y z 10 neuronami w pierwszej warstwie, funkcje przejścia: sigmoidalna w pierwszej warstwie oraz liniowa w warstwie wyjściowej, algorytm strojenia ’traingd’ (gradient descent backpropagation). Po zainicjowaniu sieci należy sprawdzić najistotniejsze parametry: • liczbę warstw (net.numLayers). • funkcje przejścia w poszczególnych warstwach (net.layers{k}.transferFcn, gdzie k – nr warstwy). • wartość współczynnika uczenia (net.trainParam.lr). • liczbę iteracji (net.trainParam.epochs). 3. Obliczenia. Uczenie sieci przeprowadzamy przy pomocy net = train(net,X,Y), natomiast jakość działania weryfikujemy: YS = sim(net,X). Przebieg laboratorium: • Przeprowadzić przykładowy trening sieci: net = newff( X, Y, 5). Czy strojenie zakończyło się po ustalonej liczbie iteracji? Jaka jest wartość oraz za co dopowiada funkcja net.divideFcn? Sprawdzić jakość działania sieci dla próbek testujących. Wykonać wykresy próbek treningowych, testujących wraz z odpowiedziami sieci. • Dla liczby iteracji wynoszącej 3000 oraz wyłączonej funkcji: net.divideFcn=’’, należy sprawdzić wpływ liczby neuronów w pierwszej warstwie na jakość działania sieci. Iterując po liczbie neuronów (od 1 do 10) przeprowadzić trening, test oraz przedstawić na wykresie (próbki wraz z odpowiedziami sieci). Ile wynosi optymalna liczba neuronów? • Dla ustalonej, optymalnej liczby neuronów znaleźć odpowiednią liczbę iteracji. • Dysponując odpowiednią topologią sieci przeprowadzić proces uczenia dla metod ’traingda’ oraz ’traingdm’. Sprawdzić parametry uczenia sieci (net.trainParam). W przypadku metody ’traingda’ znaleźć optymalną wartość współczynnika uczenia. Czym wyróżniają się zastosowane tryby uczenia? Która metoda jest najodpowiedniejsza? 1