Home
Biografija


Poslovni programi
Rečnik
PlanB

Veštačka inteligen.
Neuronske mreže
ANN
Force learn algorit.
NeuroVCL
Agenti
ENAA

OCR
OCR soft

Izrada SCADA
SmartSCADA
OPC standard

Nanotehnologija
Virtuelna učionica
EDI
Linkovi
Free Download




Velibor Ilić - Web Page
ANN V2.3 - Program za obučavanje neuronskih mreža sa backpropagation algoritmom učenja

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.
ANN is based on the backpropagation neural networks. ANN is developed as addition to masters thesis "Training neural networks for recognition Cyrillic letters".

Programski jezik: Delphi 5

Operativni sistem: Windows 95, 98, NT

Datum izrade: © Avgust 1998-Juli 2000

Free Download!!! ANN V2.3 (ann.zip 463Kb)
 
Sadržaj

Hardverski zahtevi
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)


Povezano sa:
OCR

OCR - prep. ćiriličnih slova

NeuroVCL

Veštačka inteligecija

Neuronske mreže

Force learn algorithm

ENAA

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.
 

Sledece poglavlje Prethodno poglavlje Sadrzaj
Hardverski zahtevi
Minimalna hardverska konfiguracija potrebna za korišćenje programa za obučavanje neuronskih mreža:
Sledece poglavlje Prethodno poglavlje Sadrzaj
Softverski zahtevi
Program zahteva da na računaru bude instaliran operativni sistem Microsoft Windows 95 ili noviji.
 
Sledece poglavlje Prethodno poglavlje Sadrzaj
Lista fajlova
Za obučavanje neuronska mreža koristi sledeće fajlove:
 
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.
Sledece poglavlje Prethodno poglavlje Sadrzaj
Objektna realizacija neuronske mreže
Program za obučavanje neuronskih mreža je razvijen primenom objektne metodologije. Prilikom izrade programa razvijeni su sledeći objekti: Ovi objekti se lako mogu upotrebiti i za razvoj drugih programa u kojima bi se iskoristile dobre osobine neuronskih mreža. (primer OCR V1.1)
Sledece poglavlje Prethodno poglavlje Sadrzaj
Force learn algoritam (učenje oblika sa najvećom greškom)
Neuronska mreža se obučava tako što se iz trening skupa na ulaz dovode podaci. Na izlazu mreže se dobijeni rezultati upoređuju sa očekivanim i koriguju težinski koeficijenti u cilju smanjivanja greške. Postupak se  ponavlja sve dok greška na izlazu ne bude manja od dozvoljene. Uobičajeni način obučavanja podrazumeva da se iz trening skupa podaci predstavljaju mreži konstantnim redosledom od prvog ka poslednjem podatku.

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.

Sledece poglavlje Prethodno poglavlje Sadrzaj
Verzije programa
Prva verzija programa ANN V1.0 je realizovana za DOS operativni sistem na programskom jeziku Pascal. Naredne verzije su rađene pod Windows-om na programskom jeziku Delphi.

Verzija 1.0 realizovana je na programskom jeziku Borland Pascal 7.0 (DOS verzija).

Verzija ANN V2.0 je realizovana na programskom jeziku Delphi 3.0. Razlike u odnosu na prethodnu verziju: Verzija ANN V2.1 je realizovana na programskom jeziku Delphi 4.0. Razlike u odnosu na prethodnu verziju programa.: Verzija ANN V.2.2 je realizovana na programskom jeziku Delphi 5.0 Razlike u odnosu na prethodnu verziju programa. Od prve verzije programa postignut veliki napredak u brzini obučavanja. Samim prelaskom na novije programske jezike ostvaren je veliki napredak u brzini. Razlozi za napredak u brzini leže u optimizaciji koda i primeni force learn metoda učenja. S obzirom da program izračunavanja vrši iterativno, veoma je bitno upotrebiti najoptimalniji redosled računskih operacija.
Sledece poglavlje Prethodno poglavlje Sadrzaj
Primeri
Programa obučavanje neuronskih mreža testiran je na više primera neki od njih su: Program ANN je upotrebljen prilikom obučavanje neuronske mreže koja se koristi u programu za prepoznavanje ćirilčnih slova (OCR).

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