138


Laboratorium Modelowania i Symulacji

Ćwiczenie 4

Aproksymacja funkcji za pomocą sztucznej sieci neuronowej

Program ćwiczenia

Przed wykonaniem kolejnych punktów programu ćwiczenia należy dokładnie zapoznać się z załączonymi programami w języku Matlab,

Wybierając odpowiednie parametry wejściowe uruchomić program f1 obliczania wartości funkcji sin(x)/x przyjmując M = 100, Pmax = 1, a następnie wywołać program aproksymacji aprn przyjmując eg = 0.001,

zbadać wpływ zmian współczynnika uczenia lr i momentum mc na przebieg procesu uczenia,

zbadać wpływ zmian struktury sieci na przebieg procesu uczenia,

zbadać wpływ zmian parametru Pmax na przebieg procesu uczenia

Uruchomić program f2 obliczania wartości funkcji sin(x)/x, a następnie wywołać program aproksymacji aprn,

Napisać program w języku Matlab obliczania wartości indywidualnie wybranej funkcji, a następnie wykonać obliczenia według schematu z p. 1.2.

Sprawozdanie

    1. Sprawozdanie powinno zawierać raport z przebiegu ćwiczenia z wykresami otrzymanych przebiegów sygnałów i parametrów oraz uwagami i wnioskami.

    2. Programy wykorzystywane w ćwiczeniu

3.1. f1.m - generowanie funkcji sin(x)/x

function[P,T]=f1();

P=[0:0.02:1];

T=sin(10*P)./(10*P);

T(1)=1;

3.2. f2.m - funkcja f2

P=-1:0.1:1; % Wejścia

% Wyjścia

T = [-.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 .1336 -.2013 -.4344 ...

-.5000 -.3930 -.1647 .0988 .3072 .3960 .3449 .1816 -.0312 -.2189 ...

-.3201];

3.3. aprn.m - aproksymacja funkcji za pomocą sieci neuronowej

function[]=aprn(P,T,em);

% rozmieszczenie okien graficznych

close all;

figure(1); clf;

set(figure(1),'Position',[5,350,375,270]);

figure(2); clf;

set(figure(2),'Position',[420,350,375,270]);

figure(3); clf;

set(figure(3),'Position',[420,0,375,270]);

[m,n]=size(T);

lr=5/n; % Wsp. szybkości uczenia

mc=0.98; % Momentum

%em=0.001; % Zadany błąd aproksymacji

clear er; e=10;

hold on;

[R,Q]=size(P); % Liczba wejść=1, Liczba wzorców

S1=15; % Liczba neuronów warstwy1=15

[S2,Q]=size(T); % Liczba neuronów warstwy2=1

% Początkowe wartości współczynników wagowych

[W1,B1]=nwtan(S1,R); dW1=0*W1; dB1=0*B1; W1=0.5*W1;

[W2,B2]=rands(S2,S1); dW2=0*W2; dB2=0*B2; W2=0.25*W2;

% Uczenie sieci

i=1;

while e>em,

A1=tansig(W1*P,B1);

A2=purelin(W2*A1,B2);

P1=A1;

E=T-A2;

e=sumsqr(E); % Pierw. z sumy kwadratów błędów

er(i)=e;

% Wsteczna propagacja błędu

D2=deltalin(A2,E);

D1=deltatan(A1,D2,W2);

% Obliczanie skorygowanych wsp. wagowych

[dW1,dB1]=learnbpm(P,D1,lr,mc,dW1,dB1);

W1=W1+dW1; B1=B1+dB1;

[dW2,dB2]=learnbpm(P1,D2,lr,mc,dW2,dB2);

W2=W2+dW2; B2=B2+dB2;

% Rysowanie wykresów

if rem(i,100)==0, i,e,

figure(1); clf;

hold on;

A1=tansig(W1*P,B1);

plot(P,T,'b+');

A2=purelin(W2*A1,B2);

plot(P,A2,'yo');

title('Funkcja (b+), model (yo)');

hold off;

figure(2);

ploterr(er,em);

title('Suma kwadratów błędów');

end;

i=i+1;

end;

end;

% Testowanie modelu

figure(3);

Pt=2*max(P)*(rand(1,length(P))-0.25);

plot(P,T,'b');

hold on;

At1=tansig(W1*Pt,B1);

At2=purelin(W2*At1,B2);

plot(Pt,At2,'y.');

title('Funkcja (b), model (y)');

hold off;

Literatura

Hertz J., Krogh A., Palmer R. G.: Wstęp do teorii obliczeń neuronowych. WNT. Warszawa. 1993, 1995.

Korbicz J., Obuchowicz A., Uciński D.: Sztuczne sieci neuronowe. Podstawy i zastosowania. Akad. Ofic. Wyd. Warszawa. 1994.

Żurada J., Barski M., Jędruch W.: Sztuczne sieci neuronowe. PWN. Warszawa. 1996.



Wyszukiwarka

Podobne podstrony:
Babbie7 138 F Stanczyk
bt 138
138 139
138 SC DS300 R VW T4 A 01 XX
138
138
138
138
Mazowieckie Studia Humanistyczne r1995 t1 n1 s121 138
arkusz WOS poziom p rok 2002 138 MODEL
138
138, 138
K Rahner, Pisma wybrane, t I, s 138 155
infos 138
PaVeiTekstB 138
136 138
Dz U 01 138 1554

więcej podobnych podstron