Neuro VCL V1.0

Autor: Velibor Ilić

Abstrakt: U radu se govori o upotrebi neuronskih mreža u objektno orijentisanom programiranju. NeuroVCL komponente za Delphi predstavljaju komplet za razvoj programa na bazi neuronskih mreža sa backpropagation algoritmom. Primeri izrade aplikacije upotrebom ovih komponenata. Neki od primera sadrže i source kod koji se slobodno može preuzeti.

Abstract: In this text the appliance of neural networks at object oriented programming is being discussed. NeuroVCL components for Delphi represent development kit for building programs with backpropagation neural networks. In this text the example of program developing using these components has been given.

Programski jezik: Delphi 5

Operativni sistem: Windows 95, 98, NT

Datum izrade: © Juni, 2000

NeuroVCL Components (Delphi 6)
postavljeno za download 25.11.2001.
Download!!! NeuroVCL V1.0 (NEUROVCLD6.ZIP 69Kb)
https://www.dropbox.com/s/d2becyna22c8il9/NEUROVCLD6.ZIP?dl=0

NeuroVCL Components (Delphi 5)
postavljeno za download 05.12.2000.
Download!!! NeuroVCL V1.0 (NEUROVCL.ZIP 68Kb)
https://www.dropbox.com/s/2l6a7pip3yc5ecc/NEUROVCL.ZIP?dl=0

NeuroVCL Examples
postavljeno za download 25.11.2001.
Download source code (23KB)
https://www.dropbox.com/s/t4vg5lyluoz4z2h/neuro_examples.zip?dl=0
Rad je prezentovan na 5-tom seminaru o neuronskim mrežama (NEUREL)

Ilić, V., (2000): “NeuroVCL components for Delphi”, Seminar on Neural Network Applications in Electrical Engineering “NEUREL 2000”, Belgrade, Sponsored by IEEE Signal Processing Society, pp 130-134, IEEE Catalog Number 00EX278, ISBN 0-7803-5512-1 (Softbounded Edition), ISBN 0-7803-5512-X (Microfishe Edition), Library of Congress: 99-60930, http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=902400


      Velibor Ilic

Sadržaj
Uvod
Softverski zahtevi za upotrebu NeuroVCL komponenti
ANN 1.3 - Program za obučavanje neuronskih mreža
Objektne komponente
OBJEKAT TNNSignal
Objekat TNeuralNet
Primer 1 - upotreba NeuroVCL komponenti
Primer 2 - binarne funkcije
Primer 3 - prepoznavanje oblika
Zaključak
Literatura

Uvod
Teoretski se neuronske mreže mogu obučiti za izračunavanje svake izračunljive funkcije. Međutim u praksi, neuronske mreže najbolje rezultate pokazuju na području klasifikacije, prepoznavanju oblika, prepoznavanju govora, za obradu informacija koji sadrže određenu količinu šuma, funkcije aproksimacije, na problemima koji imaju dosta dostupnih podataka za trening ili na problemima koji zahtevaju brzu primenu odgovarajućeg pravila u zavisnosti od ulaznih podataka.

To je upravo klasa problema koje se algoritamski teško rešava (upotrebom klasičnih programskih jezika). Predstavljanjem neuronske mreže kao objektne komponente se mogu na najbolji način iskoristiti prednosti ova dve različita pristupa.

Softverski zahtevi za upotrebu NeuroVCL komponenti
1. Windows 95/98, NT/2000
2. Borland Delphi 5.0
3. NeuroVCL komponente
4. ANN V2.3 - program za obučavanje neuronskih mreža

ANN 1.3 - Program za obučavanje neuronskih mreža
Program ANN se bazira na neuronskim mrežama sa backpropagation algoritmom obučavanja. Ovaj program se koristi za obučavanje neuronskih mreža koje se upotrebljavaju u programima napisanim pomoću NeuroVCL komponenti.


Slika 1. - ANN V2.3 - program za obučavanje neuronskih mreža

Pomoću programa ANN neuronska mreža se obučava primerima iz obučavajućeg skupa. Za obučavanje neuronske mreže potrebno odrediti konfiguraciju mreže i trening skup na kome obučavamo neuronsku mrežu.

Za određivanje konfiguracije mreže i trening skupa su potrebni sledeći fajlovi:

Ekstenzija Opis
*.INI Ovaj fajl opisuje konfiguraciju neuronske mreže: broj slojeva, broj neurona po slojevima, koeficijent učenja, parametre za praćenje obučavanja.
*.INP ulazi - podaci kojima se neuronska mreža obučava da ih prepoznaje.
*.OUT izlazi - Podaci koji se očekuju na izlazu neuronska mreža.

Fajlovi koji nastaju nakon obučavanja neuronske mreže:

Ekstenzija Opis
*.NET Ovaj fajl nastaje snimanjem svih važnih koeficijenata mreže. U njemu se nalaze stanja težinskih koeficijenata i threshold koeficijenta svih neurona u mreži.
*.ERR U ovaj fajl se beleže promene minimalne, maksimalne i prosečne greške na kraju svake iteracije.
*.LOG U ovom fajlu se upoređuje dobijena i očekivana vrednost na izlazu nakon svake XX iteracije za sve podatke iz trening skupa.
*.PAR U ovaj fajl se snimaju promene težinskih koeficijenata i threshold koeficijenata svih neurona u mreže.

Nakon uspešnog obučavanja težinski koeficijenti se snimaju na disk (fajl sa ekstenzijom *.NET) a kasnije se učitavaju u neuro komponente koje se koriste u krajnoj aplikaciji.

Program ANN je napisan u programskom jeziku Delphi 5. Razvijan je objektnom metodologijom, u toku razvoja programa su nastali objekti: TArray, TNeuron, TNet. Ovi objekata su upotrebljeni kao osnova za razvoj NeuroVCL komponente za Delphi.

Detaljnije...

OBJEKTNE VCL KOMPONENTE ZA DELPHI
Klase predstavljaju osnovu objektno orijentisanog programiranja. Klasa je skup međusobno povezanih polja i metoda (funkcija i procedura) koje se koriste za izvršavanje određenog programskog zadatka. Klasa je skup podataka, a objekti su konkretni primerci klasa.

Programiranje u Delphi-ju se oslanja na VCL klase objektnih komponenti (VCL - Visual Components Class).

OBJEKAT TNNSignal
Preko objekata tipa TNNSignal se vrši promena ulaznih vrednosti neuronske mreže i očitavaju vrednosti na izlazu mreže nakon obrade.

Izgled komponente na formi

Osobine:

Naziv osobine Tip Opis
Limited Boolean Ukoliko je ove osobine true program ne dozvoljava prekoračenje vrednosti min/max
Max Integer Maksimalna vrednost signala ako je vrednost ograničena
Min Integer Minimalna vrednost signala ako je vrednost ograničena
Name String Naziv objekta
Value Real Vrednost signala

Događaji
OnChange - Događaj se izvršava ukoliko se promeni vrednost Value

Metode
Constructor Create - Kreira objekat tipa TNNSignal
Destructor Destroy - Oslobađa memoriju koju zauzima objekat

Objekat TNeuralNet
Objekat tipa TNeuralNet predstavlja neuronsku mrežu. Ovaj objekt vrši obradu ulaznih signala (TNNSignal) i izračunava odgovarajuće vrednosti koje se očitavaju pomoću izlaznih signala (TNNSignal). Podaci iz fajla (*.NET) sa težinskim koeficijentima, generisanim pomoću programa ANN, određuju način funkciju ovog objekta (ponašanje , “algoritam”), informaciju o načinu na koji se izračunavaju izlazni podaci u zavisnosti od ulaza.

Izgled komponente na formi

Osobine

Naziv osobine Tip Opis
Active Boolean Određuje da li je mreža aktivna ili ne.
FileName TStrings Putanja do fajla (*.NET) koji je nastao nakon obučavanje neuronske mreže programom ANN. U ovom fajlu se nalaze stanja threshold i težinskih koeficijenata svakog od neurona mreže.
LayerHidden01 Integer Broj neurona na prvom skrivenom sloju
LayerHidden02 Integer Broj neurona na drugom skrivenom sloju
LayerHidden03 Integer Broj neurona na trećem skrivenom sloju
LayerHidden04 Integer Broj neurona na četvrtom skrivenom sloju
LayerHidden05 Integer Broj neurona na petom skrivenom sloju
LayerHidden06 Integer Broj neurona na šestom skrivenom sloju
LayerHidden07 Integer Broj neurona na sedmom skrivenom sloju
LayerHidden08 Integer Broj neurona na osmom skrivenom sloju
LayerHidden09 Integer Broj neurona na devetom skrivenom sloju
LayerHidden10 Integer Broj neurona na desetom skrivenom sloju
LayerInputs Integer Broj neurona na ulaznom sloju.
LayerOutputs Integer Broj neurona na izlaznom sloju.
Name String Naziv objekta
Ni Real Koeficijent učenja mreže
SignalInputs TStrings Nazivi ulaznih signala
SignalOutputs TStrings Nazivi izlaznih signala

Nakon postavljanja potrebnih objekata na formu potrebno je neuronsku mrežu povezati sa ulaznim i izlaznim signalima. Prvo odaberemo ulazne signale na sledeći način: potrebno je kliknuti na osobinu SignalInputs i pojavljuje se sledeći dijalog koji omogućava jednostavno preuzimanje imena objekata koji se nalaze na formi. Na sličan način se biraju i signali na izlazu mreže.

Povezivanjem signala sa neuronskom mrežom automatski se koriguje vrednost parametara InputsLayer i OutputsLayer.

Događaji

Metode
Constructor Create - Kreira objekat tipa TNeuralNet
Destructor Destroy - Oslobađa memoriju koju zauzima objekat
Procedure LoadFromFile(FileName:String) - Učitava iz fajla vrednosti težinskih koeficijenata mreže.
Napomena: Broj slojeva i neurona na svakom sloju neuronske mreže u programu mora odgovarati broju slojeva i neurona mreže koja je obučavana pomoću programa ANN.
Procedure SaveToFile(FileName:String) - Snima vrednosti težinskih koeficijenata mreže.
Procedure Update - Izračunava vrednosti na izlazu mreže u zavisnosti od ulaznih vrednosti

Primer 1 - upotreba NeuroVCL komponenti
Prvo se pomoću programa ANN kreira trening skup i njime obučava neuronska mreže za rešavanje specifičnog problema. Dobijeni koeficijenti takve mreže se snimaju u fajl koji se kasnije upotrebljava u programu koji kreiramo.

U ovom primeru obučavamo neuronsku mreže da obučava oblike u matrici 12 različitih objekata veličine 3x3 (slika 6.) u matrici veličine 5x5 (slika 5). Trening skup se sastoji od 108 elemenata (broj pozicija x broj oblika) tačnih primera.

Za obučavanje upotrebićemo mrežu sledeće konfiguracije:

Neuronska mreža sa tri sloja sa backpropagation algoritmom obučavanja:

Broj neurona na ulaznom sloju (broj ulaza): 5x5 = 25 (slika 2)
Broj neurona na skrivenom sloju: 20
Broj neurona na izlaznom sloju (broj izlaza): 12
Koeficijent učenja ni: 0.25
Broj primera u trening skupu: 12x9 = 108 (slika 1.1 i slika 1.2)

Trening skup:
ulazi


Slika 1.1. položaji objekata u matrici

Za program ANN je potrebno kreirati 3 teksualna fajla (*.INI, *.INP, *.OUT) kojima se obučava neuronska mreža: Detalje o specifikaciji fajlova pogledati pod [5, 6].

Nakon uspešnog obučavanja neuronske mreže potrebno je snimiti težinske koeficijente u fajl (na primer shapes.net).


Slika 1.2. položaji objekata u matrici

Na ovom primerom ćemo pokazati tok izrade aplikacije za prepoznavanje oblika u matrici 5x5. Na formu je potrebno postaviti 37 objekata tipa TSignal (25 ulaza +12 izlaza). Postavlja 25 objekata TImage koji reaguju kada se mišem klikne na njih i boje ih u crnu ili belu boju. Promenom boje takođe se menja i vrednost ulaznih signala mreže (Algoritam 1.1).

TForm1.Image1Click(Sender: TObject);
begin
If Image1.Canvas.Pixels[12,12]=RGB(0,0,0) then
   begin
   Image1.Canvas.Brush.Color:=RGB(255,255,255);
   In01.Value:=0;
   end
   else
   begin
   Image1.Canvas.brush.Color:=RGB(0,0,0);
   In01.Value:=1;
   end;
Image1.Canvas.Rectangle(5,5,46,53);
end;
Algoritam 1.1. - Procedura kojom se povezuju reakcija korisnika (klik mišem na sliku) sa ulazima neuronske mreže.

Na forumu postavlja se jedan objekat tipa TNeuralNet. Ovaj objekat je potrebno povezati sa ulaznim i izlaznim signalima.

Dodaju se dva dugmeta (TButton) da bi se lakše upravljalo programom.

Kada se završi dizajniranje korisničkog interfrejsa potrebno je i dodati programski kod.

U proceduru koja izvršava prilikom startovanja programa potrebno je dodati sledeći kod:

Procedure TForm1.FormCreate(Sender: TObject);
begin
   NeuralNet1.LoadFromFile(shapes.net');
   NeuralNet1.Activate:=true;
end;
Algoritam 1.2 - Učitavanje koeficijenata mreže i aktiviranje objekta

Procedura kojom se ispituje koji je simbol nacrtan (algoritam 1.3):

Procedure TForm1.Button1Click(Sender: TObject);
begin
NeuralNet1.Update;//izračunava vrednosti na izlazu mreže
Max:=Out01.Value; //određuje se maximalna vrednost na izlazu
Pos:=1;
If max<Out02.Value then
   begin
   Max:=Out02.Value;
   Pos:=2;
   end;
.....
Ponavlja se za svaku od 12 vrednosti
.....
If pos=1 then label1.caption:='1';
If pos=2 then label1.caption:='2';
...
   end;
   Str(max:4:2,SMax);
   Label2.Caption:=SMax;// probability
end;
Algoritam 1.3 – Određivanje simbola u matrici

Klasičnim programiranjem se na ulaz mreže dovodi matrica koja predstavlja simbol koji želimo da identifikujemo. Upoređivanjem vrednosti na izlazu mreže običnom IF naredbom određuje se koji se znak nalazi u matrici. Kao što vidimo u ovom programu neuronsku mrežu možemo posmatrati kao složenu funkciju (crnu kutiju) sa 25 ulaza i 12 izlaza.

Primer 2 - binarne funkcije

Opis problema
Program demonstrira izračunavanje 10 binarnih funkcija preko neuronske mreže.

Za rešavanje problema upotrebljena je neuronska mreža sa tri sloja sa backpropagation algoritmom obučavanja:

Broj neurona na ulaznom sloju (broj ulaza): 2
Broj neurona na skrivenom sloju: 6
Broj neurona na izlaznom sloju (broj izlaza): 10
Koeficijent učenja ni: 0.25
Broj primera u trening skupu: 10

Trening skup kojim se obučava neuronska mreža sastoji od deset binarnih funkcija, prikazan je na sledećoj tabeli:

input 1 input 2 output 1 output 2 output 3 output 4 output 5 output 6 output 7 output 8 output 9 output 10
x y x and y x or y x xor y x => y x <=> y not(x) not(y) not
(x and y)
not
(x or y)
not
(x => y)
0 0 0 0 0 1 1 1 1 1 1 0
0 1 0 1 1 1 0 1 0 1 0 0
1 0 0 1 1 0 0 0 1 1 0 1
1 1 1 1 0 1 1 0 0 0 0 0

Kreiranje i obučavanje neuronske mreže

Prvo se kreira fajl BIN.INI pomoću koga se definiše struktura mreže, broj slojeva i neurona na svakom sloju. Zatim se kreiraju se dva fajla u kojima se opisuje trening skup (BIN.INP, BIN.OUT).
Pomoću programa ANN se obučava neuronska mreža da bi smo izračunali težinske koeficijente mreže (BIN.NET).


Slika 2.1 - ANN program za obučavanje neuronskih mreža

Izrada aplikacije u Delphi-ju

Na formu se postavlja se postavlja 12 objekata tipa TNNSignal (2 za ulaze i 10 za izlaze mreže) i 1 objekat tipa TNeuralNet. U objekt inspektoru se podese osobine SignalInputs i SignalOutputs pomoću odgovarajućeg dijaloga povezuju ulazni i izlazni signali sa neuronskom mrežom. Na srednji sloj se postavlja isti broj neurona kao prilikom obučavanja neuronske mreže pomoću programa ANN.


Slika 2.2 - Izgled forme prilikom dizajniranja korisničkog interfrejsa

Kada korisnik klikne na dugme izvršava se sledeća procedura.

procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
  Input1.Value:=StrToFloat(Edit1.text); // postavlja novu vrednost na prvi ulaz mreže
  Input2.Value:=StrToFloat(Edit2.text); // postavlja novu vrednost na drugi izlaz mreže
  NeuralNet1.Update;        // račnuna vrednosti na izlazu mreže
  str(Output1.Value:2:2,s); // read value on first network output and convert to string
  Label1.Caption:=s;        // prikazuje vrednost na prvom izlazu mreže
  str(Output2.Value:2:2,s);
  Label2.Caption:=s;
  str(Output3.Value:2:2,s);
  Label3.Caption:=s;
  str(Output4.Value:2:2,s);
  Label4.Caption:=s;
  str(Output5.Value:2:2,s);
  Label5.Caption:=s;
  str(Output6.Value:2:2,s);
  Label6.Caption:=s;
  str(Output7.Value:2:2,s);
  Label7.Caption:=s;
  str(Output8.Value:2:2,s);
  Label8.Caption:=s;
  str(Output9.Value:2:2,s);
  Label9.Caption:=s;
  str(Output10.Value:2:2,s);
  Label10.Caption:=s;
end;
Algoritam 2.1 - Učitavanje koeficijenata mreže i aktiviranje objekta

Sadržaj primera Example 1
/data             // fajlove iskopirati u direktorijum data programa ANN
   bin.ini        // informacije strukturi mreže
   bin.inp        // trening skup - ulazi
   bin.out        // trening skup - izlazi

/source
  bin.net         // koeficijenti mreže izračunati pomoću programa ANN
  Project1.cfg
  Project1.dof
  Project1.dpr
  Project1.res
  Unit1.dcu
  Unit1.dfm
  Unit1.pas

Primer 3 - prepoznavanje oblika

Opis problema
Ovaj program predstavlja demonstraciju upotrebe NeuroVCL komponenti za prepoznavanje oblika. Neuronska mreža se obučava na primerima da prepoznaje 8 objekata u matrici 3x3.

Za rešavanje problema upotrebljena je neuronska mreža sa tri sloja sa backpropagation algoritmom obučavanja:

Broj neurona na ulaznom sloju (broj ulaza): 9
Broj neurona na skrivenom sloju: 6
Broj neurona na izlaznom sloju (broj izlaza): 8
Koeficijent učenja ni: 0.25
Broj primera u trening skupu: 8
Trening skup kojim se obučava neuronska mreža sastoji od osam oblika prikazanih na slici 2.1.


Slika 3.1 - oblici kojima se obučava neuronska mreža

Neuronske mreže ima osam izlaza (svaki izlaz predstavlja po jedan od oblika). Izlaz neuronske mreže sadrži jednu vrednost 1 a ostale vrednosti su 0. Pozicija jedinice određuje oblik na ulazu mreže.

Kreiranje i obučavanje neuronske mreže

Prvo se kreira fajl PATERNS.INI pomoću koga se definiše struktura mreže, broj slojeva i neurona na svakom sloju. Zatim se kreiraju se dva fajla u kojima se opisuje trening skup (PATERNS.INP, PATERNS.OUT).
Pomoću programa ANN se obučava neuronska mreža da bi smo izračunali težinske koeficijente mreže (PATERNS.NET).


Slika 3.1 - ANN program za obučavanje neuronskih mreža

Izrada aplikacije u Delphi-ju

Na formu se postavlja se postavlja 17 objekata tipa TNNSignal (9 za ulaze i 8 za izlaze mreže) i 1 objekat tipa TNeuralNet. U objekt inspektoru se podese osobine SignalInputs i SignalOutputs pomoću odgovarajućeg dijaloga povezuju ulazni i izlazni signali sa neuronskom mrežom. Na srednji sloj se postavlja isti broj neurona kao prilikom obučavanja neuronske mreže pomoću programa ANN.


Slika 3.2 - Izgled forme prilikom dizajniranja korisničkog interfrejsa

procedure TForm1.Image1Click(Sender: TObject);
begin
  if image1.Canvas.Pixels[12,12]=RGB(0,0,0) then
    begin
      image1.Canvas.brush.Color:=RGB(255,255,255);
      In01.Value:=0;                              // <- boja polja bela
    end
  else
    begin
      image1.Canvas.brush.Color:=RGB(0,0,0);
      In01.Value:=1;                              // <- boja polja crna
    end;
  image1.Canvas.Rectangle(5,5,46,53);
end;
Algoritam 3.1 - povezivanje reakcije korisnika (klik na sliku) sa neuronskom mrežom


procedure TForm1.Button1Click(Sender: TObject);
var max:real;
    pos:integer;
    smax:string;
begin
  NeuralNet1.Update;            // <- određivanje vrednosti na izlazu mreže
  max:=Out01.Value;
  pos:=1;
  if max<Out02.Value then
     begin max:=Out02.Value; pos:=2; end;
  if max<Out03.Value then
     begin max:=Out03.Value; pos:=3; end;
  if max<Out04.Value then
     begin max:=Out04.Value; pos:=4; end;
  if max<Out05.Value then
     begin max:=Out05.Value; pos:=5; end;
  if max<Out06.Value then
     begin max:=Out06.Value; pos:=6; end;
  if max<Out07.Value then
     begin max:=Out07.Value; pos:=7; end;
  if max<Out08.Value then
     begin max:=Out08.Value; pos:=8; end;
  Case pos of
     1:label9.caption:='1';
     2:label9.caption:='2';
     3:label9.caption:='3';
     4:label9.caption:='4';
     5:label9.caption:='5';
     6:label9.caption:='6';
     7:label9.caption:='7';
     8:label9.caption:='8';
   end;
   str(max:4:2,smax);
   label10.caption:=smax;
end;
Algoritam 3.2 - Određivanje vrednosti na izlazu mreže i prikaz rezultata

Sadržaj primera Example 2
/data             // fajlove iskopirati u direktorijum data programa ANN
   paterns.ini    // informacije strukturi mreže
   paterns.inp    // trening skup - ulazi
   paterns.out    // trening skup - izlazi
/source
  paterns.net     // koeficijenti mreže izračunati pomoću programa ANN
  Project1.cfg
  Project1.dof
  Project1.dpr
  Project1.res
  Unit1.dcu
  Unit1.dfm
  Unit1.pas

Zaključak
NeuroVCL komponente u kombinaciji sa programom obučavanje neuronskih mreža (ANN V2.3) nisu ograničene na probleme prepoznavanja znakova nego se mogu upotrebiti za rešavanje niza problema koji se mogu predstaviti u odgovarajućem obliku.

Kao što se vidi iz priloženog primera neuronske mreže i klasične metode rešavanja problema (programski jezici) se međusobno dopunjuju. NeuroVCL komponente se mogu posmatrati kao proširenje mogućnosti programskog jezika Dephi.

Prednost ovakvog povezivanja je da programer 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 probleme koji rešava, kao što bi morao da zna da taj isti problem rešava klasičnim programiranjem.

Primenom objektno orijentisanog programiranja neuronska mreža je predstavljena kao objekat koji programer jednostavno upotrebljava za rešavanje konkretnog problemima. Pri tome programer ne mora da detaljno poznaje principe na koji način je neuronska mreža iznutra projektovana. Neuronsku mrežu možemo posmatrati kao crnu kutiju (nepoznatu složenu logičku funkciju).

Prednost upotrebe objektnih komponenti u odnosu na drugi softver koji omogućava primenu neuronskih mreža je u tome što programer može napiše samostalnu aplikaciju koja ne zavisi od nekog drugog softverskog paketa (npr MathLab). Takođe, primenom objektnih komponenti programer ima slobodu da sam projektuje korisnički interfejs za razliku od specijalizovanih aplikacija.

Pomoću program ANN i objekata koji su prethodili razvoju NeuroVCL komponenti napisan je program za prepoznavanje ćiriličnih slova OCR V1.0 [5, 6].


Zamolio bih posetioce moje Web-stranice koji su preuzeli NeuroVCL komponente da mi pošalju komentare, sugestije i kritike o mogućem poboljšanju komponenti u narednim verzijama. Takođe bih zamolio korisnike da mi na adresu ilicv@EUnet.rs pošaljete interesantne primere koje ste kreirali upotrebom NeuroVCL komponenti.

Literatura
[1] “Frequently asked questions about AI”, http://www.cs.cmu.edu/Web/Groups/AI/html/faqs/ai/ai_general/top.html
[2] “Neural Network Frequently asked questions”, ftp://ftp.sas.com/pub/neural/FAQ.html
[3] Hotomski, P., (1995): “Sistemi Veštačke inteligencije”, Tehnički fakultet “Mihajlo Pupin”, Zrenjanin
[4] Ilić, V., (1999) “ANN - Program za obučavanje neuronskih mreža sa backpropagation algoritmom učenja”,
http://SOLAIR.EUnet.rs/~ilicv/ANN.html
[5] Ilić, V., (1999) “Obučavanje neuronskih mreža za prepoznavanje ćiriličnih slova”, magistarski rad, Tehnički Fakultet “Mihajlo Pupin”, Zrenjanin
[6] Ilić, V., (1999) “OCR - Program za prepoznavanje ćiriličnih slova”, http://SOLAIR.EUnet.rs/~ilicv/ocr.html
[7] Jocković, M., Ognjanović Z., Stankovski S. (1997) “Veštačka inteligencija inteligentne mašine i sistemi”, Grafomed, Beograd
[8] Milenković, S., (1997): “Veštačke neuronske mreže”, Zadužbina Andrejević, Beograd
[9] Reisdorph, K., (1999): “Naučite Delphi 4 za 21dan”, Kompjuter biblioteka, Čačak
[10] Sajić, I., (1995): “Neuronske mreže”, časopis “Računari” br 108, BIGZ, Beograd
[11] Savić, D., (1992), “Uvod u objektno programiranje”, PC Program, Beograd
[12] Subašić, P., (1998): “Fazi logika i neuronske mreže”, Tehnička Knjiga, Beograd