|
|
Autor: Velibor Ilić Kratak opis: Program za obučavanje neuronskih mreža na zadatom trening skupu. ANN koristi neuronske mreže sa backpropagation algoritmom obučavanja. Program je rađen kao prateći materijal magistarskog rada "Obučavanje neuronskih mreža za prepoznavanje ćiričnih slova". Abstract: Program ANN is used to
train neural networks patterns from training set.
Programski jezik: Delphi 5 Operativni sistem: Windows 95, 98, NT Datum izrade: © Avgust 1998-Juli 2000 Free
Download!!! ANN V2.3 (ann.zip 463Kb)
Softverski zahtevi Lista fajlova Objektna realizacija neuronske mreže Force Learn algoritam (učenje oblika sa najvećom greškom) Verzije programa Primeri |
English version (Google Translate)
|
Program ANN služi za obučavanje generisanje i obučavanje neuronskih mreža sa backpropagation algoritmom obučavanja.
Neuronske mreže se mogu uspešno primenjivati
na mnogim zadacima koji su ljudima jednostavni i prirodni, ali se na računarima
veoma teško implementiraju klasičnim metodama. Zbog mogućnosti učenja na
skupu primera, generalizacije i prikupljanja znanja u novim situacijama,
one su odlične za rad koji zahteva adaptivne kontrolisane sisteme. Postoje
brojne prednosti neuronskih mreža nad tradicionalnim računarskim sistemima
kao na primer: neuronske mreže mogu uspešno da obrađuju podatke sa određenim
nivoom šuma, mogu da pretrpe delimična oštećenja a pri tome da nastave
da funkcionišu pravilno. Čovek koji rešava probleme putem neuronskih mreža
ne mora poznavati složene matematičke i logičke funkcije koje povezuju
ulazne i izlazne podatke, kao što bi morao da zna da taj isti problem rešava
klasičnim programiranjem. Da bi se mreža obučila da ispravno prepoznaje
neke vrednosti, dovoljno je na odgovarajući način mreži predstaviti problem
i obučiti je na reprezentativnom skupu podataka (trening skupu), a mreža
će, ukoliko je to moguće, pronaći odgovarajuće rešenje, tj. funkciju koja
povezuje ulazne i izlazne podatke. Na žalost, još uvek ne postoje razrađene
tehnike za očitavanje znanja iz obučene neuronske mreže, kao što je to
slučaj sa ekspertnim sistemima, gde se relativno lako mogu tumačiti pravila
iz baze znanja. Neuronske mreže i klasične metode rešavanja problema (programiranja)
nisu tehnike koje se međusobno isključuju.
Neuronske mreže treba posmatrati kao proširenje
mogućnosti današnjih računara.
Iako se pristupi rešavanja problema kod neuronskih mreža i klasičnim programiranjem potpuno razlikuju, ova dva pristupa se međusobno nadopunjuju, kao što je i prikazano u programu (OCR) za prepoznavanje teksta. U ovom programu neuronsku mrežu možemo posmatrati kao crnu kutiju (nepoznatu složenu logičku funkciju). Klasičnim programiranjem se na ulaz mreže dovodi matrica koja predstavlja slovo koje želimo da identifikujemo. Nakon prolaska kroz matricu očitava se vrednost na izlazu mreže i klasičnom IF naredbom određujemo koje je slovo bilo dovedeno na ulaz matrice. Ukoliko neuronsku mrežu posmatramo na ovaj način, kao modul tj. objekat, programeri bi mogli jednostavno koristiti neuronske mreže u svojim programima bez prevelikog teoretskog znanja o načinu rada neuronskih mreža. Neuronske mreže bi u takvim programima omogućile veću fleksibilnost i mogućnost doobučavanja u realnim uslovima.
Realizovani program za obučavanje neuronskih
mreža (ANN V2.3) je univerzalan i mogao bi se upotrebiti za rešavanje niza
problema koji se mogu predstaviti u pogodnom obliku a ne samo na problem
prepoznavanja ćiriličnih slova. U radu treba posebno istaći force learn
algoritam, kojim se postižu značajni rezultati u skraćivanju obučavanja.
Takođe, ovaj algoritam povećava verovatnoću da će se neuronska mreža uspešno
obučiti. Program koji je razvijen tokom izrade ovog rada (OCR) je izrađen
u eksperimentalne svrhe, kao pratnja ovog rada. Da bi ovaj program prerastao
u pravu komercijalnu verziju, bilo bi potrebno unaprediti ga i poboljšati
pojedine delove u sledećim pravcima. Program bi funkcionisao mnogo efikasnije
ukoliko bi se usavršio algoritam za izdvajanje slova iz slike. Takođe bi
bilo dobro da se ugrade opcije za korigovanje nagiba slike (ukoliko se
tekst nalazi pod nekim uglom), razni filteri za pročišćavanje slike i bolje
razdvajanje slova od pozadine, kao i funkcije za prepoznavanje kolona,
tabela. Ova verzija programa ne prepoznaje velika i mala slova, što bi
u komercijalnoj verziji trebalo doraditi. Postojeći program bi se mogao
veoma lako preraditi za prepoznavanje latiničnih slova ili nekih drugih
znakova/simbola. Savremeni programi za prepoznavanje teksta imaju ugrađenu
podršku za skener, tako da se slike mogu preuzimati direktno sa skenera.
Program za prepoznavanje teksta bi se mogao poboljšati integrisanim sistemom
za ispravljanje nepravilnih reči (spell checker) i eventualno sistemom
za gramatičku proveru reči u rečenici. I pored ovih navedenih nedostataka,
realizovani program pokazuje dobre rezultate pri prepoznavanju teksta.
|
|
|
|
|
|
| ANN.EXE | Program za obučavanje neuronskih mreža. |
| Ostali fajlovi se nalaze u poddirektorijumu DATA i imaju sledeće značenje: | |
| *.INI | Preko ovog fajla se postavlja konfiguracija neuronske mreže, kao i parametri za praćenje obučavanja. |
| *.INP | Podaci kojima se neuronska mreža obučava da ih prepoznaje (ulazi). |
| *.OUT | Podaci koji se očekuju na izlazu neuronske mreže. |
| *.NET | Ovaj fajl nastaje snimanjem svih važnih koeficijenata mreže. U njemu se nalaze stanja threshold i težinskih koeficijenata svakog od neurona koji se nalazi u mreži. |
| Fajlovi za praćenje obučavanja neuronske
mreže.
Generišu se tokom obučavanja neuronske mreže. |
|
| *.ERR | Fajlovi sa ekstenzijom *.ERR omogućuju praćenje kretanja grešaka tokom obučavanja neuronske mreže |
| *.LOG | Preko ovih fajlova se može pratiti kretanje greške na svakom od izlaza neuronske mreže za svaki od oblika na ulazu. |
|
|
|
|
Prilikom obučavanja neuronskih mreža može se desiti da se greška na izlazu mreže za pojedine ulazne podatke povećava umesto da se smanjuje. Kada se greška poveća na 100% često se dešava da mreža koja se nađe u takvom stanju ne može da popravi grešku čak i posle relativno velikog broja iteracija. Takođe je interesantno da mreža može veoma brzo naučiti da ispravno prepoznaje neke ulazne podatke, dok je za neke druge potreban veoma veliki broj iteracija. Idealno bi bilo da se greške ravnomerno smanjuju tokom obučavanja do željenih vrednosti.
U ovom programu za obučavanje neuronskih mreža prvi put je upotrebljena metoda nazvana Force learn kojom se neuronska mreža obučava samo oblicima iz obučavajućeg skupa kod kojih se javlja najveća greška. Da bi se obezbedilo ravnomernije obučavanje, tj. da se izbegne situacija da se mreža za neke ulaze obučava brže od ostalih, upotrebljena je sledeća taktika. Mreža se obučava samo ulaznim podacima kod koji se pojavljuje najveća greška.
U prethodnoj iteraciji se beleži greška
najlošijeg ulaza (maksimalna greška) u promenljivu Granica. Na ulaze mreže
se redom dovode vrednosti iz obučavajućeg skupa i ispituje se razlika između
dobivenih i željenih rezultata (Pat_Err), ali se korigovanje parametara
vrši samo za one ulazne podatke koji imaju rezultate približne najlošijim
rezultatima iz prethodne iteracije.
if pat_err>=(granica-(granicax0.20))
Najbolji rezultati su se pokazali ako se uzme opseg 10-20% najlošijih rezultata. Radi postizanja boljih rezultata pri obučavanju, ovaj algoritam se može koristiti kombinovan sa algoritmom slučajnog redosleda biranja uzoraka iz obučavajućeg skupa (Random). U slučajevima kada se na srednjem sloju nalazi minimalan broj neurona, dešavalo se da je mrežu takve konfiguracije moguće uspešno obučiti samo primenom Force Learn algoritma.
Glavni motiv za izradu Force Learn algoritma bio je postizanje veće sigurnosti prilikom obučavanja mreže, ali je njegovom primenom postignut još jedan veoma važan efekat, a to je skraćivanje vremena i smanjivanje broja iteracija potrebnih za obučavanje mreže.
Force learn algoritam se pokazao naročito uspešnim u situacijama u kojima normalnim redosledom obučavanja procenat tačnih izlaza dostiže neku vrednost od oko 95-99% i dalje veoma slabo raste ili gotovo da ne raste. Takođe, u toj situaciji maksimalna greška dostiže vrednost približno 1 a prosečna greška opada veoma polako. U ovakvoj situaciji, da bi se mreža u potpunosti obučila potrebno je upotrebiti neuporedivo veći broj iteracija u odnosu na već upotrebljen broj. Upotrebom force learn algoritma se izbegavaju ovakve situacije, pošto maksimalna greška mnogo brže opada nego kada se primenjuju uobičajeni načini obučavanja.
|
|
Verzija 1.0 realizovana je na programskom jeziku Borland Pascal 7.0 (DOS verzija).
|
|
Konfiguracija mreže je sledeća:
Troslojna neuronska mreža sa backpropagation
algoritmom obučavanja.
Broj neurona na ulaznom sloju (broj ulaza):
12x12 = 144
Broj neurona na srednjem sloju: 35
Broj neurona na izlaznom sloju (broj izlaza):
5
Broj primera kojima se mreža obučava:
1590 (30 slova u više varijanti)
Obučavanje je vršeno na trening skupu od 1590 slova. Da bi se dobio toliko veliki skup ulazno-izlaznih podataka, napisan je program koji automatski izdvaja slovo po slovo sa slike i pravi fajlove u odgovarajućem formatu za obučavanje mreže. Za obučavanje ove mreže korišćeni su fontovi: Arial, Times New Roman i Courier New. Slova su pisana u oblicima normalno (Normal), ukošeno (Italic), i podebljano (Bold). Takođe su upotrebljene tri veličine fonta koje su zatim skaliranjem svedene na veličinu 12x12. Za sve tipove slova su korišćena velika i mala slova.
Pri obučavanju su upotrebljene metode obučavanja Random i Force learn.
Vreme potrebno za obučavanje mreže iznosi 02:12:53 sati bez prekida na računaru Celeron 333. Da bi se mreža obučila, bilo je potrebno 667 iteracija. Maksimalna greška je iznosila 0.098874 a prosečna greška je iznosila 0.00573.
Free
Download!!! ANN V2.3 (ann.zip 463Kb)
| Poslednja izmena 08.09.2000.
Autor: Velibor Ilić Adresa ove stranice je:http://SOLAIR.EUnet.rs/~ilicv/ann.html |