pexels-cottonbro-8072521

Rekurencyjne sieci neuronowe (Recursive Neural Networks, RNN) wykorzystywane są do modelowania i prognozowania zmiennych ewoluujących w czasie. W odróżnieniu od standardowych sieci neuronowych mają zdolność zapamiętania kontekstu, w którym się znajdują. W  przypadku tradycyjnej sieci neuronowej zakłada się, że wszystkie wejścia (i wyjścia) są niezależne od siebie, natomiast sieci RNN wykonują to samo zadanie dla każdego elementu sekwencji, a dane wyjściowe zależą od poprzednich obliczeń. Wiele praktycznych problemów, takich jak rozpoznawanie i przetwarzanie tekstu, mowy, obrazów, są rozwiązywane efektywniej jeśli uwzględniają poprzednie stany  zmiennych. Właśnie taką zależność stanu obecnego od stanów poprzednich próbują odtworzyć sieci rekurencyjne. W tym celu  w ich strukturę wprowadza się pętle. Tym samym pewne fragmenty sieci się powtarzają. Innymi słowy sieci RNN zawierają sprzężenia zwrotne, czyli połączenia dostarczające sygnały wyjściowe znajdujące się w dalszych warstwach sieci neuronowej do neuronów położonych w warstwie wejściowej lub w bliższych warstwach ukrytych. Umożliwia to wykonywanie bardziej złożonych obliczeń niż w przypadku sieci posiadających jedynie jednokierunkowy przesył informacji.

Rekurencyjność sieci RNN sprowadza się do  wykonywania tego samo zadanie dla każdego elementu sekwencji. Odwołując się do intuicji, można myśleć o sieci RNN jako o bycie mającym pamięć przechowującą informację o dotychczasowych obliczeniach.

Rysunek 1. Schemat sieci neuronowej Hopfielda

Źródło: Podstawowe modele sieci neuronowych
http://books.icse.us.edu.pl/runestone/static/ai/SztuczneSieciNeuronowe/PodstawoweModeleSieciNeuronowych.html

Koncepcja sieci RNN nie jest nowa, rekurencyjna architektura została już zaproponowana w latach 80  ubiegłego wieku przez Hopfielda (schemat jej budowy został przedstawiony na rysunku 1).  Strukturę sieci Hopfielda można opisać jako układ wielu identycznych elementów połączonych ze sobą na zasadzie każdy z każdym.  Wprowadzenie pętli sprzężenia zwrotnego powoduje wielokrotne pobudzanie neuronów w jednym cyklu. Praca Hopfielda przyczyniła się do odrodzenia badań nad sieciami neuronowymi, które po okresie burzliwego rozwoju w latach 50 i 60 zostały gwałtownie zahamowane na początku lat 70. Wspomniane odrodzenie wiązało się z przyspieszeniem badań i rozwojem sieci typu RNN.

Okazało się, że o ile sieci RNN posiadają pamięć, to jest to pamięć dość krótka. Teoretycznie neurony z połączeniami rekurencyjnymi potencjalnie są w stanie modelować relacje występujące z dowolnie długim odstępem czasowym, ale praktyka tego nie potwierdza. Krótka pamięć sieci RNN jest skutkiem stopniowego zanikania pierwszych wejść, w efekcie czego, po pewnym czasie stan RNN nie zawiera praktycznie żadnych śladów początkowych wejść. Z formalnego punktu widzenia krótka pamięć sieci RNN jest związana z zanikającym gradientem dla odległych w czasie relacji, przy czym zanikanie odbywa się wykładniczo wraz z czasem. Nie jest to jedyny problem, bo sieci RNN często zmagają się z niestabilnością uczenia, utożsamianego często z przetrenowniem, a określane również jako eksplodujący gradient. Ten ostatni problem można rozwiązać stosując przycinanie gradientu, czyli ograniczenie wartości gradientu, oraz regularyzację, która jest karą za nadmierne skomplikowanie estymowanego modelu. Natomiast problem zanikania gradientu jest na ogół rozwiązywany przez wprowadzenie różnego rodzaju komórek z długoterminową pamięcią.

Właśnie na takim rozwiązaniu bazuje sieć  Long short-term memory (LSTM). Zostały one zaproponowane przez Hochreitera i Schimdhubera w 1997 roku. LSTM oprócz jednostek standardowych posiada również trzy typy specjalnych bramek, których zadaniem jest kontrola zapamiętywanych danych (rysunek 2):

  • bramka wejściowa, odnajdująca, którą wartość z wejścia wykorzystać do modyfikacji pamięci.
  • bramka zapominania, której zadaniem jest ustalenie, jakie szczegóły należy usunąć z bloku,
  • bramka wyjściowa kontroluje, które części stanu długoterminowego powinny być odczytywane i wyprowadzane w danym momencie.

Rysunek 2. Architektura neuronu LSTM

Źródło: https://colah.github.io/posts/2015-08-Understanding-LSTMs/

Dodanie bramek znacząco poprawiło skuteczność sieci rekurencyjnych. Sieci RNN z jednostkami LSTM pozwoliły między innymi na:

  • zautomatyzowanie przez Facebook tłumaczeń (FB wykonuje dziennie kilka miliardów takich tłumaczeń),
  • przeszkolenie sieci neuronowej kontrolującej rękę robota podobną do ludzkiej, która manipuluje obiektami z dużą precyzją,
  • napisanie programu AlphaStar rywalizującego w skomplikowanej grze strategii czasu rzeczywistego StarCraft II.

Obszary dalszych zastosowań ograniczone są wyłącznie ludzką wyobraźnią.

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.