Tytuł: Sieci neuronowe
Źródła: Internet
Punkty omawiane w referacie:
1. Po co to jest ?
2. Jak to działa ? - budowa
3. Łączenie neuronów.
4. Jak zrobić sieć ?
5. Nauka sieci, rodzaje sieci ze względu na algorytm nauczania.
6. Co sztuczne sieci potrafią a czego niepotrafią ?
7. Kto stosuje sztuczne sieci neuronowe ?
8. Podsumowanie.
(rys.1)
Ad. 1
Sztuczne
sieci neuronowe są
tworem człowieka,
ale działaniem
naśladują
to, co natura stworzyła
i rozwijała
przez miliony lat - strukturę
nerwową
potrafiącą
odbierać
docierające
sygnały
i efektywnie przetwarzać
je na użyteczną
informację.
Swój
dynamiczny rozwój
zawdzięczają
dwóm
czynnikom:
wewnętrznemu - umiejętności generalizacji problemów i predykcji informacji
zewnętrznemu - nieograniczonej dostępności komputerów osobistych o ogromnej mocy obliczeniowej
Jakiś czas temu naukowcy dostrzegli, ze mózg ludzki jest bardzo wydajną i elastyczną maszyną liczącą, zaczęli się przyglądać jego budowie, właściwościom i zasadach działania. Potem wystarczył już tylko mały krok by wykorzystać te obserwacje w praktyce i zacząć tworzyć "mózgo-podobne" maszyny. W tym momencie ktoś mógłby zapytać, po co to robić, kiedy współczesne komputery są nieporównywalnie szybsze i dokładniejsze w obliczeniach niż człowiek. To oczywiście prawda i nikt nie chce wykorzystywać maszyn opartych na sieciach neuronowych do zadań, z których doskonale wywiązuje się tradycyjny komputer. Trzeba jednak zauważyć, że już kilkuletnie dziecko potrafi rozwiązywać problemy, z którymi komputery maja poważne problemy. Przede wszystkim komputery nie umieją reagować na problemy, z którymi się wcześniej nie spotkały. Jeżeli programista nie uwzględnił w swoim programie jakiejś sytuacji to program w jej obliczu wyświetli komunikat o błędzie, zawiesi się, albo zadziała w jakiś bezsensowny sposób. Dzieje się tak, ponieważ komputer nie potrafi analizować powstałej sytuacji, odwoływać się do wcześniejszych doświadczeń i podejmować własnej decyzji, nie mówiąc już o działaniu intuicyjnym. Prosty przykład: bierzemy do ręki małą piłeczkę, podrzucamy i łapiemy, nic prostszego, potrafimy to też zrobić z zamkniętymi oczami. A jak radziłby sobie z tym komputer? Musiałby znać dokładna masę piłeczki, siłę, z która ją wyrzucił, obliczyć jej tor, uwzględniając opór powietrza, ustawić rękę w odpowiednim położeniu i dokładnie, kiedy piłeczka znajdzie się w odpowiednim punkcie toru zacisnąć równocześnie wszystkie palce. Jest to dosyć skomplikowany sposób na wykonanie tak prostej czynności. Zawodowy żongler robi to kilkoma piłeczkami na raz, utrzymując na nosie krzesło i jestem pewna że nie myśli on wtedy o liczeniu prędkości w ruchu jednostajnie opóźnionym. Koszykarz potrafi stojąc tyłem do kosza z obrońcą za plecami nagle wyskoczyć, obrócić się w powietrzu, odchylić do tylu, żeby nie dąć się zablokować przeciwnikowi i rzucić piłkę. Koszykarz wysokiej klasy zwykle trafi, nieważne że kosz widzi tylko przez ułamek sekundy, już w momencie wyrzucania piłki. Jak my to robimy? Przede wszystkim uczymy się na przykładach i własnych doświadczeniach, kiedy raz spotkamy się z określona sytuacja potrafimy przez analogie dostosować się do podobnej, kiedy natkniemy się na nią po raz drugi. Potrafimy porównywać obiekty. Nawet, jeśli nigdy wcześniej nie widzieliśmy danego modelu samochodu i tak poznamy że to samochód, bo ma koła, drzwi, szybę, lusterka itd. Tak samo jak ten którym co rano jeździmy do szkoły czy pracy. Potrafimy też rozpoznać głos znajomego przez telefon pomimo trzasków i zakłóceń. Dziecko uczy się mówić jedynie słuchając rozmawiających rodziców, nie znając żadnych reguł językowych. Jest dużo więcej przykładów na wyższość ludzkiego mózgu nad komputerami, dlatego też wykorzystuje się sieci neuronowe i wiąże z nimi tak wielkie nadzieje.
Ad. 2
Podstawowa jednostka budowy biologicznego układu nerwowego jest neuron (rys.1). . Ludzki mózg zawiera ich bardzo wiele, bo około 10 miliardów. Neurony połączone są ze sobą, tworząc skomplikowana strukturę, przez która przechodzą z duża częstotliwością impulsy elektryczne. Pojedyncza komórka nerwowa składa się z jądra, wielu dendrytów, których celem jest pobieranie impulsów z innych neuronów i jednego aksonu, który przekazuje impuls dalej. Sztuczne neurony nie są dokładnymi kopiami oryginalnych neuronów, są raczej ich logicznymi odpowiednikami, mającymi podobne właściwości i działającymi tak jak ich pierwowzory (rys.2)
(rys. 2) Opracowany przez McCullocha i Pittsa w 1943 r. Został on oparty na budowie komórki nerwowej
Najprościej neuron można sobie wyobrazić jako przetwornik, który pobiera informacje ze wszystkich, swoich wejść i na ich podstawie emituje sygnał wyjściowy. W biologicznych układach nerwowych połączenia miedzy różnymi neuronami są różnej jakości, z tego wynika że niektóre sygnały są mocniejsze od innych. Tak samo w modelu sztucznego neuronu, każdemu połączeniu, między neuronami przypisuje się odpowiednia wagę. Waga to pewna stała, przez która przemnożony jest każdy sygnał przechodzący miedzy dwoma konkretnymi neuronami. Dzięki temu, w zależności od wag, impulsy od jednych neuronów są ważniejsze od innych. W praktyce więc każdy neuron pobiera sygnały od wszystkich połączonych ze sobą neuronów, każdy przemnaża przez odpowiednia wagę, otrzymane wartości sumuje i w oparciu o tę sumę nadaje sygnał wyjściowy. Funkcja, która odpowiada za końcowy sygnał może być funkcją liniową, może też być funkcją skokową, która wartościom poniżej pewnego progu przydziela 0, a pozostałym 1. Innymi często używanymi funkcjami są funkcje sigmoidalne, oraz tangensoidalne. Wybór funkcji należy do projektanta sieci i zależy od problemu, który ma ona rozwiązywać.
Ad. 3
Żeby neurony wykonywały określone zadania trzeba je połączyć w jakąś strukturę. Najczęściej stosuje się sieci warstwowe (perceptrony), czyli takie gdzie neurony podzielone są na warstwy, gdzie każdy neuron w warstwie jest połączony ze wszystkimi neuronami, z warstwy poprzedniej. Pierwsza warstwę nazywamy warstwa wejściowa, ostatnia wyjściowa, a wszystkie pomiędzy nimi to warstwy ukryte. Do różnych żądań wykorzystuje się sieci o różnej liczbie warstw, z tym że nie tworzy się sieci o liczbie warstw ukrytych większej niż trzy, ponieważ nie zauważono, aby ich skuteczność była większa niż w sieciach o trzech warstwach ukrytych, natomiast wzrasta ich komplikacja, za czym idzie spowolnienie ich działania. Zasadne jest za to zwiększanie ilości komórek w warstwie, co może spowodować zwiększenie efektywności sieci. Oprócz sieci warstwowych jednokierunkowych tworzy się tez sieci rekurencyjne. W sieciach tego typu występuje tzw. sprzężenie zwrotne miedzy warstwą wyjściowa a warstwą wejściowa. Oznacza to, że sygnały na wyjściu podawane są na wejściu warstwy wejściowej. Sygnały wejściowe w takiej sieci zależą zarówno od aktualnego stanu wejścia jak i od sygnałów wyjściowych w poprzednim cyklu. Innym typem sieci są sieci kierunkowe, są one bliższe swojemu biologicznemu odpowiednikowi, gdyż nie ma w nich sztucznego podziału na warstwy, a neurony są połączone tylko z tymi, które znajdują się w ich sąsiedztwie, właśnie tak zbudowane są moduły Cdi (Collect and Distribute), których używają naukowcy pracujący nad projektem.
Ad. 4
Stworzenie struktury sieci warstwowej, nie jest trudne i każdy, kto zna podstawy jakiegoś języka programowania powinien sobie poradzić. Warstwy można zapisać jako tablice neuronów, ilość neuronów w warstwie możemy najpierw ustalić w sposób dowolny i metodę prób i błędów zmieniać w zależności od otrzymywanych wyników. Pojedynczy neuron musi charakteryzować się wagami (których ilość jest równa ilości neuronów w warstwie poprzedniej) oraz wartością, która przekazuje. Początkowo wszystkie wagom można przypisać ta sama wartość, lub każdej przypisać wartość losowa. Procedurę przejścia impulsów przez sieć można stworzyć przy pomocy kilku pętli. Najpierw każdy neuron zbiera informacje ze wszystkich neuronów warstwy poprzedniej, każdy sygnał przemnaża przez odpowiednia wagę, następnie wszystko to sumuje i podstawia jako argument na przykład funkcji arctg. Tak samo postępujemy ze wszystkimi neuronami. Trzeba jeszcze tylko napisać procedurę, która dane, które mamy poddać analizie przez sieć, przekształca na impulsy, podawane poszczególnym neuronom wejścia. Druga procedura musi przekształcać otrzymane impulsy na dane zrozumiale dla użytkownika. Otrzymaliśmy w ten sposób prostą sieć, tyle że ona nie potrafi jeszcze rozwiązywać żadnych problemów. W tym momencie używa się procedur nauczania.
Ad. 5
Siec nadzorowana i nienadzorowana.
Istnieją dwa najczęściej stosowane algorytmy nauczania sztucznych sieci neuronowych:
- nadzorowane nauczanie, właściwy rezultat jest znany (prawidłowe dane wyjściowe) i podany sieci, która zmieniając poszczególne wagi połączeń stara się otrzymać wynik jak najbardziej podobny do podanego. Po treningu sieć poddawana jest testom, podczas których sieć nie zna prawidłowych rozwiązań a podane przez nią rozwiązanie jest porównywane z prawidłowym.
- nienadzorowane nauczanie, podczas treningu sieci nie jest podawane prawidłowe rozwiązanie. Nienadzorowana sieć neuronowa najczęściej stosuje różne metody kompresji danych, jak wymiarowa redukcja.
Różnice pomiędzy nadzorowanym i nienadzorowanym nauczaniem nie są często jasne. Uczenie nadzorowane posiada dwie podkategorie: auto-związek i hetero-związek. W auto-związku wartości wyjściowe są takie same jak wejściowe. W heter-związku są one odmienne. Wiele metod nienadzorowanego nauczania jest równoważną z auto-związkowymi metodami nadzorowanymi.
Siec jednokierunkowa i ze sprzężeniem zwrotnym (topologia).
Dwa główne kierunki jeżeli chodzi o topologie sieci neuronowych to:
- sieci jednokierunkowe, połączenia pomiędzy poszczególnymi częściami nie tworzą pętli. Sieci takie najczęściej bardzo szybko reagują na impulsy wejściowe. Trenowanie takich sieci odbywa się najczęściej przez sprawdzone już i poznane algorytmy.
- sieci ze sprzężeniem zwrotnym, sieci rekurencyjne, posiadają pętle w połączeniach. W rekurencyjnych sieciach neuronowych kiedy podawany jest sygnał na wejście, sieć musi powtarzać go stosukowo długo zanim uzyska dane wyjściowe. Sieci takie są trudniejsze do wytrenowania niż jednokierunkowe.
Siec kategoryczna i ilościowa.
Sieci neuronowe różnią się też pod względem rodzaju danych, który przetwarzają:
- kategoryczne - sieci, które przeważają tylko kilka stanów (np. 0 i 1; mężczyzna i kobieta; biały, zielony, czarny), wartości jakie przyjmują wejścia i wyjścia są symboliczne i muszą zostać zamienione na liczby, zanim zostaną podane sieci. Wartości takie należą do pewnej kategorii. Zarówno nadzorowane uczenie z kategorycznymi wartościami, jak i nienadzorowane uczenie z kategorycznymi wartościami nazywane jest "klasyfikacja".
- ilościowe - wartości przedstawiają pewne atrybuty, jak długość w metrach. Uczenie nadzorowane z wartościami ilościowymi nazywane jest "regresja".
(rys.3) Mechanizm uczenia neuronu
Ad. 6
W zasadzie sieci neuronowe potrafią przetwarzać każdą przetwarzaną funkcje, mogą zrobić wszystko to, co zwykły komputer potrafi oraz wiele więcej. W praktyce sieci neuronowe są szczególnie wykorzystywane do klasyfikacji i przedstawiania przybliżonej funkcji, zwłaszcza, że te zadania cechują się brakiem 100% precyzji, posiadają dużą ilość danych, przydatnych do treningu sieci, ale nie posiadają stałej reguły, za pomocą której można by przetworzyć te informacje w tradycyjny sposób. Prawie każdą dobrze zwymiarowana funkcja wektorowa może zostać przybliżona z dość dużą dokładnością przez sieć neuronową jednokierunkową (najczęściej używany w praktyce typ sieci) jeżeli mamy wystarczająco dużo danych i odpowiedni sprzęt. Wydaje się wiec, że odkryliśmy złoty przepis na wszystko, pojawia się pytanie, dlaczego sieci neuronowe nie wykorzystać dosłownie wszędzie skoro są tak genialne ? Odpowiedz brzmi: bo nie są tak genialne. Niestety. Technika uczenia sieci oparta jest na minimalizacji co ma doprowadzić do globalnego minimum - punktu docelowego w uczeniu sieci. Jednak minimalizacja jest rachunkowo niełatwa do kierowania z wyjątkiem małych lub prostych problemów. W praktyce jednak można zazwyczaj osiągnąć dobre rezultaty bez w pełni rozwiniętej, globalnej optymizacji. Jako przykład funkcji, której siec neuronowa nie może się nauczyć jest y=1/x z otwartego przedziału (0,1). Istnieje wiele tak skomplikowanych problemów, że sieć neuronowa nie poradziła by sobie bez zapamiętywania danych treningowych. Problemy te to: odkodowywanie zakodowanych informacji, przewidywanie pogody, przewidywanie losowych lub pseudolosowych liczb.
Ważne jest zrozumienie faktu, że nie ma metody uczenia sieci, która w magiczny sposób wytworzy informacje niezawarta w danych treningowych.
Sieci neuronowe jednokierunkowe są przeznaczone do dobrze określonych wejść i wyjść. Rekurencyjne sieci neuronowe teoretycznie mogą przetwarzać długie strumienie cyfr i symboli (prz.1), ale trenowanie rekurencyjnych sieci w praktyce jest o wiele bardziej skomplikowane niż trenowanie jednokierunkowej sieci.
Symulacja ludzkich emocji i świadomości ciągle leży w sferze science-fiction. Sztuczne sieci neuronowe są pomocne przy modelowaniu jakichś aspektów świadomości jak przewidywanie i rozumienie. A wielu książkach i artykułach, w których poruszany jest ten problem, mówi się, że w ciągu ostatnich kilku lat zrobiliśmy ogromny postęp, jednak gdy się na to dokładniej przyjrzeć to główny problem świadomości pozostaje nadal nietknięty.
(prz.1)
Rozpoznawanie znaków X, 0, +, -
Przykład ten pokazuje realizację problemu rozpoznawania przez sieć prostych symboli opartych na matrycy 3 x 3.
Ciąg uczący składa się z czterech następujących wektorów uczących:
wektor wejściowy |
wektor wyjściowy |
1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 0 0 0 0 1 1 1 0 0 0 |
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 |
Sieć musi mieć zatem 9 wejść i 4 wyjścia. Pozostaje zdefiniowanie warstw ukrytych. Doświadczenie pokazało, że najlepsze rezultaty uzyskano przy jednej warstwie ukrytej z pięcioma neuronami. Zatem ostateczna organizacja sieci wygląda następująco:
9 - 5 - 4
Nauczona sieć powinna prawidłowo rozpoznać symbole zniekształcone, np. tak:
... i rozpoznaje.
Ad. 7
- informatycy i naukowcy, którzy chcą się dowiedzieć o właściwościach procesów zmian niesymbolicznych informacji i sposobie uczenia się sieci ogólnie
- statystycy wykorzystują sieci neuronowe jako elastyczna, nieliniowa metodę obróbki danych (np. klasyfikacja danych)
- inżynierowie korzystają z dobrodziejstw sieci neuronowych na wielu płaszczyznach - procesy sygnalizacji i automatyczna kontrola
- naukowcy badają sieci neuronowe by stworzyć model procesy myślenia i świadomości (wysokie czynności mózgowe)
- naukowcy, psychologowie, neurobiolodzy badający średnie czynności mózgowe (np. pamięć, system nerwowy, ruchy)
- fizycy do modelowania wielu różnych, niezwykłych zjawisk i do wielu innych rzeczy
- biologowie stosują sieci neuronowe do odczytywania sekwencji nukleotydów
- filozofowie i wiele innych ludzi może być zainteresowana sieciami neuronowymi z różnych powodów.
Ad. 8
Najciekawsze w sieciach neuronowych jest to... że działają. To niesamowite ze wystarczy stworzyć strukturę składająca się z pewnej ilości zmiennych, wykonująca proste działania matematyczno-logiczne, a już można otrzymać namiastkę inteligencji. Wciąż do końca nie wiadomo dokładnie jak i czemu to działa. Twórcy pierwszych sieci po prostu zauważyli że działa to w naturze, przenieśli pomyśl na grunt techniki i okazało się ze tez działa. Właśnie to ze nie do końca rozumiemy mechanizm ich działania sprawia ze tak wielu ludzi pasjonuje się zagadnieniami SSN i ogólnie pojętej sztucznej inteligencji(AI). Sztuczna inteligencja jest bardzo dynamicznie rozwijająca się dziedzina nauki. Już dzisiaj sieci neuronowe znajdują wiele zastosowań. Dlatego zachęcam każdego do pilnego śledzenia ich rozwoju na przestrzeni najbliższych lat.