Proszę zaproponować treść hasła "Sieci Neuronowe" do leksykonu dla uczniów szkół licealnych.
Sieciami neuronowymi nazywamy struktury matematyczne i ich programowe lub sprzętowe modele, realizujące obliczenia lub przetwarzające sygnały poprzez rzędy elementów, zwanych sztucznymi neuronami. Pierwowzór sieci neuronowych to oczywiście mózg ludzki. Osoby zafascynowane swoją inteligencją, zdolnościami adaptacyjnymi oraz umiejętnością uczenia się chciały posiąść maszynę obliczeniową, która chociaż po części byłaby tak doskonała jak ich mózg. Przeprowadzone badania zaowocowały stworzeniem sieci neuronowych. Stanowią one narzędzie, które obdarzy maszynę lub algorytm zbiorem zachowań i postaw, pozwalających na adaptację do istniejących warunków oraz umożliwi również wykonywanie pracy w bardziej kreatywny sposób. Można więc powiedzieć, że sieci neuronowe są namiastką sztucznej inteligencji (AI – „artificial inteligence”). Podstawowy element z jakiego składa się ludzki mózg to komórka, która zbudowana jest z neuronów. Próby modelowania (matematycznego) niedużych układów połączonych ze sobą neuronów doprowadziły do powstania sieci neuronowych. Jak się okazało, wykazują one pewne zbliżone cechy do ludzkiego mózgu. Są to np. zdolność uczenia się czy kojarzenia.
Zastosowanie sztucznych sieci neuronowych - obszary zastosowań, zalety, wady, ograniczenia.
Zalety:
Obliczenia w sieciach neuronowych wykonywane są równolegle, więc tysiące neuronów składających się na sieć, wykonują przypadające im zadania obliczeniowe równocześnie, w związku z czym szybkość pracy sieci neuronowych może docelowo wielokrotnie przewyższać szybkość aktualnie eksploatowanych komputerów;
Sieci nie trzeba programować, ponieważ ich skuteczne i celowe działanie objawia się nawet w sytuacji gdy twórca sieci nie jest programistą i nie rozumie algorytmu, ponieważ sieci wykorzystują proces uczenia;
Stanowią wygodną i tanią propozycją wieloprocesorowego systemu o bardzo wielu elementach przetwarzających równolegle dostarczane informacje;
Sprawują się idealnie gdy potrafimy sprecyzować cel, ale nie potrafimy powiedzieć nic na temat sposobu jego osiągnięcia, np. każdy człowiek potrafi rozpoznawać twarz, robimy to łatwo i bez zastanowienia, lecz wprowadzenie fotografii do komputera rodzi problem jak analizować i przetwarzać informacje o ciemniejszych i jaśniejszych pikselach składających się na obraz by ustalić tożsamość osoby. Innym przykładem może być rozwiązanie problemu komiwojażera, czyli znajdowanie najkrótszej drogi pomiędzy rozproszonymi na mapie miastami;
Świetne narzędzie do przewidywania i ustalania wzorca, ponieważ sieci neuronowe z powodzeniem potrafią przewidywać różne zjawiska i procesy na podstawie dużej ilości danych retrospektywnych;
Są bardzo odporne na uszkodzenia. Stanowi to konsekwencję tego, że informacje przechowywane w sieci mają charakter rozproszony. Innymi słowy, nie ma możliwości ustalenia, który konkretny fragment sieci albo neuron jest odzwierciedleniem danej cechy.
Są namiastką sztucznej inteligencji dzięki zdolność uczenia się, kojarzenia faktów i dostrzegania wzorców
Wady!
Istnieje kilka charakterystycznych cech zadań, których rozwiązanie z wykorzystaniem sieci jest praktycznie niemożliwe:
Operacja na symbolach – nie ma sensu budować edytora tekstu działającego w oparciu o sieci neuronowe skoro istnieje algebraiczna alternatywa rozwiązania tego problemu
Wysoka dokładność wyniku numerycznego – sieci pracują w sposób „jakościowy”, więc dostarczane przez nią informację mają charakter przybliżony
Rozumowanie wieloetapowe – sieć najczęściej rozwiązuje przedstawiony jej problem jednokrokowo. Rozumowanie wieloetapowe wymaga uzasadnienia, natomiast sama odpowiedź sieci jest „praktycznym” sukcesem.
Zastosowanie sztampowe:
Problemy prognozowe (ceny na giełdzie, zapotrzebowanie na energię w systemie energetycznym, sprzedaży towarów)
Poszukiwawcze problemy (złoża ropy naftowej, meteorologia, badania biologiczne, dobór pracowników, poszukiwanie błędów i usterek w istniejących układach)
Optymalizacja i sterowanie (sterowanie zaworami w silnikach rakietowych, optymalizacja harmonogramu leczenia pacjentów w szpitalach, problem komiwojażera)
Zastosowanie nieszablonowe:
Poszukiwanie bomb na lotniskach w bagażach
Symulatory lotów US Air Force
Identyfikacja typów skał przy odwiertach
Wspomaganie manewrów dużych pojazdów (np. cofanie z naczepą dużej, pięcioosiowej ciężarówki)
Sterowanie ramieniem robota NASA, którego zadaniem było chwytanie przedmiotów znajdujących się w dowolnym położeniu
System klasyfikacji i rozpoznania sygnałów sonarowych US Navy
Kryminalistyka (rozpoznawanie twarzy z kamer, porządkowanie dowodów i śledztw oraz rozpoznawanie wzorców postępowania psychopatów)
Algorytmy wykorzystujące sieci neuronowe, a algorytmy "klasyczne" w modelowaniu zjawisk i układów (podobieństwo, różnice, wady i zalety)
Zalety: możliwość rozwiązywania problemów, gdy potrafimy zdefiniować cel, ale nie znamy sposobu rozwiązania (rozpoznawanie twarzy lub problem komiwojażera) oraz wysoka szybkość pracy na dużym zbiorze danych
Wady: niska dokładność wyników, brak możliwości operowania na symbolach oraz umiejętność tworzenia modelu w oparciu o sieci jest raczej instynktowna i nie rządzi się żadnymi ścisłymi regułami
Podobieństwo: matematyczna postać zapisu problemu (praca i uczenie sieci opiera się na podstawowych zasadach algebry, tak jak i klasyczne modelowanie zjawisk i układów)
Różnice: W ujęciu klasycznym możemy pokazać, która część modelu odpowiada za jaki problem, natomiast w sieciach mamy „rozmycie odpowiedzialności”
Metody uczenia sztucznych sieci neuronowych
Poszczególne elementy w sieci neuronowej są ze sobą powiązane niezmiennymi połączeniami przypominającymi synapsy. Modyfikacji ulegają tzw. wagi połączeń. Właśnie zmiana ich wartości w sieciach jest odpowiedzialna za proces uczenia się. Wyróżnić możemy dwa podstawowe podejścia:
uczenie z nauczycielem (supervised learning) – polega na „nakarmieniu” sieci neuronowej danymi wraz z pożądanymi odpowiedziami. Sieć przetwarza sygnał wejścia na sygnał wyjścia i porównuje z oczekiwanym rezultatem. Następnie, nanosi poprawki na wartości wag połączeń w neuronach tak, aby następnym razem uzyskać odpowiedź zbliżoną do oczekiwanej. Wielokrotne przepuszczenie zbioru wzorcowych danych pozwala nauczyć iteracyjnie sieć, korzystając z tego samego zbioru. Uczenie takie najlepiej sprawdza się w przypadku, gdy mamy pewną ilość danych wejściowych i odpowiadające im wyniki, a od sieci oczekujemy znalezienia zależności pomiędzy nimi!
bez nauczyciela (unsupervised learning) – polega na „nakarmieniu” sieci neuronowej danymi, lecz bez pożądanych odpowiedzi. Z widzenia sieci dane są absolutnie przypadkowe. Algorytm tych sieci zbudowany jest tak, aby wzmacniała ona swoją reakcję na różniące się dane wejściowe. Mechanizm taki skutkuje tym, że po odpowiednio długim okresie nauki, reakcje na różne dane będą bardziej wyraźne. Można stwierdzić, że tego typu sieci realizują proces klasyfikacji danych. Wykorzystuje się je głównie do rozpoznawania obrazów oraz wstępnej selekcji danych według ich podobieństwa!
Proszę opisać istotę algorytmu uczenia sieci jednokierunkowych, nieliniowych, wielowarstwowych (z metodą wstecznej propagacji błędów)
W sieciach jednowarstwowych każdy neuron wprowadza poprawkę do swojego stanu wiedzy (zmienia wartości wag połączeń) na podstawie wartości błędu jaki popełnił. W sieciach wielowarstwowych sytuacja się komplikuję, ponieważ (nie licząc ostatniej warstwy) ciężko jest oszacować w sposób prosty i pewny różnicę pomiędzy sygnałem oczekiwanym a otrzymanym na danym neuronie, ze względu na „rozmyty” charakter pracy sieci.
Wyżej wymieniony problem da się rozwiązać za pomocą algorytmu wstecznej propagacji błędów, który jest niczym innym jak strategią doboru wag w sieci wielowarstwowej przy wykorzystaniu gradientowych metod optymalizacji. Wykorzystuje on prawidłowość: gradient funkcji wskazuje kierunek jej najszybszego wzrostu lub spadku.
Nazwa "wsteczna propagacja" pochodzi od sposobu obliczania błędów w poszczególnych warstwach sieci. Najpierw obliczane są błędy w warstwie ostatniej (na podstawie sygnałów wyjściowych i wzorcowych). Błąd dla neuronów w dowolnej warstwie wcześniejszej obliczany jest jako pewna funkcja błędów neuronów warstwy poprzedzającej. Sygnał błędu rozprzestrzenia się od warstwy ostatniej, aż do warstwy wejściowej, a więc wstecz.