wagi neuronów w warstwie ukrytej

0

Jak obliczać wagi neuronów w warstwie ukrytej? Nigdzie nie znalazłem informacji na ten temat. Proszę o kompletny wzór i objaśnienie użytych symboli. Podajecie też wzory na wagi w metodzie backpropagation.

0

Hmm Deti ostatnio umieścił swój program na stronie, który wykorzystuje SSN napisany w C#... Jeśli chodzi o SSN to jest masa książek o nich i trudno w jednym poście napisać jak to działa... Osobiście polecam książkę S. Osowskiego pt. "Sieci neuronowe do przetwarzania informacji"! Książka opisuje w piękny sposób krok po kroku co należy robić i opisuje mase algorytmów uczenia dla każdego rodzaju sieci. Analizując Twoje pytania sądzę, że nie masz większego pojęcia o sieciach neuronowych dlatego polecam zakup tej książki (w porównaniu z harrym poterem jest bardzo tania! :) ). Tak na szybko mogę jedynie powiedzieć, że obliczanie wag zależy od typu sieci oraz od przyjętego algorytmu. Backpropagation to zwykła metoda gradientowa (z momentum lub bez) i wagi oblicza się odejmując od obecnych wag gradient funkcji celu (znaczy się jego część). Dlatego wystarczy jedynie policzyć dE/dw i część tego odiąć od obecnej wagi... Jeśli chodzi Ci o sieć typu jednokierunkowa sigmoidalna to jest to najbardziej opisany typ sieci włącznie z metodą backpropagation... Dlatego tym bardziej zachęcam do przeczytania jakiejś książki a dopiero później w razie jakiś wątpliwości zgłosić się w celu wyjaśnienia pewnych kwestii...
Pozdrawiam!

0

mam książkę Osowskiego "Sieci neuronowe w ujęciu algorytmicznym", ale to kompletna żenada. Pełno tam wzorów do każdej sieci na energię E, a mnie chodzi o konkretny wzór na wyliczenie wagi w i-tym neuronie warstwy ukrytej, tylko tyle chcę.

0

mam książkę Osowskiego "Sieci neuronowe w ujęciu algorytmicznym", ale to kompletna żenada. Pełno tam wzorów do każdej sieci na energię E, a mnie chodzi o konkretny wzór na wyliczenie wagi w i-tym neuronie warstwy ukrytej, tylko tyle chcę.

Wydaje mi się, że książka którą ja podałem jest kontynuacją tej co ty podałeś... Jeśli tak nie powinna się znacznie różnić! W związku z powyższym pytanie: co znaczy "do każdej sieci na energię E"? czy wiesz czym jest np. błąd kwadratowy? (zdaje się, że Osowski właśnie oznacza go przez E!)
Po drugie czy wiesz co to jest pochodna i jakie są jej właściwości?
Po trzecie: w dalszym ciągu nie wiem, o jaką sieć Ci chodzi
Po czwarte: kompletną żenadą to jest gdy mając książkę ze wzorami pytasz się o wzory O_o
Po piąte: zdaje się, że już Ci napisałem jak wylicza się wagę - dodam może jeszcze tylko, że w większości typu sieciach wstępny dobór wag przyjmuje się losowo (np. z zakresu (-1,1))
Pozdrawiam

ale tak przy okazji pozwolę sobie jeszcze dodać, że SSN bazują na procesie zachodzącym w mózgu człowieka natomiast chyba jeszcze nikt nie dowiódł naukowo, że mądrzejsi częściej wygrywają w dużego lotka (ale chyba można dowieść, że większość mądrzejszych w niego nie gra :P)
Pozdro!

0

wij = ... ???

moja sieć jest prosta, jednokierunkowa, wielowarstwowa z sigmoidalną funkcją aktywacji, każdy neuron łączy się z każdym, nie wiem co jeszcze mam dodać, faktycznie nie znam się na SSN, a mi chodzi tylko o wzór na wij więc jak ktoś zna to proszę podać

0

Zdaje się, że już Ci wszystko napisałem - nie wiem co jeszcze mogę dodać O_o.
z uwagi na fakt, że sieci neuronowe opierają się głównie na nieliniowych funkcjach aktywacji nie można dobrać wag w sposób liniowy (rozwiązując prosty układ równań)... dlatego nie ma czegoś takiego jak wzór na optymalne wartości wag!!! Jedyne co da się zrobić to wyznaczyć wagi np. w sposób losowy i je zmieniać (douczać) aż błąd funkcji celu będzie jak najmniejszy (osiągnie się minimum funkcji celu - lokalne bądź najlepiej globalne)... co jeszcze mam Ci powiedzieć?!? jak tego nie rozumiesz to może w ogóle sobie odpóść bo chodzenie na skróty (typu forum) nie jest rozwiązaniem - trzeba zrozumieć podstawy, a jak nie rozumiesz samej ideii precesu zachodzącego w SSN to czego bym nie napisał to i tak dla Ciebie SSN pozostanie "czarną skrzynką" do której wrzuca się jakieś dane a sieć wypluwa odpowedź! żeby zaprogramować najprostrzą sieć należy przeanalizować cały proces od początku do końca (i najlepiej przeczytać uważnie całą książkę a jak nie pomoże to jeszcze raz i tak do skutku!) Ja sam niektóre rozdziały czytałem po 10 razy i więcej...
Wbrew pozorom cały ten proces jest banalnie prosty - trzeba to tylko zrozumieć :).
P.S.
a jeśli chodzi o te douczanie to polecam sięgnąć do e rozdziału książki którą posiadasz tj. "sieci neuronowe w ujęciu algorytmicznym" - tam masz aż nadto wzorów!
Pozdrawiam!

0

Dla warstwy wyjściowej wzór na wagi wejść neuronów wygląda tak:
wij = wij + eta(ti - yi)f'(net)xj
gdzie:
wij - waga j-tego wejścia w i-tym neuronie
eta - współczynnik uczenia
ti - odpowiedź poprawna i - tego neuronu
yi - odpowiedź i - tego neuronu
f'(net) - pochodna funkcji aktywacji
xj - wartość j - tego wejścia neuronu
Dla funkcji sigmoidalnej f(net)=1/(1+e^(-Betanet)) pochodna f'(net) = Betanet*(1-net), gdzie net = suma(wij*xj)+bias.
W przypadku neuronów ukrytych wartość ti nie ma do czego odnieść i tu jest cały problem. W takim razie musi być inny wzór na wagi neuronów ukrytych.

0

Weź do ręki książkę Sz. P. Osowskiego, otwórz rozdział poświęcony propagacji wstecznej i tam przeanalizuj sobie każdy wzór. Żeby łatwiej było Ci to zrozumieć polecam obliczenie wzoru na pochodną dla każdego wij w każdej warstwie - wtedy może łatwiej zrozumiesz... Poza tym, przeanalizuj sobie rysunek w książce i zwróć uwagę, jak oznaczone są sygnały wychodzące z neuronów... Nie wiem, skąd wiziąłeś te wzory ale tak jak powiedziałem na wstępie bez podstaw nie zrozumiesz bardziej zaawansowanych mechanizmów! Szczególnie jak będziesz sięgał do wzorów z netu bez ich rozwinięcia a nie z wydawać by się mogło z najlepszej możliwej książki...
Gdyby to nie były podstawy to pewnie bym od razu napisał rozwiązanie (jak bym je znał ofc :P) ale ty poraz kolejny udowadniasz, że nawet nie przeczytałeś tego rozdziału... (czy on jest naprawde tak długi?!?)
Może czas przestać chodzić na skróty i zacząć samemu rozwiązywać swoje problemy, a jak już utkniesz na etapie, gdzie książka Ci nie pomoże to wówczas zwróć się do kolegów z forum :)
Pozdrawiam!
P.S.
miło, że przynajmniej rozwinąłeś i sprecyzowałeś pytanie... :]

0

Kowal, to co napisałeś nic a nic mi nie pomogło, spisałeś się na darmo, czekam na gotowe wzory, może ktoś będzie łaskaw napisać mi je, bo pisanie w stylu znajdź se w książce nie ma sensu

0

Wiesz... przykro mi, że Ci to nie pomogło ale moim celem bynajmniej nie miało być zrobienie czegoś za Ciebie! Pytasz się o podstawy, a odpowiedź na nie znajdziesz w 2 rozdziale książki, którą podobno posiadasz! Moim celem jest zachęcenie Cię do myślenia i naprowadzenie do rozwiązania ale w żadnym wypadku do zrobienia tego za ciebie!
Jeżeli tak trudno jest Ci otworzyć książkę i skoncentrować się przez nawet tą godzinę to życzę powodzenia... może ktoś będzie "łaskaw"...
Pozdrawiam!

0

Gotowe wzory + przykłady + opis + krok po kroku + symulator

http://www.neuron.kylos.pl/pliki/uczenie/uczenie3.html

0

kowal chyba nie rozumie, że proszę o konkretną pomoc i pier...oli jakieś bzdury, KOWAL jak nie umiesz odpowiedzieć na proste pytanie to się nie wypowiadaj, zaśmiecasz tylko forum!!!

0

Jak chcesz zrozumieć to zacznij od zrozumienia jak wyliczyć wagi w jednym neuronie czyli w perceptronie McCullocha Pittsa. Poczytaj co to jest uczenie pod nadzorem. Wyjasnię Ci to konkretnie: do neuronu docierają sygnały o wartościach np. 1, -1 i 1 wartością oczekiwaną ma być 1, natomiast gdy docierają 1, 0 i 1 wartością oczekiwaną ma być 0

pamiętamy że w naszym perceptronie funkja aktywacji jest funkcją skokową która dla wartości dodatnich daje sygnał 1 a dla wartości zero i ujemnych daje sygnał 0.

Dla każdego sygnału wejściowego musimy przyjąć losowe wagi początkowe np. 0.003 dla kazdego teraz liczymy sumę iloczynów wartości sygnału i wagi czyli dla pierwszego zestawu uczacego: 10.003+(-1)0.003+10.003=0.003 dla takiej wartoś funkcja skokowa wypuści nam sygnał 1 czyli taki jak oczekiwaliśmy. Skoro tak to damy na wejście drugi zestaw i liczymy sumę iloczynów 10,003+00.003+10.003=0.006 i znów funkcja skokowa da nam na wyjściu neuronu wartośc 1 a my oczekiwaliśmy 0 więc musimy zmodyfikowac wartości wag/ Aby to poprawnie zrobić nalezy przyjąc jakąś regułę według której te wartości wag bedziemy aktualizowac w SPACJA końcu przecież nie będziemy ciągle zgadywac wartości wag. Warunkiem koniecznym jest aby ta regula zapewniała minimalizacje funkcji celu dla nas funkcją celu jest aby różnica między sygnałem wyjściowym a oczekiwanym była równa zero.

Taki warunek zapewnia reguła Widrowa Hoffa która mówi że jeżeli na wyjściu pojawia się sygnał taki jak oczekiwany to wartości wag nie zmieniamy, jesli oczekujemy 0 a pojawia sie 1 to do wagi dodajemy wartośc sygnału wejściowego a jeżeli oczekujemy 1 a na wyjściu jest 0 to odejmujemy wartośc sygnalu wejściowego:

Jest to algorytm uczenia pod nadzorem czasami nazywana regułą delta lub reguła perceptronowa ciągła ale tak naprawdę to tylko uogólnienie tej reguly.
Wg tej reguły masz wzory na wagi neuronu:

  • yi=di, pozostają niezmienione
  • yi=0, di=1, uaktualnianie wag odbywa się zgodnie ze wzorem wij(n+1) = wij(n)+xj
  • yi=1, di=0, uaktualnianie wag opisane jest zależnością wij(n+1) = wij(n)-xj

gdzie yi to wartość sygnału na wyjściu neuronu a di wartość oczekiwana u nas yi=1 a di=0 więc zastosujemy sie do trzeciego postaulatu uaktualnimy wagi obniżając o wartość sygnału wejściowego i wten sposób nowe wagi mają wartość 1.003, 0.503 i 3.003. na tak ustawione wagi na wejście neuronu podajemy drugi zestaw sygnałów i liczymy wartośc funkcji aktywacji, mamy 11.003+.500310.003=(

Czyli mamy nowe wartości wag -0.997 0.003 i -0.997 teraz znowu podajemy pierwszy zestaw i sprawdzamy funkcję celu: 1*(-0.997)+(-1)0.003+1(-0.997)=-1.997 czyli na wyjściu wygeneruje sie sygnał 0 a my chciliśmy 1 więc trzeba wagi zaktualizować według drugiego postulatu czyli dodać wartośc sygnału i mamy nowe wagi 0.003, -0.997 i 0.003

na takie wagi podajemy drugi zestaw i liczymy 10.003+0(-0.997)+1*0.003=0.006 czyli na wyjściu mamy 1 a chcielismy 0 no to znów trzeci postulat i nowe wagi 1.003, -0.997 i 1.003

kolejno podajemy pierwszy zestaw i liczymy 11.003+(-1)(-0.997)+11.003=3.003 czyli na wyjsciu neuronu funkcja skokowa da nam 1 czyli to co chcieliśmy skoro tak to według pierwszego postulatu wag nie zmieniamy tylko podajemy drugi zestaw uczacy i liczymy: 11.003+0*(-0.997)+11.003=2.006 czyli na wyjściu mamy 1 a chcieliśmy 0 to wg trzeciego postulatu odejmujemy od wag wartości sygnałów i mamy nowe wagi: 0.003, -0.997, 0.003 podajemy pierwszy zestaw i mamy 10.003+(-1)(-0.997)+10.003=1.003 czyli na wyjściu neuronu mamy 1 czyli to co chcemy, znów wg pierwszego postulatu wartości wag nie zmieniamy tylko podajemy drugi zestaw i liczymy 10.003+0(-0.997)+1*0.003=-0.991 co funkcja skokowa przetworzy na 0 czyli to co chcieliśmy.

W ten sposób nauczylismy perceptron zapamietac że na pytanie (sygnały) 1 -1 i 1 odpowiedź prawidłowa brzmi 1 a na pytanie 1 0 1 odpowiedź prawidłowa 0.

dla sieci neuronowej z sigmoidalną funkcja aktywacji i jednowarstwową sprawę komplikuje fakt że jest to funkcja ciągła, istnieje niebezpieczeństwo minimum lokalnego i pochodna funkcji sigmoidalnej też jest ciągła.

Nie wiem na jakim etapie matematyki jesteś więc najpierw okresl czy potrafisz rozwiązywac równania rózniczkowe i czy cokolwiek zczaiłeś już na temat sieci neuronowych? Wiesz i czujesz po co jest bias (polaryzacja), co to jest minimum lokalne itp.

rozumisz mój przykład? A co żeś się tak rzucił Od razu na warstwy ukryte? Myślisz że jest gotowy wzór? Nie ma!!!!!!!!!!!!! Sieć neuronową uczy się interakcjami krok po kroku przezentując sygnały (zadając pytania) porównując odpowiedzi i albo batożkiem po wagach albo zadajemy inne pytanie i dotąd aż sieć się nauczy na tyle dobrze na ile chcemy (np aby 99.99% odpowiedzi było poprawnych co przy ciągłej funkcji aktywacji też nie jest sprawą prosta uznanie czy sieć odpowiada poprawnie bo czy jak odpowie 0,0000012 a my oczekujemy 0 to jest poprawnie?) Ale to już szkoła średnia - są metody oceniania czy siec się dobrze nauczyła czy nie.

0

Poczytałem o algorytmie backpropagation i już wiem jak obliczać wagi neuronów ukrytych. Najpierw oblicza się błąd delta warstwy wyjściowej, a potem jest on propagowany wstecz i delty na wszystkich wyjściach neuronu ukrytego się sumują zgodnie z pewnym wzorem. Na marginesie nie wiem po co jest bias... ale i tak go zastosowałem w swoim algorytmie. To co mnie zastanawia to fakt, że neurony w k-tej warstwie będą dawały takie same wartości na wyjściach i tego też nie rozumiem, bo jak dołożę 100 neuronów w k-tej warstwie to kolejne i tak będą miały takie same wyjścia, więc nie rozumiem jak taka sieć wielowarstwowa może działać :(

0

Szybki912 napisałeś, że nie ma gotowych wzorów na wagi neuronów ukrytych. OSZALAŁEŚ??? A niby jakby się wyznaczało je, losowo? A te wszystkie programy co działają na sieciach neuronowych to czarna magia?!!!! Na wszystko są wzory!!! Każda maszyna jest rozpracowana w detalach - inaczej nie ISTNIEJE.

0

Szybki912 napisałeś, że nie ma gotowych wzorów na wagi neuronów ukrytych. OSZALAŁEŚ??? A niby jakby się wyznaczało je, losowo? A te wszystkie programy co działają na sieciach neuronowych to czarna magia?!!!! Na wszystko są wzory!!! Każda maszyna jest rozpracowana w detalach - inaczej nie ISTNIEJE.

Może chodziło mu o początkowe wartości - te rzeczywiście są wyznaczane losowo.

0
maszynaz napisał(a)

Szybki912 napisałeś, że nie ma gotowych wzorów na wagi neuronów ukrytych. OSZALAŁEŚ??? A niby jakby się wyznaczało je, losowo? A te wszystkie programy co działają na sieciach neuronowych to czarna magia?!!!! Na wszystko są wzory!!! Każda maszyna jest rozpracowana w detalach - inaczej nie ISTNIEJE.

Bo nie ma! czy wy nie rozumiecie że sieć neuronowa to nie algorytm tępo wykonujący zaprogramowany kod?

Jak powiedziałem wagi neuronów są ustalane krok po kroku w trakcie uczenia sieci neuronowej. Ja nie wyobrazam sobie takiego wzoru. Wzory sa ale nie na oststeczną wartość jaką powinna miec waga danego neuronu bo to niemozliwe, wzór ten wynika z przyjętego algorytmu uczenia a nie z matematycznego wywodu bo taki wzór dla każdego wektora prezentowanego na wejściu sieci musiałby być inny.

Bias to inaczej polaryzacja jest dotakowy sygnał do sieci o wartości 1 (zawsze) z reguły bias się stosuje zawsze ale jesli okazuje się że bez polaryzacji sieć pracuje wystarczająco dobrze można zrezygnowac.

maszynaz napisał(a)

(...) To co mnie zastanawia to fakt, że neurony w k-tej warstwie będą dawały takie same wartości na wyjściach i tego też nie rozumiem, bo jak dołożę 100 neuronów w k-tej warstwie to kolejne i tak będą miały takie same wyjścia, więc nie rozumiem jak taka sieć wielowarstwowa może działać :(

Hahaha i to właśnie jest wyższośc sieci neuronowej nad czystą matematyka. Juz siec jednowarstwowa potrafi rozwiązac skomplikowane problemy. Pierwsza zasada w doborze ilości neuronów jest taka że nalezy ich stosować jak najmniej, pamięć jaką prezentuje sieć o dwóch neuronach w warstwie ukrytej jest ogromna, powiem Ci że na pracy inżynierskiej sieć z dwoma neuronami w wastwie ukrytej nauczyła się tablicy liczb o wymiarach 200 liczb na 300 z 100% skutecznością, podejrzewam że dla takiej sieci nawet te 60 000 liczb to pestka. Nie będę Ci mącił głowę ale powiem jedno z doświadczenia wiem że sieci dwu i więcej warstwowe nie mają sensu. I tak potem bardzo trudno udowodnić co tak naprawdę siec neuronowa się nauczyła i czy naprawdę ta sieć odkryła jakies ciekawe zależności a po to przeciez uczymy sieć.

Z innego postu wiem że chcesz coś zrobić z lotto na sieciach neuronowych. też myslałem że się da ale po wielu próbach doszedłem do wniosku że to bez sensu. Po pierwsze jeżeli człowiek nie potrafi poprawnie zadac pytania takiej sieci to niech nie oczekuje poprawnych odpowiedzi. Nawet gdyby zakłady były ustawiane według pewnego algorytmu to musimy choc minimum o tym wiedziec np. czy algorytm obejmuje wszystkie liczby? A może po prostu komputer po analizie obstawionych liczb przez ludzi szuka takiego szeregu liczb aby suma wygranych była minimalna i wtedy jest dupa blada. Taki algorytm stworzyć jest prosto ale my nie mamy danych a LOTTO ma i to codziennie.

Dla mnie najuczciwsza jest gra w lotki albo umiesz rzucać albo nie umiesz i tyle.

0

Szybki, wystarczyło potwierdzić wypowiedź Deti... Szanowny kolega w dalszym ciągu nie rozumie podstaw :( a co gorsza nie potrafi precyzować pytań :/. Powiem szczerze, że trochę się gubię czytając jego odpowiedzi... Najgorsze jest to, że kolega nie potrafi lub nie chce czytać ze zrozumieniem :( natomiast najbardziej boli, że wszystko chce dostać na tacy - praktycznie bez własnego zaangażowania...
Nie jestem matematykiem (ani informatykiem) ale jeśli chodzi o Twoją wypowiedź to niezabardzo mi się podoba wypowiedź odnośnie czystej matematyki (lub po prostu źle ją zrozumiałem)... Sieci neuronowe nigdy nie zastąpią konwencjonalnej matematyki i polegną w najprostrzych algorytmach (tam gdzie liczy się dokładność obliczeń). Nie wiem jakie Ty robiłeś badania ale zaletą sieci jest to, że potrafiają uogólniać pewne procesy a co najważniejsze ich wyniki często są bardzo bliskie rozwiązaniu. Jednak bardzo rzadko będzie to 100% dokładność! Dla przykładu Tadeusiewicz podaje prosty przykład z którym sieć sobie nie poradzi: "Ale jesli podac sieci serie liczb całkowitych i zazadac, zeby siec odgadła, czy nastepna liczba jest liczba pierwsza to ona sobie z tym nie poradzi. Chocby uczyc siec na okragło to ona nigdy nie na nauczy sie rozwiazywac tego typu problemów". Tak samo jest z najprostrzym dodawaniem czy mnożeniem - wyniki sieci mogą być bardzo bliskie wyniku ale praktycznie nigdy nie będzie to 100% dokładność (chyba, że dla pojedyńczych równań).
Jeśli chodzi o naukę sieci to było już chyba 5 razy mówione, że wstępny wybór jest losowy natomiast później uczy się sieć iteracjami - przez minimalizację funkcji błędu!!! I teraz chciałbym zacytować to co Ty Szybki zacytowałeś tylko w innym kontekście: jak wszystkie wagi dobierane są na wstępie losowo, TO JAKIM CUDEM neurony "będą dawały takie same wartości na wyjściach"?!? ZACZNIJ CZYTAĆ CZŁOWIEKU ZE ZROZUMIENIEM!!! i zajżyj w końcu do książki a nie wszystkie informacje ściągasz z netu - byle szybciej... Looknij na obrazek jakie procesy zachodzą w sieci a może w końcu dojdzie do Ciebie co tam w środku się dzieje... Szybki pytałeś się, czy on potrafi rozwiązywac równania rózniczkowe i wie co to minimum lokalne - od początku mu proponuję żęby policzył pochodną to może dowie się w SPACJA końcu czym jest te tajemnicze "(ti-yi)" o które się pyta ale jak on chce wszystko na tacy to niech sobie jeszcze trochę poczeka... Analizując powyższe - nie, on nie umie rozwiązywać równań różniczkowych! Męczą mnie tacy ludzie, którzy potrafią tylko brać, ale od siebie nic nie wnoszą!!!
Natomiast jeśli chodzi o "gotowy wzór" na wagi to bym tu polemizował (tak na boku ofc). W sumie wagi w sieci typu RBF można obliczyć rozwiązując układ równań tylko tam problem jest z doborem parametrów i centrów (odpowiedników wag w neuronach) ale... tu też nie jest tak łatwo!
Pozdrawiam!

Oczywiście chodziło mi o ten cytat:

maszynaz napisał(a)

To co mnie zastanawia to fakt, że neurony w k-tej warstwie będą dawały takie same wartości na wyjściach i tego też nie rozumiem, bo jak dołożę 100 neuronów w k-tej warstwie to kolejne i tak będą miały takie same wyjścia

A jeśli chodzi o bias (polaryzację) to służy ona do tego, że jak by wszystkie neurony dały wartość = 0, to żeby sieć mimo wszystko coś "wypluła" (w modelach ekonometrycznych tłumaczy się to mniej więcej tak, że jak wszystkie zmienne (w uproszczeniu odpowiedniki neuronów) dadzą wartość 0 to wynik = właśnie ten bias (beta)) Dla przykładu gdy staramy się odgadnąć jaki wzrost będzie miał dany osobnik w zależności od zmiennych objaśniających, to gdy wszystkie zmienne przyjmą zero to należy się spodziewać, że ta osoba będzie wzrostu równym temu parametrowi wolnemu (biasowi/becie)

0

Kowal Ja jestem chemikiem nie matematykiem więc dla mnie np. dziwne jest gdy kumpel matematyk wziął i na układach równań wyliczał współczynniki stechiometryczne reakcji buahahaha byłem w szoku jak mi to pokazał ale tak juz jest każdy ma swoje zboczenie ja bym pewnie w życiu na to nie wpadł bo mam uzgadnianie stechimetrii reakcji wpojone od lat i wtedy działam jak automat

I chyba znów nie precyzyjnie się wyraziłem z tą wyższością nad czystą matematyką chodziło mi własnie o to że taka sieć bez problemu potrafi rozwiązywac wiele problemów logicznych nad którymi zwykłe algorytmy wysiadają albo są cholernie skomplikowane. Oczywiście że siec neuronową trudno przyrównywac do królowej nauk, jest to jakby osobna dziedzina nauki chyba już można tak mówić.

A i żeby niebyło że sieci neuronowe to nie są skomplikowane bo jak napisałem wczesniej kwintesencją uczenia sieci jest poznanie co ta sieć się nauczyła, jako przykład podam (już nie pamiętam gdzie to przeczytałem) w wojsku uczono sieć rozpoznawać czołgi nieprzyjaciela na zdjeciach satelitarnych, po jakiś czasie okazało się że sieć daje jakies bzdurne odpowiedzi, więc szukano gdzie jest bład i co by tu zrobić okazało się że sieć nauczyła się rozpoznawać ale to czy zdjęcie robiono w nocy czy w dzień. Myslę że to dobra pzrestroga dla ludzi którzy stykają się po raz pierwszy z sieciami neuronowymi, zaczynaja ją nazywac sztuczną inteligencją i myślą że jest to panaceum na wszytskie problemy jakie człowiek potrafi sobie stworzyc.

A i bardzo dobrze wytłumaczyłeś ten bias jak teraz przeczytałem co ja napisałem o biasie to wcale nic mądrego. Otóż to! Gdyby w moim przykładzie okazało się że sieci nie można nauczyć tych przykładów np. po 1000 iterakcjach to można przypuszczac że nigdy się nie nauczy więc bias by tu mógł pomóc, oczywiście bias też nie jest lekarstwem na wszystko.
A co kolegi maszynaz Podtrzymuje wcześniejsze zdanie, po co rzuciłeś się na warstwy ukryte jesli nie rozumiesz pojedynczego neuronu, i nie korzystaj z apletów jawa do symulacji sieci neuronowych bo nic z nich nie zrozumiesz i tylko się zniechęcisz. Pisałeś że masz Osowskiego, jak dlamnie to durna książka bo to nie jest książka akademicka, napisana jest po łebkach i bardzo skomplikowanie, ja gdyby mój promotor nie podesłał pare artykułów po angielsku nigdy bym nie zrozumiał o co w tym biega. jest jeszcze jedna książka właśnie chyba Tadeusiewicza ale jakoś nie mogę sobie przypomnieć ale też gość pisze jakies kosmosy, w ogóle wydaje mi się że w Polsce nic z literatury nie można polecić cóż może w SPACJA końcu trafi się ktoś i przetłumaczy jakiś zagraniczny podręcznik bo blado to widzę zresztą nie tylko w tej dziedzinie, jakby nie podręcznik Oreara to nigdy bym nie skumał pare rzeczy z fizyki. A sorka za oftopa bo troche mnie poniosło.

0

hehehe
Szybki - chemik
Deti - elektryk
a ja - finansista
a gdzie informatycy :D - w końcu to oni głównie powinni być zainteresowani sztuczną inteligencją (pomijając fakt, że to forum programistyczne :p)
W dodatku wszystkiego sam się nauczyłem własnie z polskich książek (głównie Osowskiego :P)
U mnie w szkole nawet specjaliści od ekonometrii czy informatyki nie potrafili mi pomóc w najprostrzych rzeczach związanych z SSN dlatego do wszystkiego sam dochodziłem! Piszę to, żeby ponownie zmotywować kolegę do myślenia - to nie boli a czasem się przydaje :).
Natomiast wracając do książek to tu bym troszkę polemizował. Fakt, że np. podręczniki amerykańskie są pisane jak dla małych dzieci (w jakimś podręczniki do matematyki finansowej autor w pierwszych dwóch rozdziałach tłumaczył czym jest dodawanie, mnożenie O_o i inne banały typu co to jest licza rzeczywista...) Takie podejście rzeczywiście mogłoby bardzo pomóc w nauce bo przypomina pewne podstawy (chociaż jest pewna granica...), jednak sieci neuronowe to wiedza już bardzo specjalistyczna - trudno wymagać od autorów, żeby zajmowali się tłumaczeniem czym jest np. pochodna (o tabliczce mnożenie nie wspomnę :D), gdy piszą głównie dla studentów 4 i 5 roku studiów (w dodatku kierunków ścisłych!). Takie podejście wymuszałoby na nich pisanie dwa razy grubszych podręczników :/. Zgodzę się jednak z tym, że polska literatura w tym temacie jest bardzo trudna, szczególnie, że każdy z autorów inaczej zapisuje te same wzory (używa innych oznaczeń itp). Przykładowo Osowski na błąd używa litery E a Tadeusiewicz Q - i tak praktycznie wszędzie - co bardzo utrudnia naukę! Jednak wszystko jest możliwe :D
Natomiast wracając do biasa to jeszcze dwa słowa: jego celem jest tak jakby wygładzenie wyników - bo nie wsyzstko jest zależne od zmiennych, które sobie wybierzemy. Bias nie jest niezbędny i nie zawsze pomaga ale najczęściej się go używa :). Jego wartość rzeczywiści jest jeden ale pomnożone przez jakąś wyuczoną wagę tzn. w rzeczywistości może on przyjmować różne wartości (z dowolnego zakresu) - czasami sieć wyznaczy wagę przy biasie 0.7 a czasami -0.3 lub 1.2 i wówczas bias będzie równy właśnie tej wadze (bo 1 przemnożone przez cokolwie = cokolwik -> dla niewtajemniczonych :P)
Pozdrawiam :)

0

właśnie, nie jesteście informatykami, ja jestem, dlatego gadacie od rzeczy

0

Kolego maszynaz, informatyk to taka osoba, która zajmuje się rozwiązywaniem problemów techniczno/matematyczno/algorytmicznych, po twoim podejściu do sprawy mogę stwierdzić z całą pewnością, że nie jesteś informatykiem (ewentualny papierek nie jest podstawą do takowych stwierdzeń).

Nie jestem specem od SSN (choć zdarzało się wykorzystywać je w swoich programach), ale moja skromna wiedza w tym zakresie pokrywa się z tym co przedmówcy już napisali. NIE MA gotowego wzoru na wagę neuronu, z tego powodu, że:
1 - waga ta na początku jest LOSOWA - co już było wspomniane. Nie da się oprzeć wzoru na wartości losowej.
2 - w zależności od wartości aktualnej (początkowo losowej) i stosowanego algorytmu uczenia wraz z każdą iteracją nauki waga się zmienia, i nie będą to takie same wagi na każdej warstwie, bo zwróć uwagę na fakt, że są one losowe, ergo INNE, więc wzory zmodyfikują je inaczej.
3 - ilość iteracji zależna jest od algorytmu uczenia, danych uczących a nawet kolejności poszczególnych przypadków w tych danych. Inna kolejność rekordów da Ci inne wagi po skończonej nauce, choć cała sieć powinna działać mniej więcej tak samo.

Więc teraz powiedz mi jak wyobrażasz sobie wyprowadzenie wzoru liczącego coś na podstawie nieznanej bazy (początkowo waga jest losowa) bliżej niesprecyzowanej struktury sieci (chyba nawet nie podałeś ile neuronów ona ma) bliżej nieokreślonych danych i do tego nie wiadomo ile trzeba wykonać przekształceń aby uzyskać zakładany wynik (to jest sprawdzane po każdej iteracji nauki, i też w istotny sposób wpływa na ich ilość).

Przeanalizuj sobie to co napisałem, a potem przysiądź nad jakąś książką/artykułem i spróbuj ZROZUMIEĆ jak to działa. A jak potem jeszcze będziesz miał jakieś problemy natury technicznej to bez problemów pomożemy. Bo na razie to nawet podstaw problemu nie chwytasz, więc nie ma sensu kontynuować tego tematu.

0
maszynaz napisał(a)

właśnie, nie jesteście informatykami, ja jestem, dlatego gadacie od rzeczy

No to było co najmniej nie na miejscu, ja chemii poświęciłem 13 lat (i to nie dlatego że nie przechodziłem z klasy do klasy :-) ) i wielu obcych dziedzin musiałem liznąć dosyć głęboko. Uwierz że uczenie się to nie tylko chodzenie do szkoły czy na wykłady ale też a może przede wszystkim własne studia. Temat jak SSN to bardzo głęboki i szeroki temat, nie da się tego wytłumaczyć w godzinę ani dwie, a jak ktoś nie "poczuje" tematu to trudno mu wytłumaczyć <ort>w ogóle</ort>.

maszynaz skonkretyzuj swoje pytanie po tym wszystkim co się dowiedziałeś bo tak naprawdę już chyba nikt teraz nie wie o co dokładnie Tobie chodzi.

0

właśnie, nie jesteście informatykami, ja jestem, dlatego gadacie od rzeczy

To po co zakładałeś temat?

Jak już wspomnieli poprzednicy:

  1. Początkowe wagi neuronów są wyznaczane losowo !(nie ma tu żadnych wzorów czy algorytmów).

  2. Nauka polega na iteracyjnym procesie (back-propagation), który wcale nie gwarantuje, że osiągniemy zakładany rezultat. Wzory, o które tak ci zależy już zostały podane - są to wzory na poprawki wag po każdej iteracji. Cała 'nauka' polega na sprawdzeniu wyjścia sieci i porównaniu z wyjściem zadanym - oraz poprawki wag, jakie muszą zostać zrobione aby sieć dostosować.

  3. Algorytm ten nie daje gwarancji, że sieć się nauczy! Nauka może wejść w minimum lokalne błędu. Są sposoby aby tego unikać, ale wciąż nie ma gwarancji (trzeba jeszcze raz resetować wszystkie wagi i uczyć od początku). Zrozum, to nie jest ścisły wzór - tylko złożony proces.

Nie wiem czego jeszcze oczekujesz..? Że ktoś ci przyjedzie i pokaże wszystko na kolorowance ?

0

hehe to może jeszcze ja powiem coś od siebie, bo nie byłbym sobą :P :D

maszynaz napisał(a)

właśnie, nie jesteście informatykami, ja jestem, dlatego gadacie od rzeczy

z tego co ja się orientuję to SSN uczą przede wszystkim na kierunkach automatyka i robotyka oraz właśnie informatyka! Na elektronice również ale z tego co się orientuję na chemii a już na pewno na finansach o SSN nie ma słowa (co najwyżej modele ekonometryczne - głównie MNK). W związku z powyższym to chyba ty powinieneś nas uczyć/poprawiać/pomagać w tej dziedzinie... Poza tym, co według Ciebie oznacza gadanie od rzeczy? Co według Ciebie powinniśmy napisać, żebyś był ukontentowany? Czy chodzi o to, że ja jako finansista mam odkryć dla ciebie jakiś specjalny wzór, który rozwiąże każdy Twój problem czy jak? O_o. Ostatecznie mogę nic nie pisać ale wówczas jaki sens miałoby te forum na którym ludzie tylko zadawali by pytania...

0

Loloki ja nie mam problemu z napisaniem PROGRAMU, problem jest w znalezieniu informacji o SNN!!! A problem istnieje dlatego, że każdy podchodzi do niego tak jak WY. Lejecie wodę i z waszych esejów, które napisaliście nic nie wynikło. MOWA - TRAWA. W internecie pełno jest śmieci, nie ma kompleksowo opisanych algorytmów, są tylko szczątkowe informacje. Chyba tylko ja widzę, że ten kraj ma problem mając takich ludzi jak WY. A wzory znalazłem są np. tu, wzór na ogólny przyrost wag dw:
http://hermes.kie.ae.poznan.pl/~kaw/old_pages/neuro1/sld017.htm
i błąd delta w warstwie wyjściowej i w warstwach ukrytych. I o to ten cały szum:
http://hermes.kie.ae.poznan.pl/~kaw/old_pages/neuro1/sld018.htm
Widać, że nie jesteście informatykami bo kit wciskacie. Jeżeli by nie było wzorów, to problemu by nie dało się zaprogramować!!!

0

Wyżej podałem ci stronę http://www.neuron.kylos.pl/pliki/uczenie/uczenie3.html

.. gdzie są wszystkie wzory, teoria, wykresy, i cały skrypt Java gdzie krok po kroku jest wytłumaczone co się dzieje .. z dokładnym opisem!

Dodatkowo podałem ci linka do sieci, którą sam zaimplementowałem w C#.

Nie wiem jak bardziej można opisać ci problem - gdzie tu lanie wody widzisz? Wnioskuje, że dalej nie rozumiesz tematu i piszesz głupie i bezsensowne posty ..

0
maszynaz napisał(a)

Loloki ja nie mam problemu z napisaniem PROGRAMU, problem jest w znalezieniu informacji o SNN!!! A problem istnieje dlatego, że każdy podchodzi do niego tak jak WY. Lejecie wodę i z waszych esejów, które napisaliście nic nie wynikło. MOWA - TRAWA. W internecie pełno jest śmieci, nie ma kompleksowo opisanych algorytmów, są tylko szczątkowe informacje. Chyba tylko ja widzę, że ten kraj ma problem mając takich ludzi jak WY. A wzory znalazłem są np. tu, wzór na ogólny przyrost wag dw:
http://hermes.kie.ae.poznan.pl/~kaw/old_pages/neuro1/sld017.htm
i błąd delta w warstwie wyjściowej i w warstwach ukrytych. I o to ten cały szum:
http://hermes.kie.ae.poznan.pl/~kaw/old_pages/neuro1/sld018.htm
Widać, że nie jesteście informatykami bo kit wciskacie. Jeżeli by nie było wzorów, to problemu by nie dało się zaprogramować!!!

Buahahaha nie taraz mnie rozwaliłeś, to my od poczatku tłuczemy że nie ma wzoru na wartość wag tylko są wzory na aktualizacje w danym kroku uczenia a Ty na końcu pokazujesz wzór... na aktualizację wagi w danej iteracji. Ale jeśli Ty uważasz że dzięki tym wzorom w jednym kroku policzysz prawidłową wartość wagi danego neuronu to gratuluję powinieneś wykładać na Politechnice Śląskiej, widać wszyscy profesorowie i doktorzy na tej uczelni (i nie tylko) się mylą. No i nie mówiąc o nas szarych małych ludzikach lejących wodę i plujących trawą.

Nie, no slajd pierwsza klasa wszystko jasne, nawet indeksy omówione, faktycznie my nie potrafimy wytłumaczyć. ;-)

To w Osowskim nie było tego wzoru? Aż zerkne do Osowskiego.

I ciesz się że w tym kraju są tacy ludzie jak my bo takich ze świecą szukać własnie, 90% ludzi kończących uczelnie to banda kretynów i debili którzy legalnie kupili sobie wyższe wykształcenie płacąc czesne i opłacając egzaminy poprawkowe, więc nie obrażaj ludzi do których przyszedłeś po pomoc bo to zakrawa na gówniarstwo.

Tyle! Kończę z tym tematem i dziękuję że mogłem uczestniczyć na tym forum gościnnie.

0

Cieszę się, że "sam" sobie poradziłeś i nie potrzebowałeś naszej pomocy! Tylko w takim razie następnym razem nie rozpoczynaj tematu typu help me! tylko postaraj się od razu sam znaleźć rozwiązanie! i najlepiej opisz je dla innych.

szybki912 napisał(a)
maszynaz napisał(a)

To w Osowskim nie było tego wzoru? Aż zerkne do Osowskiego.

Najwidoczniej nie - pewnie też leje wodę, gada od rzeczy i "pluje trawą"! :P Poza tym wszystko jest napisane po chińsku... ale to już szczegół ;/.

MaszynaZ mam nadzieję, że rzeczywiście z programem sobie poradzisz, nie wspominając już, że sam wykażesz się chęcią pomocy mniej doświadczonym użytkownikom forum, ale oczywiście nie tak jak my, lejąc wodę ale odnosząc się merytorycznie do zadanych pytań! (my się dopiero tego uczymy :( )
P.S.
dzięki za linki - tych wzorów właśnie szukałem (nie wiem jak udało Ci się je znaleźć tak szybko... :/). Dzięki nim sam zrozumiałem w czym rzecz O_o
Pozdrawiam!

0

ups... coś się kopło z cytatami :/ - cytowałem szybkiego! (poza tym tylko jedno zdanie) a nie maszynę... proszę o poprawienie tej "usterki" bo ja chyba nie mogę zmieniać tekstu :(
Pozdrawiam

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