Skocz do zawartości

Prośba O Sprawdzenie Prostej Sieci Neuronowej


Aquagen

Rekomendowane odpowiedzi

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

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.

  • Downvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

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

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ę
×
×
  • Dodaj nową pozycję...