2009-02-01
Wsteczna propagacja błędu vs. Renoir
UPDATE (2012-11-25): I get many google search hits from people looking for general information on backpropagation algorithm. Here's a very good introduction: sparseAutoencoder.pdf. These notes are from lecture on autoencoders, but the first half is a description of backpropagation algorithm, with practical hints on how to implement it.
Kilka dni temu rozmawiałem z Dziadkiem, Pablo i Qflem o zadaniu, które mieli na przedmiocie Sztuczne Sieci Neuronowe. Polegało na próbie nauczenia warstwowej sieci neuronowej obrazka, za pomocą wstecznej propagacji błędów. Na wejściu jest pozycja (x, y), a na wyjściu ma kolor (r, g, b). Miałem ten przedmiot (dwa lata temu), dlatego wszystko co potrzebne do zbudowania takiej sieci miałem gotowe. Program był gotowy w niecałą godzinę.
Poniżej jest wideo pokazujące kilka testowych przebiegów algorytmu przy różnych konfiguracjach warstw ukrytych i różnej stałej uczenia. Na dole jest numer iteracji ("iter") oraz błąd względem oryginału ("err" i wykres). U góry jest stała uczenia ("eta") i konfiguracja sieci - przykładowo "2x32x16x3" oznacza, że są 2 neurony wejściowe (x, y), 3 wyjściowe (r, g, b) oraz dwie warstwy ukryte, kolejno po 32 i 16 neuronów).
Artificial Neural Network Backpropagation - Renoir on Vimeo.
Muzyka: Zavoloka - Nude Brainitta
Nie jest to może bardzo ciekawe i raczej mało przydatne - po prostu byłem ciekaw jak to wyjdzie. Dużo więcej nie planuję z tym robić, bo mam inne rzeczy na głowie... chociaż może spróbuję jeszcze jeden/dwa pomysły :).
UPDATE: ciąg dalszy
Kilka dni temu rozmawiałem z Dziadkiem, Pablo i Qflem o zadaniu, które mieli na przedmiocie Sztuczne Sieci Neuronowe. Polegało na próbie nauczenia warstwowej sieci neuronowej obrazka, za pomocą wstecznej propagacji błędów. Na wejściu jest pozycja (x, y), a na wyjściu ma kolor (r, g, b). Miałem ten przedmiot (dwa lata temu), dlatego wszystko co potrzebne do zbudowania takiej sieci miałem gotowe. Program był gotowy w niecałą godzinę.
Poniżej jest wideo pokazujące kilka testowych przebiegów algorytmu przy różnych konfiguracjach warstw ukrytych i różnej stałej uczenia. Na dole jest numer iteracji ("iter") oraz błąd względem oryginału ("err" i wykres). U góry jest stała uczenia ("eta") i konfiguracja sieci - przykładowo "2x32x16x3" oznacza, że są 2 neurony wejściowe (x, y), 3 wyjściowe (r, g, b) oraz dwie warstwy ukryte, kolejno po 32 i 16 neuronów).
Artificial Neural Network Backpropagation - Renoir on Vimeo.
Muzyka: Zavoloka - Nude Brainitta
Nie jest to może bardzo ciekawe i raczej mało przydatne - po prostu byłem ciekaw jak to wyjdzie. Dużo więcej nie planuję z tym robić, bo mam inne rzeczy na głowie... chociaż może spróbuję jeszcze jeden/dwa pomysły :).
UPDATE: ciąg dalszy
Labels: neuron
Komentarze:
<< Strona główna
Fajne :D Szkoda tylko ze nie pokazales jak radza sobie jakies bardziej skomplikowane sieci :P
Swoja implementacja nie bede szczegolnie sie chwalil, gdyz jest nieziemsko wolna :< ale przedstawie wynik pewnego eksperymentu:
Wrzucamy obrazek w siec 2x8x16x16x16x16x8x3 na 5,000,000 iteracji. Wynikiem jest takie cos... Wyglada moze fajnie i abstrakcyjnie, ale brakuje detali na twarzy :P Z pomoca przychodzi stary dobry importance sampling :D Zamiast punkty do uczenia sieci losowac ze stala funkcja gestosci prawdopodobienstwa, mozemy uzyc obrazka, np takiego ... a dostaniemy np taki wynik.
Oczywiscie jest to oszukiwanie, ale mozna podciagnac pod to fakt, ze czlowiek skupi uwage na twarzy patrzac na ten obrazek, wiec bedzie rowniez dzialal z pewnym importance samplingiem :> W kazdym razie, niech to beda moje 2 grosze :D
Swoja implementacja nie bede szczegolnie sie chwalil, gdyz jest nieziemsko wolna :< ale przedstawie wynik pewnego eksperymentu:
Wrzucamy obrazek w siec 2x8x16x16x16x16x8x3 na 5,000,000 iteracji. Wynikiem jest takie cos... Wyglada moze fajnie i abstrakcyjnie, ale brakuje detali na twarzy :P Z pomoca przychodzi stary dobry importance sampling :D Zamiast punkty do uczenia sieci losowac ze stala funkcja gestosci prawdopodobienstwa, mozemy uzyc obrazka, np takiego ... a dostaniemy np taki wynik.
Oczywiscie jest to oszukiwanie, ale mozna podciagnac pod to fakt, ze czlowiek skupi uwage na twarzy patrzac na ten obrazek, wiec bedzie rowniez dzialal z pewnym importance samplingiem :> W kazdym razie, niech to beda moje 2 grosze :D
niezle. a moze by funkcja gestosci pstwa byla zalezna od (troche rozmytej) wielkosci gradientu w okolicy tak zeby skupic sie na krawedziach? a co do konfiguracji sieci to dlaczego wybrales w ostatniej i pierwszej ukrytej warstwie po 8 neuronow? tak sobie czy tak jest lepiej?
chociaz w przypadku tego obrazka ficzery na twarzy malo kontrastuja, ale przy normalnych zdjeciach moze by to sie dobrze sprawdzalo?
Z tym gradientem/laplacianem to probowalem i nie bardzo zdawalo egzamin... Pewnie dlatego ze jest dosc sporo 'szumu' w tle a np twarz nie jest wcale tak bardzo kontrastowa.
Jesli chodzi o szalone ilosci warstw, probowalem rozne kombinacje i wywawalo mi sie ze w ten sposob uczy sie lepiej, niewiele zwiekszajac czas nauki.
Post a Comment
Jesli chodzi o szalone ilosci warstw, probowalem rozne kombinacje i wywawalo mi sie ze w ten sposob uczy sie lepiej, niewiele zwiekszajac czas nauki.
<< Strona główna
Starsze posty dostępne w archiwum