pexels-vito-goričan-6253568

Sieć neuronowa jest systemem przetwarzania informacji, którego  budowa i zasada działania są wzorowane na budowie i zasadach działania ludzkiego mózgu. Sieć neuronowa składa się z trzech typów warstw:

  • wejściowej, w której zbierane są dane,
  • ukrytej, w której poszukiwane są powiązania między neuronami, zatem w tej warstwie zachodzi tzw. proces uczenia się,
  • wyjściowej, w której gromadzone są wnioski oraz wyniki analizy.

Do pierwszej warstwy trafiają surowe dane wejściowe. Często dane te określane są jako nieprzetworzone, w praktyce jednak wymagają one odpowiedniego przygotowania. Kolejna warstwa otrzymuje dane będące wynikiem przetworzenia danych w warstwie poprzedniej. W ostatniej warstwie generowane są dane wyjściowe systemu.

Każda warstwa zbudowana jest z neuronów. Liczba warstw w sieci oraz neuronów w warstwie może być dowolna, jedynym ograniczeniem jest zdolność infrastruktury do obsłużenia sieci.  Neurony są ze sobą połączone umożliwiając przepływ sygnałów od wejść do wyjść, a każde połączenie ma określoną wagę. Połączenia między neuronami tworzą jednocześnie połączenia pomiędzy warstwami. W  neuronach odbywa się agregacja wprowadzonych danych, z zewnątrz lub z poprzedniej warstwy, oraz ich przekształcenie. W trakcie procesu uczenia wagi sieci są modyfikowane, sieć sama wykrywa wzorce i istniejące współzależności wykorzystując dane uczące. Każdy neuron przeprowadza własne proste obliczenia, a dzięki połączeniu neuronów w sieć potencjał obliczeń zostaje zwielokrotniony (co pozwala na posłużenie się w opisie sieci neuronowych analogią do budowy i działania mózgu – jedna komórka nerwowa może niewiele, struktura zawierająca miliardy takich komórek staje się bardzo zaawansowanym ewolucyjnie organem).

Potencjalnych zastosowań sieci neuronowych jest wiele, do najpopularniejszych można zaliczyć:

  • rozpoznawanie twarzy,
  • automatyczne transkrypcja mowy na tekst,
  • rozpoznawanie pisma ręcznego.

Jednym z bardziej obiecujących kierunków rozwoju sieci neuronowych jest prognozowanie szeregów czasowych. Szereg  czasowy to charakterystyczny typ danych, które są efektem  obserwacji  rozwoju pewnych zjawisk  w  czasie.  W  szeregu  czasowym  wyróżnia się dwa rodzaje składowych:

  • składową systematyczną,  związana procesem deterministycznym, jest ona efektem  oddziaływań  określonych  czynników  na  badane zjawisko,
  • składową przypadkową, związana z procesem stochastycznym, która jak sama nazwa wskazuje jest efektem działań o charakterze losowym.

Składowa systematyczna może występować w postaci trendu, średniego stałego poziomu lub składowej periodycznej (cyklicznej lub sezonowej).

Specyfika szeregów czasowych wymusza odpowiednie podejście do problemu prognozowania. Konieczne jest zastosowanie metod,  które  uwzględniają  zmiany  zachodzące  w  czasie  i  mogą  opisać  związane  z  tym  prawidłowości.  Wyznaczając  prognozy  przyszłych  wartości  zmiennej  mającej  postać  szeregu  czasowego  korzysta  się  przede  wszystkim  z jej  przeszłych  wartości. Z tego powodu do prognozowania zmiennych ewoluujących w czasie wykorzystuje się rekurencyjne sieci neuronowe (Recursive Neural Networks, RNN). O ile w  przypadku tradycyjnej sieci neuronowej zakłada się, że wszystkie wejścia (i wyjścia) są niezależne od siebie, to sieci RNN wykonują to samo zadanie dla każdego elementu sekwencji, a dane wyjściowe zależą od poprzednich obliczeń. Można więc obrazowo powiedzieć, że sieci rekurencyjne posiadają ”pamięć”, która przechwytuje informacje o tym, co zostało obliczone do tej pory. Sieci RNN mają rzecz jasna swoje wady i ograniczenia, do najważniejszych należą długi czas trenowania i stopniowe zanikanie pamięć pierwszych wejść (po pewnym czasie stan RNN nie zawiera praktycznie żadnych śladów pierwszych wejść). Ten ostatni problem został rozwiązany poprzez zastosowanie neuronów z długoterminową pamięcią. Tę koncepcję realizują sieci typu LSTM (Long Short-Term Memory) oraz ich uproszczona wersja , sieć typu GRU (Gated Recurrent Unit).

Niniejszy artykuł powstał dzięki środkom pochodzącym ze współfinansowania przez Unię Europejską Programu Operacyjnego Inteligentny Rozwój 2014-2020, projektu realizowanego w ramach konkursu Narodowego Centrum Badań i Rozwoju: w ramach konkursu „Szybka Ścieżka” dla mikro-, małych i średnich przedsiębiorców – konkurs dla projektów z regionów słabiej rozwiniętych w ramach Działania 1.1: Projekty B+R przedsiębiorstw Poddziałanie 1.1.1 Badania przemysłowe i prace rozwojowe realizowane przez przedsiębiorstwa. Tytuł projektu: „Stworzenie oprogramowania do poprawy trafności prognoz i optymalizacji zapasów z perspektywy odbiorcy i dostawcy współpracujących w ramach łańcucha dostaw przy zastosowaniu rozmytych, głębokich sieci neuronowych.