Sieci Neuronowe - rownanie kwadratowe

0

Witam! Proboje napisac programik na zasadzie sieci neuronowych, ktory mialby mi wyliczac pierwiastki rownania kwadratowego. Na wejsciu sypie mu wartosci parametrow A B i C (rownanie), a na wyjsciu chce miec dwa pierwiastki tego rownania. Uzywam liniowej funkcji aktywacji. Dla wzorcowych danych:

a=1
b=1
c=-2
x1=-2
x2=1

programik w klikuset iteracjach wyznacza idealne wagi. Jednak gdy uzyje tych wag dla innych wzorcowych danych - kicha... w czym robie blad?

aha, dodam jeszcze ze siec jest dwu warstwowa (nie ma warstwy ukrytej)

0
JahU napisał(a)

aha, dodam jeszcze ze siec jest dwu warstwowa (nie ma warstwy ukrytej)

Więc czy jest ciekawa?
Ma ktoś ciekawy przykład 2 warstwowej sieci która robi coś sensownego?

0

no wlasnie....wiec moj problem wyglada juz zupelnie inaczej :/ czy jest ktos w stanie mi wylozyc w sposob zrozumialy i na chlopski rozum, jak bedzie wygladal algorytm uczenia sieci WIELOwarstwowej (wsteczna propagacja bledow -> niestety moja wiedza z matematyki nie jest w stanie na razie ogarnac tych wszystkich wzorow na obliczanie wag na poszczegolnych neuronach... :( dlatego prosze o pomoc w wytlumaczeniu nauki wielowarstowej sieci :(

0

Jakie jest model neuronu? Perceptron? A może zmień funkcję aktywacji (np sigmoidalna unipolarna)? W ogóle... po co chcesz rozwiązać równanie kwadratowe za pomocą sieci nauronowych? :)

0

hehe w celach edukcayjnych :P model neuronu to percepton. a czy jesli nie zmienie na funcje sigma to nie bedzie tak, ze na wyjsciu bedzie mogl byc tylko wynik <-1;1> ?

0

to zalezy jaki ustawisz wspolczynnik uczenia. jezeli wysoki to fakt, funkcja ciagla przejdzie w funkcje skokowa, ale jak ustawisz maly (np 0.6 - ale to juz kwestia testów) to bedzie nadal ciagla.

0

na razie zostaje przy liniowej, napisalem 3 warstwowa i jakos poradzilem sobie z uczeniem...nie czaje jeszcze tylko jednej rzeczy :/ jak wyliczyc blad calej sieci (tzn po jednej epoce) :/ bo bez tego ani rusz :/ wiesz ktos moze jak sie wylicza ten blad? nazywa to sie bodajze fachoweo ERMS !! POMOCY :/

0

tak, całkowyty błąd sieci możesz wyliczyć np tak:

for (i=0;i<WYJ_MAX;i++)
     b += (_wyjscie[i]-w_wyj[i].wyj)*(_wyjscie[i]-w_wyj[i].wyj);
blad_sieci = sqrt(b/(double)(LICZBA_WZORCOW*WYJ_MAX));

WYJ_MAX - wyjścia sieci
_wyjscie[] - tablica wyjść
_w_wyj[].wyj - wyjście danego neuronu w warstwie wyjściowej
LICZBA_WZORCOW - liczba wzorcow uczących :)

0

hmm...a moglbys zamiescic implementacje w Delphi? bo za bardzo nie rozumiem co tam robi to "double"

0

heh...

for i:=0 to i<WYJ_MAX do
     b:= b+ (_wyjscie[i]-w_wyj[i].wyj)*(_wyjscie[i]-w_wyj[i].wyj);
blad_sieci:= sqrt(b/(LICZBA_WZORCOW*WYJ_MAX));

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