Računari kakve danas poznajemo imaju program po kome rade i mogu da reše svaki problem za koji je taj program namenjen. Tolerancija na nepredviđene situacije je vrlo niska, pa ako se na ulazima pojavi podatak za koji taj program nije predviđen, obrada se zaustavlja. Još je gori slučaj ako se ta nepredviđena situacija dogodi na nižem nivou, u izvršnom kodu, jer će onda doći do kraha programa i prestaće izvršavanje procesa ili, u najgoroj varijanti, nastaće „plavi ekran smrti“ s nizom nerazumljivih brojeva, koji prosečnom korisniku služe samo za nerviranje.
Na drugom principu
Mnogi od nas su već čuli da postoje neuronske mreže koje obrađuju podatke na drugi način, ali je malo poznato da se one već uveliko koriste u praksi. Mada su početni rezultati sjajni i za takav pristup možemo reći da mnogo obećava, on se nalazi u povoju i neizvesno je koliko će vremena proći dok se ne odomaći u našim domovima.
Treba odmah reći da neuronske mreže ne pretenduju na isto polje primene i da ne mogu da konkurišu digitalnim sistemima ovakvim kakve poznajemo. Princip njihovog rada je do te mere različit, da one ni po čemu ne liče na standardni sistem za digitalnu obradu podataka. Jedina sličnost je da imaju ulazne i izlazne podatke – sve ostalo je različito.
To im daje mogućnost da budu primenjene u mnogim oblastima u kojima nije moguće primeniti klasični računar. Njihova osnovna osobina, da probleme rešavaju empirijski, a ne algoritamski, otvaraju mogućnost primene u domenima koji zahtevaju suviše složene algoritme ili čak i ne mogu da se reše algoritamski. Jedno takvo veliko polje nosi uopšteni naziv klasifikacija podataka, što nam ne govori mnogo dok ne kažemo da je to prepoznavanje oblika (slova, ljudskih lica ili bilo kojih predmeta), generisanje i prepoznavanje ljudskog govora ili drugih zvukova, kao i predikcija događaja u meteorologiji, vojsci, sportu...
Šta čini neuronsku mrežu
| (kliknite za veću sliku) |
Kao kod svake nove tehnologije, i ovde je potreban napor da bi se shvatio pricip i filozofija rada. Neuronska mreža je napravljena po uzoru na biološko nervno tkivo i u mnogo čemu ga podražava.
Svako od nas u mozgu ima oko sto milijardi neurona, a na svaki od tih neurona dovodi se oko 10.000 signala sa drugih neurona. Sve to čini veoma složenu mrežu, iz koje stižu naše refleksne radnje, instinkti, inteligencija, svest, znanje, sećanje na razne događaje i iskustva, pa i naše celokupno psihičko biće. O ovome je bilo više reči u PC #167 (jun 2010) pa nećemo sad ponavljati, nego ćemo detaljnije objasniti kako radi veštački neuron, koji se koristi u savremenim neuronskim mrežama.
Šematski prikaz veštačkog neurona (na slici) je praćen matematičkim opisom koji ne obećava baš lako razumevanje nekome kome nije blizak jezik matematike. Zato ćemo ga prevesti na „naš“ jezik: neuron ima više ulaza i jedan izlaz. Svaki od ulaza (nacrtana su četiri, a može da ih bude manje ili mnogo više) dovodi signal sa nekog od prethodnih neurona, i taj signal se množi sa tzv. težinskim koeficijentom (ovaj izraz zapamtite, jer ćemo se vraćati na njega).
Svi ulazi (a za svaki od njih postoji zaseban težinski koeficijent) se sabiraju, što nam govori simbol ∑ (suma) nacrtan u levoj polovini neurona. Takav zbir je ulazni parametar za prenosnu funkciju neurona, obeleženu slovom f (na drugom crtežu su prikazane uobičajene prenosne funkcije). Izlaz iz neurona je samo jedan, a može da se vodi na više neurona u sledećem „sloju“ mreže.
Slojevi mreže
Neuronska mreža se sastoji od većeg broja ovakvih neurona, koji su organizovani u dva ili više slojeva. Prvi sloj je uvek ulazni, a poslednji izlazni. Ako ih ima više, onda se unutrašnji slojevi zovu skriveni slojevi. Moguće je realizovati matricu i sa samo dva osnovna sloja, ali se složenije funkcije uvek realizuju sa bar jednim skrivenim slojem.
Način organizacije ovih slojeva i njihovog povezivanja čini arhitekturu ili topologiju neuronske mreže. Ona je specifična za svaki zadatak (što važi i za prenosne funkcije pojedinih neurona), ali postoje i mreže koje su sposobne da se same organizuju.
Prikazan je šematski izgled neuronske mreže sa četiri ulaza i tri izlaza. Sastoji se od tri sloja, a u skrivenom sloju ima osam neurona. Ovo je takozvana nepovratna (feed forward) mreža, jer nema povratne sprege – tok podataka (obično numeričkih vrednosti) je samo u jednom smeru, ali treba znati da postoje i povratne (feedback) mreže. Isto tako, mreže mogu da imaju i veći broj slojeva, da neke slojeve čini samo jedan neuron, a neke veoma veliki broj. Treba imati u vidu da je ovo pojednostavljena hipotetična mreža, i da u nekim slučajevima ona može da bude daleko složenija – recimo, da ima onoliko ulaza koliko piksela ima neka slika i onoliko izlaza koliko različitih motiva treba da prepozna.
Postupak učenja
| (kliknite za veću sliku) |
Svakoj od strelica (izuzev izlaznih) dodeljen je težinski koeficijent, a svaki neuron ima svoju prenosnu funkciju i takozvani nivo aktivacije, koju čini promenljiva koja je deo te funkcije. Proces učenja (treniranja) mreže svodi se na to da se ulazi pobuđuju (recimo, mreži se „pokazuju“ bit‑mape slika ili slova), pri čemu će ona na izlazima pokazivati neke numeričke vrednosti, npr. verovatnoću da je na toj slici to što treba da prepozna.
Nepovratne mreže u postupku učenja koriste takozvani algoritam sa povratnim prostiranjem (back propagation), gde mreža najpre u normalnom smeru (sleva nadesno) generiše neki izlaz, pa onda u suprotnom smeru svakom neuronu dodeljuje količinu greške (razliku između željenog i realnog izlaza), pa u trećem prolazu (ponovo sleva nadesno) koriguje težinske koeficijente vodova koji pobuđuju taj neuron.
Počinje se od nasumično postavljenih vrednosti za težinske koeficijente. Tako „neiskusna“ mreža ne može ništa da prepozna. Trening teče tako što korisnik zadaje ulazne i željene izlazne vrednosti, dok se ne podese težinske koeficijente tako da se više ne menjaju. Onda joj se promene ulazi (recimo, pokaže druga slika ili slovo), pa se ponovi postupak učenja. Ovo se ponavlja za svaki ulazni podatak, posle čega se težinski koeficijenti više ne menjaju – svaki od neurona ih ima u svojoj memoriji, i mreža je spremna za rad. Mreža, dakle, u početku pravi određene greške, a odgovarajućom promenom težinskih koeficijenata smanjuje se razlika dobijenih i zadatih izlaznih vrednosti svakog neurona.
Važan parametar je nivo korekcije težinskih koeficijenata, jer ako je posle svakog koraka treninga taj nivo suviše mali, učenje će trajati predugo, a ako je veliki, težinski koeficijenti „podivljaju“ pa se učenje obično prekine zbog prekoračenja opsega aritmetike računara. Praksa pokazuje da je najbolje početi sa malim koeficijentima, postepeno ih povećavati jer će tokom učenja korekcije biti sve manje, a onda ih opet smanjivati kako bi se vrednosti težinskih koeficijenata fino podesile.
Praktična realizacija mreže
Za razliku od mikroprocesora, neuronska mreža nije sekvencijalna, nema sistemski takt i u toku rada nije usredsređena na određene resurse, nego se podaci uniformno prostiru po celoj mreži, koja je protočna u realnom vremenu. Ako jedan deo mreže ispadne iz funkcije, to neće ozbiljno ugroziti njen rad (kao što bi ugrozilo rad mikroprocesora), a kod samoorganizujućih mreža bi drugi delovi čak mogli da preuzmu funkciju dela koji je van pogona i da odmah počnu sa učenjem, bez prekida u radu.
| (kliknite za veću sliku) |
Pored diskretnih postoje i analogne neuronske mreže, ali se one praktično i ne primenjuju. Neki proizvođači eksperimentišu sa mrežama na čipu, međutim to je još u eksperimentalnoj fazi, tako da se mreže još uvek simuliraju digitalnim kompjuterima.
Mada se neuronske mreže danas već uveliko koriste u procesnim upravljanjima, prepoznavanju teksta i likova, prognozi vremena i u sličnim domenima, treba imati u vidu da je ova tehnologija još uvek u fazi razvoja i da su sve to tek početni rezultati. Ako naše znanje o njima bude napredovalo onim tempom kojim su se razvijali digitalni kompjuteri, onda nas čekaju dramatične promene u tehničkom okruženju. Do sada je ovaj razvoj bio relativno spor, ali postoje optimistične prognoze da će veštačke neuronske mreže jednom moći da zamene ljudski mozak, jer su one sposobne da obavljaju zadatke, a da mi čak i ne znamo kako.
Neuronske mreže koje je priroda tokom evolucije ugradila u naše nervne sisteme tako su složene da je malo verovatno da ćemo uskoro moći da im konkurišemo. Tim pre što je za njihov razvoj priroda imala milijarde godina evolucije na milijardama jedinki, a mi ne možemo da dopustimo sebi taj luksuz. Osim toga, treniranje jedne prirodne neuronske mreže kod čoveka traje oko 20 godina, a to je predugo za eksperiment sa neizvesnim rezultatom.
Sledećeg meseca ćemo grubo opisati konkretan slučaj prepoznavanja teksta uz pomoć neuronske mreže (što svi postojeći OCR programi već uveliko koriste) i pozabaviti se problemima koje treba očekivati sa novim registarskim tablicama koje su, kako njihovi tvorci tvrde, dobro prilagođene mašinskom čitanju, automatskom registrovanju prekršaja i automatizovanom slanju kazni na kućnu adresu.
|