Umjetne neuronske mreže

1. Neuro-računarstvo

Iako danas većinu podataka koje ne obrađujemo snagom vlastita uma obrađujemo digitalnim računalom, pogrešna je slika svijeta u kojem upravo računala obrađuju većinu podataka. Digitalna računala svakodnevno obrađuju doista ogromnu količinu podataka - zapravo gotovo sva automatizirana obrada radi se pomoću računala. No, to je tek malen dio podataka naspram onih koji se neprestano obrađuju u mozgovima živih bića što nastoje preživjeti u svojoj okolini. Ako obradu podatka promatramo na spomenuti način, shvaćamo želju za ostvarenjem drugačijeg koncepta kojim bi bilo moguće imitirati obradu podataka kakva već milijunima godina postoji u prirodi.

Područje umjetne inteligencije stremi ka ostvarenju imitacije ljudskog mozga, odnosno njegovu pretakanju u umjetan oblik. Čovjek pokazuje kreativnost koja se očituje u sposobnosti izbora ispravnih hipoteza i pokretanja iskustava i vođenja tih iskustava na temelju logičkih pravila. Čovjek je osim toga sposoban učiti koristeći se različitim strategijama, a učenje je još jedan bitan aspekt umjetne inteligencije koji sustavu omogućava da obavlja promjene nad samim sobom. Stoga je opravdano smatrati da bi sustav koji uspješno oponaša rad ljudskog mozga bio upravo – inteligentan.

Danas znamo da se ljudski mozak sastoji od velikog broja živčanih stanica (neurona), koji pri obradi različitih vrsta informacija rade paralelno. Neurofiziološka istraživanja, koja su nam omogućila bolje razumijevanje strukture mozga, pa čak i kognitivna psihologija – koja promatra obradu podataka čovjeka na makro-razini - daju naslutiti da je modelu mozga najsličniji model u kojem brojni procesni elementi podatke obrađuju paralelno. Područje računarstva koje se bavi tim aspektom obrade informacija zovemo neuro-računarstvo, a paradigmu obrade podatka umjetnom neuronskom mrežom (engl. Artifical Neural Network, ANN).

Ideja potiče još iz 1940. g, kada McCulloch i Pitts (Massachusetts Institute of Technology), istražujući neurofiziološke karakteristike živih bića, objavljuju matematički model neuronske mreže u okviru teorije automata. Međutim, procesna moć ondašnjih računala nije još bila dorasla implementaciji umjetne neuronske mreže. Tek u kasnim pedesetima, pojavom LSI računala, pojavila su se i prva praktička ostvarenja. Neuronske mreže zatim opet padaju u zaborav, te u trajanju od dvadeset godina istraživanje tog područja gotovo da je bilo zaustavljeno. Umjetne neuronske mreže vraćaju se na scenu umjetne inteligencije 1990, da bi danas postale vodeći i gotovo nezaobilazan koncept pri razvoju inteligentnih sustava.

 

2. Umjetni neuron

Za razumijevanje sposobnosti mozga nužno je upoznati građu njegova sastavna dijela: neurona (živčane stanica). Ljudski mozak sastavljen je od oko 100 000 000 000 neurona kojih ima više od 100 vrsta. Svaki je neuron u prosjeku povezan s 10 000 drugih neurona. Četiri su osnovna dijela neurona: tijelo stanice (soma), skup dendrita (ogranaci), akson (dugačke cjevčice koje prenose električke poruke) i niza završnih članaka:

Funkcionalnost biološkog neurona imitira McCulloch-Pitts model umjetnog neurona, tzv. Threshold Logic Unit (TLU). Model koristi slijedeću analogiju: signali su opisani numeričkim iznosom i na ulazu u neuron množe se težinskim faktorom koji opisuje jakost sinapse (spojnog sredstva dvaju neurona); signali pomnoženi težinskim faktorima zatim se sumiraju analogno sumiranju potencijala u tijelu stanice - ako je dobiveni iznos iznad definirana praga, neuron daje izlazni signal.

U općem slučaju, umjetni neuron umjesto funkcije praga može imati i neku drugu funkciju, tzv. prijenosnu funkciju (transfer funkcija, aktivacijska funkcija). Općeniti model umjetnog neurona dan je na sljedećoj slici:

Ulazne signale, njih ukupno n, označavamo sa  x1, x2,... xn. Težine označavamo sa w1, w2, ... wn. Ulazni signali uglavnom su realni brojevi iz intervala [-1,1] (ili [0,1]). Težinska suma net dana je izrazom:

 

ali se zbog kompaktnosti često dogovorno uzima da je vrijednost praga theta = -w0 te se dodaje ulazni signal x0 s fiksiranom vrijednošću 1, pa pišemo jednostavnije:

 

dok je izlaz y rezultat prijenosne funkcije primijenjen na dobivenu težinsku sumu:

 

Najčešći oblik prijenosne funkcije jest sigmoidalna funkcija. Ova je funkcija derivabilna što je, kako će se pokazati, bitna prednost pri postupku učenja umjetne neuronske mreže. Sigmoidalna funkcija definirana je kao:

 

uz parametar a koji određuje nagib funkcije. Sigmoidalna funkcija ponekad se naziva i logističkom funkcijom.

 

3. Umjetna neuronska mreža

Umjetna neuronska mreža u širem je smislu riječi umjetna replika ljudskog mozga kojom se nastoji simulirati postupak učenja. To je metoda rješavanja problema kod koje su ostvareni pojednostavljeni modeli što sačinjavaju biološku neuronsku mrežu. Analogija s pravim biološkim uzorom zapravo je dosta slaba jer uz učinjena pojednostavljena postoje još mnogi fenomeni živčanog sustava koji nisu modelirani umjetnim neuronskim mrežama, kao što postoje i karakteristike umjetnih neuronskih mreža koje se ne slažu s onima bioloških sustava.

Neuronska mreža jest skup međusobno povezanih jednostavnih procesnih elemenata, jedinica ili čvorova, čija se funkcionalnost temelji na biološkom neuronu. Pri tome je obradbena moć mreže pohranjena u snazi veza između pojedinih neurona tj. težinama do kojih se dolazi postupkom prilagodbe odnosno učenjem iz skupa podataka za učenje. Neuronska mreža obrađuje podatke porazdijeljenim paralelnim radom svojih čvorova.

Neke osobitosti neuronskih mreža naspram konvencionalnih (simboličkih) načina obrade podataka su sljedeće:

 

·     Vrlo su dobre u procjeni nelinearnih odnosa uzoraka.

·     Mogu raditi s nejasnim ili manjkavim podacima tipičnim za podatke iz različitih senzora, poput kamera i mikrofona, i u njima raspoznavati uzorke.

·     Robusne su na pogreške u podacima, za razliku od mnogih konvencionalnih metoda koje pretpostavljaju neku raspodjelu obilježja u ulaznim podacima.

·     Stvaraju vlastite odnose između podataka koji nisu zadani na eksplicitan simbolički način.

·     Mogu raditi s velikim brojem varijabli ili parametara.

·     Prilagodljive su okolini.

·     Moguća je njihova jednostavna VLSI implementacija.

·     Sposobne su formirati znanje učeći iz iskustva (tj. primjera).

Neuronske mreže odlično rješavaju probleme klasifikacije i predviđanja, odnosno općenito sve probleme kod kojih postoji odnos između prediktorskih (ulaznih) i zavisnih (izlaznih) varijabli, bez obzira na visoku složenost te veze (nelinearnost). Danas se neuronske mreže primjenjuju u mnogim segmentima života poput agronomije, medicine, ekonomike, strojarstva, geologije, fizike itd., najčešće za sljedeće zadatke:

 

·     raspoznavanje uzoraka,

·     predviđanje (npr. kretanje dionica),

·     obrada slike,

·     obrada govora,

·     problemi optimizacije,

·     nelinearno upravljanje,

·     obrada nepreciznih i nekompletnih podataka,

·     simulacije i sl.

 

4. Učenje neuronske mreže

Prije postupka obrade podataka umjetnu je neuronsku mrežu potrebno naučiti ili trenirati. Za razliku od tradicionalnih tehnika obrade podataka gdje je postupak obrade potrebno analitički razložiti na određeni broj algoritamskih koraka, kod neuronske mreže takav algoritam ne postoji. Znanje o obradi podataka, tj. znanje o izlazu kao funkciji ulaza, pohranjeno je implicitno u težinama veza između neurona. Te se težine postupno prilagođavaju kroz postupak učenja neuronske mreže sve do trenutka kada je izlaz iz mreže, provjeren na skupu podataka za testiranje, zadovoljavajući.

Pod postupkom učenja kod neuronskih mreža podrazumijevamo iterativan postupak predočavanja ulaznih primjera (koje često nazivamo i uzorcima mreže ili iskustvom) i eventualno očekivana izlaza.

Skup primjera za učenje često se dijeli na tri odvojena skupa: skup za učenje, skup za testiranje i skup za provjeru (validaciju). Primjeri iz prvog skupa služe za učenje u užem smislu (podešavanje težinskih faktora). Pomoću primjera iz drugog skupa čini se tijekom učenja provjera rada mreže s trenutnim težinskim faktorima kako bi se postupak učenja zaustavio u trenutku degradacije performanse mreže. Umjetnu neuronsku mrežu moguće je, naime, pretrenirati – nakon određenog broja iteracija mreža gubi svojstvo generalizacije i postaje stručnjak za obradu podatka iz skupa primjera za učenje dok preostale podatke obrađuje loše. Stalnim praćenjem izlaza iz mreže dobivenog pomoću primjera iz skupa za testiranje moguće je otkriti iteraciju u kojoj dobiveni izlaz najmanje odstupa od željenog (vidi sliku). Točnost i preciznost obrade podataka moguće je naposljetku provjeriti nad trećim skupom primjera – skupom za provjeru.

Način na koji su neuroni međusobno organizirani i povezani u mreži određuju njezinu arhitekturu. Razlikujemo četiri osnovne arhitekture:

 

·     unaprijedna mreža (engl. feedforward network) odnosno aciklička mreža,

·     mreža s povratnom vezom (engl. recurrent network),

·     lateralno povezana mreža (rešetkasta),

·     hibridne mreže.

Aciklička mreža nema povratnih veza između neurona pa signali koji krenu od ulaznih neurona nakon određenog broja prijelaza dolaze do izlaza mreže, tj. propagacija signala je jednosmjerna. Odatle i engleski naziv feedforward mreže. Kod ovakve vrste mreža razlikujemo ulazni sloj neurona, izlazni sloj i skriveni sloj. Neuroni ulaznog sloja nemaju ulaznih signala - nemaju funkcionalnost neurona - i obično pod ulaznim slojem podrazumijevamo podatke organizirane u vektor konkretnih vrijednosti. Struktura mreže obično se zadaje kao n-torka u zapisu n1´n2´..´nn kojom se označava mreža od n slojeva kod koje n1 neurona čini ulazni sloj, n2 neurona prvi skriveni sloj itd.

Posebna podvrsta acikličkih mreža su mreže kod kojih je moguće oblikovati slojeve njezinih neurona. U tom slučaju ne postoji skup od tri neurona a, b, c takav da je ulaz na c izlaz iz a i b, te da je istovremeno izlaz iz a spojen na ulaz neurona b. Mrežu kod kojih je ovaj zahtjev ispunjen nazivamo slojevitom acikličkom.

Kada je arhitektura neuronske mreže unaprijedna i kada je prijenosna funkcija umjetnih neurona derivabilna (npr. sigmoidalna funkcija), najčešće se u svrhu učenja koristi Backpropagation algoritam, opisan u nastavku.

 

5. Backpropagation algoritam

Višeslojna neuronska mreža sa sigmoidalnom funkcijom kao prijenosnom funkcijom umjetnih neurona u stanju je predstaviti nelinearne odnose ulaznih i izlaznih podataka. Takav umjetni neuron prikazan je na slici:

Učinkovita i popularna metoda učenja višeslojnih mreža jest algoritam sa širenjem pogreške unazad - Backpropagation algoritam. Algoritam koristi metodu gradijentnog spusta kako bi minimizirao nastalu pogrešku. Kod višeslojne mreže izlazni sloj može sačinjavati veći broj neurona, te se za definiciju pogreške nastale na izlazu koristi sljedeći izraz:

 

 

pri čemu su tkd i okd ciljna i stvarna izlazna vrijednost za k-ti neuron izlaznog sloja dobivene s primjerom za učenje d.

Učenje višeslojne mreže pomoću Backpropagation algoritma svodi se na pretraživanje u N-dimenzionalnom prostoru hipoteza, gdje je N ukupan broj težinskih faktora u mreži. Pogrešku u takvom prostoru možemo vizualizirati kao hiper-površinu koja može sadržavati više lokalnih minimuma. Zbog toga postupak gradijentnog spusta lako može zaglaviti u nekom lokalnom minimumu. U praksi se ipak pokazalo da algoritam unatoč tome daje vrlo dobre rezultate. Postoje razne tehnike izbjegavanja lokalnih minimuma (npr. uključenje momenta).

Algoritam Backpropagation pikazan je u nastavku. Korištena je slijedeća notacija: xij je ulaz s jedinice i u jedinicu j (izlaz jedinice i), wij je odgovarajuća težina, dn je pogreška izlaza jedinice n. Algoritam kao parametre uzima skup za učenje D, stopu učenja h, broj čvorova ulaznog sloja ni, broj čvorova izlaznog sloja no i broj čvorova skrivenog sloja nh. Mreži se predočavaju primjeri za učenje u obliku para (x, t) gdje je x vektor ulaznih vrijednosti a t vektor ciljnih izlaznih vrijednosti.

Inicijaliziraj težinske faktore slučajne vrijednosti

Dok nije ispunjen uvjet zaustavljanja čini

       Za svaki (x, t) iz D čini

       Izračunaj izlaz ou za svaku jedinicu u

       Za svaki izlazni čvor k izračunaj pogrešku dk

 

             (1)                                  

       Za svaku skrivenu jedinicu izračunaj pogrešku

 

          (2)                                   

       Ugodi svaki težinski faktor wij

 

                (3)

       gdje je

                                                 

       Kraj

Kraj

Prikazana je tzv. stohastička inačica Backpropagation algoritma. Algoritam nakon inicijalnog postavljanja težina u glavnoj petlji ponavlja predstavljanje sviju primjera mreži sve dok nije ispunjen uvjet zaustavljanja. Kao uvjet može poslužiti maksimalni dozvoljeni iznos pogreške dobivene obradom primjera iz skupa za učenje ili skupa za testiranje, zatim postupak se može zaustaviti nakon fiksnog broja iteracija i sl. Uvjet zaustavljanja ključan je parametar jer premalo iteracija rezultira lošom obradbenom sposobnosti mreže dok preveliki broj iteracija dovodi do njezina pretreniranja.

Za svaki predstavljeni primjer računa se izlaz iz mreže na način da se signali prosljeđuju od ulaznih čvorova ka izlaznima te računa izlaz svakog pojedinog čvora. U ovoj fazi algoritma signali propagiraju unaprijed, od ulaznog sloja ka izlaznom. Na osnovi odstupanja stvarnog izlaza od ciljnog, računa se pogreška i ugađaju svi težinski faktori u cilju njezine minimizacije.

Zato što primjeri za učenje određuju ciljne vrijednosti samo izlaznog sloja neurona, poznata nam je jedino pogreška izlaznog sloja (1). Kako ugađati težinske faktore neurona u skrivenom sloju? Backpropagation algoritam računa pogrešku bilo kojeg skrivenog neurona h tako da zbraja pogreške ds svih onih neurona s na koje utječe izlaz neurona h, uz dodatno množenje težinskim faktorom whs. Faktor ukazuje na to u kojoj je mjeri skriveni neuron h pridonio nastanku pogreške na izlazu jedinice s. Skup Downstream(h) jest skup svih neurona nizvodno od neurona h, tj. svi oni neuroni čiji ulazi uključuju izlaz iz neurona h. U slučaju da je neuronska mreža slojevita, tada izraz (2) možemo napisati jednostavnije: 

 

gdje m sloj u kojem se nalazi jedinica h, a m+1 je idući sloj u smjeru izlaznog sloja.

Računajući pogrešku svakog neurona, algoritam propagira pogrešku od izlaznog sloja ka ulaznome, dakle unazad kroz mrežu. Odatle i naziv Backpropagation algoritam.

 

Zagreb, veljača 2004.


prof.dr.sc. Bojana Dalbelo Bašić

Marko Čupić, dipl.ing.

Jan Šnajder, dipl.ing.

{bojana.dalbelo | marko.cupic | jan.snajder} @ fer.hr