Darbo tikslas: Praktiškai susipažinti su pagrindinėmis neuroninių tinklų sąvokomis ir savybėmis. Susipažinti su dirbtinių neuroninių tinklų apmokymo programų paketu NNSYSID. Naudojant šio paketo programas apmokyti dirbtinį neuroninį tinklą, kuris galėtų aproksimuoti susikurtas funkcijas. Ištirti, kokią įtaką funkcijų aproksimavimui turi neuroninio tinklo struktūra, apmokymo metodas.
a) Iš Internet svetainės (taip pat yra ir ftp.vukhf.lt) : atsisiųsti programų paketą NNSYSID, jį instaliuoti savo kompiuteryje (Nukopijuoti į MatLab darbinę direktoriją).
b) paruošti duomenis neuroninio tinklo apmokymui
• Indeksas=(Vardo raidžių skaičius + 25)/ Pavardės raidžių skaičiaus;
• sumodeliuoti funkciją y = 0.2+sin(Indeksas+8*t) , t=0:0.05:1, funkcijos išėjimus aptriukšminti atsitiktiniu triukšmu V, su vidurkiu 0 ir dispersija 0.2; Šiuos duomenis naudoti tinklo apmokymui.
Programinis kodas:
close all; clear all
indeksas=(4+25)/8
for i=1:20
t(i)=0.05*i;
yg(i)=0.2+sin(indeksas+8*t(i));
y(i)=0.2+sin(indeksas+8*t(i))+(rand-0.5)*0.2;
end
plot(t,y,'ro-',t,yg,'bx-'), grid
TITLE('Aptriuksminti- raudona; Neaptriuksminti- melyna ')
X=[t',y'];
save aptriuksminti.txt X /ascii
X=[t',yg'];
save neaptriuksminti.txt X /ascii
1 pav. Aptriukšminti ir neaptriukšminti funkcijos išėjimų duomenys
c) ištirti neuroninio tinklo galimybes aproksimuoti funkcijas, keičiant paslėpto sluoksnio neuronų skaičių, neuronų perdavimo funkciją, apmokymo iteracijų skaičių. Pateikti atskirų tyrimų paklaidų lentelę (Min. 10 bandymų). Padaryti išvadas.
Programinis kodas:
clear all, close all
load aptriuksminti.txt; % uzsikrauname duomenis
[id,jd]=size(aptriuksminti); % matricos apimtis
X(:,1)=aptriuksminti(1:id,1); % Iejimas
X(:,2)=aptriuksminti(1:id,2); % Isejimas
[Xn,Skal]=dscale(X'); % Normalizavimas
NetDef=['HH';'L-']; % tinklo struktura hiperbolis -H, tiesinis -L
% W1(pasleptas sl. , iejimai+1)
% W2(isejimai , paslepto sl.+1)
W1=rand(2,2)-0.5;
W2=rand(1,3)-0.5;
iejimas=Xn(1,:);
isejimas=Xn(2,:);
trparms.maxiter = 1
%marqvardo- gradientinis optimizavimo metodas PASKAITOSE
[W1,W2,PaklaidosKitimas,iter]=marq(NetDef,W1,W2,iejimas,isejimas,trparms);
[Yhat,Paklaida,normalizuotaPaklaida] = nneval(NetDef,W1,W2,iejimas,isejimas);
% tinklo svorius perskaiciuojame taip kad jie galetu dirbti su absoliutiniais
% kintamaisiais
Uscale=Skal(1,:);Yscale=Skal(2,:);
[AW1,AW2]=wrescale('marq',W1,W2,Uscale,Yscale);
Xa=X';
Input=Xa(1,:);
Output=Xa(2,:);
[Yhat,E,NSSE] = nneval(NetDef,AW1,AW2,Input,Output);
% ziureti NSSE
NSSE %Paklaida skaiciuojant su absoliutiniais dydziais
load neaptriuksminti.txt;
AS=neaptriuksminti(:,:);
figure(5)
plot(PaklaidosKitimas)
figure(6)
plot(AS(:,1),AS(:,2),'ro-',AS(:,1),Output,'bx-',AS(:,1),Yhat,'g*-'), grid;
title('Tikroji funkcija = raudona; Aptriuksminta = melyna; Tinklo isejimas=zalia;'),ylabel('Y'), xlabel('Stebejimai');
1 lentelė
Bandymų rezultatai
Bandymai
Tinklo struktūra
Iteracijų sk.
Paklaida (NSSE)
1
HH
1
0.2480
2
HHH
5
0.0090
3
HHHH
5
0.0071
4
HHHHH
5
0.0068
5
HHHHHH
5
0.0066
6
HHHHHHH
5
0.0065
7
HHHHHHHH
5
0.0055
8
HHHHHHHHH
5
0.0050
9
HHHHHHHHHH
5
0.0045
10
HHH
20
0.0011
11
HHHH
20
0.00106017005224
12
HHHHH
20
0.00105848399800
13
HHHHHH
20
0.00101065412483615
14
HHHHHHH
20
0.0009670159586865
15
HHHHHHHH
20
0.00104169042212
16
HHHHHHHHH
20
0.00106490725281
17
HHHHHHHHHH
20
0.00107971469257
18
HHH
50
0.00104445470167687
19
HHHH
50
0.00085110999991208
20
HHHHH
50
0.000757093799881776
21
HHHHHH
50
0.000692909496311036
22
HHHHHHH
50
0.0000946804162066714
23
HHHHHHHH
50
0.000149237967382303
24
HHHHHHHHH
50
0.000545696768018262
25
HHHHHHHHHH
50
0.000237929949803109
26
HHH
100
0.00104442022732148
27
HHHH
100
0.000696741195961604
28
HHHHH
100
0.000432341689692312
29
HHHHHH
100
0.000108672181507391
30
HHHHHHH
100
0.0000732801652797467
31
HHHHHHHH
100
0.000029652
32
HHHHHHHHH
100
0.0000504351708801729
33
HHHHHHHHHH
100
0.000068667877850616
34
HHH
150
0.00104442022732149
35
HHHHH
150
0.00104442022732149
36
HHHHHHHH
150
0.000089467435136227
37
HHLHHH
150
0.000137482899431168
37
HHLLHH
150
0.00046371719364108
39
HHLLLL
150
0.0348470302380576
Išvados:
1. Lyginant paklaidą imant tokios pačios struktūros tinklą su tiek pat neuronų ir skirtingu iteracijų skaičiumi paklaida mažėja didinat iteracijų skaičių.
2. Rezultatai naudojant mažą iteracijų skaičių turi daug didesnę paklaidą, nei naudojant didelį iteracijų skaičių. Tai matosi lyginant pirmuosius bandymus su vėlesniais, kur yra didesnis iteracijų skaičius. Paklaida gali skirtis keliasdešimt kartų.
3. Lyginat paklaidą imant tą patį iteracijų skaičių, tačiau skirtingą neuronų skaičių, paklaida mažėja didinant neuronų skaičių iki tam tikros ribos,...
Šį darbą sudaro 2318 žodžiai, tikrai rasi tai, ko ieškai!
★ Klientai rekomenduoja
Šį rašto darbą rekomenduoja mūsų klientai. Ką tai reiškia?
Mūsų svetainėje pateikiama dešimtys tūkstančių skirtingų rašto darbų, kuriuos įkėlė daugybė moksleivių ir studentų su skirtingais gabumais. Būtent šis rašto darbas yra patikrintas specialistų ir rekomenduojamas kitų klientų, kurie po atsisiuntimo įvertino šį mokslo darbą teigiamai. Todėl galite būti tikri, kad šis pasirinkimas geriausias!
Norint atsisiųsti šį darbą spausk ☞ Peržiūrėti darbą mygtuką!
Mūsų mokslo darbų bazėje yra daugybė įvairių mokslo darbų, todėl tikrai atrasi sau tinkamą!
Panašūs darbai
Atsisiuntei rašto darbą ir neradai jame reikalingos informacijos? Pakeisime jį kitu nemokamai.
Pirkdamas daugiau nei vieną darbą, nuo sekančių darbų gausi 25% nuolaidą.
Išsirink norimus rašto darbus ir gauk juos akimirksniu po sėkmingo apmokėjimo!