Upload
dinhdat
View
243
Download
3
Embed Size (px)
Citation preview
LIETUVOS EDUKOLOGIJOS UNIVERSITETAS
MATEMATIKOS IR INFORMATIKOS FAKULTETAS
INFORMATIKOS KATEDRA
Ieva Ignatavičienė
TIESIOGINIO SKLIDIMO NEURONINIŲ TINKLŲ SISTEMŲ
LYGINAMOJI ANALIZĖ
MAGISTRO BAIGIAMASIS DARBAS
Darbo vadovas: dr. Olga Kurasova
Vilnius, 2012
2
Turinys
1. Įvadas ....................................................................................................................................... 3
2. Tiesioginio sklidimo neuroninių tinklai .................................................................................. 4
2.1 Dirbtinių neuroninių tinklų pagrindai ................................................................................... 4
2.1.1 Biologinis neuronas ........................................................................................................ 4
2.1.2 Dirbtinio neurono modelis .............................................................................................. 5
2.1.3 Dirbtinių neuroninių tinklų klasifikacija ........................................................................ 6
2.1.4 Dirbtinių neuroninių tinklų mokymas ............................................................................ 7
2.2 Perceptronas ......................................................................................................................... 8
2.3 Daugiasluoksniai tiesioginio sklidimo neuroniniai tinklai .................................................. 10
2.3.1 Klaidos skleidimo atgal algoritmas .............................................................................. 11
2.4 Radialinių bazinių funkcijų neuroniniai tinklai ................................................................. 15
2.4.1 Autoasociatyvieji neuroniniai tinklai ............................................................................ 17
3. Tiesioginio sklidimo neuroninių tinklų sistemos ir jų klasifikacija ...................................... 19
3.1 Tiesioginio sklidimo neuroninių tinklų sistemos ................................................................ 19
3.2 Tiesioginio sklidimo neuroninio tinklo sistemų palyginimas ............................................. 28
4. Tiesioginio sklidimo neuroninių tinklų sistemų analizė ........................................................ 33
4.1. Tyrimo duomenys .............................................................................................................. 34
4.2 „DTREG“ sistema ............................................................................................................... 35
4.2.1 Daugiasluoksnis perceptronas „DTREG“ sistemoje .................................................... 35
4.2.2 Radialinių bazinių funkcijų neuroninis tinklas “DTREG” sistemoje ........................... 36
4.3 „Matlab“ sistema ................................................................................................................. 38
4.3.1 Daugiasluoksnis perceptronas „Matlab“ sistemoje ...................................................... 38
4.3.2 Radialinių bazinių funkcijų metodas „Matlab“ sistemoje ............................................ 39
4.4 „PathFinder“ sistema .......................................................................................................... 40
4.5 „Cortex“ sistema ................................................................................................................. 41
4.6 Programų palyginimas tarpusavyje ..................................................................................... 42
5. Išvados ................................................................................................................................... 44
6. Literatūra ............................................................................................................................... 45
Santrauka....................................................................................................................................... 47
Summary ....................................................................................................................................... 48
3
1. Įvadas
Daugelyje sričių kaip medicinoje, technikoje, biologijoje, ekonomikoje susiduriame su
duomenimis. Iš duomenų galima gauti nemaţai informacijos. Daţnai analizuojant duomenis yra
sprendţiami tokie uţdaviniai kaip klasifikavimas, klasterizavimas, optimizavimas,
prognozavimas. Norint išspręsti šiuos uţdavinius į pagalbą daţnai yra pasitelkiami dirbtiniai
neuroniniai tinklai, kurie veikia dirbtinio intelekto pagrindu. Jie yra skirstomi į tiesioginio ir
netiesioginio sklidimo neuroninius tinklus.
Tiesioginio sklidimo neuroninio tinklai yra vieni iš daţniausiai naudojamų neuroninių tinklų
dėl savo lengvai suprantamos struktūros. Jie daţnai yra taikomi klasifikavimo uţdaviniams
spręsti. Tokius neuroninius tinklus realizuoja įvairios programinės sistemos.
Norint išryškinti sistemų privalumus ir trūkumus, būtina atlikti sistemų lyginamąją analizę.
Darbo tikslas ir uždaviniai
Pagrindinis šio darbo tikslas – atlikti kelių tiesioginio sklidimo neuroninių tinklų sistemų
lyginamąją analizę siekiant įvertinti jų funkcionalumą.
Siekiant uţsibrėţto tikslo buvo sprendţiami šie uţdaviniai:
1. Apţvelgti pagrindinius tiesioginio sklidimo neuroninių tinklų mokymo metodus.
2. Išnagrinėti tiesioginio sklidimo neuroninių tinklų sistemas, bei suklasifikuoti jas pagal
kelis kriterijus: kainą, metodų taikymą, galimybę vartotojui keisti parametrus prieš
apmokant tinklą.
3. Įvertinti programas pagal tokius parametrus: mokymo metodų įvairumą, parametrų
keitimo galimybes, programos stabilumą, programos kokybę, kainos ir kokybės santykį.
4. Išsirinkti sistemas tolimesnei analizei.
5. Palyginti tiesioginio sklidimo neuroninių tinklų sistemas analizuojant kelias duomenų
aibes.
4
2. Tiesioginio sklidimo neuroninių tinklai
2.1 Dirbtinių neuroninių tinklų pagrindai
Dirbtiniai neuroniniai tinklai (DNT) pradėti tyrinėti kaip biologinių neuroninių sistemų
modelis. Tyrėjus neuroniniai tinklai domina gebėjimu pamėgdţioti ţmogaus smegenų veiklą ir
galimybe mokytis bei reaguoti į aplinką. Ateityje biologinio neurono modelio realizavimas gali
padėti sukurti „protingus“ kompiuterius.
Šiuo metu DNT vis plačiau naudojami dėl kelių pagrindinių prieţasčių.
Neuroninis tinklas yra galingas modeliavimo aparatas. Juo galima modeliuoti ypač
sudėtingas funkcijas;
Neuroniniai tinklai turi galimybę mokytis iš pavyzdţių. Turint duomenų pavyzdţius ir
naudojant mokymo algoritmus, neuroninis tinklas pritaikomas prie duomenų struktūros ir
išmoksta atpaţinti naujus duomenis, kurie nebuvo naudojami tinklo mokyme.
Šiuos neuroninius tinklus galima pritaikyti klasifikavimo, klasterizavimo, funkcijų
aproksimavimo, prognozavimo, optimizavimo ir daugelio kitų tipų uţdaviniams (Dzemyda ir kt.,
2008), (Verikas ir kt., 2003).
2.1.1 Biologinis neuronas
Prieš pradedant nagrinėti dirbtinius neuroninius tinklus, reikia suprasti biologinių neuroninių
tinklų modelį.
Kiekvienas neuronas yra specifinė biologinė ląstelė (2.1 pav.), galinti generuoti
elektrocheminį signalą, turinti ir informacijos apdorojimo galimybių savybę. Neuronas turi
išsišakojusią įėjimo struktūrą, vadinamą dendritais, ląstelės kūną, vadinamą soma ir
besišakojančią išėjimo struktūrą, vadinamą aksonu.
2.1 pav. Biologinis neurono modelis
Vienos ląstelės aksonas su kitos ląstelės dendritais jungiasi per sinapses. Kai suţadinama
pakankamai neuronų, prijungtų prie neurono dendritų, tai neuronas taip pat suţadinamas ir
generuoja elektrocheminį impulsą. Signalas per sinapses perduodamas kitiems neuronams, kurie
vėl gali būti suţadinami. Neuronas suţadinamas tik tuo atveju, jei bendras dendritais gautas
5
signalas viršija tam tikrą lygį, vadinamąjį sužadinimo slenkstį. Turint didţiulį skaičių visiškai
paprastų elementų, kurių kiekvienas skaičiuoja svorinę įeinančių signalų sumą ir generuoja
binarųjį signalą, jei suminis signalas viršija tam tikrą lygį, galima atlikti gana sudėtingas
uţduotis.
Turint didţiulį skaičių visiškai paprastų elementų, kurių kiekvienas skaičiuoja svorinę
įėjimo signalų sumą ir generuoja binarinį signalą, jei suminis signalas viršija tam tikrą lygį,
įmanoma atlikti palyginus sudėtingas uţduotis. Tokia ir yra dirbtinio neurono idėja. Neuronai
komunikuoja labai trumpais impulsais – milisekundţių trukmės. Pranešimas yra moduliuojamas
daţnumu, su kuriuo impulsai yra perduodami. Daţnis kinta nuo kelių iki kelių šimtų hercų –
milijoną kartų lėčiau negu greičiausias elektroninės grandinės persijungimo greitis. Tačiau
sudėtingiausi sprendimai, pavyzdţiui, veido atpaţinimas, vyksta labai greitai – per kelis šimtus
milisekundţių.
Šie sprendimai daromi tinklu neuronų, kurių atskirų veikimo greitis yra tik kelios
milisekundės. Tai leidţia manyti, jog skaičiavimai nesudaro daugiau nei 100 nuoseklių
ţingsnių. Kitaip tariant, smegenys vykdo lygiagrečias programas, kurios yra apie 100 ţingsnių
ilgio (taip vadinama šimto ţingsnių taisyklė).
Analogiškai – informacijos kiekis, persiunčiamas iš vieno neurono kitam yra labai maţas – tik
keli bitai. Tai sąlygoja, jog kritinė informacija nėra siunčiama tiesiogiai, bet surenkama ir
paskirstoma neuronų tarpusavio jungtyse (Dzemyda ir kt., 2008), (Groupe, 2007), (Terrence,
1999).
2.1.2 Dirbtinio neurono modelis
Praėjusio amţiaus ketvirtajame dešimtmetyje buvo pasiūlytas dirbtinio neurono modelis (2.2
pav.). Tai elementarus procesorius, skaičiuojantis įėjimo kintamojo netiesinę funkciją.
2.2 pav. Dirbtinio neurono modelis
Pirmasis formalus dirbtinio neurono apibrėţimas buvo pasiūlytas McCulloch:
1. Neuronas gauna keletą įėjimo reikšmių. Kiekviena įėjimo jungtis turi
savo perdavimo koeficientą (svorį) ir slenksčio reikšmę .
2. Skaičiuojama įėjimo ir svorių sandaugų suma:
6
∑
3. Neuroną apibūdina aktyvacijos funkcija
( ) (∑
)
Pagal suţadinimo signalą naudojant aktyvacijos funkciją (neurono perdavimo funkciją ),
skaičiuojama neurono išėjimo reikšmė . Ši reikšmė tampa lygi vienam, jeigu suma viršija
slenkstinę reikšmę , nuliui – jeigu neviršija.
( ) {
Daţnai yra naudojamas suţadinimo signalas a, kuris aktyvuoja neuroną, kai a=0:
(∑
)
Šiuo atveju įvedamas nulinis įėjimas , kuris yra pastovus: Dirbtinio neurono modelyje gali būti naudojama ne tik slenkstinė funkcija, bet ir kitos
neurono aktyvacijos funkcijos, pavyzdţiui, sigmoidinė funkcija
( )
hiperbolinis tangentas
( ) ( )
ir kt.
Biologinis neuronas ir dirbtinio neurono modelis yra gana panašūs. Dirbtiniai neuronai yra
jungiami į dirbtinius neuroninius tinklus. Neuroninis tinklas gali būti pavaizduotas kaip grafas,
kurio viršūnės yra neuronai, o lankai (su svoriais) jungia neuronų išėjimus su kitų, o kartais ir tų
pačių, neuronų įėjimais (Groupe, 2007), (Yegnanarayana, 2006).
2.1.3 Dirbtinių neuroninių tinklų klasifikacija
Pagal jungimo konstrukciją neuroniniai tinklai sudaro dvi pagrindines grupes (2.3 pav.):
1) tiesioginio sklidimo (angl. feedforward) tinklai, kuriuose nėra grafo ciklų;
2) grįţtamojo ryšio (angl. feedback) tinklai, kuriuose yra grafo ciklų.
7
2.3 pav. Neuroninių tinklų klasifikacija
Daugumoje tiesioginio sklidimo tinkluose neuronai išdėstomi sluoksniais, kurie sujungiami
grieţtai viena kryptimi (Dzemyda ir kt., 2008).
2.1.4 Dirbtinių neuroninių tinklų mokymas
Galimybė mokytis yra esminė intelekto savybė. Dirbtinio neuroninio tinklo mokymo procesas
apibrėţiamas kaip tinklo struktūros ir jungčių svorių keitimo uţdavinys, siekiant, kad tinklas
galėtų atlikti jam skirtą uţduotį. Kiekviename neuroninio tinklo mokymo ţingsnyje keičiamos
svorių reikšmės atsiţvelgiant į įėjimo ir išėjimo reikšmes, gautas ankstesniame mokymo
ţingsnyje. Procesas kartojamas, kol pasiekiamas norimas rezultatas.
Skirtingos tinklų architektūros reikalauja skirtingų jų mokymo algoritmų. Yra trys pagrindinės
neuronų mokymo paradigmos:
1) Mokymo su mokytoju algoritmai (angl. supervised learning).
Mokymo su mokytoju algoritme yra vartojama sąvoka norimos išėjimo reikšmės (angl. target,
desired output). Tai iš anksto ţinomos reikšmės, pavyzdţiui, klasių numeriai, prognozuojamos
reikšmės ir pan. Mokymo su mokytoju atveju tinklo išėjimų reikšmės, skaičiuojamos kiekvienam
įėjimo vektoriui ( ) yra tiesiogiai susijusios su norimomis tų
išėjimų reikšmėmis. Tinklas koreguojamas keičiant svorių vektorių reikšmes ir siekiant gauti
kiek galima maţesnę paklaidą, t. y.ieškoma tokių svorių, kad skirtumas tarp norimų išėjimo
reikšmių ir reikšmių, gautų išmokius neuroninį tinklą, būtų kiek galima maţesnis.
Prie mokymo su mokytoju algoritmų priskiriamas perceptrono mokymas, „klaidos skleidimo
atgal“ algoritmas.
2) Mokymo be mokytojo algoritmai (angl. unsupervised learning).
Kai norimos gauti tinklo išėjimo reikšmės nėra ţinomos, tada naudojami mokymo be mokytojo
algoritmai. Šio tipo metoduose tinklas mokomas ieškoti koreliacijų ar panašumų tarp mokymo
aibės įėjimų. Čia nėra grįţtamojo ryšio, pasakančio, kuris atsakymas bus arba yra teisingas.
Mokymo be mokytojo algoritmuose nėra mokytojo signalo. Turima tik mokymo aibė X, kuri
8
sudaryta iš vektorių , i =1,…,m, priklausančių erdvei , t. y. ( ). Metodų
tikslas yra suskirstyti mokymo duomenis (vektorius) į tam tikras klases arba rasti juose kokius
nors reguliarumus ar ypatumus.
Gali būti sprendţiamas ir toks uţdavinys: vektorius , i =1,…,m, reikia atvaizduoti į
maţesnio matmenų skaičiaus erdvės vektorių rinkinį taip, kad , savybės būtų išlaikytos ir
naujos aibės vektoriams . Mokymo be mokytojo sėkmę garantuoja nuo mokytojo nepriklausomas
kriterijus, kuris mokymo metu optimizuojamas parenkant tinkamas tinklo jungčių svorių
reikšmes.
Pagrindinės mokymo be mokytojo strategijos yra Hebbo mokymas (angl. Hebbian learning),
varţytinių mokymas (angl. competitive learning) ir saviorganizuojantis mokymas (angl. self-
organizing learning).
3) Hibridinis mokymas (angl. hybrid learning).
Šios strategijos yra realizuojamos skirtingos struktūros neuroniniais tinklais ir todėl leidţia
spręsti skirtingus duomenų analizės uţdavinius.
Hibridinis mokymas apima mokymo su mokytoju ir be mokytojo algoritmus: dalis tinklo
svorių nustatomi pagal mokymą su mokytoju, kita dalis gaunama iš mokymo be mokytojo
(Dzemyda ir kt., 2008).
2.2 Perceptronas
Paprasčiausias tiesioginio sklidimo neuroninis tinklas yra perceptronas (2.4 pav.), sudarytas
iš vieno sluoksnio d neuronų, sujungtų su n įėjimų.
2.4 pav. Perceptronas
Neuronų skaičius d yra lygus išėjimų skaičiui. Kai kurie autoriai jau vieną neuroną vadina
perceptronu, tada d = 1. Kiekvienas perceptrono išėjimas yra įėjimų
funkcija, kuri skaičiuojama pagal šią formulę:
( ) (∑
)
čia yra jungties iš k-ojo įėjimo į j-ąjį neuroną svoris, - papildomas įėjimas, įprastai
9
.
Tegul turime m mokymo aibės vektorių ( ) Vektorius dar
vadinsime įėjimo vektoriais, nes jo komponenčių reikšmės bus pateikiamos į
neuroninį tinklą kaip įėjimai.
Įėjimo vektoriai ( ) yra susieti su norimų reikšmių vektoriais
( ) , čia - norimo j-ojo išėjimo reakcija į . Norimomis
reikšmėmis gali būti klasių numeriai, prognozuojamos reikšmės ir kt.
Perceptrono mokymo procese svoriai keičiami taip, kad tinkle išėjimo reikšmių vektorius
( ) gautas į įėjimą pateikus vektorių , būtų kiek galima artimesnis norimų
reikšmių vektoriui , t.y. perceptrono veikimo paklaida būtų kiek galima maţesnė.
Paklaidos matas E(W) apibrėţiamas kaip svorių matricos { }
funkcija. Jeigu paklaidos funkcija E(W) yra diferencijuojama pagal svorius , jos minimumą
galima rasti gradientiniais optimizavimo metodais. Geriausiai ţinomas yra gradientinio
nusileidimo algoritmas (angl. gradient descent). Daţniausiai pritaikoma paklaidos funkcija yra
kvadratinių paklaidų suma:
( )
∑∑( )
∑ ( )
( )
∑( )
Pradţiai generuojamos atsitiktinės svorių reikšmės. Tada gradientinio nusileidimo
algoritmu judama antigradiento kryptimi, svorių reikšmes keičiant pagal iteracinę formulę
( ) ( ) ( ) čia
( ) ( )
∑
( )
∑
( )
( )
( )
yra teigiamas daugiklis, kuris vadinamas mokymo greičiu (angl. learning rate) ir kuriuo
reguliuojamas gradientinio optimizavimo ţingsnio ilgis, t – iteracijos numeris.
Galimos dvi svorių keitimo strategijos. Vienu atveju svoriai pakeičiami pateikus į tinklą
visus mokymo aibės vektorius. Kitoje strategijoje svoriai pakeičiami po kiekvieno mokymo
aibės vektoriaus pateikimo į tinklą (Karayiamis ir kt., 1993), (Groupe, 2007), (Terrence, 1999),
(Verikas ir kt., 2003).
10
2.3 Daugiasluoksniai tiesioginio sklidimo neuroniniai tinklai
Turintys daugiau nei vieną neuronų sluoksnį tinklai, kuriuose galimi tik ryšiai į priekį iš
įėjimų į išėjimus, yra vadinami daugiasluoksniais perceptronais (angl. multilayer perceptrons),
arba daugiasluoksniais tiesioginio sklidimo neuroniniais tinklais (angl. multilayer feedforward
neural networks) (2.5 pav.). Kiekvienas toks tinklas sudarytas iš įėjimų aibės, išėjimų neuronų
sluoksnio ir paslėptųjų neuronų sluoksnių tarp įėjimų ir išėjimų.
2.5 pav. Daugiasluoksnis perceptronas
Tegul turime daugiasluoksnį neuroninį tinklą, kuriame yra L sluoksnių, paţymėtų
, kai sluoksnis l=0 ţymi įėjimus, o l=L – paskutinį (išėjimų) sluoksnį. Kiekviename
sluoksnyje l yra neuronų. Pirmojo sluoksnio j-ojo neurono išėjimo reikšmė yra
apskaičiuojama. Įėjimai į neuronus l-ajame sluoksnyje yra neuronų išėjimai (l-1)-ajame
sluoksnyje yra apskaičiuojama taip:
( ) (∑
)
čia f() yra neuronų aktyvacijos funkcija.
– svoriai jungčių, kurios jungia k-ąjį neuroną (l-1)-ajame sluoksnyje su j-uoju neuronu l-
ajame sluoksnyje;
– neuronų skaičius (l-1)-ajame sluoksnyje.
– l-ojo sluoksnio j-ojo neurono išėjimo reikšmė.
– l-ojo sluoksnio k-ojo neurono išėjimo reikšmė (Karayiamis ir kt., 1993), (Terrence,
1999), (Nakamura ir kt., 2010), (Hassoun, 1995).
11
2.3.1 Klaidos skleidimo atgal algoritmas
Daţniausiai daugiasluoksnis perceptronas yra realizuojamas „klaidos skleidimo atgal“
algoritmu (angl. back propagation error), todėl panagrinėsime šio algoritmo veikimo principą.
Mokymas grindţiama parenkant klaidos funkciją ir minimizuojant ją neuroninio tinklo svorių
atţvilgiu.
Prieš analizuojant neuroninio tinklo apmokymą, paminėsime tris svarbius kriterijus:
Jei neuroniniame tinkle neuronų perdavimo funkcijos diferencijuojamos, tai išėjimo
sluoksnio neuronų perdavimo funkcijos yra diferencijuojamos įėjimo kintamųjų
( ) ir svorių atţvilgiu.
Jei klaidos funkciją E parinksime diferencijuojamą neuroninio tinklo išėjimo
atţvilgiu, tai ši funkcija bus diferencijuojama ir svorių atţvilgiu (ir įėjimo
kintamųjų atţvilgiu).
Tad galima skaičiuoti klaidos išvestines svorių atţvilgiu ir naudoti jas svorių,
minimizuojančių klaidos funkciją, radimui (gradientiniu ar kitais optimizavimo
metodais).
Klaidos skleidimo atgal algoritmas taip vadinasi todėl, kad jis “paskirsto” klaidą
tarpneuroninio tinklo elemento pradedant nuo viršaus ir tolyn į apačią. Šį mokymą sudaro du
ţigsniai: įėjimo reikšmių „skleidimo pirmyn“ iš įėjimų į išėjimų sluoksnį ir paklaidos „skleidimo
atgal“ iš išėjimų į įėjimų sluoksnį.
Bendru tiesioginio sklidimo neuroninio tinklo atveju, kiekvienas elementas skaičiuoja svorinę
įėjimo elementų sumą:
∑
– neuroniniame tinkle įėjimas (dar gali būti ţymimas kaip ) arba ţemesniojo sluoksnio i-
tojo elemento išėjimas (dar gali būti ţymimas kaip ). – jungtis tarp nagrinėjamo sluoksnio j-tojo neurono ir ţemesnio sluoksnio i-tojo elemento.
– svorinė suma visų neuronų išėjimų, sujungtų su j-tuoju nagrinėjamo sluoksnio elementu.
Suma transformuojama netiesinės perdavimo funkcijos f() pagalba
( )
Neuroniniame tinkle svoriai parenkami minimizuojant tam tikrą klaidos funkciją.
Nagrinėsime tokią klaidos funkciją (suma klaidų, skaičiuojamų kiekvienam duomenų vektoriui):
∑
s – duomenų vektoriaus numeris.
išraiška turi būti diferencijuojama pagal neuroninio tinklo išėjimo kintamuosius.
Tikslas – rasti taisyklę, pagal kurią būtų galima skaičiuoti klaidos išvestinę neuroninio tinklo
svorių atţvilgiu. Jei turima klaidos funkcija, tai jos išvestinė bus suma klaidos išvestinių
12
kiekvienam įėjimo vektoriui. Todėl toliau formulėse nagrinėsime tik klaidos išvestinę vienam
įėjimo duomenų vektoriui.
Kai skaičiavimai pasiekia pabaigą, pamatome rezultatą ir įvertiname klaidą. Po to tą klaidą
padaliname tarp tinkle svorių pradedami nuo išėjimo ir baigdami įėjimu.
Pastaba. Įėjimo duomenų vektoriaus numerį s praleisime neuronų įėjimų, svorių, išėjimų
formulėse.
Klaida nuo svorio priklauso tik per svorinę įėjimų į j-tąjį elementų sumą :
( )
todėl
Paţymėkime
(∑ )
todėl
Jei nagrinėjame apatinį sluoksnį, į kurio įėjimą paduodame ( ), tai:
(∑ )
yra tam tikros rūšies neuron išėjimo klaida.
Matome, kad svorio įtaka klaidai yra tuo didesnė, kuo:
a) Didesnę klaidą daro j-tasis neuronas (didesnis );
b) Didesnis signalas perduodamas svorio jungtimi (didesnis ).
Dabar nagrinėsime atskirai išėjimo mazgams (ţymėsime tai ) ir paslėptų sluoksnių
neuronams (ţymėsime tai ).
Tada išėjimo mazgams, ţinant, kad ( )
( )
Paslėptiems mazgams:
13
∑
čia s – sekančio sluoksnio (nei nagrinėjama mazgo j sluoksnis) neuronas.
Diferencialą galima išskaidyti todėl, kad aukštesnio sluoksnio visi , k=1,2,… priklauso nuo
ţemesnio sluoksnio fiksuoto
( )
Ţinant, kad
∑ ( )
( )
gauname
∑ ( )
( )∑
Matome, kad reikšmė tam tikram elementui (mūsų atveju j-tajam neuronui) gali būti gauta
skleidţiant reikšmes atgal iš aukščiau esančių mazgų: suskaičiuojame reikšmes išėjimo
neuronams, po to iš jų – ţemesnio sluoksnio neuronams ir taip iki pačio apatinio sluoksnio.
Apibendrinant,“klaidos skleidimo atgal“ algoritmas yra toks:
1. Į tinklą paduodamas vektorius ir suskaičiuojamas išėjimų reikšmės visiems
paslėpties ir išėjimo neuronams:
∑
( )
2. Suskaičiuojamos reikšmės visiems išėjimo mazgams.
3. Skleidţiamos reikšmės, suskaičiuojamos reikšmės visiems neuroninio tinklo
paslėptiems neuronams.
4. Reikiamos išvestinės randamos pagal formulę:
5. Bendra klaida E gali būti randama kartojant 1-4 ţingsnius visai duomenų imčiai ir
susumuojant klaidas, gautas visiems duomenų taškams:
∑
14
Pastaba. Nebūtinai visi sluoksnio neuronai turi turėti vienodą perdavimo funkciją. Algoritmui
tai nesvarbu – skaičiavimuose tik reikia sekti kokią perdavimo funkciją turi kiekvienas
elementas.
Ţinant išvestines
arba
reikia keisti svorius.
Vienas iš būdų ir daţniausiai naudojamų yra fiksuoto ţingsnio gradientinio nusileidimo
metodas.
Svoriai gali būti keičiami (perskaičiuojami) dviem būdais:
1. pateikus tinklui vieną vektorių :
aukštesnių sluoksnių atveju:
apatinio (pirmo) sluoksnio atveju:
2. pateikus tinklui visą imtį ir susumavus dalines išvestines pagal svorius visai
duomenų imčiai:
aukštesnių sluoksnių atveju:
∑
apatinio (pirmo) sluoksnio atveju:
∑
čia s – mokymo imties taško numeris (Groupe, 2007), (Gurney ir kt., 1997), (Priddy ir kt., 2005).
15
2.4 Radialinių bazinių funkcijų neuroniniai tinklai
Radialinių bazinių funkcijų (RBF) tinklus (2.6 pav.) vadiname neuroninius tinklus, kuriuose
kiekvienas tarpinio sluoksnio neuronas atitinka radialinę bazinę funkciją.
2.6 pav. RBF neuroninio tinklo schema
Čia ( ) – įėjimo vektorius, ( ) – išėjimo vektorius. Radialinių
bazinių funkcijų neuroninių tinklų pagrindinis tikslas yra apmokyti tinklą kuo geriau reaguoti į
įėjimo vektorius.
Jei ( ) – įėjimo vektoriai, ( ) –
tinkle išėjimo vektoriai, tai ( ) – trokštama tinkle reakcija į duomenų
vektorius .
Radialinių bazinių funkcijų tikslios interpoliacijos metodas naudoja rinkinį iš m bazinių
funkcijų, po vieną kiekvienam duomenų taškui ( ) Bazinės funkcijos uţrašomos kaip
( ), čia ϕ() yra tam tikra netiesinė funkcija. j-toji funkcija priklauso nuo atstumo
. Daţniausiai naudojamas Euklido atstumas tarp X ir . Interpoliuojanti funkcija
aprašoma kaip tiesinė bazinių funkcijų kombinacija:
( ) ∑ (|| ||)
kur
( )
Paţymėkime ( ) – kvadratinė matrica, kurios elementai:
(|| ||) ( )
16
Kai svorių reikšmės parenkamos pagal pateiktą formulę, tai funkcija h(X) nusako tolygų
diferencijuojamą paviršių, einantį tiksliai per visus duomenų taškus. Daţniausiai naudojama
bazinė funkcija – Gausinė, kuri turi ir analitiškai svarbių savybių.
( ) (
)
čia parametras yra vadinamas pločio parametru, nuo kurio labai priklauso interpoliuojančios
funkcijos glotnumas. Gausinė funkcija yra lokalizuota bazinė funkcija, turinti savybę, kad
( ) , kai .
Tinklo pagalba sudaroma interpoliuojanti funkcija, kurioje bazinių funkcijų skaičių
apsprendţia ne mokymo imties dydis (kaip tikslios interpoliacijos atveju), bet atvaizduojamos
funkcijos sudėtingumas.
Realizacijos ypatumai:
1. Bazinių funkcijų skaičius M parenkamas daug maţesnis uţ duomenų taškų skaičių m
(M<m).
2. Bazinių funkcijų centrų radimas – mokymo proceso dalis, tuo tarpu kai tikslios
interpoliacijos atveju jie sutampa su . 3. Kiekviena bazinė funkcija gali turėti savus specifinius parametrus (Gausinės bazinės
funkcijos atveju, plotis ), kurie taip pat nustatomi mokymo metu.
4. Į svorinę bazinių funkcijų sumą įtraukiami laisvieji nariai. Jie kompensuoja bazinių
funkcijų skaičiaus sumaţinimą.
Tuo būdu gaunama tokia RBF neuroninio tinklo perdavimo funkcija:
( ) ∑ ( )
Gausinės funkcijos atveju
( ) (
)
Čia yra bazinės funkcijos centro vektorius ( ) – atstumas tarp
vektorių X ir .
RBF neuroninių tinklų mokymas vyksta dviem etapais:
1. Vien tik tai duomenų vektorių pagalba nustatomi bazinių funkcijų
parametrai (Gausinėmis funkcijomis, tai ir ).
2. Fiksuojamos bazinės funkcijos ir randami svoriai .
Tegul bazinių funkcijų parametrai nustatyti. Matricinė forma atrodo taip:
( )
čia y(X) – d-matis vektorius, W – matrica, kurios elementai yra , o
– M - matis vektorius.
17
Kadangi bazinės funkcijos fiksuotos, RBF neuroninis tinklas yra ekvivalentiškas
vienasluoksniam neuroniniam tinklui. Svoriai optimizuojami minimizuojant klaidos funkciją.
Daţniausiai pasirenkama suminė kvadratinė klaida:
∑∑( ( ) )
čia yra trokštama tinkle reakcija k-tajame išėjime į duomenų vektorių .
Kadangi klaidos funkcija yra kvadratinė svorių funkcija, jos minimumas gali būti randamas
kaip tiesinių lygčių sprendinys.
Daţniausiai radialinių bazinių funkcijų neuroniniuose tinkluose antrojo sluoksnio neuronų
perdavimo funkcijos tiesinės, ir svorių optimizavimui naudojama suminės kvadratinės klaidos
išraiška. Naudojamos ir netiesines išėjimo neuronų perdavimo funkcijos, kaip ir kitokios klaidos
funkcijos. Tačiau tada antrojo sluoksnio svorių nustatymas tampa nebetiesine problema ir
reikalauja netiesinių optimizavimo metodų. Kaip jau minėta, vienas iš radialinių bazinių funkcijų
neuroninių tinklų privalumų tas, kad galima juos apmokyti nenaudojant tokių procedūrų
(Sundararajan ir kt., 1999), (Yee ir kt., 2001), (Howlett ir kt., 2001), (Cecile ir kt., 2007).
2.4.1 Autoasociatyvieji neuroniniai tinklai
Autoasociatyvieji neuroniniai tinklai (angl. autoassociative neural network) dar daţnai
vadinami autokoderių tinklais (2.8 pav.). Jie leidţia sumaţinti duomenų išskiriant d neuronų iš
vadinamojo „butelio kaklelio“ – (angl. bottleneck) sluoksnio, sudaryto iš maţiau elementų nei
įėjimo ir išėjimo sluoksniai, čia d yra dimensijų skaičius po sumaţinimo. Autoasociatyvusis
neuroninis tinklas sudarytas iš dviejų dalių: pirma dalis transformuoja pradinius analizuojamus
daugiamačius duomenis į maţesnio skaičiaus matmenų erdvę atvaizdavimo sluoksnis), o antroji
– rekonstruoja (atstato) pradinius duomenis iš gautų rojekcijų (atstatymo sluoksnis).
2.7 pav. Autoasociatyvusis neuroninis tinklas
Tinklo mokymo proceso metu yra minimizuojama vidutinė kvadratinė paklaida , gaunama
tarp tinklo įėjimo vektoriaus ( ) ir išėjimo vektoriaus
( ) atitinkamų komponenčių reikšmių:
18
∑∑( )
Neuroninis tinklas mokomas duomenų vektoriais , o tinkle vidurinio paslėptojo “butelio
kaklelio” sluoksnio neuronų išėjimuose gaunamos analizuojamų duomenų projekcijos d-matėje erdvėje, išlaikant tikslią pradinių duomenų struktūrą (Hassoun, 1995), (Priddy ir kt.,
2005), (Baek ir kt., 2002).
19
3. Tiesioginio sklidimo neuroninių tinklų sistemos ir jų
klasifikacija
3.1 Tiesioginio sklidimo neuroninių tinklų sistemos
Šiuo metu labai daugėja programų, kuriose realizuoti dirbtiniai neuuroniniai tinklai.
Tiesioginio sklidimo neuroninių tinklų programos yra labai įvairios. Jos viena nuo kitos skiriasi:
- kaina: brangios, pigios arba nemokamos;
- sudėtingumu: profesionalų sukurtos arba megėjų;
- pasirinkimų parametrų, bei mokymo metodų įvairove;
- neuroninių tinklų vizualizavimo galimybėmis;
- kt.
Šiame darbe yra pasirinktos 14 skirtingų tiesioginio sklidimo neuroninio tinklo programų
apţvalgai, kurios turi savų pliusų, bei minusų.
3.1.1. „Cortex“
„Cortex“ programa (3.1 pav.) susideda iš šešių kortelių, kurių pagalba įkeliamas tekstinis
failas su duomenimis, pasirenkama aktyvacijos funkcija ir neuronų sluoksnių skaičių. Papildomai
leidţia rinktis sustojimo kriterijų arba jų nepasirinkti. Tada apmokomas tinklas ir gaunamas
atsakymas su paklaida ir iteracijų skaičiumi.
Šios programos privalumas yra tai, kad turi paleidţiamąjį failą .exe ir be papildomų
instaliacijų galima naudotis iš karto. Didţiausias programos minusas yra tai, kad nėra pritaikytas
didelės apimties neuroniniams tinklams apmokyti (http://cortex.snowcron.com).
3.1. pav. „Cortex“ programa
20
3.1.2. „DTREG“
„DTREG“ programoje (3.2 pav.) taip pat yra kelios kortelės. Kai įkeliamas duomenų failas,
tada galima pereiti prie kitų kortelių, kur leidţia pasirinkti neuroninio tinklo kriterijus, kaip
aktyvacijos funkciją, paslėptų neurono sluoksnių skaičių. Apmokomas pasirinktas tinklas:
daugiasluoksnis perceptronas arba radialinių bazinių funkcijų neuroninis tinklas. Gautas
atsakymas išsaugomas faile .dtr plėtiniu.
Ši programa yra viena iš brangiausių programų, bet jei vartotojui nereikia pilno komplekto, tai
jis gali susimokėti tik uţ tai ko jam reikia. Nors ji yra brangi, bet labai išsami neuroninio tinklo
atţvilgiu. Pradţiai yra siuloma pabandyti 30 dienų bandomąją versiją, kurioje leidţia dirbti su
įvairiais skirtingais metodais (http://www.dtreg.com).
3.2. pav. „DTREG“ programa
3.1.3. „Grouper“
„Grouper“ programa (3.3 pav.) yra nedidelė, paprasta naudotis ir nereikia jos instaliuoti. Visas
programos veiksmas vyksta viename langelyje, t.y., tame pačiame langelyje įkeliamas failas su
duomenimis, pasirenkama aktyvacijos funkcija, neurono sluoksnio struktūra, tada apmokomas
neuroninis tinklas ir išsaugojamas naujame faile rezultatas. Duomenų kiekis neuroniniams
tinklams apmokyti yra ribotas (http://www.e-nuts.net).
21
3.3. pav. „Grouper“ programa
3.1.4. „NeuronDotNet“
„NeuronDotNet“ sistema (3.4 pav.) iš tiesioginio sklidimo neuroninio tinklų metodų naudoja
tik daugiasluoksnio perceptroną, kuris yra realizuojamas „klaidos skleidimo atgal“ algoritmu. Ši
programa yra nemokama ir atviro kodo, parašyta C# programavimo kalba. Pagrindiniame lange,
kai tinklas yra apmokamas, galima stebėti kaip kinta klaidos dydis nuo iteracijų skaičiaus. Nors
nėra galimybių savarankiškai pasirinkti sustojimo kriterijų, bet galima sustabdyti apmokymą, bet
kuriuo momentu, kai jau tenkina klaidos dydis ar iteracijų skaičius.
3.4. pav. „NeuronDotNet“ programa
22
3.1.5. „PathFinder“
Sistema „PathFinder“ (3.5 pav.) realizuoja tiesioginio sklidimo neuroninį tinklą su vienu
paslėptu neuronų sluoksniu. Nors sistema yra nedidelė ir ja lengvai galima išmokti naudotis, bet
didţiausias darbas yra tinkamai paruošti duomenis MS Excel faile ir pateikti juos programai.
Pateikiant ir dirbant su sistema, kartu turi būti paleistas ir MS Excel failas, kuriame yra
duomenys. Jei programa teisingai nuskaitė duomenis, toliau galima dirbti sekančiomis
aštuoniomis kortelėmis.
Kortelėse Variables, Design, Learning params yra pasirenkami parametrai, bei sustojimo
kriterijai vartotojo atţvilgiu. Train kortelėje vyksta tinklo apmokymas.
Skirtingai nuo kitų programų, šioje galima pamatyti gautus svorių reikšmes, kortelėje
Examine Wgts.
3.5. pav. „PathFinder“ programa
3.1.6. „Tiberius“
„Tiberius“ (3.6 pav.) programa yra mokama, bet galima parsiųsti bandomąją versiją, kurią
leidţiama naudotis 30 dienų. Šios programos kūrėjai didţiausią dėmesį sutelkė, į rezultatų
pavaizdavimą, pvz., sistema nubraiţo grafiką, kuriame matosi, kaip duomenys yra pasiskirstę
pagal klases. Nors grafikų yra daug, kurie yra braiţomi pagal norimus kriterijus, bet labai trūksta
parametrų keitimo įvairovės prieš apmokant neuroninį tinklą (http://www.tiberius.biz).
23
3.6. pav. „Tiberius“ programa
3.1.7. „Simbrain“
„Simbrain“ (3.7 pav.) yra sukurta megėjų programuotojų, kurie ją platina nemokamai.
Programa yra atviro kodo, parašyta „Java“ programavimo kalba. Kurdami programą,
programuotojai didţiausią dėmesį skyrė į jos pritaikymą skirtingoms operacinėms sistemoms,
kaip Mac OS X, Linux, bei Windows įvairioms versijoms.
Šioje sistemoje yra nemaţai esminių klaidų, nuo kurių sistema „lūţta“, bet vartotojui
nepranešama dėl kokios prieţasties. Dar vienas didelis minusas yra tai, kad pridėta daug
nereikalingų parametrų, o reikiamus sunku rasti. Kadangi ji yra atviro kodo, tai programuotojas
gali pakoreguoti „Simbrain“, bet paprastam vartotojui nėra pritaikyta (http://www.simbrain.net).
3.7. pav. „Simbrain“ programa
3.1.8. „Neuroph“
„Neuroph“ programa (3.8 pav.) yra sukurta megėjų, nemokamai platinama, atviro kodo,
parašyta „Java“ programavimo kalba. Ją galima nemokamai parsisiųsti arba paleisti iš tinklapio
neuroph.sourceforge.net, tik reikia turėti savo kompiuteryje įdiegtą „Java Run Environment“. Jos
veikimo principas panašus į „Simbrain“ sistemą, bet turinti daugiau funkcijų, pritaikytų
24
neuroniniams tinklams, pvz., metodo, aktyvacijos funkcijos, paslėptų neuronų sluoksnių
skaičiaus pasirinkimas.
Nors funkcijų daugiau ir didesnis neuroninių tinklų metodų ir parametrų pasirinkimas, bet,
kaip ir „Simbrain“ programoje, klaidų neišvengta.
3.8. pav. „Neuroph“ programa
3.1.9. „Multiple Back-Propagation“
„Multiple Back-Propagation“ programa (3.9 pav.) realizuoja daugiasluoksnį perceptroną
„klaidos skleidimo atgal“ algoritmu. Ji yra nedidelė, galima lengvai išmokti naudotis, bei
vaizdţiai pavaizduoja neuroninio tinklo struktūra.
Tokia sistema yra labiau pritaikyta pavaizduoti šio metodo veikimo principą, o ne dirbti, nes
yra maţas, vartotojo nuoţiūra, keičiamų parametrų pasirinkimas prieš apmokant tinklą, bei gali
dirbti tik su nedideliais kiekiais duomenimis (http://dit.ipg.pt/MBP).
3.9. pav. „Multiple Back-Propagation“
25
3.1.10. „NeuroSolutions“
„NeuroSolutions“ programa (3.10 pav.) yra pritaikyta įvairiems neuroninio tinklo metodams,
bei galima pasirinkti kokį uţdavinį spręsti: klasifikavimo, prognozavimo. Dar vienas privalumas
yra tai, kad šioje sistemoje galima kiekvienam paslėptam neuroniniam sluoksniui pasirinkti
skirtingas aktyvacijos funkcijas. Programinė įranga turi platų grafikų pasirikimą, bei nubraiţo
neuroninio tinklo modelį. Prieš nusiperkant šią programą, ją galima nemokamai parsisiųsti 30
dienų ir išbandyti ja.
Ji yra profesionalų sukurta, pritaikyta Windows 32 ir 64 bitų operacinėms sistemoms.
Pripaţinta net 66 skirtingose šalyse ir veikianti nuo 1995 metų. „Neuro Solutions“ gali būti
realizuojama su tokiomis programomis kaip MS Excel, Matlab (http://www.neurosolutions.com).
3.10. pav. „Neuro Solutions“ programa
3.1.11. „Sharky NN“
„Sharky NN“ programa (3.11 pav.) yra paprasta ir vaizdţiai pavaizduoja daugiasluoksnio
perceptrono relizuota „klaidos skleidimo atgal“ algoritmu neuroninį tinklą. Ji yra priimtina
vartotojui, nes lengva išmokti naudotis, nemaţai vaizdinių priemonių, bet vartotojui keisti tinklo
parametrus, kaip aktyvacijos funkciją, sustojimo kriterijus nėra įmanoma.
„Sharky NN“ sprendţia daugiasluoksnio perceptrono klasifikavimo uţdavinį, bei programos
lange galima matyti kaip mokymo metu duomenys yra pasiskirstę. Taip pat yra galimybė stebėti
mokymo metu paklaidos, epochų ir svorių kitimą
(http://www.sharktime.com/us_SharkyNeuralNetwork.html).
26
3.11. pav. „Sharky NN“ programa
3.1.12. „Matlab“
„Matlab“ (3.12 pav.) programoje yra sukurtas, neuroninių tinklų paketas (angl. Neural
Network Toolbox). Šis paketas gali apmokyti vienasluoksnį perceptroną, daugiasluoksnį
perceptroną, radialinių bazinių funkcijų neuroninius tinklus, bei pasirinkti sprendţiamo
uţdavinio tipą, pvz., klasifikavimo ar prognozavimo.
Didţiausias „Matlab“ privalumas yra tai, kad lengvai ir greitai išmokstama naudotis ir turi
daug parametrų, tiek prieš apmokant tinklą, tiek pasirenkant sustojimo kriterijus, kuriuos
vartotojas gali keisti. Tai profesionalų sukurta programa skirta dirbti su didelėmis duomenų
aibėmis (http://www.mathworks.se/products/matlab/index.html).
3.12. pav. „Matlab“programa
27
3.1.13. „Alyuda NeuroInteligence“
„Alyuda NeuroInteligence“ (3.13 pav.) taip pat priskiriama prie profesionalių programų, nes
padaryta be klaidų, didelis varotojui parametrų pasirinkimas, bei lengvai išmokstama. Šios
sistemos didţiausias privalumas yra tai, kad randa optimaliausią neuroninio tinklo išsidėstymą.
Gautą optimalų tinklą, analizuoja ir pritaiko naujiems duomenims.
Taip pat netrūksta priemonių pavaizduoti vizualiai gautus rezultatus, bei jos pagalba galima
atlikti norimas ataskaitas, susijusias su neuroniniais tinklais (http://www.alyuda.com/neural-
networks-software.htm).
1.13. pav. „Alyuda NeuroInteligence“ programa
3.1.14. „Statistica Automated Neural Networks“
„Statistica Automated Neural Networks“ programa (3.14 pav.) turi platų pasirinkimą
neuroninių tinklų tipų ir mokymo algoritmų. Pasirinkta tinklo struktūra yra pavaizduojama
pagrindiniame lange su įėjimo, išėjimo vektoriais ir visais paslėptais neuroniniais sluoksniais.
„Statistica Automated Neural Networks“ išskirtinumas nuo kitų nagrinėtų programų yra tai,
kad sistema atlieka išsamią analizę gautų rezultatų su įvairiais grafikais. Rezultatus galima
išsaugoti skirtingais formatais (http://www.statsoft.com/products/statistica-automated-neural-
networks/).
3.14. pav. „Statistica Automated Neural Networks“ programa
28
3.2 Tiesioginio sklidimo neuroninio tinklo sistemų palyginimas
Tiesioginio sklidimo neuroninių tinklų sistemų yra daug ir įvairių. Juos galima suskirstyti
pagal skirtingus kriterijus: kaina, metodų panaudojimą programose, sistemų keičiamius
parametrus.
Programas kuria profesonalai ir megėjai. Daţniausiai megėjai sistemą platiną nemokamai su
atviru kodu. Jose gali būti daug funkcijų (kartais ir nereikalingų neuroninių tinklų analizei), bet
daţnai „lūţta“ dėl klaidų ir nepraneša vartotojui dėl kokios prieţasties taip atsitiko.
Populiariausios programavimo kalbos yra Java ir C. Profesonalų programose nėra klaidų, jos
atlieka ţymiai daugiau funkcijų, bet jos yra daug sudėtingesnės ir mokamos.
Beveik kiekviena sistema turi savo oficialią svetainė ir kai kurios yra mokamos, nors
daţniausiai leidţia pabandyti apie 30 dienų bandomąją versiją. 3.1 lentelėje matome, programų
kainas ir oficialias svetaines, iš kurių galima nusipirkti, parsisiųsti programas, bei gauti
reikiamos informacijos.
3.1. lentelė. Programų kainos ir oficialios svetainės
Eil.
Nr. Programos Programos tinklalapis
Programos
kaina
1 Cortex http://cortex.snowcron.com 0
2 DTREG http://www.dtreg.com 5000$
3 Grouper http://www.e-nuts.net 0
4 NeuronDotNet - 0
5 Path Finder - 0
6 Tiberius http://www.tiberius.biz 264,70$
7 Simbrain http://www.simbrain.net 0
8 Neuroph - 0
9 Multi Back-
Propagation http://dit.ipg.pt/MBP 0
10 Neuro Solutions http://www.neurosolutions.com 295$
11 Sharky NN http://www.sharktime.com/us_SharkyNeuralNetwork.html 0
12 Matlab http://www.mathworks.se/products/matlab/index.html 99$
13 Alyuda
NeuroInteligence http://www.alyuda.com/neural-networks-software.htm 497$
14
Statistica
Automated Neural
Networks (SANN)
http://www.statsoft.com/products/statistica-automated-
neural-networks/ 1290$
Pastaba. Lentelėje surašytos kainos yra daţniausiai skirtos studentui, vienam vartojui ir
pilnas komplektas, o ne dalis programos.
Kurdami programas pardavimui, stengiamasi, kad jų funkcionalumas atitiktų kainą, todėl
bandoma įtraukti kuo daugiau metodų ir parametrų, nors ir megėjų sukurtose programose taip pat
galima pastebėti platų metodų pasirinkimą. 3.2 lentelėje yra pateikti, kokie metodai yra taikomi
programose.
29
3.2. lentelė. Metodų pritaikymas programose
Eil.
Nr. Programos
Tiesioginio sklidimo neuroninių tinklų metodai
Vienasluoksnis
Perceptronas
Daugiasluoksnis
perceptronas
Radialinių bazinių
funkcijų metodas
1 Cortex - + -
2 DTREG - + +
3 Grouper - + -
4 NeuronDotNet - + -
5 Path Finder - + -
6 Tiberius + - -
7 Simbrain + + -
8 Neuroph + + +
9 Multi Back-Propagation - + -
10 Neuro Solutions - + +
11 Sharky NN - + -
12 Matlab + + +
13 Alyuda NeuroInteligence - + -
14 Statistica Automated Neural
Networks (SANN) - + +
Iš pateiktos lentelės, matosi, kad labiausiai paplitęs yra „daugiasluoksnis perceptronas“ (angl.
Multilayer Perceptron (MLP), bet visuose nagrinėtose sistemose šis metodas yra realizuojamas –
„klaidos skleidimo atgal“ algoritmu. Rečiausiai nagrinėjamas metodas yra vienasluoksnis
perceptronas.
3.3. lentelė. Sistemų keičiami parametrai
Eil. Nr. Programos
Tiesioginio sklidimo neuroninių tinklų sistemų keičiami
parametrai
Aktyvacijos
funkcija
Neuroninio
tinkle paslėptų
sluoksnių
skaičius
Sustojimo kriterijus
Paklaida Iteracijų
skaičius
1 Cortex + + + +
2 DTREG + + + +
3 Grouper - + - -
4 NeuronDotNet - + - +
5 Path Finder + + - +
6 Tiberius - - + +
7 Simbrain - + - -
8 Neuroph + + + +
9 Multi Back-Propagation - - + +
10 Neuro Solutions + + - +
11 Sharky NN - + - -
12 Matlab + + + +
13 Alyuda NeuroInteligence + + + +
14 Statistica Automated Neural
Networks (SANN) + + - -
30
Prieš pateikiant į tinklą duomenis, vartotojas daţniausiai nori pats pasirinkti tam tikrus
parametrus, nuo kurių priklauso neuroninio tinklo apmokymas. 3.3 lentelėje yra pateikiami
daţniausiai pasitaikantys parametrai, kuriuos vartotojas gali keisti savo nuoţiūra.
3.3 lentelėje, matosi, kad nėra tokio kriterijaus, kurio būtų visose programose. Beveik visur
galima pasirinkti neuroniniame tinkle paslėptų sluoksnių skaičių, bet jis būna ribotas ir nedidelis.
Nors kai kurios programos turi didelį metodų, bei parametrų keitimo įvairovę, bet taip pat turi
ir daug klaidų arba yra labai sudėtingos ir nepatrauklios vartotojui. 3.4 lentelėje programos yra
palyginamos tarpusavyje savo sudėtingumu, paţeidţiamumu, bei programų veikimu operacinėse
sistemose. Palyginimui pasirinktos trys populiariausios operacinės sistemos skirtos asmeniniams
kompiuteriams: Windows, Mac OS, Linux.
3.4. lentelė. Techninis programų įvertinimas
Eil.
Nr. Programos
Programos
sudėtingumas
Programos
stabilumas
Operacinės sistemos, kuriose
veikia programa
Windows Mac Linux
1 Cortex Paprasta Stabili + - -
2 DTREG Sudėtinga Stabili + - -
3 Grouper Paprasta Stabili + - -
4 NeuronDotNet Paprasta Yra klaidų + - -
5 Path Finder Paprasta Stabili + - -
6 Tiberius Sudėtinga Yra klaidų + - -
7 Simbrain Paprasta Yra klaidų + + +
8 Neuroph Paprasta Yra daug klaidų + + +
9 Multi Back-Propagation Paprasta Yra klaidų + - -
10 Neuro Solutions Sudėtinga Stabili + - -
11 Sharky NN Paprasta Stabili + - -
12 Matlab Sudėtinga Stabili + + +
13 Alyuda NeuroInteligence Sudėtinga Stabili + - -
14 Statistica Automated
Neural Networks (SANN) Sudėtinga Stabili + - -
Įvertinus programos išmetamų klaidų kiekį, bei sudėtingumą vartotojo atţvilgiu, galima daryti
išvadą, kad programos stabilumas nepriklauso nuo jos sudėtingumo. Daţniausiai tiesioginio
sklidimo neuroninių tinklų programos yra skirtos Windows operacinei sistemai ir tik trys iš
keturiolikos nagrinėtų programų yra pritaikytos ir kitoms operacinėms sistemoms.
31
3.5. lentelė. Programų įvertinimas
Eil.
Nr. Programos
Mokymo
metodų
įvairumas
Parametrų
ketimo
galimybės
Programos
stabilumas
Programos
kokybė
Kainos ir
kokybės
santykis
Viso
1 Cortex 0 2 1 2 2 7
2 DTREG 1 2 2 2 1 8
3 Grouper 0 0 2 2 2 6
4 NeuronDotNet 1 1 1 1 1 5
5 Path Finder 0 1 2 2 2 7
6 Tiberius 0 1 1 2 0 4
7 Simbrain 1 0 1 1 2 5
8 Neuroph 2 2 0 0 0 4
9 Multi Back-
Propagation 0 1 2 1 2 6
10 Neuro Solutions 1 1 2 2 0 6
11 Sharky NN 0 0 2 0 0 2
12 Matlab 2 2 2 2 2 10
13 Alyuda
NeuroInteligence 0 2 1 2 1 6
14
Statistica
Automated Neural
Networks (SANN)
1 1 2 2 0 6
Kiekviena tiesioginio sklidimo neuroninių tinklų programa yra įvertinama balu. Programos
įvertinimas yra sudarytas iš penkių pagrindinių kriterijų, kurie yra pateikti 3.5 lentelėje. Balai yra
gaunami iš pateiktų ankstesnių lentelių (3.1, 3.2, 3.3, 3.4 lentelės), kuriose buvo aptartos
programos įvairiais aspektais, bei palygintos tarpusavyje. Maksimalus kiekvieno kriterijaus
įvertinamas yra 2 balai, jei programa tuo atţvilgiu yra geriausia palyginus su kitomis
nagrinėtomis programomis ir minimalus įvertinimas yra 0, jei pateikti parametrai yra prasčiausi.
Remiantis 3.5 lentelėje esančia informacija, matosi, kad daugiausiai balų teko „Matlab“
programai, kuri surinko maksimalų įvertinimą, o maţiausiai balų teko „Sharky NN“ programai,
kuri du balus gavo tik uţ programos stabilumą.
Vizualiai programų įvertinimai yra pavaizduoti 3.15 pav. stulpelinėje diagramoje.
32
3.15. pav.
Tiesioginio sklidimo neuroninio tinklų metodams pritaikytos program pasirinkimas yra
nemaţas ir jos labai įvairios. Buvo analizuojama 14 skirtingų programų ir palygintos tarpusavyje,
bei įvertintos balu dešimtbalėje balų vertinimo sistemoje pagal penkis parinktus skirtingus
kriterijus. Nors daug yra sukurtų profesonalių programų, bet nemaţai atsiranda ir megėjų, kurie
taip pat parašo kuria nors programavimo kalba (daţniausiai pasitaikanti kalba yra „Java“), bei
platina nemokamai su atviru kodu. Šios programos nėra stabilios ir daţnai stringa. Profesonalų
programos yra galingos ir reikalauja daugiau kompiuterio resursų, bet jos ne tik apmoko
neuroninį tinklą, grafiškai ir išsamiai pateikia rezultatus, bet ir atlieka kitas funkcijas
(pavyzdţiui, sprendţia matematinius uţdavinius).
10
8 7 7
6 6 6 6 6 5 5
4 4
2
0
2
4
6
8
10
12
Programų įvertinimai
33
4. Tiesioginio sklidimo neuroninių tinklų sistemų analizė
Toliau nagrinėtos keturios tiesioginio sklidimo neuroninių tinklų sistemos analizuojant
įvairius duomenis, taikant skirtingus metodus. Šios sistemos pasirinktos pagal kelis kriterijus:
1. Pagal 3.15 lentelėje esančią informaciją, pasirinktos tokios sistemos, kurios turi
daugiausiai balų („Matlab“ (10 balų), „DTREG“ (8 balai), „Cortex“ (7 balai),
„PathFinder“ (7 balai)).
2. Dvi sistemos turi būti profesionalios ir mokamos („Matlab“, „DTREG“), kitos dvi
paprastos ir nemokamos („Cortex“, „PathFinder“).
3. Visos keturios sistemos turi apmokyti daugiasluoksnį perceptroną ir bent dvi dar ir
radialinių bazinių funkcijų metodą („Matlab“, „DTREG“).
Gauti rezultatai palyginti tarpusavyje. Visi tiesioginio sklidimo neuroninio tinklo apmokymo
uţdaviniai yra klasifikavimo tipo, kur norimos reikšmės yra duomenų aibių klasės.
Neuroninio tinklo kokybės vertinimui daţnai naudojamos kelios paklaidos:
1. RMSE (angl. Root Mean Square Error);
√
∑( )
čia – išėjimo reikšmių vektorius, – trokštamų reikšmių vektorius.
2. MSE (angl. Mean Square Error);
∑( )
Atitinkamai naudojamos ir normuotos paklaidos:
1. NRMSE (angl. Normalized Root Mean Square Error);
√ ∑ ( )
2. NMSE (angl. Normalized Mean Square Error);
34
∑ ( )
4.1. Tyrimo duomenys
Tolimesnei duomenų analizei, pasirinkti keturi duomenų rinkiniai: irisai (angl. iris), vyno
(angl. wine), pusiausvyros (angl. balance-scale), krūtų vėţio (angl. breast-cancer), kurie yra
paimti iš tinklapio http://archive.ics.uci.edu/ml.
1. Irisai [150; 4]. Fišerio irisų duomenys (Fisher, 1936), kurie buvo išmatuoti 150-ies
irisų ţiedų:
1) vainiklapių plotis (angl. petal weight);
2) vainiklapių ilgis (angl. petal height);
3) taurėlapių plotis (angl. sepal weight);
4) taurėlapių ilgis (angl. sepal height).
Pirmi keturi stulpeliai yra ţiedų parametrai, matuojami milimetrais. Penktas stulpelis yra irisų
klasė, kurios sudaro trijų veislių irisų ţiedai: Iris Setosa (1 klasė), Iris Versicolor (2 klasė), Iris
Virginica (3 klasė).
2. Vyno sudėtis [178; 13]. Vyno duomenys surinkti Italijos regione iš trijų ţemdirbių.
Buvo tyrinėjama vyno sudėtis. Vyno sudėtį sudaro 13 pagrindinių elementų:
1) Alkoholio laipsnis (angl. alcohol);
2) Obuolių rūgštis (angl. malic acid);
3) Ash;
4) Alkalinity of ash;
5) Magnis (angl. magnesium);
6) Grynoji karbolio rūgštis (angl. total phenols);
7) Flavanoidai (angl. flavanoids);
8) Ne flavanoidinis fenolis (angl. nonflavanoid phenols);
9) Proanfosianinas (angl. proanthocyanins)
10) Spalvos intensyvumas (angl. color intensity);
11) Atspalvis (angl. hue)
12) Atskiesto vyno OD280/OD315 (angl. OD280/OD315 of diluted wines)
13) Prolinas (angl. Proline).
Visi duomenys yra suskirstyti į tris klases pagal ţemdirbius. Pirma klasė sudaro duomenys iš
pirmo ţemdirbio ir atitinkamai kitų klasių.
3. Balansas [625; 4]. Šie duomenys sudaro keturi stulpeliai:
35
1) Kairėje svoris (angl. left-weight);
2) Kairėje atstumas (angl. left-distance);
3) Dešinėje svoris (angl. right-weight);
4) Dešinėje atstumas (angl. right-distance).
Šių keturių stulpelių duomenys yra sudaryti iš skaičių intervale [1;5]. Klasifikavimas vyksta
pagal balansą, į kurią pusę labiau pakrypusi: kairę ( 1 klasė, L), dešinę (2 klasė, R) ar lygu (3
klasė, B). Balansas randamas sudauginus atitinkamus elementus (kairėje svoris * kairėje
atstumas) ir (dešinėje svoris * dešinėje atstumas).
4. Krūties vėţys [699; 10]. Duomenys apie krūtų vėţį surinkta iš gydytojo Volbergo
(dr. Wolberg) klinikos. Jo surinkti duomenys susideda iš tokių parametrų:
1) Id skaičius (angl. id number);
2) Klampumas (angl. clump thickness);
3) Ląstelės dydţio vienodumas (angl. uniformity of cell size);
4) Ląstelės formos vienodumas (angl. uniformityof cell shape);
5) Kraštinis sulipimas (angl. marginal adhesion);
6) Vieno epitelio ląstelės dydis (angl. single epithelial cell size);
7) „Nuogas“ branduolys (angl. bare nuclei);
8) Švelnus chromatinas (angl. bland chromatin);
9) Normalus branduolėlis (angl. normal nucleoli);
10) Mitozės (angl. mitoses).
Visų parametrų reikšmės, išskyrus id, svyruoja intervale [1;10]. Duomenys yra suskirstomi į
dvi klases: gerybinį arba piktybinį vėţį (2 – gerybinis, 4 - piktybinis).
4.2 „DTREG“ sistema
Programa „DTREG“ apmoko neuroninį tinklą keliais metodais. Nagrinėjami du pagrindiniai
tiesioginio sklidimo metodai:
Daugiasluoksnis perceptronas, kuris yra realizuojamas „klaidos skleidimo atgal“
algoritmu;
Radialinių bazinių funkcijų neuroninis tinklas.
4.2.1 Daugiasluoksnis perceptronas „DTREG“ sistemoje
Šiame skyrelyje nagrinėtas tiesioginio sklidimo neuroninio tinklo apmokymo efektyvumas,
panaudojant daugiasluoksnio perceptroną metodą. 4.1 lentelėje pateikiami programos pradiniai
duomenys prieš apmokant neuroninį tinklą ir gauti rezultatai.
Lyginami gauti rezultatai keičiant aktyvacijos funkciją išoriniams ir paslėptiems neuronų
sluoksniams, bei pateikiant skirtingus duomenis į tinklą.
Prieš apmokant tinklą sistemai pateikti tokie parametrai, kurie nebus keičiami:
36
Tiesioginio sklidimo neuroninio tinklo metodas: „klaidos skleidimo atgal“;
Sprendţiamas uţdavinys: klasifikavimo;
Pradinių visų svorių reikšmės: 0;
Paslėptų neuronų sluoksnių skaičius: 2;
Antrame paslėptame sluoksnyje neuronų skaičius:100;
Maksimalus iteracijų skaičius: 10 000.
Gaunami tokie rezultatai:
Kvadratinė paklaida (angl.Root mean squared error (RMSE));
Normuota kvadratinė paklaida (angl.Normalized mean squared error(NMSE)).
4.1. lentelė. Įėjimo parametrai ir gauti rezultatai daugiasluoksnio perceptrono atveju
Įėjimo parametrai Gauti rezultatai
Duomenys Aktyvacijos
funkcija
Neuronų
skaičius
antrame
paslėptame
sluoksnyje
Normuota
paklaida
(NMSE)
Paklaida(RMSE) Laikas
(sekundėmis)
Irisai
Sigmoidinė 100 0,048171 0,1792037 10,76
Sigmoidinė 1 0,069442 0,2151621 1,33
Tiesinė 1 0,069782 0,2156873 1,25
Tiesinė 100 0,069788 0,2156972 17,89
Vyno
sudėtis
Sigmoidinė 100 0,002625 0,0395943 29,08
Sigmoidinė 1 0,268601 0,4005453 4,13
Tiesinė 1 0,106934 0,2527296 1,74
Tiesinė 100 0,127738 0,2762221 4,56
Balansas
Sigmoidinė 100 0,386049 0,3894943 118,63
Sigmoidinė 1 0,637077 0,5003523 3,82
Tiesinė 1 0,605280 0,4877061 2,23
Tiesinė 100 0,604172 0,4872595 21,76
Krūties
vėţys
Sigmoidinė 100 0,095200 0,2933005 50,33
Sigmoidinė 1 0,121223 0,3309683 4,98
Tiesinė 1 0,161526 0,3820459 3,41
Tiesinė 100 0,162508 0,3832051 94,67
Vidurkis 0,221007 0,315573 23,16
Iš 4.1 lentelės matosi, kad kuo didesnis duomenų skaičius, tuo didesnę paklaidą gauna.
Maţesnius paklaidos rezultatus, nors ir per ilgesnį laiką, gauna, kai naudojama sigmoidinė
aktyvacijos funkcija.
4.2.2 Radialinių bazinių funkcijų neuroninis tinklas „DTREG“ sistemoje
37
Kitas nagrinėjamas metodas yra radialinių bazinių funkcijų neuroninis tinklas. Radialinių
bazinių funkcijų neuroninio tinklo metodo apmokymo metu, programa pati randa optimaliausią
neuronų skaičių, spindulių intervalus kiekvienai RBF funkcijai, bei RBF funkcijų svorių
intervalus.
Prieš apmokant tinklą pasirenkami tokie parametrai:
Bazinė funkcija: gausinė funkcija;
Didţiausias iteracijų skaičius: 10 000;
Didţiausias neuronų skaičius: 100;
Į tinklą pateikiami duomenys keturis kartus su tais pačiais duomenimis ir 4.2 lentelėje,
matome, kad kiekvieną kartą gaunami skirtingi rezultatai.
4.2. lentelė. Gauti RBF tinklo rezultatai
Duomenys
Gauti RBF tinklo parametrai
Laikas
(sekundėmis) Neuronų
skaičius
Spindulių
intervalai
kiekvienai RBF
funkcijai
RBF funkcijų
svorių intervalai
Normuota
paklaida Paklaida
Irisai
2 [0,044 ; 247,984] [1,435 ; 3,119] 0,075283 0,2240289 5,20
7 [0,043 ; 0,093] [0,093 ; 63,557] 0,043081 0,1694723 14,58
15 [0,1 ; 38,806] [0,096 ; 8,835] 0,026348 0,1325341 30,08
12 [0,01 ; 2215,88] [0,085 ; 8,957] 0,035257 0,153313 18,66
Vyno
sudėtis
5 [0,482 ; 392,139] [0,195 ; 5,704] 0,095365 0,2386672 15,18
26 [0,314 ; 422,339] [0,045 ; 73,266] 0,039802 0,1541888 1761,88
30 [0,01 ; 424,44] [0,195 ; 6,742] 0,024157 0,1201217 90,78
31 [0,1 ; 113,428] [0,134 ; 6,436] 0,017984 0,1036443 95,31
Balansas
4 [1,884 ; 365,832] [0,031 ; 9,643] 0,605363 0,4877393 61,92
21 [0,01 ; 482,901] [0,031 ; 9,979] 0,537415 0,4595521 72,73
22 [0,01 ; 401,47] [2,167 ; 63,985] 0,540932 0,4610535 1878,84
22 [0,01 ; 401,47] [2,167 ; 63,985] 0,540932 0,4610535 1878,84
Krūties
vėţys
7 [0,758 ; 394,876] [1,176 ; 9,603] 0,143718 0,3603714 42,42
35 [0,01 ; 445,572] [0,052 ; 80,905] 0,089618 0,284571 682,93
46 [0,01 ; 949,253] [0,028 ; 9,603] 0,088233 0,2823639 607,78
71 [0,1 ; 49,899] [0,06 ; 9,825] 0,057148 0,2272451 513,80
Vidurkis 0,18504 0,269995 485,6831
Matosi, kad pateikiant į tinklą didesnį duomenų kiekį, panaudojama daugiau neuronų, nors ir
apmokymo laikas pailgėja.
Pasinaudodami pateikta 4.2 lentelėje esančia informacija, paanalizuokime paklaidos kitimą,
keičiantis neuronų skaičiui.
38
4.1 pav. Gautos paklaidos priklausomybė nuo neuronų skaičiaus
Remdamiesi 4.1 pav., pastebime, kad visiems duomenims didėjant neuronų skaičiui,
radialinių bazinių funkcijų neuroninis tinklas geriau apsimoko ir gauna maţesnę paklaidą.
4.3 „Matlab“ sistema
Matlab programos pakete „Neural Network Toolbox“ yra nemaţas metodų pasirinkimas
neuroniniui tinklui apmokyti. Iš tiesioginio sklidimo metodų, nagrinėjami du populiariausi
mokymo metodai: daugiasluoksnis perceptronas ir radialinių bazinių funcijų neuroninis tinklas.
4.3.1 Daugiasluoksnis perceptronas „Matlab“ sistemoje
Naudojant daugiasluoksnį perceptroną yra taikomas labiausiai paplitęs „klaidos skleidimo
atgal“ algoritmas.
Neuroniniui tinklui yra paduodami tokie parametrai:
Mokymo funkcija: Gradientinio nusileidimo;
Epochų skaičius: 10 000;
Aktyvacijos funkcija:
1. TanSig (TanSig), kurios formulė yra:
;
2. LogSig (LogSig), kurios formulė yra:
;
Neuronų skaičius: 1 arba 10.
Daugiasluoksnio perceptrono nagrinėjimui, pateikiama 4.3 lentelė, kurioje matosi laiko ir
paklaidos kitimas, keičiant duomenis, aktyvacijos funkcijai, bei neuronų skaičiui.
0
0,1
0,2
0,3
2 7 12 15
Irisai
Irisai
0
0,1
0,2
0,3
5 26 30 31
Vyno sudėtis
Vynosudėtis
0
0,2
0,4
7 35 46 71
Krūties vėžys
Krūtiesvėžys
0,35
0,4
0,45
0,5
4 21 22 31
Balansas
Balansas
39
4.3.lentelė. Įėjimo parametrai ir gauti rezultatai daugiasluoksnio perceptrono atveju
Įėjimo parametrai Gauti rezultatai
Duomenys Aktyvacijos
funkcija
Neuronų skaičius
paslėptame
sluoksnyje
Klaidos
paklaida
(MSE)
Laikas
Irisai
TanSig 10 0,0177 11:54
TanSig 1 0,0292 05:38
LogSig 1 0,0315 06:09
LogSig 10 0,0155 16:24
Vyno
sudėtis
TanSig 10 1,15e-19 10:08
TanSig 1 0,0563 08:17
LogSig 1 0,0561 10:39
LogSig 10 4,76e-18 20:43
Balansas
TanSig 10 0,00184 21:38
TanSig 1 0,107 18:26
LogSig 1 0,116 07:49
LogSig 10 0,00787 21:37
Krūties vėţys
TanSig 10 6,67e-16 37:12
TanSig 1 8,25e-10 25:32
LogSig 1 2,12e-13 27:08
LogSig 10 5,67e-25 45:51
Vidurkis 0,299986 18:26
Iš 4.3 lentelės, matosi, kad gautos paklaidos yra ţymiai maţesnės, palyginus su „DTREG“
sistemos rezultatais, nors ir laiko yra sugaišta daugiau.
4.3.2 Radialinių bazinių funkcijų metodas „Matlab“ sistemoje
„Neural Network Toolbox“ reikia pasirinkti minimalią klaidos paklaidą, kaip sustojimo
kriterijų. Rezultate gaunama, kelintoje epochoje įgijama norima paklaida.
4.4. lentelė. RBF įėjimo parametrai ir gauti rezultatai
Įėjimo parametrai Gauti rezultatai
Duomenys Sustojimo klaidos paklaida Epochų skaičius
Irisai 0,1 3
0,001 133
Vyno
sudėtis
0,1 94
0,001 119
Balansas 0,1 190
0,001 617
Krūties vėţys 0,1 220
0,001 238
40
4.4 lentelėje matosi, kaip maţėjant paklaidai ir didėjant duomenų kiekiui, didėja epochų
skaičius.
4.4 „PathFinder“ sistema
„PathFinder“ programa skaičiuoja tiesioginio sklidimo neuroninio tinklo daugiasluoksnį
perceptroną su vienu paslėptu neuronų sluoksniu. Neuroninis tinklas yra realizuojamas „klaidos
skleidimo atgal“ algoritmu.
Programai duomenų klasės turi būti sumaišytos ir suskirstytos į tris dalis:
Mokymo duomenys (angl. Training Data) – duomenys, kuriais bus apmokytas neuroninis
tinklas (Irisai – 50, Vyno sudėtis – 100, Balanso – 225, Krūties vėţio – 299 duomenys).
Testavimo duomenys (angl. Test Data) – duomenys, kuriais bus tikrinama, kaip tiksliai
apsimokė tinklas (Irisai – 50, Vyno sudėtis – 35, Balanso – 200, Krūties vėţio – 200
duomenų).
Validavimo duomenys (angl. Validate Data) – duomenys, kurie bus paduoti į tinklą, iš
kurių suţinosime jų išėjimo reikšmes iš jau apmokyto (Irisai – 50, Vyno sudėtis – 45,
Balanso – 200, Krūties vėţio – 200 duomenų).
Prieš apmokant tinklą yra pateikiami tokie parametrai, kurie yra pastovūs:
Didţiausias epochų skaičius: 10 000;
Aktyvacijos funkcija: Sigmoidinė.
4.5. lentelė. „PathFinder“ programos įėjimo parametrai ir gauti rezultatai
Įėjimo parametrai Gauti rezultatai
Duomenys Mokymo greitis
intervale [0,1; 0,9]
Neuronų skaičius
paslėptame sluoksnyje Paklaida (RMSE)
Irisai
0,2 1 0,0647
0,2 50 0,0520
0,9 1 0,0547
0,9 50 0,0524
Vyno
sudėtis
0,2 1 0,0972
0,2 50 0,0422
0,9 1 0,1001
0,9 50 0,0488
Balansas
0,2 1 0,1361
0,2 50 0,1104
0,9 1 0,1338
0,9 50 0,1103
Krūties
vėţys
0,2 1 0,1086
0,2 50 0,1052
0,9 1 0,1085
0,9 50 0,1056
Vidurkis 0,089413
41
Remdamiesi 4.5 lentelėje esančia informacija, matosi, kaip kinta paklaidos reikšmė, keičiant
mokymo greitį, bei neuronų skaičių vidiniame sluoksnyje. Paklaida būna maţesnė, kai imamas
maţesnis mokymo greitis ir panaudojama daugiau neuronų paslėptame sluoksnyje. Rezultatui
didesnę įtaką turi neuronų skaičiaus parinkimas, palyginus su mokymo greičiu.
4.5 „Cortex“ sistema
„Cortex“ programa yra panaši į „PathFinder“ programą. Abi programos yra nedidelės ir
skaičiuoja tik vieną tiesioginio sklidimo neuroninio tinklo metodą: daugiasluoksnį perceptroną
su vienu paslėptu neuronų sluoksniu. Tinklas yra realizuojamas „klaidos skleidimo atgal“
algoritmu.
Šioje sistemoje galima neuronų skaičių paslėptame sluoksnyje pasirinkti iki 300
(„PathFinder“ tik iki 50). Dar vienas privalumas – galima keisti aktyvacijos funkciją į tangentą
arba į sigmoidinę, o „PathFinder“ yra tik sigmoidinė aktyvacijos funkcija.
Prieš apmokant tinklą yra pateikiami tokie parametrai:
Didţiausias epochų skaičius: 10 000;
Aktyvacijos funkcija: Sigmoidinė arba Tangentas.
Nagrinėta „Cortex“ programos paklaidų kitimąas, keičiant aktyvacijos funkciją ir neuronų
skaičių paslėptame sluoksnyje. Gauti rezultatai pateikti 4.6 lentelėje.
4.6. lentelė. „Cortex“ programos įėjimo parametrai ir gauti rezultatai
Duomenys
Įėjimo parametrai Gauti rezultatai
Aktyvacijos
funkcija
Neuronų skaičius
paslėptame
sluoksnyje
Maţiausia mokymo
paklaida
Maţiausia testavimo
paklaida
Irisai
Sigmoidinė 150 0,164914 0,169399
Sigmoidinė 300 0,00274712 0,00252169
Tangentas 150 0,12053 0,119554
Tangentas 300 0,162693 0,17565
Vyno
sudėtis
Sigmoidinė 150 0,154541 0,113412
Sigmoidinė 300 0,151097 0,127502
Tangentas 150 0,152927 0,124833
Tangentas 300 0,145596 0,148373
Balansas
Sigmoidinė 150 0,0663131 0,062163
Sigmoidinė 300 0,0731284 0,089934
Tangentas 150 0,0817859 0,0743016
Tangentas 300 0,0756524 0,0768899
Krūties
vėţys
Sigmoidinė 150 0,145568 0,14494
Sigmoidinė 300 0,131787 0,127002
Tangentas 150 0,106296 0,104648
Tangentas 300 0,115517 0,119347
Vidurkis 0,115693 0,111279
42
Pastaba. 80% visų duomenų pateikiama į tinklą apmokymui, o su likusiais 20%,
testuojamas tinklas.
Iš 4.6 lentelėje pateiktos informacijos matosi, kad irisų [150; 4] ir balansų [625; 4] duomenų
atveju klaidos paklaida yra maţesnė, kai aktyvacijos funkciją parenkama sigmoidinę, o vyno
sudėties [178; 13] ir krūties vėţio [699; 10] atveju paklaida yra maţesnė su tangento aktyvacijos
funkcija. Išvada yra tokie, kad sigmoidinę funkciją reikia rinktis, kai duomenys turi maţiau
kriterijų (irisų ir balanso atveju tik po 4), o kai yra daugiau parametrų, geriau apsimoko su
tangento funkcija (vyno sudėties 13, o krūties vėţio 10). Į tinklą pateikus didesnį neuronų
skaičių, rezultate gaunami maţesni paklaidos rezultatai.
4.6 Programų palyginimas tarpusavyje
Analizuojant programas, atlikta 16 neuroninio tinklo apmokymo kartų ir kiekvieną kartą
gaunami skirting rezultatai. Neuroninis tinklas turi apsimokyti per 10 000 epochų, tai yra šis
pagrindinis kriterijus pritaikytas visoms programoms, pagal kurį yra palyginami tarpusavyje
gauti rezultatai.
4.7 lentelėje pateikti gautų testavimo paklaidų vidurkiai, dispersijos, bei pasikliautinieji
intervalai, kai pasikliovimo lygmuo yra 0,95.
4.7.lentelė. Programų gautų paklaidų vidurkiai, dispersijos ir pasikliautinieji intervalai
Eil.
Nr. Programos Metodas Vidurkiai Dispersijos
Pasikliautinasis
intervalas
1 „DTREG“ Daugiasluoksnis
perceptronas 0,299986 0,014014 [0,292519; 0,307452]
2 „DTREG“ Radialinių bazinių funkcijų
neuroninis tinklas 0,267867 0,016503 [0,259075; 0,276659]
3 „Matlab“ Daugiasluoksnis
perceptronas 0,026718 0,001353 [0,027438; 0,028159]
4 „PathFinder“ Daugiasluoksnis
perceptronas 0,118925 0,011812 [0,112632; 0,125218]
5 „Cortex“ Daugiasluoksnis
perceptronas 0,111279 0,00176 [0,110342; 0,112217]
Nors duomenys ir epochų skaičius daugiasluoksnio perceptrono atveju yra toks pat, bet
naudojant skirtingas programas, gaunami skirtingi rezultatai. 4.2 pav. pavaizduota, paklaidų
reikšmių ir jų pasikliautiniųjų intervalų išsidėstymas.
43
4.3. pav. Programų paklaidų vidurkiai ir pasikliautinieji intervalai
Iš duomenų apskaičiuoti vidurkiai yra maţai išsibarstę apie tikrąjį vidurkį, o neuroninis
tinklas, geriausiai yra apmokamas su „Matlab“ programa (4.3 pav.). „PathFinder“ ir „Cortex“
paklaidų reikšmės yra panašios, nors „Cortex“ sistemoje yra naudojama daugiau neuronų skaičių
paslėptame sluoksnyje. Prasčiausius rezultatus gaunami su „DTREG“ programa. Šioje sistemoje
radialinių bazinių funkcijų neuroninis tinklas geriau apsimoko, negu naudojant daugiasluoksnį
perceptroną.
0
0,05
0,1
0,15
0,2
0,25
0,3
0,35
0 1 2 3 4 5 6
Pak
laid
ų r
eikš
mės
Programos
Programų paklaidų vidurkiai ir pasikliautinieji intervalai
44
5. Išvados
Šiame darbe atlikta tiesioginio sklidimo neuroninių tinklų sistemų lyginamoji analizė. Buvo
apţvelgta 14 skirtingų programų, jos suskirstytos pagal kainą, metodų panaudojimą, bei
parametrų keitimo galimybes. Nagrinėtose sistemose populiariausias tiesioginio sklidimo
neuroninio tinklo metodas yra daugiasluoksnis perceptronas, realizuotas „klaidos skleidimo
atgal“ algoritmu. Rečiausiai yra naudojamas vienasluoksnis perceptronas.
Visos programos buvo įvertintos dešimtbalėje sistemoje pagal mokymo metodų įvairumą,
parametrų keitimo galimybes, programos stabilumą, programos kokybę, kainos ir kokybės
santykį. Aukščiausiu balu įvertinta „Matlab“ (10 balų), ţemiausias balas skirtas „SharkyNN“ (2
balai).
Detalesnei analizei pasirinktos keturios programos („DTREG“, „Matlab“, „PathFinder“,
„Cortex“) pagal kelis kriterijus:
1. Pagal 3.15 lentelėje esančią informaciją, pasirinktos tokios sistemos, kurios įvertintos
aukščiausiu balų („Matlab“ (10 balų), „DTREG“ (8 balai), „Cortex“ (7 balai),
„PathFinder“ (7 balai)).
2. Dvi sistemos turi būti profesionalios ir mokamos („Matlab“, „DTREG“), kitos dvi
paprastos ir nemokamos („Cortex“, „PathFinder“).
3. Visos keturios sistemos turi apmokyti daugiasluoksnį perceptroną ir bent dvi dar ir
radialinių bazinių funkcijų metodą („Matlab“, „DTREG“).
Neuroninis tinklas buvo apmokytas keturiomis duomenų aibėmis: irisai, vyno sudėties,
pusiausvyros ir krūties vėţio. Kiekvienai programai ir metodui buvo atliekama 16 skirtingų
apmokymų keičiant: aktyvacijos funkciją, duomenų aibes, neuronų skaičių paslėptame
sluoksnyje. Naudojant programose apmokytą neuroninį tinklą, gauti rezultatai buvo palyginami
tarpusavyje. Iš gautų rezultatų galima daryti tokias išvadas:
1. Kuo daugiau yra panaudojama neuronų paslėptame sluoksnyje, tuo tinklas yra geriau
apmokamas.
2. Naudojant tą patį epochų skaičių, maţesnes paklaidas gaunama, kai analizuojami
didesnės duomenų aibės, nors laiko ir sugaištama daugiau.
3. Iš keturių nagrinėtų programų, geriausiai tinklas buvo apmokytas naudojant „Matlab“, o
prasčiausiai su „DTREG“.
45
6. Literatūra
1. Cecile, P. (2007). Analytic and Numerical Advances in Radial Basis Functions.
2. DTREG - Predictive Modeling Software. (n.d.). Nuskaityta iš www.dtreg.com
3. Dzemyda, G., Kurasova, O., Ţilinskas, J. (2008). Daugiamačių duomenų vizualizavimo
metodai. Vilnius.
4. FOREX-An Introduction to Neural Networks. (n.d.). Nuskaityta iš
http://cortex.snowcron.com
5. Graupe D. (2007). Principles Neural Networks. Singapore.
6. Grouper. (2007). Nuskaityta iš http://www.e-nuts.net
7. Gurney, K., Gurney, N. K. (1997). An Introduction to Neural Networks.
8. Hassoun Mohamad H. (1995). Fundamentals of Artificial Neural Networks.
9. Howlett, R. J., Jain, L. C. (2001). Radial Basis Function Networks 1 - Recent
Developments in Theory and Applications. New York.
10. Yee, P. V., Haykin, S. S. (2001). Regularized radial basis function networks - theory and
applications.
11. Yegnanarayana B. (2006). Artificial Neural Network.
12. Jinwoo, B., Sungzoon, C. (2002). An Up-Trend Detection Using an Auto-Associative
Neural Network: KOSPI 200 Futures. Intelligent Data Engineering and Automated
Learning - IDEAL 2002, (p. 359-366). Springer.
13. Karayiamis, N., Venetsanouls. (1993). Artificial Neural Networks: Learnings Algorithms,
Performance Evaluation and Applications. Springer.
14. MathWorks Nordic – MATLAB – The Language of echnical Computing. (2012).
Nuskaityta iš http://www.mathworks.se/products/matlab/index.html
15. Multiple Back-Propagation. (n.d.). Nuskaityta iš http://dit.ipg.pt/MBP
16. Nakamura, Y., Nakagawa, M. (2010). Three-Layer Feedforward Structures Smoothly
Approximating Polynomial Functions. Artificial Neural Networks ICANN 2010, (p. 411-
417). Springer.
17. NeuroIntelligence - Artificial Neural Network Software, Neural Network Simulator and
Classifier, Neuro Nets Solution for Data Mining. (2012). Nuskaityta iš
http://www.alyuda.com/neural-networks-software.htm
18. NeuroSolutions. (2011). Nuskaityta iš www.neurosolutions.com
19. Priddy, K. L., Keller, P. E. (2005). Artificial Neural Network - An Introduction.
Washington.
20. SharkTime Software – Sharky Neural Network – Classification neural network in Action.
(2012). Nuskaityta iš http://www.sharktime.com/us_SharkyNeuralNetwork.html
21. Simbrain. (n.d.). Nuskaityta iš http://www.simbrain.net
22. Sundararajan, N., Saratchandran, L. Y. (1999). Radial Basis Function Networks with
Sequential Lerning. Singapore.
46
23. STATISTICA - Automated Neural Networks. (2012). Nuskaityta iš
http://www.statsoft.com/products/statistica-automated-neural-networks/
24. Terrence Fine L. (1999). Feedforward Neural Network Methodology. Springer.
25. Tiberius – Predictive Modelling Software. (n.d.). Nuskaityta iš http://www.tiberius.biz
26. UCI Machine Learning Repository. (n.d.). Nuskaityta iš http://archive.ics.uci.edu/ml
27. Verikas, V., Gelţinis, A. (2003). Neuroniniai tinklai ir neuroniniai skaiciavimai.
Kaunas.
47
Santrauka
Pagrindinis darbo tikslas – atlikti kelių tiesioginio sklidimo neuroninių tinklų sistemų
lyginamąją analizę siekiant įvertinti jų funkcionalumą.
Šiame darbe apţvelgiama: biologinio ir dirbtinio neuronų modeliai, neuroninių tinklų
klasifikacija pagal jungimo konstrukciją (tiesioginio sklidimo ir rekurentiniai neuroniniai
tinklai), dirbtinių neuroninių tinklų mokymo strategijos (mokymas su mokytoju, mokymas be
mokytojo, hibridinis mokymas). Analizuojami pagrindiniai tiesioginio sklidimo neuroninių
tinklų metodai: vienasluoksnis perceptronas, daugiasluoksnis perceptronas realizuotas „klaidos
skleidimo atgal” algoritmu, radialinių bazinių funkcijų neuroninis tinklas.
Buvo nagrinėjama 14 skirtingų tiesioginio sklidimo neuroninių tinklų sistemos. Programos
buvo suklasifikuotos pagal kainą, tiesioginio sklidimo neuroninių tinklo mokymo metodų
taikymą, galimybę vartotojui keisti parametrus prieš apmokant tinklą ir techninį programos
įvertinimą. Programos buvo įvertintos dešimtbalėje vertinimo sistemoje pagal mokymo metodų
įvairumą, parametrų keitimo galimybes, programos stabilumą, kokybę, bei kainos ir kokybės
santykį. Aukščiausiu balu įvertinta „Matlab” programa (10 balų), o prasčiausiai – „Sharky NN”
(2 balai).
Detalesnei analizei pasirinktos keturios programos („Matlab“, „DTREG“, „PathFinder“,
„Cortex“), kurios buvo įvertintos aukščiausiais balais, galėjo apmokyti tiesioginio sklidimo
neuroninį tinklą daugiasluoksnio perceptrono metodu ir bent dvi radialinių bazinių funkcijų
tinklą. „Matlab“ ir „DTREG“ programos buvo profesionalios ir mokamos, o „PathFinder“,
„Cortex“ nemokamos ir paprastos. Naudojant šias programas buvo apmokytas neuroninis tinklas
su duomenimis (irisai, vyno sudėties, balansos, krūties vėţio). Gauti rezultatai palyginami
tarpusavyje. Nustatyta, kad geriausiai neuroninį tinklą apmoko “Matlab” programa, o
prasčiausiai – „DTREG“.
48
Summary
The main aim – to perform a comparative analysis of several feedforward neural system
networks in order to identify its functionality.
The work presents both: biological and artificial neural models, also classification of neural
networks, according to connections’ construction (of feedforward and recurrent neural
networks), studying strategies of artificial neural networks (with a trainer, without a trainer,
hybrid). The main methods of feedforward neural networks: one-layer perceptron, multilayer
perceptron, implemented upon “error feedback” algorithm, also a neural network of radial base
functions have been considered.
The work has included 14 different feedforward neural system networks, classified according
its price, application of study methods of feedforward neural networks, also a customer’s
possibility to change parameters before paying for the network and a technical evaluation of a
program. The programs have been evaluated from 1 point to 10 points according to the
following: variety of training systems, possibility to change parameters, stability, quality and
ratio of price and quality. The highest evaluation has been awarded to “Matlab” (10 points), the
lowest – to “Sharky NN” (2 points).
Four programs (”Matlab“, “DTREG“, “PathFinder“,”Cortex“) have been selected for a detail
analysis. The best evaluated programs have been able to train feedforward neural networks using
multilayer perceptron method, also at least two radial base function networks. “Matlab“ and
“DTREG“ were professional paid programs, while “PathFinder“ and “Cortex“ – free and
simple. The mentioned programs helped to train neural data ( iris, wine, balance – scale, breast –
cancer) network. After comparing the results it has been obvious, that the best training of neural
network is provided by “Matlab”, while the worst – “DTREG”.