Primena veštačkih neuronskih mreža kroz softver Synapse

Primena veštačkih neuronskih mreža kroz softver Synapse

offline
  • Fil  Male
  • Legendarni građanin
  • Pridružio: 11 Jun 2009
  • Poruke: 14644

[0] Uvod








Veštačke neuronske mreže su dizajnirane da modeluju način na koji ljudski mozak procesira određene aktivnosti. Može se definisati kao mreža jednostavnih elemenata procesiranja (neurona), koja može proizvesti kompleksno globalno ponašanje (zavisno od broja neurona, načina povezanosti tih neurona i ostalih parametara mreže) i koja ima osobinu čuvanja znanja, koje je upotrebljivo za rešavanje nekog problema.

Idea Tehnologija vodi korene iz:
- neurobiologije
- statistike
- fizike
- matematike


U softveru Peltarion Synapse će biti objašnjen proces izgradnje neuronskih mreža:
- faza pretprocesiranja,
- faza dizajna,
- faza treniranja
- faza postprocesiranja.





[1] Teorijske osnove




Budući da neuronska mreža predstavlja model koji emulira (imitira) biološke neuronske mreže, može se uspostaviti paralela sa terminima iz neurobiologije kako bi se označili odgovarajući koncepti i/ili softverske komponente; neki osnovni su:

Biološka <---> veštačka neuronska mreža
Soma (telo) <---> Čvor
Dendroni <---> Ulaz
Osa <---> Izlaz
Sinapsa <---> Težina
Neuron <---> Veštački neuron




Struktura neurona se može videti sa sledeće slike:




Arrow Svaki neuron:
- prima ulaze (koji mogu biti ulazi iz okruženja ili izlazi iz drugih neurona),
- vrši određeno procesiranje
- i na osnovu toga daje izlaze (koji, mogu biti ulazi u neke druge neurone ili izlaz iz mreže).

Procesiranje neurona se može razložiti na dve funkcije:

A) funkcija sumiranja
--> <sabira otežane ulaze (inpute)> računa se po formuli: F=sum(Wi * Xi)
// Wi predstavljaju težine, a Xi ulaze u neuron.

B) i funkciju transfera
--> zbir iz A) se prosleđuje funkciji transfera (aktivacionoj funkciji). Ova funkcija je najčešće nelinearna i neke česte funkcije su prikazane na sledećoj slici:



... i :




// Popularna je i Hevisajdova funkcija ili "treshold" funkcija; ponaša se kao "prag", jer za sve negativne vrednosti argumenta (sume otežanih ulaza) daje 0, a u suprotnom daje 1.


Rezimirajmo: osnovna sličnost sa ljudskim mozgom je u sledećim aspektima:

1) Neuronska mreža stiče znanje kroz proces učenja, a na osnovu podataka iz njenog okruženja,

2) Sinaptičke težine se koriste za čuvanje stečenog znanja; ključni elementi ovog modela jesu težine. One predstavljaju relativnu značajnost svakog ulaza za posmatrani neuron. Menjanjem težina, kroz odgovarajući algoritam, neuronska mreža uči.

3) Veštački neuron prihvata ulaze (analogno dendronima, koji prima elektro-hemijske impulsime), i generiše izlaz (signalom koji se šalje kroz osu neurona), koji se formira u zavisnosti od težina (tj. na osnovu promena u sinapsama)







[2] Primena kroz Peltarion Synapse




Website: http://www.peltarion.com/

Download: http://www.peltarion.com/products/synapse/trial.php
// licenca: trial, 30 dana; cena: 1000 evra

Tutorials & Wiki: http://www.peltarion.com/doc/index.php?title=Synapse:Tutorials


Peltarion Synapse je razvojno okruženje za neuronske mreže (adaptivni sistem), zasnovano na povezivanju softverskih komponenti u jedinstvenu celinu.

Prvi tutorijal objašnjava upotrebu wizard-a preko koga se možemo izgraditi upotrebljivu topologiju neuronske mreže, kroz svega par jednostavnih dijaloga. Ukoliko wizard ne da zadovoljavajuće rezultate, treba dodatno "naštelovati" mrežu kroz podešavanje brojnih parametara mreže.


Idea U Synapse-u postoje tri čarobnjaka:




1) Function modeling - za pravljenje sistema koji na osnovu zadatih ulaznih podataka predviđa izlaz

2) Classification - za pravljenje sistema koji klasifikuje ulaze u definisane kategorije

3) Time series Modeling - za pravljenje sistema koji koristi vremenske informacije da bi se modelovala zavisnost ulaza i izlaza iz podataka.


Wizard omogućava da se veličina i struktura odrede automatski, putem implementirane fuzzy logike, gde se analizira:
- Sample Quantity - veličina uzorka
- Feature space - vrednosti koje ulazi mogu uzeti

Dakle, ove vrednosti procenjuje softver, na osnovu ulazne matrice
// moguć je i manulani unos (override)


Ono gde je neophodna intervencija korisnika su subjektivne procene za:
- Problem complexity - kompleksnost problema,
- Data completeness - kompletnost ulaznih podataka (koliko su dobro mogući opsezi ulaznih/izlaznih podataka pokriveni podacima),
- Noise levels - nivo šuma u ulaznim podacima (ake se pri merenju podataka koriste instrumenti koji neprecizno mere, npr. automatski merni instrumenti).


Logička organizacija rada u programu je podeljena na 4 faze:

(1) - pretprocesiranje,
(2) - dizajn,
(3) - trening neuronske mreže,
(4) - i postprocesiranje.




(1) Pretprocesiranje



Faza pretprocesiranja se odnosi na obradu ulaznih podataka, kako bi mreža mogla imati što bolje performanse i izlaz. Vidimo sledeću sliku:





1. Data Unit Manager - u njemu se nalaze podaci (datasets) koje koristimo kao ulaz u mrežu. Podržan je uvoz podataka iz sledećih datoteka:

Citat:CSV - ekstenzija za tekstualnu datoteku u kojoj su podaci odvojeni zarezom (karakterom, u opštem slučaju, Comma/Character Separated Value)
Image Array - učitava niz slika, gde svaka slika predstavlja uzorak. Nisu podržane kolor slike.
Join format - specijalni format gde više vrsta podataka možemo da spojimo (merge) kako bi radili sa složenom vrstom podatka
SQL Database - učitava podatke iz SQL baze. Može se zadati i upit kako bi se pribavili podaci iz baze


2. Filters - služi za filtriranje ulaznih podataka. Primer:
- Outlier removal filterom, odstranjujemo one uzorke koji značajno odstupaju od njihove sredine;
- Extract filter - eliminiše nepotrebne promenljive iz analize (može se preko npr. Correlation Visualizera utvrditi ima li suvišnih promenljivih)
- OSTALI FILTERI

3. Filter stack - svi filteri se moraju naći u Filter Stack delu
// Filteri i prikazivači se mogu kombinovati kako bi se ulazni podaci što bolje shvatili i pripremili za treniranje mreže.

4. Visualisators - vizualni prikazivači podataka:
a) Correlation - grafik korelacije između odabrane promenljive i preostalih promenljivih,
b) Grid View - tabelarni prikaz podataka,
c) Histogram - pokazuje raspored/distribuciju podataka (vrednost promenljive je na x-osi a učestalost pojavljivanja na y-osi),
d) Scatter plot - tačkasti grafik, u kome se uzorci prikazuju za dve odabrane promenljive,
e) SOM view - slične podatke boji istim bojama i tako pravi vizuelne klastere.

5. Statistics - osnovna statistika za ulazne podatke:
// maksimalnu vrednost, srednju vrednost, standardnu devijaciju i drugo.




(2) Dizajn



U ovoj fazi povezujemo komponente kako bi se konstruisala topologija mreže. U ovom smislu, topologija predstavlja model koji je sastavljen od povezanih komponenti. Za potrebe članka, biće reči o tzv. feedforward mrežama.

Kod feedforward neuronskih mreža, neuroni su organizovani u formi slojeva.

- Jednoslojna feedforward mreža predstavlja najjednostavniji oblik slojevitih mreža i sastoji se od jednog ulaznog sloja koji je povezan sa jednim izlaznim slojem (obrnuto ne važi – izlazni sloj nije povezan sa ulaznim slojem). Naziva se jednoslojna jer postoji samo jedan sloj neurona koji vrši određene proračune, i taj sloj je u isto vreme i izlazni sloj (ulazni sloj, naravno, se ne računa jer se u njemu ne vrše nikakvi proračuni).

- Dvoslojna feedforward neuronska mreža uključuje i jedan skriveni "međusloj" neurona koji vrši dodatna procesiranja. Na sledećoj slici je predstavljen šematski prikaz te mreže:




* u opštem slučaju ima više slojeva


Što se tiče primene modela na Synapse, prvo treba da se pomene da i komponente unutar softvera mogu da imaju ulazne i izlazne lokalne portove (ulazi u komponentu i izlaz iz komponete).
Na taj način, povezivanjem portova komponenti, formira se topologija mreže.


Osnovne komponente:

Exclamation Razumevanje i pravilno podešavanje parametara komponenti značajno utiče na performanse modela.

* Datasource - izvor podataka
Ovu komponentu možemo shvatiti kao most između faze pretprocesiranja, u kojoj su podaci pripremljeni i obrađeni, i faze dizajniranja gde te podatke ubacujemo u ovu komponentu. Obično u fazi dizajna koristimo dva izvora podataka; u jednom izvoru su ulazni podaci, a u drugom su željeni izlazi iz sistema. Podešavanja parametara ove komponente uključuju normalizaciju promenljivih i definisanje skupa nad kojim će mreža da trenira. Komponenta nema ulaznih portova i ima jedan izlazni port.

* Weight Layer - sloj težina
Predstavljaju dugoročnu (long-term) memoriju sistema. Signal, koji dolazi na ulazni port u ovu komponentu se množi sa težinama. Težine se podešavaju od strane algoritma učenja i na taj načn i sama mreža uči. Kao bitan parametar optimizacije mreže treba pomenuti Brain Damage. Poenta je da se težinama u toku treniranja doda izvesna količina šuma kako bi se dobilo stabilno rešenje. Razlog uvođenja ovog parametra leži u činjenici da se algoritam učenja može ”zaglaviti” u lokalnom minimumu površine funkcije greške. Ako mali poremećaji težina uzrokuju značajne promene u rešenju (kriva greške nastavlja da opada) tada zaključujemo da je algoritam izašao iz lokalnog minimuma. Komponenta ima jedan ulazni i jedan izlazni port.

* Function layer - sloj funkcija
Odgovara funkciji transfera. Ove komponente daju sistemu nelinearne sposobnosti računanja. Uloga Function Layer-a je da održava izlaz iz sloja težina na razumnom, konačnom nivou, kao i da dodeli sistemu nelinearne osobine kako bi se proizveli složeni izlazi. Značajan parametar ove komponente je izbor same funkcije; ona može biti sigmoidna (logistička), eksponencijalna, linearna i druge. Preporučuje se funkcija hiperbolički tangens kao najbolji izbor za najveći deo neuronskih mreža i ona se postavlja za podrazumevanu opciju u ovoj komponenti. Komponenta ima jedan ulazni i jedan izlazni port.

* Delta Terminator
Uzima dva signala (izlaz iz sistema i željeni izlaz) i upoređuje ih po nekoj metrici, koju možemo izabrati kao parametar (euklidska, Manhattan, itd.). Podrazmevana metrika je euklidska. Razliku ova dva signala šalje natrag sistemu i ta informacija se koristi za podešavanje težina. Zove se "terminator" jer okončava prostiranje signala unapred kroz sistem. Sadrži dve krive: jedna prikazuje grešku nad podacima za trening, a druga nad podacima za validaciju. Komponenta poseduje dva ulazna porta.


Kada se govori o neuronskim mrežama u užem smislu, misli se na percpetrone.
--> Višesojni perceptron (Multi Layer Perceptron) je osnovni tip statičkih neuronskih mreža, sa prostiranjem signala unapred (feedforward).
* Sastoji se od dva sloja težina, dva sloja funkcija i jednog delta terminatora.

Idea Rosenblatt je 1962. godine dokazao da će izlaz iz perceptrona za konačan broj iteracija (tj. prezentacija ulaznih podataka neuronskoj mreži) konvergirati ka nekom konačnom rešenju. Na sledećoj slici je prikazana osnovna forma jednoslojnog MLP perceptrona u Synapse-u. Ova topologija je dobra polazna osnova za većinu problema klasifikacije i procene:




Idea Ako prethodna topologija ne može dovoljno dobro da obuhvati složenost podataka, preporučuje se upotreba dvoslojnog MLP, jer teoretski može, uz pravilnu konfiguraciju parametara, rešiti bilo koji problem procene ili klasifikacije !
// Od jednoslojnog MLP-a se razlikuje po tome što je modelu dodat još jedan sloj težina.

Arrow Ove i ostale modele pogledajte sa sledećeg linka: SNIPPETS

Na toj strani su pojašnjeni snippets - upotrebljivi parčići topologije, kao i neke vrste perceptrona (jednoslojni, dvoslojni, generalizovani, dinamički modeli...).

Krajnjem korisniku se značajno olakšava rad upotrebom Snippet-a - upotrebljivih kolekcija unapred povezanih komponenti; samo ih je neophodno povezati sa ulaznim i izlaznim izvorima podataka i model je spreman za fazu treniranja. Korisnik može definisati i svoje snippet-e za modele koje često koristi.

+ NAPOMENA




(3) Treniranje neuronske mreže



U fazi treniranja se težine sistema podešavaju tako da izlazi iz sistema odgovaraju željenim izlazima.

Idea Kada se krene sa treniranjem mreže, vrednosti težina se postavljaju na slučajne vrednosti, tako da za dva uzastopna treniranja sistema – jedno treniranje može trajati kraće i algoritam može konvergirati brže nego drugo treniranje sistema.

Idea Treba napomenuti da se, u već pomenutoj komponenti DataSource, određuje koliki će se procenat početnog skupa odvojiti za treniranje mreže. Preostali deo podataka služi za validaciju.
// Ideja validacije je da se nakon treniranja mreže utvrdi, prezentujući mreži podatke za validaciju, kako će mreža obraditi podatke koje nije videla (tj. koji joj nisu prezentovani).


Za upravljanje celim tokom signala u sistemu odgovoran je XProp kontrolni sistem Synapse-a. Parametri ovog kontrolnog sistema značajno utiču na brzinu učenja i konvergenciju algoritma:

Max Epochs - odnosi se na ukupni broj iteracija sistema. Podaci za trening sistema će biti predstavljeni tom sistemu određeni broj puta.

Batch Length - određuje koliko se uzoraka odjednom prezentuje sistemu. Ova stavka je značajna iz sledećih razloga:

a) Stabilizirajući efekat na proces učenja: kada je Batch Length > 1 tada se više uzoraka odjednom prosleđuju sistemu i sistem se ažurira (adaptira) za te vrednosti. Dakle, umesto da se sistem adaptira za svaki uzorak pojedinačno, adaptiraćemo ga sa grupom uzoraka. Ovo ima stabilizirajući efekat jer se sistem ne menja frekventno.
b) Primena kod podataka sa velikim šumom: prezentovanje više uzoraka odjednom, u ovom slučaju, poboljšava performanse učenja (treba biti oprezan sa stavljanjem velikih vrednosti u Batch Length da se ne bi izgubile individualne varijacije/osobenosti uzorka)
c) Performanse učenja: prezentovanje više uzoraka odjednom zahteva manje procesorsko zauzeće, ali više memorije. Prezentovanje manjih grupa zahteva manje memorije, ali značajno više procesorskog vremena, pa je i proces treniranja značajno duži.

Exclamation Treba naglasiti da ne postoji pravilo kako bi se odredila optimalna veličina grupe uzoraka, već treba pokušati metodom "pokušaja i pogrešaka"

Idea Parametri sistema mogu biti optimizovani korišćenjem genetskih algoritama. U Synapse-u se mogu na ovaj način optimizovati svi parametri osim težina sistema. Ako se opredelimo za ovaj način izbora parametara sistema, pre treniranja sistema mora se trenirati i genetski algoritam.


Treniranje mreže započinje klikom na dugme Play sa glavne linije alata (toolbar-a). Ako se algoritam zaglavi u lokalnom minimumu, možemo prilikom treniranja menjati parametar sloja težina Brain damage, tj. ubacivati izvesnu količinu “šuma” kako bi algoritam nastavio da konvergira ka globalnom optimumu. Kada rezultati budu zadovoljavajući, pauzira se učenje klikom na dugme Pause i prelazi se na fazu postprocesiranja.

Exclamation Nemojte da stopirate učenje jer se time prekida sve dosadašnje učenje.

Exclamation Ako u toku treniranja sistema uočimo u komponenti Delta Terminator da kriva greške nad podacima za trening opada, a kriva greške nad podacima za validaciju raste, to znači da je sistem pretreniran.
--> tada treba prekinuti treniranje sistema.
// U ovom slučaju sistem se savršeno adaptirao na trening skup, umesto da nauči da generalizuje podatke. Ne postoje standardne procedure koje sprečavaju ovu pojavu.
// Uočeno je da će se sistem češće pretrenirati ako koristimo složene tipove mreža za jednostavne probleme.




(4) Postprocesiranje



U postprocesiranju analiziramo performanse treniranog sistema i testiramo da li su ispunjeni unapred postavljeni zahtevi koji se očekuju od sistema.

U sekciji Deployment imamo mogućnost da sistem izvezemo iz Synapse-a kao DLL datoteku, koju kasnije možemo integrisati u razvojnom okruženju Visual Studio.NET. Pravljenjem grafičkog interfejsa i importovanjem ove datoteke može se konstrusati softver različitih namena.

U sekciji Error Analyzer se vidi raspodela funkcije greške kao i interval poverenja. Na primer, ako je zahtev da greška bude +-5 godina sa 95% intervalom poverenja, to znači da najmanje 95% svih uzoraka mora imati grešku manju od 5 godina.

Sekcija Probe omogućava brz pregled sistema bez izvoza sistema u DLL datoteku. Naime, možemo uneti podatke i u realnom vremenu ispitati kakav će biti izlaz iz sistema. Treba naglasiti da ovaj način ispitivanja nije uvek verodostojan i tačan. Interesantno je da se u Probe mogu uneti i vrednosti koje su značajno veće ili značajno manje od vrednosti podataka nad kojima je mreža trenirala. Zbog toga je moguće dobiti neočekivane izlaze iz mreže (npr. može se dobiti negativan izlaz iako to nema smisla, jer izlaz treba da bude neki prirodan broj). Dakle, treba imati znanja o domenu problema da bi se na osnovu Probe-a donosili validni zaključci.

Poslednja sekcija je Analiza osetljivosti. Ovde možemo videti koliko se menja izlaz pri promeni jedne promenljive za određeni procenat (ostale promenljive se ne menjaju već ostaju fiksirane). Analiza osetljivosti služi za određivanje onih promenljivih čijim se promenama najviše menja izlaz iz sistema. Na primer, možemo utvrditi od kojih promenljivih najviše zavisi neki koeficijent zagađenosti vazduha (da li je to brzina vetra, količina CO2 ili neka druga).



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 447 korisnika na forumu :: 17 registrovanih, 0 sakrivenih i 430 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1567 - dana 15 Jul 2016 19:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Dannyboy, djonsule, Dorcolac2, dule10savic, Marko Marković2, Mr. Majevica, nenad812, Rakenica, ShurikSST, sosko, Taso2, vasaw, vathra, vladetije, voja64, zlatkoa987, |_MeD_|