[ BinaryRuler @ 22.03.2007. 18:17 ] @
Napravio sam troslojnu neuronsku mrezu u c#, sa algoritmom za BackProp za obucavanje mreze.
Sad mi nije jasno kako da izvedem sledecu stvar:
Kada za obucavanje mreze koristim npr. ovaj ulaz:
1
9.5
8,4
2
5
i "kazem" joj da za taj ulaz treba da dobijem recimo ovaj izlaz:
1
0
1
i algoritam obuci mrezu da tako radi.
sta ja sada trebam da uradum da pri sledecem startovanju programa moja mreza zapamti da za takav ili slican ulaz
bez ponovnog obucavanja mreze izbaci trazeni izlaz.
Ali pri tome da mogu da je naucim da za ulaz npr.
1
3
3
1
4
da izlaz npr.
1
0
0.
i naravno da zapamti i jedan i drugi slucaj prilikom ponovnog startovanja programa.

Ja sam mislio da bi mozda moglo ovako, ali ne znam kako bi dobio rezultat za neki priblizan ulaz:
if( ulaz = 1 3 3 1 4)
tezine u mrezi podesi kao sto su bile pri obucavanju
za te vrednosti.
[ Shadowed @ 22.03.2007. 18:48 ] @
Sad, nije moguce dati bas precizan odgovor zato sto zavisi kako si sve to implementirao, ali ti tokom obuke trebas da dajes i jedan i drugi ulaz i da za svaki od njih govoris kakav treba izlaz biti. Tako ce mreza doci u stanje (ako je ono moguce za tu konfiguraciju i vrstu mreze) koje radi za oba slucaja.
Da bi sacuvao stanje i za sledece pokretanje potrebno je da vrednosti svih tezinskih koeficijenata i ostlih promenljivih parametara snimis u neki fajl.
[ BinaryRuler @ 22.03.2007. 18:56 ] @
Jel to onda znaci u prevodu ako imam npr 30 razlicitih ulaza ja moram da je obucim za 30 tacnih izlaza od jednom?
[ BinaryRuler @ 22.03.2007. 19:01 ] @
ako je tako ja sa mojim alg za obucvanje mreze nemogu to da uradim jer ono radi damo sa jednom kombinacijom ulaza i sa jednom kombinacijom ciljnih izlaza.
Da li onda trebam da napravbima algoritam koji obucava mrezu odjednom za sve kombinacije ulaza i ciljnih izlaza (npr. 30 komada)?
[ Shadowed @ 22.03.2007. 19:09 ] @
Paa, otprilike tako. Jer ti kada je obucis za jedan par ulaz/izlaz a onda krenes za drugi, ona ce gubiti svojstva za onaj prethodni (nesto od toga ce mozda i preostati). Dok stignes do 30. zaboravice one prve.
[ BinaryRuler @ 22.03.2007. 20:41 ] @
Hvala na savetima probacu nesto da izvedem, pa cu da postuje sta sam uradio.
[ BinaryRuler @ 22.03.2007. 23:59 ] @
Pogledao sam neke algoritme za obucavanje na neta i zakljucio sledece:
Ako imam vise iteracija ulaza i izlaza prvo obucim mrezu da za jedan ulaz daje ciljni izlaz
pa tako obucenu mrezu obucavam za drugi ulaz i ciljni izlaz i sve tako dok ne prodjem sve kombinacije ulaza. I ovaj postupak ponavljam odredjeni broj iteracija.
Ali mi nije jasno kako se mreza ne rasteluje prilikom ucenja sledece iteracije.
Da li se tako obucavaju neuronske mreze.
[ Shadowed @ 23.03.2007. 00:46 ] @
Pa, ne bih znao tacno. Ja imam utisak da bi se "rastelovala" ali moguce je da to zavisi kako se vrsi obuka (tj. koji metod koristis, backpropagation ili neki drugi...). U stvari, sad vidim da upravo BP i koristis. Mozda je najbolji nacin da probas. Obuci je za jedan ulaz/izlaz pa onda probaj kao takvu da je obucavas za drugi sve dok ne nauci. Kada se to dogodi, probaj da joj das ulaz prvog para i vidi sta ces dobiti na izlazu (da li ce biti ono sto treba ili nesto slicno ili totalno bez veze).
Takodje probaj, kada vrsis obuku, da naizmenicno dajes jedan pa drugi ulaz a korekcije vrsis na osnovu odgovarajuceg ocekivanog izlaza.
[ StanislavMircic @ 23.03.2007. 14:48 ] @
Poz,

Ako koristis BP algoritam za obucavanje i feed Forward neuronsku mrezu i imas 30 parova vektora ulaz - izlaz koje hoces da mreza nauci:

- napravi obucavajuci skup koji sadrzi svih 30 parova vektora
- obucavaj mrezu N (npr 100) iteracija sa svim vektorima.

Jedna iteracija obucavanja podrazumeva (postoje dve varijante):
1. Batch Training: prolazak kroz sve parove ulaz-izlaz i racunanje greske izlaza mreze za svaki par. Posle toga se izracuna srednja vrednost greske (nad celim trening skupom) za trenutnu iteraciju i na osnovu te srednje vrednosti greske promenimo tezine mreze za malu vrednost pomocu delta pravila (osnova BP algoritma) ili nekog drugog pravila.
2. Incremental training: prolazak kroz sve parove ulaz-izlaz i racunanje greske za svaki par. Posle racunanja greske svakog para odmah se primenjuje modifikacija tezina mreze pomocu BP algoritma.


Savetujem ti da koristis prvu varijantu obuke (Batch Training) ako koristis drugu vrstu podesi parametre obuke tako da promene tezina budu male pri svakoj korekciji i obavezno prezentiraj mrezi na RND nacin obucavajuce parove u okviru jedne iteracije.



Kada jednom obucis mrezu, da bi dodao jos jedan par ulaz-izlaz moras da ponovis celu proceduru ponovo sa svim ulazimai izlazima. Ako budes obucavao vec obucenu mrezu samo sa novim vektorom mreza ce zaboraviti sve sto je bila do tada naucila. Ako i bude nesto dobro radila to ce biti slucajnost.

Poz
Stan.

[ BinaryRuler @ 31.03.2007. 20:31 ] @
Mislim da ce mi to pomoci.