Słownik AI

Rekurencyjna sieć neuronowa – ang. Recurrent Neural Network, RNN

Rekurencyjna sieć neuronowa (RNN) – definicja i działanie

Czym jest Rekurencyjna sieć neuronowa RNN (Recurrent Neural Network)?

Rekurencyjna sieć neuronowa, skracana do RNN, to architektura modelu statystycznego zdolna do przetwarzania sekwencji danych o zmiennej długości. W odróżnieniu od klasycznego perceptronu wielowarstwowego, który analizuje wszystkie wejścia naraz, RNN przetwarza kolejne elementy strumienia, przekazując wewnętrzny stan z kroku na krok. Dzięki temu pamięta kontekst wcześniejszych obserwacji i potrafi modelować zależności czasowe lub logiczne w tekście, sygnałach dźwiękowych bądź szeregach czasowych.

Krótki kontekst historyczny

Pierwsze konceptualne opisy sieci rekurencyjnych pojawiły się w latach 80. XX w. w pracach Davida Rumelharta i Jamesa McClellanda. Pierwszy działający wariant wprowadzili Ronald J. Williams i David Zipser w 1989 r., korzystając z algorytmu uczenia Backpropagation Through Time. W 1990 r. Jeffrey Elman pokazał praktyczne użycie tzw. Elman Network do modelowania języka naturalnego, natomiast w 1997 r. Sepp Hochreiter i Jürgen Schmidhuber opisali odmianę LSTM, która znacząco ułatwiła uczenie długich sekwencji dzięki mechanizmowi bramek.

Jak dokładnie działa Rekurencyjna sieć neuronowa RNN?

Podstawowy blok obliczeniowy RNN przyjmuje w chwili t parę wektorów: bieżące wejście xt oraz stan ukryty z poprzedniego kroku ht-1. Kombinacja liniowa obu strumieni przechodzi przez funkcję aktywacji, najczęściej tanh lub ReLU, tworząc nowy stan ht. Cała procedura przypomina rozwinięcie tej samej warstwy wzdłuż osi czasu: parametry są współdzielone dla wszystkich kroków, co zmniejsza liczbę wag i ułatwia generalizację. W praktyce algorytm uczenia obejmuje rozwinięcie sieci w czasie i propagację błędu wstecznie przez poszczególne kroki. Rozszerzenia, takie jak LSTM czy GRU, wprowadzają bramki kontrolujące przepływ informacji, co przeciwdziała zanikaniu i eksplozji gradientu.

Zastosowania w praktyce

RNN znajduje zastosowanie we wszystkich zadaniach, w których kluczowy jest porządek danych. Przykładowo w rozpoznawaniu mowy model przetwarza kilkudziesięciomilisekundowe ramki dźwięku, by zinterpretować całe wypowiedzi. W analizie sentymentu sieć prześledzi strukturę zdań i odległe zależności gramatyczne. Na rynku finansowym rekurencyjne modele śledzą sekwencje notowań, aby prognozować zmiany cen. W systemach tłumaczenia maszynowego RNN występował jako moduł kodera lub dekodera w modelach seq2seq, zanim stopniowo ustąpił miejsca architekturze Transformer.

Zalety i ograniczenia

Niewielka liczba parametrów i dzielenie wag sprawia, że prosta RNN jest stosunkowo lekka obliczeniowo oraz dobrze radzi sobie z krótkimi lub średnimi zależnościami czasowymi. Jednak przy długich sekwencjach klasyczny wariant cierpi na zanikające bądź eksplodujące gradienty, co utrudnia skuteczne uczenie. Mechanizmy bramek LSTM i GRU znacząco łagodzą ten problem, lecz kosztem większej złożoności. W porównaniu z sieciami konwolucyjnymi RNN lepiej wychwytuje globalny kontekst, ale uczy się wolniej w trybie sekwencyjnym, ponieważ nie można łatwo równoleglić obliczeń między krokami.

Na co uważać?

Uczenie RNN wymaga starannej regularyzacji. Wysokie wartości współczynnika uczenia mogą doprowadzić do eksplozji gradientów, dlatego często stosuje się ich przycinanie. Modele są również wrażliwe na inicjalizację wag i domykają się na lokalnych minimach. W produkcji należy monitorować opóźnienie inferencji, zwłaszcza gdy sekwencje są długie, ponieważ w porównaniu z Transformerami brakuje tutaj łatwej paralelizacji.

Dodatkowe źródła

Zainteresowani czytelnicy mogą sięgnąć po artykuł seminalny Long Short-Term Memory autorstwa Hochreitera i Schmidhubera, który wyjaśnia koncepcję bramek. Aktualny przegląd zastosowań RNN w przetwarzaniu języka dostępny jest na Wikipedii. Szczegóły implementacyjne algorytmu Backpropagation Through Time opisuje praca „An Empirical Exploration of Recurrent Network Architectures” opublikowana na arXiv. Przykładowa implementacja LSTM w popularnych bibliotekach znajduje się w dokumentacji PyTorch.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *