Czym są i w jaki sposób działają sieci neuronowe? > Blog Intellect
Wciśnij enter, aby wyszukać
Blog Intellect / Machine Learning  / Czym są i w jaki sposób działają sieci neuronowe?
Sieci neuronowe

Czym są i w jaki sposób działają sieci neuronowe?

XXI wiek to okres gwałtownego rozwoju sieci neuronowych – i ich coraz szerszego zastosowania w wielu branżach. Nasz programista wyjaśnia krótko, czym są sieci neuronowe, jak działają – i w jakich celach najczęściej się je wykorzystuje.

Sieci neuronowe

Krótka historia sieci neuronowych

Sztuczne sieci neuronowe powstały jako rezultat naturalnej potrzeby zrozumienia mechanizmów pracy ludzkiego mózgu. Pierwsza koncepcja sztucznego neuronu została zaprezentowania już w pierwszej połowie ubiegłego wieku – w roku 1943 – przez Warrena McCullocha i Waltera Pits. Był to prosty model logiczny, posiadający wiele wejść i jedno wyjście logiczne. Pierwsza generacja neuronów McCullocha – Pittsa zbudowana została z wykorzystaniem dyskretnych funkcji aktywacji, które zwracają wartości unipolarne {0; 1} lub bipolarne {-1; 1}. Opracowany przez nich model, choć dość prosty, lata później stał się podstawą do tworzenia bardziej skomplikowanych modeli sieci neuronowych oraz doskonalenia procesów machine learning

Do rozwoju sieci neuronowych przyczynił się także Frank Rosenblatt. W 1958 roku stworzył on koncepcję automatycznego uczenia się – a następnie zaproponował algorytm do tego zdolny za pomocą wag przemnażanych przez wartości wejściowe. Na tej podstawie określano, czy neuron prześle sygnał dalej.

Dziś wiemy już, że sieci neuronowe nie są zdolne w pełni odzwierciedlać pracy ludzkiego mózgu (a przynajmniej: nie są do tego zdolne w obecnym stanie wiedzy, wciąż bowiem trwają prace mające na celu udoskonalanie sztucznej inteligencji). Niemniej sztuczna sieć neuronowa sprawia, że maszyny mogą wykonywać wiele działań, które jeszcze dekadę czy dwie temu mogli przeprowadzać jedynie ludzie. 

Czym jest sieć neuronowa?

Sieć neuronowa to model, składający się z neuronów, tworzących warstwy. W skład sieci neuronowej wchodzi:

  • Warstwa wejściowa: jej zadaniem jest pobieranie parametrów wejściowych. Zazwyczaj składa się z liczby neuronów równej ilości parametrów wejściowych
  • Warstwy ukryte – w danej sieci może znajdować się więcej niż jedna warstwa ukryta. To ona jest odpowiedzialna za naukę, wykonywanie obliczeń. W procesie uczenia się dochodzi tu do modyfikacji parametrów (wag)
  • Warstwa wyjściowa – warstwa zwracająca wynik działania.

Neurony

Proces uczenia sieci neuronowych

Neurony przetwarzają informacje – za pomocą parametrów (wag), które nadawane są połączeniom i które ulegają modyfikacji podczas działania sieci. Proces uczenia prowadzony jest na odpowiednio przygotowanym zbiorze danych: to na jego podstawie modyfikuje się wagi poszczególnych neuronów. W taki sposób, aby funkcja kosztu była jak najmniejsza.

Czym jest funkcja kosztu? Można powiedzieć, że informuje nas o tym, jak bardzo sieć neuronowa się myli. Dlatego im niższa wartość funkcji kosztu – tym lepiej – i dlatego musi być zdefiniowana jeszcze przed rozpoczęciem nauki. Jako funkcję kosztu można wykorzystać sumę kwadratów błędów pomiędzy wyliczonymi wynikami, a rzeczywistymi wartościami.

W przypadku uczenia sieci – w przeciwieństwie do „zwykłego” programowania” – zamiast zaprojektować algorytm, który zawsze w ten sam sposób przetwarza dane, przydziela się im konkretne zadanie. Sieci dostarcza się danych, na podstawie których ta „uczy się” w jaki sposób poprawnie rozwiązać zadanie.

Uczenie neuronów

W najprostszych słowach można powiedzieć, że proces uczenia polega na automatycznym odbieraniu przez sieć takich wartości wag, które pozwolą najlepiej rozwiązać postawione przed nią zadanie.

Pośród typów uczenia najczęściej wyróżnia się:

Nadzorowany: gdy zbiór danych wejściowych, dostarczany sieci, ma odpowiednie etykiety. Czyli – sieć  neuronowa otrzymuje zagadkę od razu z właściwą odpowiedzią. Za pomocą właściwie opisanych przypadków uczy się, jak odpowiednio rozwiązywać inne zadania tego samego typu. (Np. przy kategoryzacji obrazków, sieć otrzymuje obrazy wraz z opisem, co przedstawiają i w ten sposób później może rozpoznawać obrazy bez opisów.)

Ogólny algorytm procesu uczenia nadzorowanego:

  • Inicjalizacja losowych wag modelu
  • Podanie na wejście wektora danych uczących
  • Obliczanie wartości wyjściowej
  • Porównanie wyniku wyjściowego z danymi rzeczywistymi
  • W przypadku różnicy wyników – następuje zmiana wag w modelu
  • Obliczenie średniego błędu
  • Jeżeli błąd jest poniżej założonego lub w sytuacji, w której ilość epok uczących, osiągnęła maksymalny poziom – kończymy proces. W innym przypadku konieczne jest ponowne przejście procedury od podania wektora danych uczących.

Nienadzorowany: jest to rodzaj nauki, podczas którego sieć ma samodzielnie odnaleźć pewne schematy w zbiorze danych i dostarczyć odpowiedzi na podstawie przetwarzania dostarczonych im informacji i przeprowadzania własnych analiz.

Zastosowanie sieci neuronowej

Sieci neuronowe są wykorzystywane m.in. do:

  • Klasyfikacji – obiektów, tekstu, mowy. Mogą więc pomagać chociażby w zarządzaniu dużymi bazami danych
  • Rozpoznawania – na przykład obiektów, twarzy. To również znajduje swoje zastosowanie w wielu przypadkach – chociażby rozpoznawanie twarzy przez aparaty
  • Prognozowanie – czyli na przykład tworzenie symulacji rozwoju wydarzeń opierając się na dostarczonych danych
  • Tworzenie – na przykład obrazów na podstawie szkiców.

Głębokie sieci neuronowe

O głębokich sieciach neuronowych mówimy, kiedy warstwa ukryta zbudowana jest z wielu warstw. W procesie uczenia takiego modelu należy dostarczyć tysięcy – lub nawet dziesiątek tysięcy przykładów, na podstawie których sieć wytworzy skuteczne schematy.

Deep Learning jest szczególnie często stosowane w dziedzinie rozpoznawania obrazów. Szczególnie przydatne są tutaj sieci typu CNN (splotowe sieci neuronowe), w których tworzone jest wiele warstw detektorów cehc. Ich zadaniem jest analiza rozmieszczenia pikseli w obrazie wejściowym. Z kolei do rozpoznawania pisma odręcznego, mowy oraz tłumaczeń, przydatne mogą być sieci rekurencyjne RNN. W budowie przypominają one model MLP (multi level perceptron) z dołączoną dodatkową zmienną funkcji czasu. W przeciwieństwie do innych sieci, które działają tylko na bieżąco dostarczanych danych, sieci RNN wykorzystują także te, które zostały wprowadzone wcześniej.

Proces głębokiego uczenia neuronowego wykorzystaliśmy na przykład tworząc system wspomagający zarządzanie parkingami – Sparkee. Jego rdzeniem jest algorytm, który umożliwia rozpoznawanie wolnych i zajętych miejsc parkingowych. Na tej podstawie użytkownicy aplikacji otrzymują informację o tym, gdzie mogą zaparkować. Opracowanie systemu wymagało „nauczenia” algorytmu, w jaki sposób rozróżnić wolne miejsca od zajętych. W przypadku tradycyjnego programowania nie byłoby to możliwe – dzięki mechanizmom deep learning algorytm po dostarczeniu mu odpowiedniej ilości obrazów zajętych/wolnych miejsc, potrafi rozpoznać je samodzielnie.

Dzięki sieciom neuronowych i uczeniu maszynowemu, maszyny coraz częściej mogą podejmować działania, jakie do niedawna mógł wykonywać jedynie człowiek. Jest to element rewolucji technicznej, następującej w XXI wieku – i umożliwia powstawanie algorytmów, które mogą ułatwić nasze życie w wielu różnych dziedzinach. Więcej na temat potencjalnego zastosowania uczenia maszynowego można przeczytać w naszym artykule „Przyszłość zaczyna się dziś”

Michał Kalemba

Java Developer

Magdalena Kubasiewicz

Product Manager


Brak komentarzy

Napisz komentarz