Sieć wielowarstwowa z progpagacją wsteczną

0

Witam. mam do napisania sieć neuronową jak w temacie. Czy ma ktoś jakieś materiały lub program przykładowy?

Może ktoś podpowie mi co do algorytmu. Wymysliłem to tak:
Mam wektory wyjsciowe i do nich mam wektory wejsciowe.
Losuje losowe wagi początkowe z zakresu 0-1
Następnie podaje na warstwe wejsciową wektory one są mnożone przez wagi potem funkcja aktywacji i mam wyjscie utworzone
To wyjscie wpada na kazdy neuron warstwy wejsciowej
Tam jest to mnożone razy waga sumowane a nastepnie funkcja aktywacji
Następnie Idzie to na wyjścia każdego neuronu w warstwie wyjściowej
Tam znowu mnożenie sumowanie i funkcja aktywacji.

Teraz propagacja błędu:
jak to ma się dokładnie odbyć?

0

Generalnie nie wymyśliłeś nic nowego, bo na tym polegają sieci neuronowe :)

A jeśli chodzi o propagację, to wpisz w google:
"Wsteczna propagacja błędów".

Powinieneś znaleźć to, co Cię interesuje.

0

implementowałem sieć neuronową w delphi, co prawda poddałem się przy implementacji skutecznego algorytmu uczenia (zaimplementowany jest gradient błędu, niestety często zatrzymujący się na minimum lokalnym) - całość działa równie skutecznie co i powoli.
wrzucałem to kiedyś na 4p, ale nie mogę namierzyć. odezwij się późnym wieczorem na gg, to Ci udostępnię.

0
ŁF napisał(a)

implementowałem sieć neuronową w delphi, co prawda poddałem się przy implementacji skutecznego algorytmu uczenia (zaimplementowany jest gradient błędu, niestety często zatrzymujący się na minimum lokalnym)

Był na to jakiś sposób. Żeby uniknąć minimum lokalnego... Zabij mnie, ale nie pamiętam. Trza to poszukać.

0

oczywiście, że jest sposób, i to nie jeden, chociażby algorytm symulowanego wyżarzania (http://www.zarz.agh.edu.pl/jduda/dydaktyka/IW/SA/sa.html), tylko miałem jakies problemy z zaimplementowaniem i mi się odechciało.
ogólnie jest to problem znalezienia minimum globalnego funkcji wielu zmiennych i pod taką abstrakcyjną postacią ma kilka rozwiązań.

0

zgłaszam się po program :)

mam jeszcze pytanie co do algorytmu propagacji wtecznej:
1.podaje wzorzec na wejscia sieci
2. przepuszczam to przez 1 warstwe ukrytą potem przez wyjsciową
3. otrzymane wyjscia odejmujemy od oczekiwanego wyjscia otrzymująć błędy wyjść
4. obliczyc sume kwadratow błędów -<<< pytanie czy to jest bląd popełniany przez siec?
5. teraz trzeba by bylo obliczyć błędy na poprzedniej warstwie i tu pojawia się mały problem
niby stosuje sie taki wzor http://www.neuron.kylos.pl/graf/prop_wej.gif
Czy ktoś by mógł słownie mi go rozkodować?
6. adaptacja wag ze wzoru waga nowa=waga stara + zmiana wagi
zmiana wagi=wspolczynnik uczenia* blad wartwy poprzdniej*waga(ktorej warsty)?

0

zgłoś się wieczorem na gg. w ciągu dnia siedzę w pracy, nie mam dostępu do źródeł i do wieczora zapomnę.

  1. a przez co innego, jeśli nie przez sieć? przez programistę? :P suma kwadratów różnic między wzorcowym wynikiem a otrzymanym;
  2. tak dawno nie robiłem nic związanego z snn, że przydałaby się legenda do tych symboli (pewnie wtedy sam byś zrozumiał wzór);
  3. czy to własnie nie jest wzór z punktu 5? waga wejścia neuronu, dla którego obliczasz zmianę wagi, bo czego innego?
0
  1. ok to juz wiem jak jest ten błąd sieci wyliczany
  2. ten wzor jest do wyliczeń błędów na warstwie ukrytej
  3. a adaptacje wag sie wykonuje chyba tak
    user image

co do 5 punktu to to g' to będzie chyba pochona funkcji aktywacji neuronu

Mam jeszcze pytanie. czy funkcja aktywacji ( w moim przypadku sigmoida) w warstwie wyjsciowej tez moze być zastosowana czy musi być funkcja bipolarna 0 1?

0

http://critical.pl/~lukasz/nn.zip - uczenie sieci neuronowej mnożenia od 0 d 5.

1 użytkowników online, w tym zalogowanych: 0, gości: 1