Popularny post madik Napisano Czerwiec 25, 2010 Popularny post Udostępnij Napisano Czerwiec 25, 2010 Czy zastanawiałeś się kiedyś co to sztuczna sieć neuronowa? A może nie wiesz jak wykorzystać pozostałe w twoim warsztacie części? A może po prostu chcesz zbudować inteligentnego robota? Jeśli chociaż raz odpowiedziałeś "tak" zapraszam Cię do poczytania tej serii artykułów o sztucznych sieciach neuronowych. A jeśli w ogóle nie odpowiedziałeś "tak" to i tak zapraszam do poczytania 😉 Na pewno znajdziesz coś dla siebie :]. Na początek... Sieć neuronowa najprościej mówiąc, jest to system symulujący pracę mózgu - tworu tworzonego i rozwijającego przez na naturę przez miliony lat. Dlaczego neuronowa? Nasz mózg składa się z wielu milionów komórek nerwowych, które zwane są neuronami. Neurony połączone są tzw. synapsami, które tworzą taką "sieć". Stąd właśnie swą nazwę czerpie sieć neuronowa. Dla skrótu będę dalej, zamiast pełnej nazwy ("sieć neuronowa") pisać IS ("inteligentna sieć") lub SSN ("sztuczna sieć neuronowa"). No dobra. Ale dlaczego niby mamy używać tej "sieci" ?! No i ja się zgodzę. Komputery szybko przeliczają liczby, wykonują algorytmy. Ale co gdy musimy coś rozpoznać? Co gdy będziemy musieli porównywać głosy? I tu właśnie góruje SSN. Gdy stworzymy IS to będziemy mogli rozpoznawać przedmioty bez względu np. na oświetlenie. Ale to już wyższa szkoła jazdy. Myślę że SSN zainteresują was. Pomyślicie pewnie że tu będzie kłaniać się matematyka. I macie rację, ale wszystko wytłumaczę, a więc może ten przedmiot nie stanie się tak straszny 😃. Zaletą poznawania i tworzenia SSN jest to że będziemy odkrywać ciekawe zjawiska, a przy okazji zahaczymy o inne przedmioty, które ułatwią wam przyswajanie IS. Po tym długim wstępie czas na dalsze rozważania, które będą także kontynuowane w dalszych częściach. Dlaczego SSN tak szybko się rozwijają? Poprzez rozwój wielu dziedzin nauki: biologii, matematyki, fizyki człowiek zdobył większą wiedzę, którą wykorzystał w postawianiu problemów technicznych i umiejętności zbierania informacji które wykorzystuje w SSN. Drugim czynnikiem wpływającym na rozwój jest rozwój techniki(szczególnie komputerów) na którym SSN mogą działać i ciągle się rozwijać Czy zdołamy odwzorować człowieka i jego mózg? Choć może to być dziwne, ale niektóre badania wykazują że da się odwzorować mózg. Wiadome jest tylko jedno- minie dużo czasu zanim poznamy wszystkie tajniki i rozwiązania. Sami widzimy że sam napęd sprawia nam mnóstwo problemu a co dopiero inne układy? Dlatego SSN rozwija się w kilku dziedzinach. Oprócz chęci na stworzenie człowieka, warto rozwijać SSN mogące nam pomóc a nie klonować. Na jakie problemy może spotkać SSN? SSN musi być odporna na uszkodzenie. Jej uszkodzenie może sprawić duży problem(szczególnie np. na giełdzie). SSN żeby była jak najwydajniejsza musi posiadać możliwość uczenia - czyli jeden z trudniejszych procesów. IS powinny sobie radzić także z losowymi czy też niedokładnymi informacjami(szczególnie w projektach "klonujących" człowieka). Zalety i wady SSN ➕ SSN nie wymagają programowania. Rola programisty ogranicza się do zaprojektowania takiej struktury sieci, która najlepiej będzie nadawała się do rozwiązania danego problemu, a następnie do sprytnego pokierowania procesem uczenia sieci. ➕ SSN w przypadku drobnego uszkodzenia działa nadal, oczywiście do pewnego stopnia. Podobnie jest z naszym mózgiem. Jeśli ma np. drobny uraz po wypadku to i tak działa. ➖ SSN nie zda egzaminu gdzie potrzeba dokładnych i jasnych wyników. Zbieranie danych dla sieci neuronowych Jeśli zdecydujemy się na tworzenie sieci neuronowej do jakiegoś problemu, musimy przeanalizować jakie dane będzie potrzebować nasza SSN. Warto zważyć uwagę na 2 istotne problemy: -braki w danych - w tym wypadku SSN musi opierać się np. o wartości średnie lub inne wykresy, statystyki obliczane na podstawie wartości zmiennych dostępnych w ciągu uczącym - to właśnie wymyślił Bishop w 1995r. -wartości nienumeryczne - dla przykładu. Jeśli mamy wartości nienumeryczne np. dachówka={ceramiczna,blacho-dachówka} to możemy przedstawić je w formie numerycznej. Podsumowanie: W zbieraniu danych musimy zwracać uwagę na to: - Jeśli posiadamy za mało informacji, musimy zdobywać je za pomocą np. przyrządów próbkujących czy też innych źródeł informacji - aby nie podawać niepotrzebnych informacji - aby używać wartości numerycznych Przykłady zastosowań Można by tu wymieniać je do rana, lecz opisze te najbardziej zaawansowane, które mam nadzieję, jeszcze bardziej zachęcą Cię do czytania 😉 . •Rozpoznawanie Czy zastanawiałeś się kiedyś, dlaczego tak szybko rozpoznajesz np. że to twój pies? Nam, Homo Sapiens przychodzi to łatwo, bez większego wysiłku. Bez różnicy, czy będziemy rozpoznawać go (dalej mówię o tym zwierzu) w obroży czy bez, w słoneczny dzień, czy przy zachodzie słońca, pod kątem 10° czy 70°. No ale generacja "Robo Sapiens" 😃 już tak łatwo nie ma. I tu bez żartów powiem, że dobra SSN potrafi to zrobić( rozpoznać). W klasycznym komputerze twarze porównywane były by za pomocą określonego algorytmu. Lecz gdyby komputer miałby porównywać tyle twarz co człowiek... to albo by się zawiesił, albo robił by to baaaardzo długo. Dlaczego? Ponieważ klasycznie, program porównywał by za pomocą zasady: "pixel po pixelu". Ale co się stanie gdy twarz będzie pod innym niż wcześniej zapisana w komputerze? Odpowiedź prosta: "PROGRAM POLEGNIE!" (to tak jak w "pogromcach mitów": "mit został obalony" 😃) •Kojarzenie Jest w zasadzie bardzo zbliżone do rozpoznawania. Znów porównanie: to co próbujemy rozpoznać z tym co już znamy. Oczywiście w 90% (przypuszczam), aplikacja klasyczna źle stwierdzi i oznajmi że są to dwa różne obiekty. Tu narzucone są już pewne reguły (zależności) przez informatyka. Co ciekawe, jeśli mamy dobrą SSN, ona odnajdzie sama te zależności, o których nawet informatyk nie wie!! Wniosek więc prosty: chociaż gdybyśmy programowaniu najlepsze SSN, nie jesteśmy w stanie na 100% przewidzieć co IS zrobi. •Przewidywanie Znając jakieś zjawiska np: deszcz czy burza umiemy przewidzieć, kiedy to zjawisko nastąpi i co się stanie. Np. jeśli będziesz wiedzieć że będzie mocno lać ponieważ widać czarne chmury. SSN też służą do przewidywania, najczęściej ruchów na giełdzie(!). Tak więc ruch na giełdzie jest też wynikiem działania jakiś praw. •Roboty Naukowcy cały czas mają problem, ponieważ chcąc stworzyć robota chodzącego, borykają się problemami równowagi. Najlepszym dziełem jest mózg, który umożliwia nam (z pomocą mięśni, kości itp.) np: chodzenie, fikołki i jazdę na łyżwach. Aby stworzyć taki algorytm nie wątpliwie trzeba znać matematykę i kinematykę na wysokim poziomie. Ale i tu wykorzystywane są SSN! Przykład trochę kulawy, ale jest: I-droid 01 - też posiadał SSN (niby do wyrażania emocji;) ), choć nie tak rozwiniętą jak inne zaawansowane roboty. •Dobór pracowników Takie SSN przystosowane do takich działań, potrafią oceniać i porównywać ich wykształcenie, wiek, staż i wybierać najlepsze stanowisko w pracy. •Inne - diagnostyka układów elektronicznych - badania psychiatryczne - poszukiwania ropy naftowej - interpretacja badań fizycznych - prognozy cen - analiza badań medycznych - planowanie remontów urządzeń Struktura SSN •Podział SSN Istnieje wiele podziałów, ale wymienię tylko te najważniejsze. SSN możemy podzielić na: -jednokierunkowe - czyli wszystkie dane wędrują w jednym kierunku i nie wracają do poprzednich warstw(sygnał przechodzi przez każdy neuron dokładnie raz w swoim cyklu) -rekurencyjne - połączenia w tej sieci stanowią graf z cyklami Definicja i struktura sztucznego neuronu Przyjrzyjmy się poniższemu rysunkowi. Do neuronu dociera pewna liczba sygnałów, inaczej wartości wejściowych. Sygnały te pochodzą: - z zewnątrz-wtedy mówimy o sygnałach pierwotnych trafiających do sieci z zewnątrz - z wyjść innych neuronów (czyli aksonów) będących w tej samej sieci neuronowej Każda wartość wprowadzana jest do neuronu poprzez wagi, które wcześniej ustalone, zmieniają wartość wchodzącą do neuronu("zwiększają moc"). Wagi odpowiadają biologicznym synapsom. Każdy neuron posiada również pojedynczą wartość progową, określającą jak silne musi być jego pobudzenie(jaka musi być wartość), by doszło do "pracy" neuronu. W bloku sumującym (odpowiadającym biologicznemu jądru) sumuje się wszystkie wartości sygnałów wejściowych które zostały pomnożone w wagach przez współczynnik wagowy a następnie odejmuje się wartość progową. Uzyskana w ten sposób wartość pomocnicza określa pobudzenie neuronu. Powstała wartość zostaje przekształcona przez funkcję aktywacji (blok aktywacji). Wartość obliczona przez funkcję aktywacji jest ostatecznie wartością wyjściową (sygnałem wyjściowym) neuronu. Tabela przedstawia porównanie między elementami sztucznego neuronu a biologicznemu Łączenie neuronów Szczerze mówiąc, już nawet jeden neuron można nazwać siecią - jednoelementową lecz... za wydajna to ona nie będzie 😃. Aby realizować większe cele, potrzeba więcej neuronów. Jak je łączymy? Po pierwsze żaden neuron nie ma ze sobą bezpośredniego połączenia!. Dla przykładu weźmy 3 neurony. Są trzy sposoby łączenia neuronów: -"każdy z każdym" -połączenia między kolejnymi warstwami w sieciach warstwowych -tylko z określoną grupą neuronów, najczęściej z tzw. sąsiedztwem [www.neuron.kylos.pl] Liczymy, liczymy... Każda z wag posiada pewną wartość. Sygnały są mnożone przez wartości wag, wyniki owego mnożenia dodawane są do siebie w bloku sumującym. W ten sposób powstaje konkretna liczba, którą określa się jako potencjał membranowy. Dla przykładu podajmy jakiś przypadkowy neuron: Metody uczenia SSN Uczenie się to „po prostu” dobieranie wartości wag i połączeń między neuronami w taki sposób, aby po podaniu na wejściu sieci jakiś wartości, na jej wyjściu uzyskać odpowiedni wynik przy założeniu uzyskania jak najniższego błędu. Można wyróżnić kilka sposobów uczenia się: •uczenie pod nadzorem (z nauczycielem) - stosujemy wtedy gdy znamy odpowiedź na ciąg danych podanych na wejścia. Odmianą tego sposobu jest uczenie się z krytykiem. •uczenie z krytykiem - w tym "systemie nauczania" nie występuje informacja o wartościach pożądanych na wyjściu systemu, a jedynie informacja czy podjęta zmiana wartości wag daje wyniki pozytywne w sensie pożądanego zachowania systemu, czy negatywne działanie. Obrazek ze strony www.kik.pcz.czest.pl obrazuje tą zasadę. •uczenie bez nadzoru(bez nauczyciela) - pożądana odpowiedź nie jest znana. Ze względu na brak informacji o poprawności, czy niepoprawności odpowiedzi sieć musi się uczyć poprzez analizę. W trakcie analizy parametry sieci podlegają zmianom(samoorganizacji). Tu można wyróżnić kilka typów uczenia: -->typu Hebba Donald Olding Hebb w 1944 stwierdził że: Donald Olding Hebb w 1944 napisał: jeżeli akson komórki A bierze systematycznie udział w pobudzeniu komórki B powodującym jej aktywację, to wywołuje to zmianę metaboliczności w jednej lub obu komórkach, prowadzącą do wzrostu skuteczności pobudzania B przez A Uczenie samoorganizujące się typu Hebba opiera się na obserwacji neurobiologicznej, zgodnie z którą waga powiązań między dwoma neuronami wzrasta przy stanie ich jednoczesnego pobudzenia, w przeciwnym wypadku maleje. -->typu konkurencyjnego Charakterystyczną cechą tego typu jest to że neurony współzawodniczą ze sobą, aby stać się aktywnymi (pobudzonymi). W metodzie Hebba, dowolna liczba neuronów mogła być aktywna, natomiast w uczeniu konkurencyjnym tylko jeden neuron może być aktywny, a reszta pozostaje w stanie spoczynku. -("Winner takes all"- zwycięzca bierze wszystko) - W tej metodzie grupa neuronów współzawodniczących otrzymuje te same sygnały wejściowe. W zależności od aktualnych wartości wag sygnały wyjściowe neuronów różnią się między sobą. W wyniku porównania tych sygnałów zwycięża ten neuron, którego wartość jest największa czyli jego wektor wag jest najbliższy aktualnemu wektorowi uczącemu. Neuron zwycięzca przyjmuje wartość 1, a pozostałe - przegrywające 0. W "nagrodę" neuron zwycięzca przyjmuje stan 1 umożliwiający korektę (aktualizację) wag. Pozostałe neurony(przegrane) przyjmują stan 0 przez co mają zablokowaną możliwość aktualizacji wag. Problemem tej metody jest to że niektóre neurony nigdy nie wygrywają przez co przechodzą w status "martwego neuronu" i przyczyniają się do zmniejszenia ilość jednostek uczących się, a zatem powodują zwiększenie ryzyka popełnienia błędu. Aby zapobiec takiej sytuacji wprowadza się limit zwycięstw który ogranicza ilość możliwych wygranych przez jeden neuron, i po przekroczeniu neuron zostaje stopowany, dając innym szansę na wygraną. -("Winner takes most"- zwycięzca bierze większość) - jest to odmiana uczenia konkurencyjnego. Neuron który wygra uaktywnia się przyjmując wartość 1 i umożliwia częściowe uaktualnianie innych neuronów z sąsiedztwa. Stopień ich uaktywnienia zależy od odległości ich wektorów wagowych od wag neuronu wygrywającego. Podsumowanie 1 części i zapowiedzi... Mam nadzieje że spodobała się wam ta pierwsza część serii artykułów o SSN. Już niebawem pojawi się 2 część. Omówimy RS-232 który przyda się nam w 3 części. Słowniczek trudniejszych pojęć: • Warstwy ukryte nazywamy wszystkie warstwy sieci oprócz wejściowej i wyjściowej. Źródła: wikipedia.pl neuron.kylos.pl Pozdrawiam Madik 5 Link do komentarza Share on other sites More sharing options...
FeeKin Czerwiec 25, 2010 Udostępnij Czerwiec 25, 2010 Bardzo fajny art. Masz mój głos. Link do komentarza Share on other sites More sharing options...
Hudyvolt Czerwiec 25, 2010 Udostępnij Czerwiec 25, 2010 Ciekawe, ciekawe. Fajny wstęp, z humorem, tajemniczy, pozostaje uczucie niedosytu i chęć przeczytania następnej części. Powinieneś pisać powieści przygodowe albo jakieś kryminały ;] A tak od strony technicznej to nie działa animacja i obrazek w rozdziale "Liczymy, liczymy..." i w zasadzie nie wiadomo o co w tym rozdziale chodzi. Link do komentarza Share on other sites More sharing options...
madik Czerwiec 25, 2010 Autor tematu Udostępnij Czerwiec 25, 2010 Tak, tak, z Trekerem( a właściwie on sam) wrzucamy obrazki i animacje na serwer diody 😉 Fakt, ten dział uzupełnia obrazek, ale jak gdyby dalszy ciąg tego działu nastąpi w części 3 😉 Pozdro Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Mihau Czerwiec 25, 2010 Udostępnij Czerwiec 25, 2010 Ciekawe, ciekawe. Sam zainteresowałem się SSN jakiś czas temu, ale nie czuję się chyba na siłach, żeby jakiś artykuł napisać. Na razie za mało jest, żeby cokolwiek powiedzieć, ale zapowiada się nieźle 😉 Chyba w rysunku w "liczymy, liczymy..." zapomniałeś o funkcji aktywacji :> Link do komentarza Share on other sites More sharing options...
Zuk Czerwiec 25, 2010 Udostępnij Czerwiec 25, 2010 Na razie najciekawiej zapowiadający się artykuł do konkursu. Chyba jedną z największych trudności jest odpowiednio dobrać wagi. Poruszysz ten temat... ? Jakieś przykłady praktycznego zastosowania w robotyce też zamierzasz przedstawić... ? Link do komentarza Share on other sites More sharing options...
madik Czerwiec 25, 2010 Autor tematu Udostępnij Czerwiec 25, 2010 Jakieś przykłady praktycznego zastosowania w robotyce też zamierzasz przedstawić... ? Postaram się aby w ostatniej części przedstawiony został CAŁY projekt robota z SSN (właśnie trawią się płytki do niego 😉 ) Link do komentarza Share on other sites More sharing options...
Nawyk Czerwiec 25, 2010 Udostępnij Czerwiec 25, 2010 Nie wiem na ile opierałeś się na innych publikacjach, ale część informacji wydaje mi się zbliżona do: http://alipe.webpark.pl/neuronki.swf Warto napisać z czego korzystałeś, bo raczej nie urodziłeś się z tą wiedzą 😉 Link do komentarza Share on other sites More sharing options...
madik Czerwiec 25, 2010 Autor tematu Udostępnij Czerwiec 25, 2010 Korzystałem z innej stronki www.neuron.kylos.pl 😉 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Czerwiec 25, 2010 Udostępnij Czerwiec 25, 2010 Przepraszam, przy wstawianiu flasha usunąłem podane źródło, zaraz dodam. Link do komentarza Share on other sites More sharing options...
Wojtek Czerwiec 25, 2010 Udostępnij Czerwiec 25, 2010 Skąd brałeś obrazki? Bo kiedyś widziałem już artykuł na tem temat z identycznymi obrazkami. Link do komentarza Share on other sites More sharing options...
OldSkull Czerwiec 25, 2010 Udostępnij Czerwiec 25, 2010 Tak się skłąda, że w tym semestrze miałęm przedmiot na którym się mówiło o logice rozmytej i sieciach neuronowych. Artykuł jest niezły jako wprowadzenie, ale troche brakuje - przede wszystkim uczenia (bo skąd sieć ma wiedzieć co jak należy rozpoznać). Mimo to czekam na kolejne części. Link do komentarza Share on other sites More sharing options...
madik Czerwiec 30, 2010 Autor tematu Udostępnij Czerwiec 30, 2010 Przed chwilą skończyłem pisać 1 część. Mam nadzieję że choć po części zrealizowałem wszystkie uwagi 😉 Jeśli macie jakieś inne proszę o napisanie 😉 Link do komentarza Share on other sites More sharing options...
kuba749 Czerwiec 30, 2010 Udostępnij Czerwiec 30, 2010 Dość ciekawy artykuł, choć te informacje można łatwo znaleźć w internecie. Czy w następnych częściach podasz jakieś przykładowe algorytmy w c/c++ lub napiszesz parę zdań o najczęściej używanych do tego celu bibliotekach oraz czy opiszesz w jaki sposób należy dobierać ilość warstw, liczbę neuronów, wejść i wyjść oraz jakie dane na wejścia należy podać w jakiś szczególnych przypadkach takich jak: rozpoznawanie pisma, twarzy, dźwięków, przewidywania kursów walut/giełdy? Link do komentarza Share on other sites More sharing options...
Nawyk Czerwiec 30, 2010 Udostępnij Czerwiec 30, 2010 I może ma to jeszcze wcisnąć na 8-bitowca? 😃 Do tego trzeba DSP, a jeszcze lepiej FPGA... Niech zrobi najprostszą sieć, ale żeby dała radę uczyć się w skończonej dziedzinie czasu (mówię o 8 bitowcach) a będzie miał mój głos 😉 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »