Sztuczne sieci neuronowe
Ludzie już od dawna marzyli o myślących komputerach. Takich, które mogły by wyręczać ludzi z obowiązków, bez podania dokładnych instrukcji, i takich, które pomagały by niepełnosprawnym. Jednak komputery są stworzone tak, że wykonują tylko konkretnie określoną instrukcję. Robią tylko to, co im każemy. Jak więc mają myśleć? Z pomocą przychodzą sztuczne sieci neuronowe.
Działanie sieci neuronowych
Sieci neuronowe składają się ze sztucznych neuronów, stworzonych na bazie neuronów w ludzkim mózgu. Mają bardzo podobne właściwości. Składają się z wejść, wag, bloku sumowania, bloku aktywacji i wyjścia.
Na wejścia (ich liczba jest dowolna) neuronu warstwa wejściowa lub inny neuron ( o tym póżniej) podaje informację. Są one mnożone przez wagi. Są one ustalane przez uczenie się sieci neuronowej, i oznaczają to, jak ważna jest ta informacja. Blok sumowania, jak sama nazwa wskazuje, sumuje otrzymane iloczyny. W zależności od przeznaczenia sieci, stosuje się różne funkcje aktywacji. Najczęściej jest to funkcja liniowa. O innych, rzadziej używanych funkcjach aktywacji można przeczytać tu. Informacja z wyjścia trafia na wejścia innych neuronów. Poszczególny neuron jest już siecią, ale do bardziej skomplikowanych operacji nie wystarczy.
Rozbudowana sieć neuronowa składa się z warstw. Pierwszą warstwą zawsze jest warstwa wejściowa. Pobiera ona od użytkownika lub innej sieci neuronowej dane, które są przesyłane dalej,do sieci. Następną warstwą składa się już ze sztucznych neuronów, tak zwana warstwa ukryta. Neurony w poszczególnych warstwach nie są ze sobą połączone, ale łączą się warstwami. Neuron z warstwy pierwszej jest połączony z wszystkimi neuronami z warstwy następnej. W praktyce oznacza to,że w sieci może pracować dowolna liczba warstw. Ostatnią warstwą jest zawsze warstwa wyjściowa. Przekazuje ona informację czytelną dla użytkownika.
Sieć jaką opisałem wyżej, to sieć jednokierunkowa. Informacje przepływają tylko w jednym określonym kierunku. Ale istnieją też inne typy sieci, np. sieć rekurencyjna. W tym typie sieci informacje mogą przepływać też w drugą stronę. Informacje z wyjścia neuronu mogą wracać na wejścia poprzednich warstw.
Jedną z zalet sieci neuronowych jest to, że nie trzeba prawie nic programować. Sieć neuronową się uczy. Nauka polega na „dostrajaniu” wag w ten sposób, aby sieć rozpoznawała dane poprawnie. Są na to różne sposoby.
1. Nauka z nauczycielem
W tym sposobie, nauczyciel samodzielnie koryguje wagi. Przykładowo: nauczyciel podaje na wejście sieci jakieś dane. Następnie sprawdza poprawnosć danych na wyjściu. Jeśli informacja okaże się błędna, nauczyciel ręcznie zmienia wagi, i uruchamia sieć z tymi samymi danymi, aż do skutku. Jest to dość pracochłonny sposób.
2. Nauka z krytykiem
Ucząc sieć w ten sposób, nie korygujemy nic ręcznie. Sieć sama próbuje korygować wagi. Krytyk tylko informuje sieć o poprawności danych orzymanych na wyjściu.
3. Samodzielna nauka sieci
Sieci neuronowe potrafią się też uczyć same. Działa to dzięki takim zasadom jak „wygrywający bierze wszystko”. Jednak te metody nauki nie zawsze są skuteczne.Nauczona sieć neuronowa może już służyć do tego, do czego została stworzona.
Zastosowania sieci neuronowych
Sieci neuronowe mogą przydac się osobom niepełnosprawnym, np. czytając tekst na głos lub odwrotnie (zapisywać czyjś głos). Mogą być używane do operacji, z którymi klasyczne algorytmy sobie nie radzą, np. rozpoznawanie obrazów. Bardzo ciekawą implementacją sieci neuronowych jest OpenCV zapoczątkowane przez Intel’a. Jest to biblioteka do rozpoznawania obiektów na filmach, i nie tylko. W odległej przyszłości, bardzo możliwe że sieci neuronowe będą używane do tworzenia humanoidalnych robotów.