otkrivanje znanja primjenom neuronskih mreža

41
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ZAVOD ZA ELEKTRONIKU, MIKROELEKTRONIKU, RAČUNALNE I INTELIGENTNE SUSTAVE SEMINARSKI RAD: OTKRIVANJE ZNANJA PRIMJENOM NEURONSKIH MREŽA Predmet: Otkrivanje znanja u skupovima podataka Nastavnik: prof. dr. sc. Bojana Dalbelo-Bašić Student: Miroslav Štampar, dipl. ing. MB: R-10/2008 Datum: 15. veljača, 2010.

Upload: miroslav-stampar

Post on 13-Dec-2014

97 views

Category:

Documents


10 download

DESCRIPTION

Seminarski rad

TRANSCRIPT

Page 1: Otkrivanje znanja primjenom neuronskih mreža

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVAZAVOD ZA ELEKTRONIKU, MIKROELEKTRONIKU,

RAČUNALNE I INTELIGENTNE SUSTAVE

SEMINARSKI RAD:

OTKRIVANJE ZNANJA PRIMJENOM NEURONSKIH MREŽA

Predmet: Otkrivanje znanja u skupovima podatakaNastavnik: prof. dr. sc. Bojana Dalbelo-BašićStudent: Miroslav Štampar, dipl. ing.MB: R-10/2008Datum: 15. veljača, 2010.

Page 2: Otkrivanje znanja primjenom neuronskih mreža

“Ljudski mozak sadrži ugrubo 1011, odnosno 100 milijardi neurona. Ta brojka također predstavlja približan broj zvijezda u našoj galaksiji, te ukupan broj galaksija u poznatom svemiru. Jedan neuron može sadržavati čak 104 sinaptičkih veza, što nas dovodi do brojke od približno 1015 sinapsi u ljudskom mozgu. Dakle, mozak predstavlja jedan veliki asinkroni, nelinearni, masivno paralelni, povratni dinamički sustav nadasve kozmičkih proporcija“. [7.]

Page 3: Otkrivanje znanja primjenom neuronskih mreža

Sadržaj1. Uvod...................................................................................................................................12. Osnove...............................................................................................................................2

2.1. Pregled........................................................................................................................22.2. Struktura.....................................................................................................................22.3. Proračun čvorova........................................................................................................32.4. Predviđanje mreže......................................................................................................52.5. Proces učenja.............................................................................................................62.6. Propagacija unatrag....................................................................................................72.7. Vrste učenja..............................................................................................................122.8. Vrste mreža...............................................................................................................13

2.8.1. Mreža s propuštanjem unaprijed.......................................................................132.8.2. Mreža s radijalno zasnovanom funkcijom.........................................................132.8.3. Kohonenova samoorganizirajuća mapa............................................................142.8.4. Povratna mreža.................................................................................................142.8.5. Stohastička mreža.............................................................................................152.8.6. Modularna mreža...............................................................................................152.8.7. Ostale vrste.......................................................................................................16

2.9. Prenaučenost i unakrsna validacija..........................................................................172.10. Primjena..................................................................................................................18

3. Praktični uradak...............................................................................................................213.1. Utjecaj odabira trenažnog algoritma na brzinu učenja.............................................233.2. Utjecaj broja skrivenih čvorova na pogrešku mreže.................................................243.3. Utjecaj broja skrivenih čvorova na brzinu učenja.....................................................263.4. Promjena vrijednosti pogreške kroz proces učenja..................................................273.5. Utjecaj broja skrivenih čvorova i koeficijenta učenja na brzinu učenja....................28

4. Zaključak..........................................................................................................................315. Literatura..........................................................................................................................32Dodatak A.............................................................................................................................34

Page 4: Otkrivanje znanja primjenom neuronskih mreža

1.Uvod

1. UvodNeuronske mreže su doživjele pravu eksploziju interesa u zadnjih dvadesetak godina. Uspješno se primjenjuju u iznimno širokom rasponu problemske domene te u raznolikim područjima ljudske djelatnosti, kao što su financije, medicina, inženjering, geolologija i fizika. Doista, svugdje gdje postoje problemi predviđanja, klasificiranja i/ili kontrole procesa, ubrzano se uvodi primjena neuronskih mreža. Ovaj se izniman uspjeh može pripisati nekolicini ključnih čimbenika:

• Snaga – Neuronske mreže spadaju u vrlo sofisticirane metode nelinearnog modeliranja iznimno složenih funkcija. Dugi niz godina se koristilo linearno modeliranje u većini problemskih slučajeva i to iz jednostavnog razloga što za njih postoje već otprije dobro poznate strategije optimizacije. Kad linearna aproksimacija nije bila dostatna (vrlo čest slučaj) model bi trpio u skladu s tim, što se danas može riješiti primjenom neuronskih mreža. No, valja imati na umu da i neuronske mreže pate od “kletve“ dimenzionalnosti problema, koja ometa pokušaje modeliranja nelinearnih funkcija s velikim brojem varijabli.

• Jednostavnost korištenja – Neuronske mreže vrše proces učenja na ulaznom skupu podataka. Korisnik prethodno prikuplja reprezentativni uzorak podataka kako bi pokrenuo algoritam učenja za automatsku obradu strukture podataka, odnosno otkrivanje poveznica među istima. Iako je nužno da korisnik posjeduje određeno predznanje kako da prikupi i pripremi podatke, kako da odabere odgovarajuću vrstu neuronske mreže te kako da interpretira rezultate, nivo znanja potrebit kako bi se uspješno primjenile neuronske mreže je znatno manji nego u slučaju korištenja (npr.) neke tradicionalnije nelinearne statističke metode.

Neuronske mreže su također vrlo intuitivne i privlačne za proučavanje, pošto su temeljene na “sirovom“ modelu bioloških neuronskih sustava, te bi u budućnosti daljnji razvoj ove vrste modeliranja mogao dovesti do pojave inteligentni(ji)h računala [12.].U ovom će se uratku pokušati dati temeljni uvid u strukturu i rad neuronskih mreža, prvenstveno u okvirima otkrivanja znanja u skupovima podataka, te će se na kraju predstaviti konkretni rezultati njihove praktične primjene.

1

Page 5: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

2. Osnove

2.1. Pregled

Umjetna neuronska mreža (engl. Artificial neural network – ANN), u skraćenom obliku samo neuronska mreža, je naziv za matematički predikcijski model baziran na procesu učenja i odziva biološkog živčanog sustava u životinjskih vrsta. Kao i svi prediktivni modeli, koristi početni ulazni skup podataka (tzv. “trenažni“ skup – engl. training set) za potrebe postavljanja parametara sustava, odnosno za generalizaciju odnosa između ulaznih deskriptor varijabli i izlaznih varijabli odziva. Jednom kad mreža završi s procesom “učenja“ (engl. training), spremna je za korištenje (tzv. “predviđanje“ – engl. prediction) na daljnjim ulaznim podacima. U ovom se odjeljku može pronaći kako neuronske mreže strukturno izgledaju te kako se izvršavaju procesi učenja i predviđanja [3.].

2.2. Struktura

Neuronska mreža se sastoji od niza nezavisnih čvorova (engl. node), stručnog naziva “perceptroni“ (analogno neuronima u biološkom modelu), međusobno povezanih i organiziranih u niz slojeva (engl. layers) kao što je prikazano na sljedećoj slici:

U ovom je primjeru svaki pripadni čvor označen sa slovom A do L te su svi čvorovi organizirani u tri sloja. Ulazni sloj sadrži skup čvorova (A, B, C, D, E, F). Svaki čvor u ulaznom sloju odgovara brojčanoj vrijednosti ulazne deskriptor (engl. input descriptor) varijable te ih u ovom slučaju ima tri komada.

2

Slika 1: Topologija tipične neuronske mreže

Page 6: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

Sloj prikazan crnom bojom predstavlja izlazni sloj te sadrži čvorove K i L. Svaki izlazni čvor odgovara izlaznoj varijabli odziva (dvije u ovom slučaju). Između ulaznog i izlaznog sloja se nalazi skriveni sloj s čvorovima (G, H, I, J). U ovom primjeru postoji samo jedan skriveni sloj, premda ih može biti i više (obično od 0 do 5). Svaki čvor u mreži je najčešće povezan sa svim čvorovima u susjednom sloju. U našem primjeru čvor G je spojen na čvorove A, B, C, D, E, F u ulaznom sloju te K i L u izlaznom sloju.

Svaka veza, kao što je ona između čvorova A i G, ima pridruženu pripadnu težinu (engl. weight). Prije početka procesa učenja, pridodjeljuju im se slučajne vrijednosti, obično u rasponu od -1 do 1, dok im se tijekom učenja postepeno podešavaju vrijednosti na krajnje “naučene“.Na slici 2 prikazan je samo dio neuronske mreže, i to dio sa čvorom G te pripadnim povezanim čvorovima. Slučajni brojevi između -1 i 1 su pridodjeljeni svakoj vezi. Na primjer, vezi između čvorova A i G je nasumično dodijeljena težina 0.8.

2.3. Proračun čvorova

Svaki čvor u neuronskoj mreži (osim u ulaznom sloju) računa jednu izlaznu vrijednost na temelju skupa ulaznih vrijednosti (I1,...,In) kako je prikazano na slici 3. Za čvorove u prvom skrivenom sloju ulazne vrijednosti odgovaraju vrijednostima ulaznih deskriptor varijabli. Svaki ulazni priključak ima težinu i dodijeljenu vrijednost, te se ukupan doprinos u čvor izračunava primjenom istih. Na primjer, sljedeća formula se često koristi kod računanja ukupnog doprinosa u čvor:

Ulaz=∑j=1

n

I jw j

3

Slika 2: Težine veza između čvorova

Page 7: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

pri čemu Ij predstavljaju pojedinačne vrijednosti ulaznih vrijednosti te wj težine pripadnih veza.U sljedećem su primjeru korištene vrijednosti iz tablice 1, koje su prethodno normalizirane (između 0.0 i 1.0). Vrijednosti predstavljaju rezultat promatranja modela sa šest ulaznih deskriptor varijabli (V1,...,V6) i dvije izlazne varijable odgovora (V7 i V8). Ulazne varijable su preslikane na neuronsku mrežu kao što je prikazano na slici 3 - čvor A predstavlja ulaznu varijablu V1, čvor B ulaznu varijablu V2, itd. Sve njihove vrijednosti ulaze u proračun čvora G.

Ukupan ulaz čvora G se računa korištenjem ulaznih vrijednosti i pripadnih težina veza:

UlazG=∑j=1

n

I jw j

UlazG=1×0.80×−0.21×0.71×0.50.5×−0.10.8×−0.4

UlazG=1.63

4

Slika 3: Proračun čvorova

Tablica 1: Primjer promatranog sustava sa šest ulaznih (deskriptor) i dvije izlazne (odziv) varijable

Deskriptor varijable Varijable odziva

1 0 1 1 0.5 0.8 0.4 1V1 V2 V3 V4 V5 V6 V7 V8

Page 8: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

Ukupna ulazna vrijednost u čvor se nadalje obrađuje korištenjem tzv. “aktivacijske funkcije“ (engl. activation function), odnosno funkcije koja oblikuje izlaz čvora. Upravo njihova primjena omogućuje rješavanje netrivijalnih problema korištenjem malog broja čvorova. U najčešće korištene aktivacijske funkcije spadaju:

Sigmoid : Izlaz= 11e−Ulaz

Tangenshiperbolni : Izlaz= eUlaz−e−Ulaz

eUlaze−Ulaz

Ovaj tip aktivacijskih funkcija omogućuje korištenje neuronskih mreža za modeliranje nelinearnih sustava. Sigmoid funkcija vraća rezultat između 0 i +1 dok tangens hiperbolni vraća rezultat između -1 i +1.

Korištenjem vrijednosti iz prethodnog primjera, sigmoid aktivacijskom funkcijom dobivamo sljedeću izlaznu vrijednost za čvor G:

IzlazG=1

1e−UlazG

IzlazG=1

1e−1.63IzlazG=0.84

2.4. Predviđanje mreže

Neuronska mreža vrši proces predviđanja na osnovi vrijednosti ulaznih deskriptor varijabli i težina asociranih s vezama unutar mreže. Na primjer, na slici 5 skriveni sloj

5

Slika 4: Ulazne vrijednosti i pripadne težine veza na čvoru G

Page 9: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

koristi ulazne vrijednosti, zajedno s težinama veza između ulaznih i skrivenih čvorova, za računanje izlaznih vrijednosti koje ujedno predstavljaju i ulazne vrijednosti za idući sloj. U ovoj neuronskoj mreži postoji samo jedan skriveni sloj tako da su izlazi iz čvorova G, H, I, J sad ulazi u čvorove K i L, dok izlazi iz čvorova K i L predstavljaju konačan izlaz mreže – za njih se kaže da predstavljaju “predikciju“ (engl. prediction), odnosno rezultat predviđanja mreže.

Cjeloukupan proces započet preuzimanjem vrijednosti ulaznih deskriptor varijabli i završen računanjem vrijednosti izlaznih varijabli odziva naziva se “propuštanje unaprijed“ (engl. feed forward). U početku su sve težine veza unutar neuronske mreže određene nasumično, tako da su i početna predviđanja u potpunosti neupotrebljiva [3.].

2.5. Proces učenja

Sve ulazne i izlazne vrijednosti trenažnog skupa potrebno je normalizirati prije početka procesa učenja mreže. Ovo je nužno obaviti kako bi se izbjeglo nepotrebno uvođenje (vjerojatno nepoželjne) pristranosti (engl. bias) radi uporabe različitih mjernih ljestvica pojedinih varijabli.Proces učenja započinje odabirom nasumičnog primjera iz ulaznog trenažnog skupa te njegovim predstavljem mreži (na njenim ulazima). Na svakom se primjeru vrši proces predviđanja te se ovisno o razlici između dobivenog i očekivanog izlaza vrši podešavanje težina veza između čvorova.

6

Slika 5: Primjer ulaznih vrijednosti mreže

Page 10: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

U našem primjeru, vrijednosti iz tablice 1 se predstavljaju mreži kako bi se izračunalo predviđanje dviju izlaznih varijabli odziva. Čvor K generira predviđanje za varijablu odziva V7 dok čvor L generira predviđanje za varijablu odziva V8, kao što je prikazano na slici 6. U navedenom primjeru, mreža je tek započela s procesom učenja tako da dobiveni rezultati nisu ni blizu očekivanoj vrijednosti odgovora.

Kako bi se izvršila korekcija unutar mreže računa se pogreška, odnosno razlika između dobivenog i očekivanog odgovora. Dobivena razlika se koristi u svrhu podešavanja težina veza između čvorova. Nakon što se težine korigiraju, mreži se predstavlja novi nasumce odabrani primjer iz trenažnog skupa, te se težine nanovo prilagođavaju po njemu. Kako se sve više podataka predstavlja mreži, razlika između predviđenih i očekivanih odgovora postaje sve manja. U određenom se trenutku proces učenja prekida i mreža postaje spremna za predviđanje na “pravim“ (engl. real) podacima. Na slici 7 se može pronaći kružni dijagram procesa učenja.

2.6. Propagacija unatrag

Jedna od najčešće korištenih tehnika za učenje u neuronskim mrežama naziva se “propagacija unatrag“ (engl. backpropagation). Kako bi težine veza u neuronskoj mreži bile usklađene, potrebno je najprije izračunati grešku između dobivene predikcije (odziv/predviđanje/izlaz mreže) i očekivanog odgovora. Sljedeća se formula najčešće koristi za izlazni sloj (pojednostavljena verzija [3.]):Greška i=Izlaz i1−Izlaz iOčekivanje i−Izlaz i

pri čemu Izlazi predstavlja predikcijsku vrijednost, Očekivanjei očekivanu vrijednost te Greškai rezultirajuću pogrešku na čvoru i.

7

Slika 6: Usporedba predviđenih s očekivanim vrijednostima

Page 11: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

Na primjer, greške za čvorove K i L se računaju na sljedeći način:GreškaK=Izlaz K 1−Izlaz K OčekivanjeK−Izlaz K

GreškaK=0.8×1−0.8×0.4−0.8

GreškaK=−0.064

Greška L= Izlaz L1− Izlaz LOčekivanjeL−Izlaz L

Greška L=0.3×1−0.3×1−0.3

Greška L=0.147

Nakon što je pogreška za izlazni sloj izračunata, ona se dalje propagira (prenosi) unatrag na čvorove u prethodnim slojevima. Za računanje vrijednosti pogreške čvorova u skrivenom sloju koristi se sljedeća formula:

Greškai=Izlaz i1−Izlaz i∑j=1

n

Greška jw ij

pri čemu Greškai predstavlja rezultirajuću pogrešku skrivenog čvora i, Izlazi izlaznu vrijednost, Greškaj prethodno izračunatu pogrešku čvora j spojenog na izlaz čvora i, te wij težinu veze između čvorova i i j.Na slici 8 je ilustrirano kako se računa pogreška za čvorove koji se ne nalaze u izlaznom sloju. Nakon što se izračunaju vrijednosti pogreški za izlazne čvorove, može se započeti izračun pogreški za čvorove skrivenog sloja. U sljedećem se primjeru koristi čvor G kako bi se prikazao izračun pogreške za čvor iz skrivenog sloja:GreškaG=IzlazG 1−IzlazGGreškaK×wGK Greška L×wGL

GreškaG=0.84×1−0.84 ×−0.064×0.30.147×−0.7

GreškaG=0.0112

8

Slika 7: Kružni dijagram procesa učenja

Page 12: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

Pogrešku je potrebno izračunati za čvorove u izlaznom i svim skrivenim slojevima. Za računanje pogreške skrivenih čvorova koriste se prethodno izračunate vrijednosti pogreški (izlaznih) čvorova s kojima je povezan sa svojim izlazom.

Jednom kad se pogreška predikcije propagira kroz cijelu mrežu, dobivene pogreške čvorova se koriste za podešavanje vrijednosti težina pripadnih veza, za što se koristi sljedeća formula:w ij=w ijl×Greška j× Izlaz i

gdje wij predstavlja težinu veze između čvorova i i j, Greškaj izračunatu pogrešku čvora j, Izlazi izračunati izlaz čvora i, te l koeficijent učenja (engl. learning rate), koji je predstavljen vrijednošću između 0.0 i 1.0. Što je koeficijent učenja veći to je i brzina učenja veća. Često se njegova vrijednost postavlja inicijalno na neku visoku vrijednost te se potom postepeno smanjuje.Kako bi se izračunala vrijednost težine veze između čvorova G i K, pri čemu je koeficijent učenja postavljen na vrijednost 0.2, koristi se sljedeća formula:wGK=wGKl×GreškaK×IzlazGwGK=0.30.2×−0.064×0.84

wGK=0.276

U ovom primjeru, težina je smanjena prilikom prilagodbe. Ostale težine u mreži se također prilagođavaju, te proces nastavlja s drugim uzorkom iz trenažnog skupa podataka. Svakim novim uzorkom neuronska mreža ponavlja proces u kojem se težine čvorove prilagođuju sukladno izračunatoj vrijednosti pogreške izlaza.U sljedećem je primjeru ilustiran cjeloukupan proces učenja neuronske mreže na jednom uzorku iz ulaznog trenažnog skupa podataka. Slika 9 prikazuje osam koraka procesa učenja. Prilikom procesa učenja koriste se normalizirani podaci opažanja (engl. observation) sustava koji želimo modelirati korištenjem neuronske mreže. U ovom primjeru trenažni skup ima tri ulazne deskriptor varijable (I1, I2, I3), jednu izlaznu varijablu odziva (O), i pet jedinki (i, ii, iii, iv, v). U prvom se koraku instancira neuronska mreža s tri ulazna čvora (A, B, C) sukladno trima ulaznim varijablama, te jedan izlazni čvor (F) pošto postoji samo jedna izlazna varijabla odziva. Odabran je proizvoljno samo jedan skriveni sloj koji se sastoji od dva čvora (D i E). Svi čvorovi iz

9

Slika 8: Usporedba pogrešaka na izlaznom sloju

Page 13: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

ulaznog sloja su povezani s dva čvora iz skrivenog sloja. Ova su dva skrivena čvora nadalje povezana sa svim elementima izlaznog sloja, u našem slučaju samo s čvorom F. Također se prilikom postavljanja strukture, odnosno topologije mreže, vrijednosti težina veza između pojedinih čvorova postavljaju na nasumične vrijednosti između -1.0 i 1.0. Tako je u našem primjeru težina veze između čvorova A i D (wAD) postavljena na 0.4 te između čvorova E i F (wEF) na 0.1.

U koraku 2 se nasumično izabire uzorak (promatranje) iz ulaznog skupa (u ovom slučaju v) te se prezentira mreži kako je i prikazano na slici. Vrijednost varijable I1 (0) se šalje na ulazni čvor A, vrijednost za I2 (1) se šalje na čvor B, te vrijednost za I3 (1) na čvor C. U koraku 3 se ulazne vrijednosti zajedno s težinama veza koriste kako bi se izračunali izlazi skrivenih čvorova D i E. Kako bi se izračunale njihove vrijednosti, čvorovi D i E prvo vrše kalkulaciju nad kombiniranim ulaznim vrijednostima te nakon toga koriste aktivacijsku funkciju kako bi izračunali vrijednosti pripadnih izlaza. Kombinirane ulazne vrijednosti u čvorove D i E su zapravo težinske sume koje se računaju na sljedeći način:UlazD= I 1×wAD I 2×wBDI 3×wCDUlazD=0×0.41×−0.61×0.9=0.3

Ulaz E=I 1×wAEI 2×wBE I 3×wCEUlaz E=0×0.81×0.21×−0.4=−0.2

10

Slika 9: Proces učenja podešavanjem vrijednosti težina veza u neuronskoj mreži

Page 14: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

Tako izračunate vrijednosti se propuštaju kroz aktivacijsku funkciju kako bi se dobile izlazne vrijednosti čvorova. U ovom će se slučaju koristiti sigmoid aktivacijska funkcija:

IzlazD=1

1e−UlazD= 11e−0.3

=0.57

Izlaz E=1

1e−Ulaz E= 11e0.2

=0.45

U koraku 4 se izlazne vrijednosti čvorova D i E koriste kao ulazne vrijednosti čvora F. Ukupna ulazna vrijednost se računa kombiniranjem spomenutih vrijednosti s težinama pripadnih veza:Ulaz F=IzlazD×wDF IzlazE×wEFUlaz F=0.57×−0.50.45×0.1=−0.24

Nadalje, kombinirana ulazna vrijednost se pretvara u izlaznu korištenjem aktivacijske funkcije:

Izlaz F=1

1e−Ulaz F= 11e0.24

=0.44

U koraku 5, vrijednost izračunata kao izlaz čvora F se uspoređuje sa stvarnom vrijednošću opažanja, odnosno očekivanom vrijednošću, kako bi se dobila vrijednost pogreške:GreškaF=Izlaz F 1−Izlaz F OčekivanjeF−Izlaz F

GreškaF=0.441−0.440−0.44=−0.108

U koraku 6, korištenjem izračunate pogreške čvora F, propagiranjem unazad se računaju pogreške čvorova D i E:GreškaD=IzlazD 1−IzlazDGreškaF×wDF

GreškaD=0.57 1−0.57−0.108×−0.5=0.013

GreškaE= IzlazE 1− IzlazEGreškaF×wEF

GreškaE=0.451−0.45−0.108×0.1=−0.003

U koraku 7 se izračunate vrijednosti pogrešaka za čvorove D, E i F koriste kako bi se izračunale nove vrijednosti težina veza. U sljedećim se kalkulacijama koristio koeficijent učenja (l) 0.5:w ij=w ijl×Greška j× Izlaz iw AD=0.40.5×0.013×0=0.4

w AE=0.80.5×−0.013×0=0.8

w BD=−0.60.5×0.013×1=−0.594

w BE=0.20.5×−0.003×1=0.199

11

Page 15: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

wCD=0.90.5×0.013×1=0.907

wCE=−0.40.5×−0.003×1=−0.402

w DF=−0.50.5×−0.108×0.57=−0.531

w EF=0.10.5×−0.108×0.45=0.076

Do ovog su se trenutka težine u mreži podesile s obzirom na izračunate pogreške. Nakon toga se uzima novi uzorak iz trenažnog skupa, predstavlja se mreži te se proces učenja iterativno ponavlja. Ova metoda učenja po svojoj vrsti spada u nadzirano učenje, čije će značajke i razlike s obzirom na ostale vrste biti opisane u sljedećem poglavlju.

2.7. Vrste učenja

Postoje tri različite vrste (ili metode) učenja, pri čemu svaka odgovora određenom apstraktnom zadatku koji treba riješiti te se za njihovu realizaciju (obično) može upotrijebiti bilo koji tip neuronske mreže [13.]:

• Nadzirano učenje (engl. supervised learning): Kod ove se vrste učenja koristi niz primjera parova x , y , x∈X , y∈Y u cilju pronalaska funkcije f : X Y unutar dozvoljene klase funkcija. Drugim riječima, želimo izvesti zaključak o preslikavanju impliciranom nad datim skupom primjera. Funkcija troška/pogreške (engl. cost function) je povezana s neskladom između našeg preslikavanja i očekivanih podataka te implicitno sadrži prethodno znanje o problemskoj domeni. Kao funkciju pogreške se često koristi kvadrat srednje vrijednosti razlika, kojom se nastoji minimalizirati prosječna kvadratna pogreška između izlaza mreže f(x), te ciljane vrijednosti y nad svim parovima primjerima. Zadaci koji spadaju u domenu ove vrste učenja su: raspoznavanje uzoraka (također poznato kao klasifikacija), regresija (također poznato kao aproksimacija) te obrada slijednog niza podataka (npr. za raspoznavanje govora i gesta). Ova se vrsta učenja može smatrati učenjem uz “učitelja“ i to u obliku funkcije koja omogućuje neprekidnu povratnu informaciju o kvaliteti rješenja dobivenih do tog trenutka.

• Nenadzirano učenje (engl. unsupervised learning): Kod učenja bez nadzora na raspolaganju je skup podataka x i funkcija troška f koja mora biti minimalizirana, te koja može biti bilo koja funkcija podataka x i izlaza same mreže. Funkcija troška je u ovom slučaju ovisna o prirodi zadatka (koji pokušavamo modelirati) i našim a priori postavkama – o implicitnim svojstvima našeg modela, njegovim parametrima i promatranim varijablama. Kao trivijalan primjer uzmimo model f x =a , pri čemu je a konstanta te funkcija troška C=E [x− f x2] , u kojem ćemo minimalizacijom funkcije troška dobit vrijednost za a koja je jednaka srednjoj vrijednosti podataka. Valja napomenuti da funkcija troška može biti puno kompliciranija te njezina forma ovisi o primjeni. Zadaci koji upadaju u paradigmu nenadziranog učenja su obično problemi procjene – statistička distribucija, sažimanje podataka i filtriranje.

12

Page 16: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

• Učenje s pojačanim odgovorom (engl. reinforcement learning): Ova vrsta učenja podrazumijeva interakciju s okolinom u kojoj sudionik, u našem slučaju neuronska mreža, uči na posljedicama svojih akcija – model učenja na pokušajima i pogreškama (engl. trial and error learning). Pojačanje signala sudionik smatra nagradom te u daljnjem procesu nastoji naučiti odabrati akciju koja će mu maksimizirati akumuliranu nagradu u datom vremenom.

Ukratko, nadzirano učenje se koristi u slučajevima kad znamo željeni izlaz, nenadzirano učenje u slučajevima kad ciljane vrijednosti izlaza nisu određene, dok učenje s pojačanim odgovorom predstavlja novo i složeno područje u modeliranju neuronskih mreža u kojem se određeni odgovori “nagrađuju“, dok se određeni odgovori mogu “kažnjavati“. Kod otkrivanja znanja u skupovima podataka, neuronske mreže s nadziranim učenjem se koriste u obradi prethodno klasificiranih podataka od strane “učitelja“ kako bi otkrile složenije poveznice imeđu njih, dok mreže s nenadziranim učenjem koriste neobrađene podatke kako bi ih same klasificirale.

2.8. Vrste mreža

U dosadašnjem dijelu ovog uratka uglavnom smo se osvrnuli na neuronske mreže s propuštanjem unaprijed, i to zbog njihove teoretske važnosti i popularnosti uporabe, no radi cjelovitosti ovog uratka potreban je barem kratak osvrt na ostale vrste neuronskih mreža.

2.8.1. Mreža s propuštanjem unaprijed

Neuronska mreža s propuštanjem unaprijed (engl. Feedforward neural network) je prva i vjerojatno najjednostavnija osmišljena vrsta umjetnih neuronskih mreža. U toj se vrsti mreže podaci pomiču u samo jednom smjeru, prema naprijed, od ulaznih čvorova, kroz skrivene čvorove (ako postoje), te na kraju kroz izlazne čvorove. U mreži ne postoje ciklusi i/ili petlje, za razliku od povratnih mreža (2.8.4.). Glavno joj je svojstvo da se sastoji od jednog (engl. Single-layer perceptron network) ili više povezanih slojeva (engl. Multi-layer perceptron network) čvorova, pri čemu svaki sloj ima određenu ulogu u radu mreže – ponekad se u literaturi nazivaju kao jednoslojni i/ili višeslojni perceptron. Zanimljivo je napomenuti da se ova vrsta mreže dosad dokazala kao najkorisnija u rješavanju problema iz realne domene [12.].

2.8.2. Mreža s radijalno zasnovanom funkcijom

Neuronska mreža s radijalno zasnovanom funkcijom (engl. Radial basis function network – RBFN) je mreža namijenjena rješavanju aproksimacijskih problema u višedimenzionalnom prostoru. Učenje u njezinom slučaju je ekvivalentno pronaženju višedimenzionalne funkcije koja najbolje “pristaje“ trenažnim podacima, s tim da se kriterij za najbolje pristajanje (engl. best-fit) mjeri u nekom statističkom smislu. Koristi

13

Page 17: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

se kod problema aproksimacije funkcije, predviđanja vremenskih serija podataka (engl. time series prediction), te kontrole u dinamičkim sustavima.Dizajn RBFN mreže se u najosnovnijem smislu sastoji od tri različita sloja. Prvi sloj je ulazni te se sastoji od čvorova ulaza (senzora), drugi sloj je nelinearan (zasniva se na RBF aktivacijskoj funkciji), skriven i višedimenzionalan, dok zadnji (linearni) izlazni sloj daje odgovor s obzirom na aktivacijski uzorak dat na ulaznom sloju.Radijalno zasnovana funkcija (engl. krat. RBF) je naziv za realnu funkciju utemeljenu na kriteriju udaljenosti u odnosu na zadano središte. Najpoznatiji i najčešće korišten primjer radijalno zasnovane funkcije je Gausova funkcija [13.].

2.8.3. Kohonenova samoorganizirajuća mapa

Kohonenova samoorganizirajuća mapa (engl. Kohonen's self-organizing map – SOM) je vrsta umjetne neuronske mreže kod koje se provodi nenadgledan proces učenja u svrhu dobivanja manje-dimenzionalne (engl. low-dimensional), diskretizirane reprezentacije (tzv. mapa) ulaznog prostora trenažnog skupa podataka. Samoorganizirajuće mape se razlikuju s obzirom na ostale neuronske mreže utoliko da se kod njih koristi funkcija susjedstva (engl. neighborhood function) kako bi se što vjernije sačuvala topološka svojstva ulaznog prostora. Ovo čini SOM mreže idealnim za kreiranje manjedimenzionalnih vizualnih reprezentacija višedimenzionalnog skupa podataka.Samoorganizirajuća mapa se sastoji od višedimenzionalne rešetke (engl. lattice) čvorova koji su svi spojeni na ulazni sloj. Ukoliko se radi o n-dimenzionalnom ulaznom prostoru, tada svaki čvor ima pripadni težinski n-dimenzionalni vektor W (W1,W2...,Wn) čija se konačna vrijednost polako formira u procesu učenja. Ukratko, u svakom se ciklusu procesa učenja traži čvor čiji težinski vektor najviše odgovara ulazu, te se njemu i susjednim čvorovima (s obzirom na radijalnu udaljenost određenu funkcijom) pripadno povećavaju težine.Ova vrsta neuronskih mreža se dosad uspješno koristila u mnogim poljima, kao što su: robotički vid, prepoznavanje govora, kombinatorički algoritmi, raspoznavanje uzoraka, sustavi za detekciju upada u računalne sustave, itd. [8.]

2.8.4. Povratna mreža

Za razliku od mreže s propuštanjem unaprijed (2.8.1.), povratna neuronska mreža (engl. Recurrent neural network – RNs) je vrsta mreže s bi-direkcijskim protokom podataka, te se umjesto linearnog propuštanja podataka od ulaza prema izlazu u ovom slučaju podaci mogu propagirati od kasnijih faza prema ranijim.Postoji nekoliko značajnijih predstavnika:

• Jednostavna povratna mreža (engl. Simple recurrent network) – Ova se mreža sastoji od tri standardna sloja, s dodatkom skupa kontekstnih jedinica u ulaznom sloju koje su povratno povezane s čvorovima skrivenog sloja s vezama težine jedan. Na ovaj se način čuvaju prethodne vrijednosti skrivenih

14

Page 18: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

čvorova, čime se omogućuju operacije koje nisu bile moguće sa standardnom višeslojnom arhitekturom (2.8.1.).

• Hopfieldova mreža (engl. Hopfield network) – za ovu je vrstu mreže karakteristično da služi kao memorijski sustav adresiran sadržajem te da je sama po sebi asinkronog karaktera. Za razliku od ostalih tipova neuronskih mreža, u ovoj se mreži sadržaj čvorova ažurira vremenski neovisno jedan o drugome i to nasumičnim odabirom trenutno obrađivanog čvora.

• Mreža s odzivnim stanjem (engl. Echo state network) – je povratna neuronska mreža sa slabo povezanim skrivenim slojem. Povezanost i težina skrivenih čvorova su nasumično dodijeljene te su nepromjenjive, dok težine izlaznih čvorova mogu biti naučene tako da proizvodi specifičan vremenski uzorak.

• Mreža s dugom kratkoročnom memorijom (engl. Long short term memory) – je vrsta neuronske mreže namijenjena predviđanju vremenskih nizova. Za razliku od tradicionalnih povratnih mreža, ova je u stanju proizvoditi dugoročne prognoze (predikcije).

2.8.5. Stohastička mreža

Stohastička neuronska mreža (engl. Stochastic neural network), za razliku od ostalih vrsta, uvodi slučajne varijacije u obliku slučajnih vrijednosti težina čvorova i/ili u obliku stohastičkih (slučajnih) transfer funkcija. Ovo ih svojstvo čini korisnim alatom za optimizacijske probleme, pošto slučajne “fluktuacije“ unutar mreže pomažu da se izbjegne (nepoželjan) dolazak u stanje lokalnog minimuma.Stohastičke neuronske mreže koje se zasnivaju na stohastičkim transfer funkcijama obično se nazivaju “Boltzmannovi strojevi“ te se mogu koristiti za reprezentaciju i rješavanje teških kombinatoričkih problema [13.].

2.8.6. Modularna mreža

Biološka istraživanja su pokazala da ljudski mozak ne funkcionira kao jedna masivna neuronska mreža, već kao skup manjih mreža. Ovo otkriće je urodilo koncept modularne neuronske mreže (engl. Modular neural network), u kojoj nekoliko manjih mreža surađuju i/ili se natječu u rješavanju problema pod nadzorom zajedničkog posrednika (engl. intermediary).Svaka (pod)mreža djeluje kao nezavisni modul te djeluje na odvojenim ulazima kako bi ostvarila dio zadatka koji mreža nastoji riješiti. Na kraju posrednik uzima izlaze svake pojedinačne mreže te ih procesira kako bi proizveo jedinstven izlaz cjeloukupne mreže. Posrednik obrađuje samo izlaze te ni na koji drugi način ne komunicira s modulima. Na isti način moduli također ne komuniciraju jedni s drugima.Postoji nekoliko značajnijih predstavnika:

• Odbor strojeva (engl. Committee of machines – CoM) je kolekcija raznih neuronskih mreža (eksperata) koje zajedno “glasaju“ na obrađivanom primjeru, što obično daje mnogo bolji rezultat u odnosu na druge modele

15

Page 19: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

neuronskih mreža. U slučaju klasifikacijskih problema pobjeđuje većina, dok se u slučaju kontinuiranih izlaza uzima prosječna vrijednost. Počevši s istom arhitekturom i treningom, ali s različitim inicijalnim vrijednostima težina veza, često se kao rezultat dobiva mnoštvo različitih mreža – pri čemu je odbor strojeva sklon stabilizaciji rezultata.

• Asocijativna neuronska mreža (engl. Associative neural network – ASNN) je nadgradnja odbora strojeva utoliko što ne koristi prosjek pojedinačnih mreža, već se koristi tehnika k-tog najbližeg susjeda (engl. k-nearest neighbor). Preciznije, koristi se veza između odgovora koje daju pojedinačne mreže kao mjera udaljenosti među analiziranim uzorcima. Na ovaj se način ispravljaju “predrasude“ skupa neuronskih mreža [13.].

2.8.7. Ostale vrste

Sljedeće specijalizirane mreže se ne mogu svrstati ni u jednu prethodnu kategoriju:• Holografska asocijativna memorija (engl. Holographic associative memory)

predstavlja obitelj analognih, korelacijskih, asocijativnih memorija, u kojima se informacije predstavljaju u obliku faze kompleksnih brojeva.

• Mreže s trenutačnim učenjem (engl. Instantaneously trained networks) su mreže inspirirane fenomenom kod kratkoročnog učenja koje se (izgleda) događa trenutačno. Za ove je mreže karakteristično da težine skrivenih i izlaznih čvorova predstavljaju direktne preslike trenažnih vektorskih podataka. Uglavnom se upotrebljavaju za rad s binarnim podacima, no postoje i verzije za obradu kontinuiranih podataka koje iziskuju dodatnu obradu.

• Pulsne neuronske mreže (engl. Spiking neural networks – SNNs) eksplicitno uzimaju u obzir vrijeme ulaza podataka. Kod ove vrste mreža su ulazne i izlazne vrijednosti obično predstavljene kao niz pulseva (delta funkcija ili složeniji oblik) te posjeduju prednost da procesiraju informacije u vremenskoj domeni (signale koji variraju tijekom vremena). Često su implementirane kao povratne mreže.

• Dinamičke mreže (engl. Dynamic neural networks) ne samo da se bave nelinearnim multivarijantim ponašanjem, nego također uzimaju u obzir i vremenski promjenjivo ponašanje, kao što su različite prijelazne pojave i efekt kašnjenja (engl. delay effect).

• Kaskadne neuronske mreže (engl. Cascading neural networks) se, za razliku od ostalih mreža s fiksnom arhitekturom, tijekom procesa učenja po potrebi sama nadograđuje dodavanjem novih skrivenih čvorova. Dodavanjem novog skrivenog čvora težine ulaznih veza postaju fiksne. Bitna svojstva ove mreže su da uči vrlo brzo, sama je odgovorna za vlastitu veličinu i topologiju, u slučaju promjena u trenažnom skupu zadržava postojeću strukturu, te ne zahtjeva propagiranje pogreške unatrag kroz mrežu.

• Neizrazita neuronska mreža (engl. Neuro-fuzzy network) je naziv za sustav s neizrazitim (engl. fuzzy) zaključivanjem u tijelu umjetne neuronske mreže, te

16

Page 20: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

ovisno o vrsti, sadrži nekoliko slojeva koji simuliraju temeljne procese svojstvene za ovu vrstu zaključivanja. Prednost ove mreže je ta da se na jednostavan način korištenjem standarnih metoda učenja pronalaze parametri promatranog neizrazitog modela.

• Kompozicijske mreže za proizvodnju uzoraka (engl. Compositional pattern-producing networks) se razlikuju od standarnih mreža po skupu korištenih aktivacijskih funkcija (puno veći broj), načinu njihove primjenjene te po veličini prostora mogućih ulaznih vrijednosti (neograničen). Koriste se kod obrade slike i to posebno za proizvodnju specijaliziranih uzoraka.

• Okidna asocijativna memorija (engl. One-shot associative memory) se koristi kod raspoznavanja uzoraka, te se sastoji se od posebnih čvorova, od kojih je svaki specijaliziran za određenu vrstu uzoraka – na ovaj se način izbjegava proces učenja cijele mreže u slučaju predstavljanja novog uzorka [13.].

2.9. Prenaučenost i unakrsna validacija

Jedna od glavnih “zamki“ kod procesa učenja neuronskih mreža je tzv. “prenaučenost“ (engl. overtraining). Karakteristično je za ovu pojavu da mreža u jednom trenutku počne učiti ne samo mapiranje vezano uz odnos između ulaznih i izlaznih podataka, već također i nepotrebne nijanse te pogreške specifične za upotrijebljeni trenažni skup. Ukoliko dođe do ove pojave, mreža pamti samo svojstva trenažnog skupa (engl. training set), no gubi vrlo bitnu sposobnost generalizacije. Rezultat je mreža koja odlično obavlja posao nad početnim skupom, ali vrlo slabo nad naknadnim podacima.Najjednostavniji način za izbjegavanje prenaučenosti je periodično automatizirano prekidanje procesa učenja mreže, u svrhu procjene njezina rada nad testirajućim skupom podataka. Potom se učenje nastavlja s mjesta na kojem je prekinuto. Ovaj se cjeloukupan proces iterativno ponavlja bez ljudske intervencije, pri čemu se trenutni parametri mreže koji zadovoljavaju zadane kriterije čuvaju.Kada rezultati testiranja počnu degradirati, može se pretpostaviti da je mreža došla u stanje prenaučenosti te se najbolja sačuvana konfiguracija mreže do tog trenutka uzima za daljnje korištenje. Kroz automatizaciju, testiranje je uključeno kao integralni (korigirajući) dio procesa učenja, radije nego kao procedura koja bi se izvodila naknadno [22.].Unakrsna validacija (engl. cross-validation) je naziv za metodu u kojoj se procjenjuje kako će se neuronska mreža (ili bilo koji drugi predikcijski model) ponašati u budućnosti na dosad neviđenim podacima. U našem slučaju je zanimljiva radi detekcije i prevencije pojave prenaučenosti [23.].Iako postoji nekoliko varijanti unakrsne validacije, osnovna ideja ostaje ista: podatkovni skup modela se dijeli u dva međusobno isključiva podskupa, pri čemu se prvi veći koristi kao trenažni skup za postavljanje modela, dok se manji koristi kao testni skup za validaciju istog. Ovaj se proces ponavlja s različitim podskupovima,

17

Page 21: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

sve dok se jednom ne upotrijebi svaki podatak unutar podatkovnog skupa za validaciju modela.

Veličina testnog skupa se za svako ponavljanje navedene procedure može podesiti po potrebama korisnika, i uglavnom ovisi o veličini cjeloukupnog podatkovnog skupa te vremenu i “trudu“ upotrijebljenim za unakrsnu validaciju. Postoje dva krajnja slučaja: (1) podjela podatkovnog skupa u dvije jednake polovice, te (2) odabir pojedinačnih objekata za testni skup. Drugi slučaj se također naziva i potpuna unakrsna validacija (engl. full cross-validation), te je generalno bolje rješenje iz stanovišta kvalitete ispitivanja.

2.10. Primjena

Prije samog početka procesa učenja, potrebno je prilagoditi mnoštvo parametara kako bi se podesila kvaliteta završne predikcije. Tu između ostalih spadaju [3.]:

• Skriveni slojevi: Broj skrivenih slojeva, kao i broj čvorova u istima, može utjecati na kvalitetu rezultata učenja mreže. Tako na primjer, premalo slojeva i/ili čvorova može biti nedostatan kako bi se dovoljno dobro naučilo, te previše čvorova može dovesti do tzv. “prenaučenosti“ (engl. overtraining) mreže (2.9.) u kojem se mreža prilagođava na “šum“ ulaznih podataka – u tom se slučaju umjesto generaliziranih dobivaju nasumični rezultati predikcije kao rezultat prilagodbe na nepravilnosti u trenažnom skupu podataka.

• Broj ciklusa: Ciklus je naziv za iteraciju procesa učenja mreže koja započinje prezentiranjem uzorka iz ulaznog trenažnog skupa podataka i završava podešavanjem težina veza unutar nje. Broj primjera/uzoraka koji se prezentiraju neuronskoj mreži se može odrediti unaprijed, odnosno trebao bi se ograničiti, kako bi se izbjeglo prethodno spomenuti fenomen prenaučenosti mreže. Broj ciklusa potrebnih za obradu cjeloukupnog trenažnog skupa, odnosno broj uzoraka u istom, naziva se epoha.

• Koeficijent učenja: Prije nego se započne izgradnja neuronske mreže trebao bi se odrediti koeficijent učenja čime utječemo na brzinu učenja mreže. Korištenjem premalog koeficijenta učenja mreža mora provesti puno više vremena učeći, prije nego što ju možemo pustiti u primjenu za obradu stvarnih podataka. Međutim, također, kod uporabe prevelikog koeficijenta mreža neće moći napraviti finu prilagodbu moguću kod sustava koji uče sporije.

18

Slika 10: Podjela podatkovnog skupa u iteraciji unakrsne validacije

Page 22: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

Korištenje neuronskih mreža ima brojne pogodnosti:• Linearni i nelinearni modeli: Kompleksni linearni i nelinearni sustavi se mogu s

lakoćom modelirati korištenjem neuronske mreže.• Fleksibilnost ulaza i izlaza: Neuronske mreže mogu operirati na jednom ili više

ulaznih i/ili izlaznih varijabli. Također mogu koristiti kategoričke i kontinuirane podatke.

• Šum: Neuronske mreže su manje podložne šumovima nego statistički regresijski modeli.

Među loša svojstva neuronskih mreža spadaju:• Crna kutija: Nije moguće na smislen način objasniti kako se dobivaju konačni

rezultati predikcije, odnosno zašto sama mreža funkcionira.• Optimizacija parametara: Postoji mnoštvo parametara koje je potrebno

postaviti kod procesa učenja neuronske mreže, te njihova optimizacija može biti izuzetno zahtjevan zadatak.

Neuronske mreže se mogu koristiti u virtualno svakoj situaciji u kojoj postoji odnos između ulaznih (deskriptor) varijabli i izlaznih varijabli (odziva), iako je možda on vrlo kompleksan i ne baš jednostavan za opisivanje u okvirima korelacija i razlika između grupa.Nekoliko reprezentativnih primjeraka problema za čiju se analizu uspješno koriste neuronske mreže [12.]:

• Detekcija medicinskih fenomena: Čitav niz parametara vezanih uz zdravstveno stanje ispitanika može biti pod stalnom analizom, i to u svrhu detekcije medicinskih stanja povezanih s vrlo složenom (nelinearnom i interaktivnom) kombinacijom promjena u skupu promatranih varijabli. U ovakvim se slučajevima primjenjuju neuronske mreže kako bi se pravovremeno prepoznali predskazujući uzorci i u skladu s njima primjenilo odgovarajuće liječenje.

• Predviđanja na dioničkim burzama: Promjene cijena dionica i dioničkih indeksa su još jedan primjer kompleksnog, multidimenzionalnog, te u nekim okolnostima barem djelomično determinističkog fenomena. Tehnički analitičari koriste neuronske mreže kako bi prognozirali (buduće) kretanje cijene dionice na temelju velikog broja čimbenika, kao što su prijašnje promjene cijene promatrane dionice i ostalih dionica u sektoru, te raznih gospodarskih mikro i makroekonomskih pokazatelja.

• Određivanje kreditne sposobnosti: Razni djelići informacija su dostupni o podnositelju zahtjeva za kredit – npr. dob osobe, obrazovanje, zanimanje i dr. Nakon procesa učenja neuronske mreže na povijesne podatke, njezinom se analizom mogu identificirati najrelevantnije karakteristike te ju iskoristiti u svrhu klasifikacije klijenata – kao dobri ili loši s obzirom na kreditnu rizičnost.

• Nadgledanje stanja strojeva: Neuronske mreže mogu poslužiti kao instrument za rezanje troškova unošenjem dodatne ekspertize kod raspoređivanja posla

19

Page 23: Otkrivanje znanja primjenom neuronskih mreža

2.Osnove

za preventivno održavanje strojeva. Neuronska se mreža može osposobiti za razlikovanje između normalnih zvukova koje stroj proizvodi (“lažni alarm“) i zvukova “na ivici“ problema. Nakon razdoblja obuke, mreža se može koristiti u svrhu upozoravanja tehničara na nadolazeći problem, prije nego što se on dogodi te uzrokuje skupe i nepredviđene stanke.

• Upravljanje rada motora: Neuronske mreže se koriste već dulje vrijeme u svrhu analize mjerenih vrijednosti senzora motora. U skladu s njima mreža kontrolira različite parametre motora kako bi se postigao određeni cilj – kao što je npr. smanjenje potrošnje goriva i/ili povećanje performansi vozila.

20

Page 24: Otkrivanje znanja primjenom neuronskih mreža

3.Praktični uradak

3. Praktični uradakPosebno za potrebe praktičnog dijela ovog uratka osmišljena su i napravljena testiranja umjetnih neuronskih mreža korištenjem programske knjižnice FANN (engl. krat. Fast Artificial Neural Network Library) – knjižnica otvorenog koda (engl. Open source), namijenjena razvoju višeslojnih neuronskih mreža u programskom jeziku C. Prednosti su te da je jednostavna je za uporabu, svestrana, odlično dokumentirana i možda najbitnije brza. Uz standardnu podršku za programski jezik C tu su još i dodaci za programske jezike: PHP, C++, Mathematica, .NET, Ada, Python, Delphi, Octave, Ruby i Prolog [18.].FANN programska knjižnica je odabrana zbog otvorenosti koda, lakoće savladavanja osnova korištenja te brzine izvođenja – čak stotinjak puta brža u usporedbi s programom pisanim u programskom jeziku Python korištenim u ranim fazama stvaranja ovog uratka. Cjeloukupni programski kod se može naći u dodatku A.Korištena je klasična troslojna neuronska mreža s propuštanjem unaprijed (2.8.1.), s time da se broj čvorova (neurona) u skrivenom sloju mijenjao s obzirom na predmet testiranja.Prilikom testiranja su korišteni tzv. “Redovnički problemi“ (engl. MONK's problems) koji bijahu osnova testiranja Prvog međunarodnog kongresa usporedbe algoritama za učenje. Zanimljivost kongresa bijaše ta da ju je predvodila grupa znanstvenika, od kojih je svaki zagovarao jednu od tehnika učenja. U tom su se smislu i dobili objektivniji rezultati usporedbe nego da ga je provela samo jedna osoba, te su dobivena točnija tumačenja ponašanja algoritama pošto su ih koristile osobe u potpunosti upoznate s njihovom strukturom i ponašanjem [17.].Postoje tri redovnička problema, čiji je koncept opisan na sljedeći način:

• MONK #1: (a1 = a2) ili (a5 = 1)• MONK #2: TOČNO DVA od {a1 = 1, a2 = 1, a3 = 1, a4 = 1, a5 = 1, a6 = 1}• MONK #3:(a5 = 3 i a4 = 1) ili (a5 /= 4 i a2 /= 3)

(5% šuma dodanog u trenažni skup)Svaki od testova (približno) posjeduje sljedeću programsku strukturu:#include "fann.h"void main(){

//korištene varijable i struktureunsigned int broj_slojeva, broj_epoha_između_izvještaja,

maksimalni_broj_epoha, broj_skrivenih_neurona, i;float željena_pogreška;struct fann *neuronska_mreža;struct fann_train_data *trenažni_skup, *testni_skup;//inicijalizacija podataka...

21

Page 25: Otkrivanje znanja primjenom neuronskih mreža

3.Praktični uradak

//čitanje skupova podataka iz pripadnih datotekatrenažni_skup = fann_read_train_from_file("data.train");testni_skup = fann_read_train_from_file("data.test");//kreiranje neuronske mreženeuronska_mreža = fann_create_standard(broj_slojeva, trenažni_skup->

num_input, broj_skrivenih_neurona, trenažni_skup->num_output); //postavljanje aktivacijske funkcije za skriveni slojfann_set_activation_function_hidden(neuronska_mreža,

FANN_SIGMOID_SYMMETRIC_STEPWISE);//postavljanje aktivacijske funkcije za izlazni slojfann_set_activation_function_output(neuronska_mreža,

FANN_SIGMOID_STEPWISE);//postavljanje trenažnog algoritmafann_set_training_algorithm(neuronska_mreža, FANN_TRAIN_INCREMENTAL);//započinjanje procesa učenja mrežefann_train_on_data(neuronska_mreža, trenažni_skup, maksimalni_broj_epoha,

broj_epoha_između_izvještaja, željena_pogreška);//resetiranje vrijednosti pogreške mreže prije završnog testiranjafann_reset_MSE(neuronska_mreža);//testiranje mreže s testnim podacimafor(i = 0; i < fann_length_train_data(testni_skup); i++)

fann_test(neuronska_mreža, testni_skup->input[i], testni_skup->output[i]);

//ispis konačne pogreške mrežeprintf("Krajnja pogreška: %f", fann_get_MSE(neuronska_mreža));

}

Prezentirani programski kod je sam po sebi lako razumljiv, no potrebno je dodatno pojasniti par pojmova. Program započinje deklaracijom i inicijalizacijom podataka. U ovom se dijelu postavljaju vrijednosti parametara neuronske mreže poput broja slojeva mreže (broj_slojeva), broja skrivenih neurona (broj_skrivenih_neurona), maksimalni broj epoha nad trenažnim skupom podataka (maksimalni_broj_epoha), broja epoha između izvještaja o trenutnom stanju pogreške mreže (broj_epoha_između_izvještaja), te željene pogreške (željena_pogreška) ispod čije vrijednosti mreža prestaje s daljnjim učenjem.Trenažni i testni skupovi podataka se čitaju iz pripadnih datoteka čiji je format zadan FANN dokumentacijom:veličina_skupa_podataka broj_ulaznih_parametara broj_izlaznih_parametaraulazni parametri razdvojeni znakom za razmakizlazni parametri razdvojeni znakom za razmak...ulazni parametri razdvojeni znakom za razmakizlazni parametri razdvojeni znakom za razmak

Kod postavljanja aktivacijske funkcije za pojedine slojeve, od mnoštva odabranih [18.]

su izabrane dvije najčešće korištene (s obzirom na primjere u službenoj dokumentaciji) – za izlazni sloj linearnu aproksimaciju standardne sigmoid funkcije (FANN_SIGMOID_STEPWISE) te za skriveni sloj linearnu aproksimaciju za standardnu tangens hiperbolni funkciju (FANN_SIGMOID_SYMMETRIC_STEPWISE).

22

Page 26: Otkrivanje znanja primjenom neuronskih mreža

3.Praktični uradak

Kao trenažni algoritam je upotrijebljen ujedno i najčešće korišten standardni inkrementalni algoritam (FANN_TRAIN_INCREMENTAL) opisan u prethodnom dijelu ovog uratka (2.6.), osim u usporednom testu brzine učenja u kojem su se koristili svi ponuđeni algoritmi (3.1.).Kao mjera kvalitete dobivene mreže smatra se srednja kvadratna pogreška (engl. Mean squared error – MSE), standardna mjera u statističkom modeliranju definirana kao razlika između stvarnih opažanja i odgovora dobivenih predikcijom modela [14.]. Ova se mjera koristi kako bi se odredilo da li je prediktivni model dovoljno dobar za stvarnu uporabu te bi u procesu učenja njezina vrijednost trebala težiti prema nuli.Testovi su namjerno odabrani kako bi se dobili odgovori na konkretna pitanja vezana uz primjenu neuronskih mreža. Kao što je opisano u prethodnom poglavlju, postoji niz parametara odgovornih za rad neuronske mreže, no njihove vrijednosti nigdje nisu eksplicitno zadane, već se od korisnika očekuje da metodom pokušaja i pogrešaka odredi optimalne vrijednosti za promatrani slučaj. Kako bi se donekle olakšao odabir traženih vrijednosti parametara, korisniku su u nastavku prezentirani rezultati i zaključci sprovedenog istraživanja.

3.1. Utjecaj odabira trenažnog algoritma na brzinu učenja

Programska knjižnica FANN nudi četiri različita trenažna algoritma za učenje [18.]:• Inkrementalni (FANN_TRAIN_INCREMENTAL) – Standardni algoritam s

propagacijom unatrag, u kojem se vrijednosti težina veza ažuriraju nakon svakog trenažnog uzorka. To znači da su težine ažurirane mnogo puta tijekom jedne epohe. Iz toga će se razloga neki problemi vrlo brzo naučiti s ovim algoritmom, dok će s ostalim naprednijim problemima napredak biti vrlo spor.

• Grupni (FANN_TRAIN_BATCH) – Također standardni algoritam s propagacijom unatrag, no s tim da se u ovom slučaju vrijednosti težina ažuriraju nakon izračuna srednje kvadratne vrijednosti za cjeloukupni trenažni skup. To znači da se težine ažuriraju samo jednom tijekom epohe. Iz tog će se razloga neki problemi sporije naučiti s ovim algoritmom, ali budući da se srednja kvadratna vrijednost izračunava točnije nego kod inkrementalnog treninga, neki problemi će doći do boljih rješenja s ovim algoritmom.

• RPROP (FANN_TRAIN_RPROP) – Naprednija verzija grupnog algoritma koji postiže dobre rezultate za mnoštvo problema. RPROP (engl. krat. Resilient backPROPagation) algoritam je tijekom treninga (samo)prilagodljiv, te zbog toga nema potrebe za koeficijentom učenja [15.].

• QuickPROP (FANN_TRAIN_QUICKPROP) – Ima slična svojstva kao i RPROP, no u ovom se slučaju koristi koeficijent učenja zajedno s ostalim naprednijim parametrima [16.].

U ovom se testu htjela provjeriti brzina svakog od njih posebno na trenažnim skupovima podataka. Pod brzinom će se u ovom testu i u nastavku isključivo smatrati broj epoha potrebnih da bi se postigla zadana maksimalna pogreška mreže.

23

Page 27: Otkrivanje znanja primjenom neuronskih mreža

3.Praktični uradak

Za potrebe testiranja se provelo mjerenje na način da se u početku odabrao i postavio testirani algoritam za učenje. Potom se napravila neuronska mreža sa samo jednim skrivenim čvorom, te se mjerio broj epoha potreban da se postigne maksimalna srednja kvadratna pogreška od 0.001 u 50 slučajeva. Maksimalan broj epoha je bio ograničen na 5000, te se u slučaju ne postizanja željene pogreške iteracija testiranja nasilno prekidala. Nakon izvršenja svih 50 slučajeva, povećao bi se broj skrivenih čvorova za jedan i cjeloukupan proces bi se ponovio ispočetka, i tako sve do 16 skrivenih čvorova. Testiranje je provedeno za sva četiri algoritma i sva tri trenažna skupa podataka. Kao rezultat se dobio sljedeći kumulativni graf:

Iz rezultata je jasno vidljivo da je trenažni algoritam RPROP bio najbrži za sva tri trenažna skupa, dok je grupni (engl. batch) bio najsporiji. Vrlo je zanimljivo primjetiti da je standardni inkrementalni (engl. incremental) algoritam pokazao iznenađujuće dobre performanse, te da je bio vrlo blizu prvoplasiranom. Također se iz rezultata jasno razlučuje da su svi algoritmi imali najviše problema s učenjem drugog trenažnog skupa, što vrlo vjerojatno ukazuje na nedostatak “kvalitetnog gradiva“ u istom. Svrha ovog testa nije bila nametanje jednog (ili dva) algoritma za učenje kao najbržeg (najboljeg) i/ili kao najsporijeg (najlošijeg), već se samo htjelo pokazati da je pri modeliranju neuronske mreže bitno voditi računa i o ovom parametru. Valja imati na umu da su se ovdje koristila samo tri trenažna skupa, te da se rezultati u ostalim slučajevima mogu znatno razlikovati. Ako je vjerovati autorima algoritama, svaki je specijaliziran za svoju domenu.

3.2. Utjecaj broja skrivenih čvorova na pogrešku mreže

Kod modeliranja neuronske mreže ne postoji jedinstven odgovor na pitanje koliki je optimalan broj skrivenih čvorova kako bi se riješio neki problem. Postoje brojna tumačenja [19.], no sa sigurnošću se zna da ova brojka na kompleksan način ovisi o nizu parametara sustava:

24

Slika 11: Kumulativni graf brzine učenja s obzirom na odabrani trenažni algoritam

Page 28: Otkrivanje znanja primjenom neuronskih mreža

3.Praktični uradak

• broj ulaznih i izlaznih čvorova• broj jedinki u trenažnom skupu podataka• podatkovni šum• složenost funkcije ili klasifikacije koja se treba naučiti• arhitektura sustava• vrsta aktivacijske funkcije u skrivenim čvorovima• korišteni trenažni algoritam

Kako bi se na praktičan i jednostavan način prikazao utjecaj broja skrivenih čvorova na pogrešku mreže sprovedeno je sljedeće testiranje. Za svaki testirani broj skrivenih čvorova od 1 do 64 napravljena je posebna neuronska mreža u kojoj se nakon 5000 epoha učenja uzela srednja kvadratna pogreška, i to za 20 slučajeva kako bi se dobila prosječna vrijednost pogreške. U ovom i svim sljedećim testiranjima se koristio standardni inkrementalni trenažni algoritam prvenstveno radi svoje široke uporabe. Također valja napomenuti da se kao koeficijent učenja koristila vrijednost 0.7 (standardno postavljena vrijednost u FANN programskoj knjižnici), osim ukoliko se nije navelo drugačije.Testiranje je provedeno na sva tri trenažna skupa podataka, te su dobiveni rezultati prezentirani sljedećim grafom:

Iz rezultata se nameće samo po sebi da se s povećanjem broja skrivenih čvorova u sva tri slučaja dobivaju manje pogreške mreže, što traje do određene granice. Naime, ukoliko čvor (odnosno neuron) predstavlja jedinicu znanja u neuronskoj mreži, tada je za učenje ulaznih podataka određene kompleksnosti potreban određen broj istih. Kao potvrda navedenog se iz grafa vidi da za svaki skup podataka nakon određenog broja skrivenih čvorova smanjenje prosječne pogreške polako iščezava.No, što je s naknadnim naglim porastom pogreške u slučaju prvog trenažnog skupa, ali i vidljivim polaganim porastom iste u ostala dva skupa? Prvi skup je sam po sebi bio i najjednostavniji za naučit, tako da je njegova krivulja i najprije pala na neku

25

Slika 12: Graf s prikazom dobivene prosječne pogreške s obzirom na broj skrivenih čvorova u mreži

Page 29: Otkrivanje znanja primjenom neuronskih mreža

3.Praktični uradak

ustaljenu pogrešku (u ovom slučaju vrlo malu). Ovaj nagli porast pogreške se jedino može protumačit kao “glad“ za znanjem, odnosno, nesrazmjernim porastom kompleksnosti mreže naspram datog trenažnog skupa mreži u jednom trenutku jednostavno nije dovoljno predstavljeno znanje. Povećanjem broja skrivenih čvorova naglo se povećava i broj parametara u mreži (težine veza) koje je potrebno “uštimati“ kako bi mreža postala ekspertna, te ukoliko ulazni podaci ne posjeduju dovoljnu složenost, nismo u mogućnosti postaviti dovoljno precizno sve njezine parametre.Zaključak ovog testiranja je možda jasan, ali ne i dovoljan. Jasno je da je kod modeliranja neuronske mreže poželjno odabrati što veći broj skrivenih čvorova, no nije jasno određeno koliki je vrijednost tog broj za neki opći slučaj. Također, iz rezultata je vidljivo da se nepromišljenim povećanjem broja skrivenih čvorova može dobit nepredviđen porast pogreške što je vezano uz kompleksnost obrađivanih podataka.

3.3. Utjecaj broja skrivenih čvorova na brzinu učenja

Ovaj se test usko nadovezuje na prethodni. Metodologija izvođenja je u potpunosti ista, osim dijela s traženim rezultatom. U ovom se slučaju umjesto pogreške mreže mjerio prosječan broj epoha potrebnih da bi se postigla zadana maksimalna pogreška mreže (0.001). Bitno je napomenuti da je kao maksimalni broj epoha određena brojka 5000, te se u tom slučaju iteracija testiranja nasilno prekidala kako bi se započela nova. Rezultati testiranja su prikazani sljedećim grafom:

U gornjem se grafu mogu naći jasne poveznice s rezultatima prethodnog testiranja. Naime, u ovom se slučaju također vidi da se povećanjem broja skrivenih čvorova dobivaju bolji rezultati, no uz to je jasno vidljivo da nakon određene brojke skrivenih čvorova dolazi do polaganog ustaljenja brzine procesa učenja, kao i naknadnog naglog usporenja. Dobiveni rezultati samo potvrđuju zaključak iz prethodnog testa – u nesrazmjernom porastu kompleksnosti neuronske mreže s obzirom na ulazni skup podataka, mreža (jednostavno) nakon određenog broja skrivenih čvorova počinje “slabije“ učiti i više nije u stanju u potpunosti postati ekspertna s obzirom na svoje mogućnosti.

26

Slika 13: Graf s prikazom brzine učenja u odnosu na broj skrivenih čvorova u mreži

Page 30: Otkrivanje znanja primjenom neuronskih mreža

3.Praktični uradak

3.4. Promjena vrijednosti pogreške kroz proces učenja

U početku praktične primjene neuronskih mreža može se pomisliti da se proces učenja sastoji od par prolazaka (epoha) kroz sve jedinke trenažnog skupa. Nakon dobivanja neprihvatljivih i ponekad zbunjujućih rezultata pokušava “popraviti“ mrežu podešavanjem parametara, da bi na kraju dobio još gore rezultate.Ovim se testiranjem htio dati okvirni uvid u red veličine potrebnog broja epoha učenja, kako bi se barem nekome olakšao (ili možda otklonio) spomenuti problem početnika.Dobivene brojke u ovom testu predstavljaju prosječan rezultat izvođenja u 100 slučajeva, za svaki trenažni skup posebno, korištenjem mreže s 16 skrivenih čvorova – vidjeli smo u prethodnim testovima da je ovo okvirno optimalna brojka skrivenih čvorova za sva tri trenažna skupa. Rezultati testiranja su prikazani sljedećim grafom:

Kako se i moglo vidjeti u prethodnim testovima, neuronskoj mreži je prvi trenažni skup najlakši za naučit. U ovom je slučaju riječ o samo oko 120 epoha. Treći je nešto složeniji, no nakon 500 epoha i on je skoro u potpunosti naučen, dok je za drugi skup potrebno i više od 1000 epoha.Graf je jasan i pregledan te sam po sebi nameće zaključak. Veći broj epoha uvijek daje bolje rezultate učenja neuronskih mreža, te je jedino stvar kompleksnosti učenog (trenažnog) skupa podataka koliki je taj broj epoha dovoljan.Zanimljivo je primjetiti da se u slučaju prvog trenažnog skupa prosječna pogreška u početku polako dizala, što i nije tako rijedak slučaj. U počecima nastajanja ovog praktičnog uratka korištena je vrlo spora implementacija neuronske mreže, napisana u programskom jeziku Python. Radi usporedbe, brzina je bila takva da što u ovom slučaju vremenski predstavlja red veličine epohe tamo je bio red veličine ciklusa.

27

Slika 14: Graf s prikazom dobivene prosječne pogreške s obzirom na tijek učenja

Page 31: Otkrivanje znanja primjenom neuronskih mreža

3.Praktični uradak

3.5. Utjecaj broja skrivenih čvorova i koeficijenta učenja na brzinu učenja

U ovom su završnom dijelu predstavljeni rezultati testiranja utjecaja, vjerojatno dvaju najbitnijih parametara, vrijednosti broja skrivenih čvorova i koeficijenta učenja na brzinu učenja mreže, te su rezultati predstavljeni pripadnim trodimenzionalnim reljefnim grafovima.Za potrebe testiranja je napravljeno 160 neuronskih mreža, svaka sa svojim parom parametara u rasponu od 1 do 16 skrivenih čvorova te koeficijentom učenja od 0.1 do 0.9. Za svaku mrežu su bilježeni prosječni rezultati (krajnji broj epoha) s obzirom na 30 ponavljanja faze učenja, s maksimalnim brojem epoha od 5000 te traženom maksimalnom pogreškom mreže od 0.001. Za svaki je trenažni skup cjeloukupni proces pokrenut ispočetka te su kao rezultat dobivena tri pripadna grafa s obzirom na upotrijebljeni trenažni skup podatak.

U sva tri grafa je jasno vidljivo da mali broj skrivenih čvorova znači i sporije učenje, bez obzira na odabrani koeficijent učenja. Kod vrlo malog broja čvorova to znači čak i dosezanje vlastitih granica te stanka na određenoj pogrešci mreže ispod koje se više ne ide (ovo nije bilo predmet nijednog provedenog testa, no zaključak se sam po sebi nameće).Povećanjem broja skrivenih čvorova dolazi do pojave koja je najočitija u rezultatima prvog trenažnog skupa, a to je da se najlošija vrijednost koeficijenta učenja kreće oko brojke 0.5. U ostalim slučajevima možda i nije toliko izraženo, ali se vrlo dobro vidi da se reljef naborava (u vis) oko spomenute vrijednosti. Također se vidi iz danih grafova da se optimalna vrijednost koeficijenta učenja može pronaći u susjedstvu brojeva 0.3 i 0.7, barem u ova tri testirana slučaja.

28

Slika 15: Utjecaj broja skrivenih čvorova i koeficijenta učenja na brzinu učenja u slučaju prvog trenažnog skupa podataka (MONK #1)

Page 32: Otkrivanje znanja primjenom neuronskih mreža

3.Praktični uradak

Zanimljivo je primjetiti da ne postoji značajnija disproporcija lijeve (<0.5) i desne (>0.5) strane grafova s obzirom na koeficijent učenja, dok se korištenjem literature možda stiče drukčiji dojam [3.]. Naime, na više mjesta se upozorava da se izbjegavaju premale (dolazi do presporog učenja, ali kvalitetnog) i prevelike (dolazi do prebrzog, ali nekvalitetnog učenja) vrijednosti za koeficijent učenja, što korisnika navodi na pomisao da se optimalna vrijednost kreće negdje oko sredine (0.5), dok se ovim testiranjem pokazalo upravo suprotno.

29

Slika 16: Utjecaj broja skrivenih čvorova i koeficijenta učenja na brzinu učenja u slučaju drugog trenažnog skupa podataka (MONK #2)

Slika 17: Utjecaj broja skrivenih čvorova i koeficijenta učenja na brzinu učenja u slučaju trećeg trenažnog skupa podataka (MONK #3)

Page 33: Otkrivanje znanja primjenom neuronskih mreža

3.Praktični uradak

Iz rezultata je također vidljivo da se povećanjem broja skrivenih čvorova djelomično smanjuje utjecaj koeficijenta učenja, osim u prvom slučaju u kojem je prerano došlo do “savladavanja kompleksnosti gradiva“ spomenutog u 3.2..U ovom trenutku je možda nezahvalno davati konkretan zaključak, no jasna je jedna stvar – za postizanje optimalnih rezultata poželjno je odabrati koeficijent učenja negdje u polovici donje (<0.5) ili gornje (>0.5) domene vrijednosti.

30

Page 34: Otkrivanje znanja primjenom neuronskih mreža

4.Zaključak

4. ZaključakU prvom dijelu praktičnog uratka došli smo do zaključka da odabir algoritma za učenje znatno utječe na brzinu procesa učenja neuronske mreže, ovisno o prirodi ulaznih podataka [18.].Zajednički zaključak drugog i trećeg dijela praktičnog uratka je taj da se povećanjem broja skrivenih čvorova, do određene granice, dobivaju bolji rezultati procesa učenja neuronske mreže. Naime, ukoliko se u upotrijebi prevelik broj skrivenih čvorova s obzirom na kompleksnost problema, te ukoliko neuronsku mrežu promatramo kao sustav s određenim brojem nepoznanica (vrijednosti parametara), jasno je da dolazi do nemogućnosti kvalitetnog učenja mreže.U četvrtom dijelu je pokazano da se povećanjem broja epoha dobivaju bolji rezultati učenja, odnosno manja pogreška mreže. Valja napomenuti da je u ovom slučaju izbjegnuta pojava prenaučenosti (2.9.).Zaključak zadnjeg dijela praktičnog uratka je taj da je za postizanje optimalnih rezultata učenja poželjno odabrati koeficijent učenja negdje u polovici donje (<0.5) ili gornje (>0.5) domene vrijednosti.

31

Page 35: Otkrivanje znanja primjenom neuronskih mreža

5.Literatura

5. Literatura1. Trevor Hastie, Robert Tibshirani, Jerome Friedman: “The Elements of

Statistical Learning – Data Mining, Inference and Prediction“, Springer, 2009.2. Michael W. Berry, Murray Browne: “Lecture Notes in Data Mining“, World

Scientific Publishing Co. Pte. Ltd., 2006.3. Glenn J. Myatt: “Making Sense of Data – A Practical Guide to Exploratory

Data Analysis and Data Mining“, John Wiley & Sons, Inc., 2007.4. Lipo Wang, Xiuju Fu: “Data Mining with Computational Intelligence“, Springer,

2005.5. Keith J. Devlin, Gary Lorden: “The numbers behind NUMB3RS“, Plume,

2007.6. Max A. Bramer: “Knowledge discovery and data mining“, IET, 1999.7. Kosko Bart: “Neural networks and fuzzy systems“, Prentice Hall, 1992.8. Raul Rojas: “Neural Networks - A Systematic Introduction“, Springer-Verlag,

Berlin, New York, 1996.9. Cynthia Krieger: “Neural Networks in Data Mining“,

http://www.cs.uml.edu/~ckrieger/user/Neural_Networks.pdf, 1996.10. Kurt Thearling, Ph.D.: “An Introduction to Data Mining“,

http://www.thearling.com/dmintro/dmintro.pdf 11. Two Crows Corporation: “Introduction to Data Mining and Knowledge

Discovery“, http://www.twocrows.com/intro-dm.pdf 12. StatSoft, Inc.: “Neural Networks“,

http://www.statsoft.com/textbook/stneunet.html, 2008.13. Wikipedia: “Artificial neural network“,

http://en.wikipedia.org/wiki/Artificial_neural_network, 2009.14. Wikipedia: “Mean squared error“,

http://en.wikipedia.org/wiki/Mean_squared_error, 2009.15. Wikipedia: “Rprop“, http://en.wikipedia.org/wiki/Rprop, 2009.16. Niels Mache: “Quickprop“,

http://www.inf.ufsc.br/~patrec/SNNS/UserManual/node149.html, 1995.17. Skupina autora: “The MONK's Problems – A Performance Comparison of

Different Learning algorithms“, Technical Report CS-CMU-91-197, Carnegie Mellon University, 1991.

18. Steffen Nissen: “Fast Artificial Neural Network Library – Reference Manual“, http://leenissen.dk/fann/html/files/fann-h.html

32

Page 36: Otkrivanje znanja primjenom neuronskih mreža

5.Literatura

19. Internet FAQ Archive: “How many hidden units should I use?“, http://www.faqs.org/faqs/ai-faq/neural-nets/part3/section-10.html

20. Kevin Gurney: “An introduction to neural networks“, CRC Press, 1997.21. Christopher M. Bishop: “Neural Networks for Pattern Recognition“, Oxford

University Press, 2005.22. Lou Mendelsohn: “Training Neural Networks“, Market Technologies,

http://www.tradertech.com/training.asp, 1993.23. H. Lohninger: “Cross-Validation“, Fundamentals of Statistics,

http://www.statistics4u.info/fundstat_eng/cc_cross_validation.html, 2009.

33

Page 37: Otkrivanje znanja primjenom neuronskih mreža

5.Literatura

Dodatak A#include <stdio.h>#include <string.h>#include <math.h>

#include "fann.h"

#define RESULT_TABLE_MAX 5000float result_table[RESULT_TABLE_MAX];

int FANN_API test_callback(struct fann *ann, struct fann_train_data *train, unsigned int max_epochs, unsigned int epochs_between_reports, float desired_error, unsigned int epochs){ result_table[epochs] += fann_get_MSE(ann); return 0;}

int main(int argc, char** argv){ const unsigned int num_layers = 3; float desired_error = 0; unsigned int epochs_between_reports = 0;

unsigned int max_epochs; unsigned int num_neurons_hidden;

struct fann *ann; struct fann_train_data *train_data, *test_data;

unsigned int i = 0, j = 0, k = 0; float l = 0;

char temp[255]; float sum; int numruns, testnum;

if (argc != 3) { printf("Usage: ann <dataset_name> <test_num>\n"); exit(-1); } else testnum = atoi(argv[2]);

train_data = fann_read_train_from_file(strcat(strcat(strcpy(temp, "./data/"), argv[1]), ".train"));

34

Page 38: Otkrivanje znanja primjenom neuronskih mreža

5.Literatura

test_data = fann_read_train_from_file(strcat(strcat(strcpy(temp, "./data/"), argv[1]), ".test"));

if (testnum == 1) //odnos između broja skrivenih neurona i prosječne pogreške mreže { numruns = 20; desired_error = 0; max_epochs = 5000; for (num_neurons_hidden = 1; num_neurons_hidden <= 64; num_neurons_hidden++) { ann = fann_create_standard(num_layers, train_data->num_input, num_neurons_hidden, train_data->num_output);

fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC_STEPWISE);

fann_set_activation_function_output(ann, FANN_SIGMOID_STEPWISE); fann_set_training_algorithm(ann, FANN_TRAIN_INCREMENTAL);

sum = 0; for (j = 0; j<numruns; j++) { fann_randomize_weights(ann, -0.1, 0.1); fann_train_on_data(ann, train_data, max_epochs, epochs_between_reports, desired_error); fann_reset_MSE(ann); for(i = 0; i < fann_length_train_data(test_data); i++) fann_test(ann, test_data->input[i], test_data->output[i]);

sum += fann_get_MSE(ann); } printf("%f\n", sum/numruns); fann_destroy(ann); } }

else if (testnum == 2) //veza između broja skrivenih čvorova i broja potrebnih epoha za željenu pogrešku { numruns = 100; desired_error = 0.001; max_epochs = 5000; for (num_neurons_hidden = 1; num_neurons_hidden <= 64; num_neurons_hidden++) { ann = fann_create_standard(num_layers, train_data->num_input, num_neurons_hidden, train_data->num_output);

35

Page 39: Otkrivanje znanja primjenom neuronskih mreža

5.Literatura

fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC_STEPWISE); fann_set_activation_function_output(ann, FANN_SIGMOID_STEPWISE); fann_set_training_algorithm(ann, FANN_TRAIN_INCREMENTAL);

sum = 0; for (j = 0; j<numruns; j++) { fann_randomize_weights(ann, -0.1, 0.1); for (k = 0; k<max_epochs; k++) if (fann_train_epoch(ann, train_data) <= desired_error) break; fann_reset_MSE(ann); sum += k; } printf("%f\n", sum/numruns); fann_destroy(ann); } }

else if (testnum == 3) //veza između broja epoha i prosječne pogreške { numruns = 100; desired_error = 0; max_epochs = 1000; epochs_between_reports = 10; num_neurons_hidden = 16;

for (i = 0; i<RESULT_TABLE_MAX; i++) result_table[i] = 0;

ann = fann_create_standard(num_layers, train_data->num_input, num_neurons_hidden, train_data->num_output); fann_set_callback(ann, test_callback); fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC_STEPWISE); fann_set_activation_function_output(ann, FANN_SIGMOID_STEPWISE); fann_set_training_algorithm(ann, FANN_TRAIN_INCREMENTAL);

for (j = 0; j<numruns; j++) { fann_randomize_weights(ann, -0.1, 0.1); fann_train_on_data(ann, train_data, max_epochs, epochs_between_reports, desired_error); }

fann_destroy(ann);

result_table[1] /= numruns; printf("%f\n", result_table[1]); for (i = 10; i<max_epochs; i+=epochs_between_reports)

36

Page 40: Otkrivanje znanja primjenom neuronskih mreža

5.Literatura

{ result_table[i] /= numruns; printf("%f\n", result_table[i]); } }

else if (testnum == 4) //veza između algoritma za učenje i broja potrenih epoha { numruns = 50; desired_error = 0.001; max_epochs = 5000; epochs_between_reports = 0;

int algs[] = {FANN_TRAIN_INCREMENTAL, FANN_TRAIN_BATCH, FANN_TRAIN_RPROP, FANN_TRAIN_QUICKPROP}; for (i = 0; i<4; i++) { sum = 0; for (num_neurons_hidden = 1; num_neurons_hidden <= 16; num_neurons_hidden++) { ann = fann_create_standard(num_layers, train_data->num_input, num_neurons_hidden, train_data->num_output);

fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC_STEPWISE); fann_set_activation_function_output(ann, FANN_SIGMOID_STEPWISE); fann_set_training_algorithm(ann, algs[i]);

for (j = 0; j<numruns; j++) { fann_randomize_weights(ann, -0.1, 0.1); for (k = 0; k<max_epochs; k++) if (fann_train_epoch(ann, train_data) <= desired_error) break; fann_reset_MSE(ann); sum += k; } fann_destroy(ann); } printf("%f\n", sum/(16*numruns)); } }

else if (testnum == 5) //veza između koeficijenta učenja i broja neurona s brojem potrebnih epoha { numruns = 30; desired_error = 0.001;

37

Page 41: Otkrivanje znanja primjenom neuronskih mreža

5.Literatura

max_epochs = 5000; epochs_between_reports = 0;

for (l = 0.1; l<1.0; l+=0.1) { for (num_neurons_hidden = 1; num_neurons_hidden <= 16; num_neurons_hidden++) { ann = fann_create_standard(num_layers, train_data->num_input, num_neurons_hidden, train_data->num_output);

fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC_STEPWISE);

fann_set_activation_function_output(ann, FANN_SIGMOID_STEPWISE); fann_set_training_algorithm(ann, FANN_TRAIN_INCREMENTAL); fann_set_learning_rate(ann, l);

sum = 0; for (j = 0; j<numruns; j++) { fann_randomize_weights(ann, -0.1, 0.1); for (k = 0; k<max_epochs; k++) if (fann_train_epoch(ann, train_data) <= desired_error) break; fann_reset_MSE(ann); sum += k; } printf("%d,%f,%f\n", num_neurons_hidden, l, sum/numruns); fann_destroy(ann); } } }

fann_destroy_train(train_data); fann_destroy_train(test_data);

return 0;}

38