Aquagen Napisano Marzec 17, 2012 Zgłoszenie Share Napisano Marzec 17, 2012 Witam Mam mały problem ze skryptem z sieci neuronowych (to jest mój pierwszy program z ANN) i miałbym prośbę o wskazówkę jak wyuczyć poniższą sieć: 1. Mam sieć złożoną z węzłów: wejściowego in, wyjściowego out oraz 8 neuronów n_1, ..., n_8. 2. Dla każdego neuronu mam takie połączenia: in -> n_i z wagą w_i oraz bias równe u_i . n_i -> out z wagami v_i oraz bias dla out równe v_0 3. Chcę wyuczyć taką sieć następującej funkcji 0->1, 1->0, 2->0, 3->1. 4. Korzystam z funkcji sigmoidalnej: sigma = function(x) (1 / (1 + exp(- x * beta))) # Beta stałe 5. Początkowe wartości wektorów w, v, u oraz liczbę v0 losuję: w = sample(seq(-10, 10, by = 0.1), n, replace = FALSE) u = sample(seq(-10, 10, by = 0.1), n, replace = FALSE) v = sample(seq(-10, 10, by = 0.1), n, replace = FALSE) v0 = sample(seq(0, 10), 1) 6. Sieć trenuję za pomocą następującej funkcji: train = function(argument, value, eta) { h <- sigma(w * argument - u) o <- sigma(sum(v * h) - v0) d0 <- o * (1 - o) * (value - o) dh <- h * (1 - h) * v * d0 dv <- eta * d0 * h dv0 <- - eta * d0 dw <- eta * dh * argument du <- - eta * dh w <<- w + dw u <<- u + du v <<- v + dv v0 <<- v0 + dv0 } 7. Moje pytanie jest następujące: jak powinienem wytrenować tą sieć i dobrać współczynniki beta oraz eta? Do tej pory próbowałem wybierać beta = 1, ..., 10 oraz trenować poprzez for (eta in seq(0.7, 0.0001, by = -0.000001) {...} , ale coś nie działa. Z góry dziękuję za pomoc i pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Marzec 17, 2012 Zgłoszenie Share Napisano Marzec 17, 2012 Mam maly problem ze skryptem z sieci neuronowych (to jest mój pierwszy program z ANN) Na pewno sam go napisales? Mam powazne watpliwosci, bo nie wspominasz nawet jaka metoda uczysz, nie nazywasz wspólczynników (np. wspólczynnik uczenia), myslisz, ze neurony sa tylko w warstwie ukrytej, zreszta nawet nie wspominasz o warstwach.Jak juz korzystasz z gotowej implementacji to i tak musisz sie zapoznac z teoria (metoda backpropagation) i wtedy bedziesz wiedzial jak dobrac odpowiednie wspólczynniki. To wyglada na prace domowa i oczekujesz, ze ktos Ci przedstawi cala teorie. 1 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Aquagen Napisano Marzec 17, 2012 Autor Zgłoszenie Share Napisano Marzec 17, 2012 Sam sobie poradzilem. thof Na pewno sam go napisales? Tak, to jest mój program. Wzory i oznaczenia mam z labów. Prowadzacy laby przepisal je chyba z jakiejs ksiazki czy wykladu, wiec mogles widziec je gdzies wczesniej w jakims skrypcie lub ksiazce. To co nie wiedzialem, to brak wyczucia przy doborze wspólczynników i liczylem na komentarz typu: eta poczatkowe ma byc o rzad mniejsze a eta koncowe nie wiecej niz 10e-4, liczba iteracji pare milionów etc. Swoja droga, to co musialem poprawic to nie tylko wartosci eta i liczba iteracji, ale tez przestrzelilem przy losowaniu poczatkowych wartosci. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się