Witam serdecznie
Sieci neuronowe [za Wiki + komentarze własne]
Sieć neuronowa (sztuczna sieć neuronowa) to ogólna nazwa struktur matematycznych i ich programowych lub sprzętowych modeli, realizujących obliczenia lub przetwarzanie sygnałów poprzez rzędy elementów, zwanych neuronami, wykonujących pewną podstawową operację na swoim wejściu. Oryginalną inspiracją takiej struktury była budowa naturalnych układów nerwowych, w szczególności mózgu.
Zdjęcia SN:
http://www.ai.c-labtech.net/sn/images/siec.jpg
http://wazniak.mimuw.edu.pl/images/thumb/b/b0/UETP_M8_Slajd32.png/500px-UETP_M8_Slajd32.png
http://panda.bg.univ.gda.pl/~prezes/sn/MODELE_pliki/image004.jpg
Obecna moc komputerów pozwala na coraz wydajniejszą symulację sieci neuronowych. Ponieważ ostatnio zajmowałem się budową takiej sieci dla banku mam pewne porównania. Obliczenia sieci neuronowej 3 warstwowej z 30 wejściami, 60 neuronami warstw ukrytej i dwoma wyjściowymi dla WIG20 na Athlon 600 MHz + 512 RAM przy zastosowaniu algorytmu LM [do nasycenia] trwa około 300 minut. Obecnie taka sama sieć uczy się około 1 minuty na każdym nowym Athlonie X2 + 1 GB RAM. Kluczowym aspektem przy takich obliczeniach jest moc procesora. Pamięć jest drugorzędna.
Czasem mianem sztuczne sieci neuronowe określa się interdyscyplinarną dziedzinę wiedzy zajmującą się konstrukcją, trenowaniem i badaniem możliwości tego rodzaju sieci.
Ilu naukowców tyle metod budowy i uczenia sieci. Podstawy są wszystkim znane, jednak pomimo tego nie ma jednego wzoru, który jednoznacznie określałby jak budować sieć. Z własnych obserwacji [dotyczących predykcji rynków giełdowych] mogę powiedzieć, że najczęściej wychodzi się od wzoru – NN = pierwiastek z h*a+b… gdzie NN to liczba neuronów, h to liczba warstw ukrytych a to liczba wejść, b to liczba wyjść [o wejściach i wyjściach później]. W dziedzinie nauki istnieje kilka metod uczenia zarówno jednoprzebiegowych jak i wieloprzebiegowych. Takie podejście ma na celu zapobieżenia tzw. przeuczenia sieci. Przeuczenie sieci to jest najzwyklejsze „wyrycie na blachę” przykładów jakimi uczymy sieć.
Przykład:
Dziecki uczy się dodawać. Ma 4 działania:
1+1
2+4
3+2
2+2
Uczone dziecko ma dwie opcje
a) Zrozumieć zasadę dodawania i posługiwać się nią w przykładach, których nie widziało
b) Wyuczyć się przykładów na pamięć, wtedy jeżeli zobaczy nowy, nieznany przykład to nie będzie potrafiło go rozwiązać.
Teraz wystarczy zamienić dziecko na SN.
Zastosowania
Współcześnie nie ma wątpliwości, że sztuczne sieci neuronowe nie stanowią dobrego modelu mózgu, choć różne ich postaci wykazują cechy charakterystyczne dla biologicznych układów neuronowych: zdolność do uogólniania wiedzy, uaktualniania kosztem wcześniej poznanych wzorców, dawanie mylnych odpowiedzi po przepełnieniu.
Sztuczne sieci neuronowe znajdują zastosowanie w rozpoznawaniu i klasyfikacji wzorców (przydzielaniu wzorcom kategorii), predykcji szeregów czasowych, analizie danych statystycznych, odszumianiu i kompresji obrazu i dźwięku oraz w zagadnieniach sterowania i automatyzacji.
Inne zastosowania:
* diagnostyka układów elektronicznych,
* badania psychiatryczne,
* prognozy giełdowe,
* prognozowanie sprzedaży,
* poszukiwania ropy naftowej,
* interpretacja badań biologicznych,
* prognozy cen,
* analiza badań medycznych,
* planowanie remontów maszyn,
* planowanie postępów w nauce,
* analiza problemów produkcyjnych,
* optymalizacja działalności handlowej,
* analiza spektralna,
* optymalizacja utylizacji odpadów,
* dobór surowców,
* selekcja celów śledztwa w kryminalistyce,
* dobór pracowników,
* sterowanie procesów przemysłowych.,
Najpopularniejsze obecnie zastosowanie sieci neuronowych:
* w programach do rozpoznawania pisma (OCR)
* na lotniskach do sprawdzania, czy prześwietlony bagaż zawiera niebezpieczne ładunki
* do syntezy mowy
Typy sieci neuronowych
Cechą wspólną wszystkich sieci neuronowych jest to, że na ich strukturę składają się neurony połączone ze sobą synapsami. Z synapsami związane są wagi, czyli wartości liczbowe, których interpretacja zależy od modelu.
Sieci jednokierunkowe
Sieci jednokierunkowe to sieci neuronowe, w których nie występuje sprzężenie zwrotne, czyli pojedynczy wzorzec lub sygnał przechodzi przez każdy neuron dokładnie raz w swoim cyklu. Najprostszą siecią neuronową jest pojedynczy perceptron progowy, opracowany przez McCullocha i Pittsa w roku 1943.
W bardziej zaawansowanych rozwiązaniach stosuje się funkcje przejścia. Najpopularniejszą klasę funkcji stosowanych w sieciach neuronowych stanowią funkcje sigmoidalne, np. tangens hiperboliczny. Sieć zbudowana z neuronów wyposażonych w nieliniową funkcję przejścia ma zdolność nieliniowej separacji wzorców wejściowych. Jest więc uniwersalnym klasyfikatorem.
Do uczenia perceptronów wielowarstwowych stosuje się algorytmy spadku gradientowego, między innymi algorytm propagacji wstecznej.
Sieci rekurencyjne
Mianem sieci rekurencyjnej określa się sieć, w której połączenia między neuronami stanowią graf z cyklami. Wśród różnorodności modeli rekurencyjnych sztucznych sieci neuronowych wyróżnić można:
* sieć Hopfielda - układ gęsto połączonych ze sobą neuronów (każdy z każdym, ale bez połączeń zwrotnych) realizującą dynamikę gwarantującą zbieżność do preferowanych wzorców
* maszyna Boltzmanna - opracowana przez Hintona i T. Sejnowskiego stochastyczna modyfikacja sieci Hopfielda; modyfikacja ta pozwoliła na uczenie neuronów ukrytych i likwidację wzorcow pasożytniczych, kosztem zwiększenia czasu symulacji.
Sieci Hopfielda i maszyny Boltzmanna stosuje się jako pamięci adresowane kontekstowo, do rozpoznawania obrazów, rozpoznawania mowy, a także do rozwiązywania problemów minimalizacji (np. problemu komiwojażera).
Samoorganizujące się mapy
Samoorganizujące się mapy (Self Organizing Maps, SOM), zwane też sieciami Kohonena to sieci neuronów, z którymi są stowarzyszone współrzędne na prostej, płaszczyźnie lub w dowolnej n-wymiarowej przestrzeni.
Uczenie tego rodzaju sieci polega na zmianach współrzędnych neuronów, tak aby dążyły one do wzorca zgodnego ze strukturą analizowanych danych. Sieci zatem "rozpinają się" wokół zbiorów danych, dopasowując do nich swoją strukturę.
Sieci te stosowane są do klasyfikacji wzorców, np. głosek mowy ciągłej, tekstu, muzyki. Do najciekawszych zastosowań należy rozpinanie siatki wokół komputerowego modelu skanowanego obiektu.
Jak to się ma do buków?
Sieci neuronowe są w stanie rozwiązać następujące klasy problemów:
- regresja – wyjściowa zmienna stanowi ciągłą wartość [np. temperatura]
- klasyfikacja – wyjściowa zmienna stanowi element kategorii [ np. kolor]
Powyższe stanowią dwie najważniejsze.
Sieć neuronowa może więc „przewidzieć” wynik przyszłego spotkania – liczbę straconych goli, liczbę zyskanych goli, under/over i inne wartości dające się przełożyć na liczby.
Jak to działa?
Uproszczony model.
http://www.ai.c-labtech.net/sn/images/siec.jpg
Trójkaty całkowicie po lewej stronie to dane wejściowe czyli – drużyny, ilość goli, ilość zwycięstw, porażek itd. Ponieważ przez ostatni rok miałem styczność głównie z tematem giełdy i bankowości to w tej dziedzinie danymi wejściowymi mogą być wiek klienta, liczba dzieci, stan cywilny, dochód, posiadany samochód itd.
Rolą warstw wejściowych jest dystrybucja danych do neuronów warstwy ukrytej.
Następne dwie warstwy w środku stanowią „pamięć i inteligencję”. Tam właśnie dokonuje się automatycznie [wg algorytmu] proces nauki. Ostatnie trójkąty po prawej stronie to warstwy wyjściowe czyli to co nam daje sieć jako wynik. Może to być na przykład liczba goli lub zwycięstwo danej drużyny.
Posługiwać się sieciami neuronowymi można na kilka sposobów:
- użyć specjalistycznego softu np. świetny MathLab
- napisać samemu sieć od zera [dla masochistów]
- napisać sieć korzystając z gotowych bibliotek Fast Artificial Neural Network [FANN]
Ponieważ trochę śledzę to forum postanowiłem podzielić się posiadaną wiedzą. Ostatni rok spędziłem pracując dla banku przy takim projekcie SN. Mam soft w domu, który chętnie wykorzystam dla celów predykcji zdarzeń sportowych. Jest jednak kilka minusów:
- nie wiem czy sieć neuronowa będzie lepsza od typerów, analizatora 1.0b lub rzutu monetą,
- nie znam się na sporcie, ponieważ lubię z kolegami pokopać gałę lub oglądać mecze w TV, ale specjalistyczna wiedza sportowa jest mi obca.
Jeżeli będzie wola i odzew możemy taki temat i projekt powoli rozwinąć na tym forum. Nie oczekuję żadnych pieniędzy ani wynagrodzeń. Wszystkie typy z SN będą podawane na forum [do czasu Bana za 10% skuteczności ???? ). Nie ma tu żadnych haczyków. Poza tym, że mi się nie chce pracować znów dla żadnej Korporacji
Jeżeli są jakieś pytania [use Google Luke], chętnie na nie odpowiem, jak i rozwieję wszystkie niejasności.
Pozdrawiam
Sieci neuronowe [za Wiki + komentarze własne]
Sieć neuronowa (sztuczna sieć neuronowa) to ogólna nazwa struktur matematycznych i ich programowych lub sprzętowych modeli, realizujących obliczenia lub przetwarzanie sygnałów poprzez rzędy elementów, zwanych neuronami, wykonujących pewną podstawową operację na swoim wejściu. Oryginalną inspiracją takiej struktury była budowa naturalnych układów nerwowych, w szczególności mózgu.
Zdjęcia SN:
http://www.ai.c-labtech.net/sn/images/siec.jpg
http://wazniak.mimuw.edu.pl/images/thumb/b/b0/UETP_M8_Slajd32.png/500px-UETP_M8_Slajd32.png
http://panda.bg.univ.gda.pl/~prezes/sn/MODELE_pliki/image004.jpg
Obecna moc komputerów pozwala na coraz wydajniejszą symulację sieci neuronowych. Ponieważ ostatnio zajmowałem się budową takiej sieci dla banku mam pewne porównania. Obliczenia sieci neuronowej 3 warstwowej z 30 wejściami, 60 neuronami warstw ukrytej i dwoma wyjściowymi dla WIG20 na Athlon 600 MHz + 512 RAM przy zastosowaniu algorytmu LM [do nasycenia] trwa około 300 minut. Obecnie taka sama sieć uczy się około 1 minuty na każdym nowym Athlonie X2 + 1 GB RAM. Kluczowym aspektem przy takich obliczeniach jest moc procesora. Pamięć jest drugorzędna.
Czasem mianem sztuczne sieci neuronowe określa się interdyscyplinarną dziedzinę wiedzy zajmującą się konstrukcją, trenowaniem i badaniem możliwości tego rodzaju sieci.
Ilu naukowców tyle metod budowy i uczenia sieci. Podstawy są wszystkim znane, jednak pomimo tego nie ma jednego wzoru, który jednoznacznie określałby jak budować sieć. Z własnych obserwacji [dotyczących predykcji rynków giełdowych] mogę powiedzieć, że najczęściej wychodzi się od wzoru – NN = pierwiastek z h*a+b… gdzie NN to liczba neuronów, h to liczba warstw ukrytych a to liczba wejść, b to liczba wyjść [o wejściach i wyjściach później]. W dziedzinie nauki istnieje kilka metod uczenia zarówno jednoprzebiegowych jak i wieloprzebiegowych. Takie podejście ma na celu zapobieżenia tzw. przeuczenia sieci. Przeuczenie sieci to jest najzwyklejsze „wyrycie na blachę” przykładów jakimi uczymy sieć.
Przykład:
Dziecki uczy się dodawać. Ma 4 działania:
1+1
2+4
3+2
2+2
Uczone dziecko ma dwie opcje
a) Zrozumieć zasadę dodawania i posługiwać się nią w przykładach, których nie widziało
b) Wyuczyć się przykładów na pamięć, wtedy jeżeli zobaczy nowy, nieznany przykład to nie będzie potrafiło go rozwiązać.
Teraz wystarczy zamienić dziecko na SN.
Zastosowania
Współcześnie nie ma wątpliwości, że sztuczne sieci neuronowe nie stanowią dobrego modelu mózgu, choć różne ich postaci wykazują cechy charakterystyczne dla biologicznych układów neuronowych: zdolność do uogólniania wiedzy, uaktualniania kosztem wcześniej poznanych wzorców, dawanie mylnych odpowiedzi po przepełnieniu.
Sztuczne sieci neuronowe znajdują zastosowanie w rozpoznawaniu i klasyfikacji wzorców (przydzielaniu wzorcom kategorii), predykcji szeregów czasowych, analizie danych statystycznych, odszumianiu i kompresji obrazu i dźwięku oraz w zagadnieniach sterowania i automatyzacji.
Inne zastosowania:
* diagnostyka układów elektronicznych,
* badania psychiatryczne,
* prognozy giełdowe,
* prognozowanie sprzedaży,
* poszukiwania ropy naftowej,
* interpretacja badań biologicznych,
* prognozy cen,
* analiza badań medycznych,
* planowanie remontów maszyn,
* planowanie postępów w nauce,
* analiza problemów produkcyjnych,
* optymalizacja działalności handlowej,
* analiza spektralna,
* optymalizacja utylizacji odpadów,
* dobór surowców,
* selekcja celów śledztwa w kryminalistyce,
* dobór pracowników,
* sterowanie procesów przemysłowych.,
Najpopularniejsze obecnie zastosowanie sieci neuronowych:
* w programach do rozpoznawania pisma (OCR)
* na lotniskach do sprawdzania, czy prześwietlony bagaż zawiera niebezpieczne ładunki
* do syntezy mowy
Typy sieci neuronowych
Cechą wspólną wszystkich sieci neuronowych jest to, że na ich strukturę składają się neurony połączone ze sobą synapsami. Z synapsami związane są wagi, czyli wartości liczbowe, których interpretacja zależy od modelu.
Sieci jednokierunkowe
Sieci jednokierunkowe to sieci neuronowe, w których nie występuje sprzężenie zwrotne, czyli pojedynczy wzorzec lub sygnał przechodzi przez każdy neuron dokładnie raz w swoim cyklu. Najprostszą siecią neuronową jest pojedynczy perceptron progowy, opracowany przez McCullocha i Pittsa w roku 1943.
W bardziej zaawansowanych rozwiązaniach stosuje się funkcje przejścia. Najpopularniejszą klasę funkcji stosowanych w sieciach neuronowych stanowią funkcje sigmoidalne, np. tangens hiperboliczny. Sieć zbudowana z neuronów wyposażonych w nieliniową funkcję przejścia ma zdolność nieliniowej separacji wzorców wejściowych. Jest więc uniwersalnym klasyfikatorem.
Do uczenia perceptronów wielowarstwowych stosuje się algorytmy spadku gradientowego, między innymi algorytm propagacji wstecznej.
Sieci rekurencyjne
Mianem sieci rekurencyjnej określa się sieć, w której połączenia między neuronami stanowią graf z cyklami. Wśród różnorodności modeli rekurencyjnych sztucznych sieci neuronowych wyróżnić można:
* sieć Hopfielda - układ gęsto połączonych ze sobą neuronów (każdy z każdym, ale bez połączeń zwrotnych) realizującą dynamikę gwarantującą zbieżność do preferowanych wzorców
* maszyna Boltzmanna - opracowana przez Hintona i T. Sejnowskiego stochastyczna modyfikacja sieci Hopfielda; modyfikacja ta pozwoliła na uczenie neuronów ukrytych i likwidację wzorcow pasożytniczych, kosztem zwiększenia czasu symulacji.
Sieci Hopfielda i maszyny Boltzmanna stosuje się jako pamięci adresowane kontekstowo, do rozpoznawania obrazów, rozpoznawania mowy, a także do rozwiązywania problemów minimalizacji (np. problemu komiwojażera).
Samoorganizujące się mapy
Samoorganizujące się mapy (Self Organizing Maps, SOM), zwane też sieciami Kohonena to sieci neuronów, z którymi są stowarzyszone współrzędne na prostej, płaszczyźnie lub w dowolnej n-wymiarowej przestrzeni.
Uczenie tego rodzaju sieci polega na zmianach współrzędnych neuronów, tak aby dążyły one do wzorca zgodnego ze strukturą analizowanych danych. Sieci zatem "rozpinają się" wokół zbiorów danych, dopasowując do nich swoją strukturę.
Sieci te stosowane są do klasyfikacji wzorców, np. głosek mowy ciągłej, tekstu, muzyki. Do najciekawszych zastosowań należy rozpinanie siatki wokół komputerowego modelu skanowanego obiektu.
Jak to się ma do buków?
Sieci neuronowe są w stanie rozwiązać następujące klasy problemów:
- regresja – wyjściowa zmienna stanowi ciągłą wartość [np. temperatura]
- klasyfikacja – wyjściowa zmienna stanowi element kategorii [ np. kolor]
Powyższe stanowią dwie najważniejsze.
Sieć neuronowa może więc „przewidzieć” wynik przyszłego spotkania – liczbę straconych goli, liczbę zyskanych goli, under/over i inne wartości dające się przełożyć na liczby.
Jak to działa?
Uproszczony model.
http://www.ai.c-labtech.net/sn/images/siec.jpg
Trójkaty całkowicie po lewej stronie to dane wejściowe czyli – drużyny, ilość goli, ilość zwycięstw, porażek itd. Ponieważ przez ostatni rok miałem styczność głównie z tematem giełdy i bankowości to w tej dziedzinie danymi wejściowymi mogą być wiek klienta, liczba dzieci, stan cywilny, dochód, posiadany samochód itd.
Rolą warstw wejściowych jest dystrybucja danych do neuronów warstwy ukrytej.
Następne dwie warstwy w środku stanowią „pamięć i inteligencję”. Tam właśnie dokonuje się automatycznie [wg algorytmu] proces nauki. Ostatnie trójkąty po prawej stronie to warstwy wyjściowe czyli to co nam daje sieć jako wynik. Może to być na przykład liczba goli lub zwycięstwo danej drużyny.
Posługiwać się sieciami neuronowymi można na kilka sposobów:
- użyć specjalistycznego softu np. świetny MathLab
- napisać samemu sieć od zera [dla masochistów]
- napisać sieć korzystając z gotowych bibliotek Fast Artificial Neural Network [FANN]
Ponieważ trochę śledzę to forum postanowiłem podzielić się posiadaną wiedzą. Ostatni rok spędziłem pracując dla banku przy takim projekcie SN. Mam soft w domu, który chętnie wykorzystam dla celów predykcji zdarzeń sportowych. Jest jednak kilka minusów:
- nie wiem czy sieć neuronowa będzie lepsza od typerów, analizatora 1.0b lub rzutu monetą,
- nie znam się na sporcie, ponieważ lubię z kolegami pokopać gałę lub oglądać mecze w TV, ale specjalistyczna wiedza sportowa jest mi obca.
Jeżeli będzie wola i odzew możemy taki temat i projekt powoli rozwinąć na tym forum. Nie oczekuję żadnych pieniędzy ani wynagrodzeń. Wszystkie typy z SN będą podawane na forum [do czasu Bana za 10% skuteczności ???? ). Nie ma tu żadnych haczyków. Poza tym, że mi się nie chce pracować znów dla żadnej Korporacji
Jeżeli są jakieś pytania [use Google Luke], chętnie na nie odpowiem, jak i rozwieję wszystkie niejasności.
Pozdrawiam