Rekurencyjna sieć neuronowa (Recurrent Neural Network, RNN) to architektura sieci neuronowej zaprojektowana do przetwarzania danych sekwencyjnych — czyli takich, w których kolejność elementów ma znaczenie. W odróżnieniu od zwykłej sieci feed-forward, RNN ma pętlę: przy każdym kroku bierze nie tylko bieżące wejście, ale też swój własny stan ukryty (hidden state) z kroku poprzedniego. Dzięki temu sieć ma coś w rodzaju krótkiej pamięci o tym, co już przeczytała.
Jak to działa i do czego służy
Wyobraź sobie, że czytasz zdanie słowo po słowie. Żeby zrozumieć słowo numer dziesięć, potrzebujesz kontekstu z wcześniejszych dziewięciu. RNN robi dokładnie to: przetwarza sekwencję element po elemencie, a po każdym kroku aktualizuje stan ukryty, który przekazuje dalej. Te same wagi są używane w każdym kroku — sieć nie uczy się osobno dla pozycji 1, 2, 3, tylko jednej reguły działającej w czasie.
Stąd zastosowania: język naturalny (tłumaczenie, generowanie tekstu, klasyfikacja sentymentu), szeregi czasowe (prognoza sprzedaży, zużycia energii, kursów), audio i rozpoznawanie mowy. Wszędzie tam, gdzie dane płyną w czasie i „co było wcześniej” wpływa na „co jest teraz”.
Przykład z praktyki
W PyTorch warstwę rekurencyjną dodajesz dosłownie jedną linijką. Zamiast surowego RNN w praktyce używa się jego ulepszonych wariantów — LSTM albo GRU:
lstm = torch.nn.LSTM(input_size=128, hidden_size=256, num_layers=2, batch_first=True)
Typowy scenariusz: bierzesz recenzje produktów, zamieniasz słowa na embeddingi, przepuszczasz przez LSTM i na końcu dokładasz warstwę liniową, która zwraca „pozytywna/negatywna”. Model uczy się, że „nie polecam” znaczy co innego niż „polecam”, bo widzi te słowa w kolejności.
Częste błędy i mity
Po pierwsze, klasyczny RNN ma problem znikającego gradientu (vanishing gradient) — przy długich sekwencjach „zapomina” początek. Dlatego rzadko używa się gołego RNN; sięgasz po LSTM lub GRU, które mają bramki (gates) regulujące przepływ informacji.
Po drugie, mit: „RNN to przeszłość, bo jest Transformer”. To uproszczenie. Transformery faktycznie zdominowały NLP i duże modele językowe, bo dobrze się zrównoleglają, a RNN przetwarza sekwencję krok po kroku. Ale na małych danych, krótkich sekwencjach czy w urządzeniach o ograniczonej pamięci RNN/LSTM nadal bywa lżejszy i wystarczający. Nie wyrzucaj narzędzia tylko dlatego, że jest niemodne.
Po trzecie, uważaj na kierunek: jeśli masz dostęp do całej sekwencji naraz (np. analiza gotowego tekstu), rozważ bidirectional=True — sieć przeczyta dane w obie strony.
Pojęcia powiązane
Warto znać: LSTM i GRU (ulepszone RNN-y), sieć feed-forward (przeciwieństwo — bez pamięci), Transformer i mechanizm attention (dzisiejszy standard w NLP), embeddingi (zamiana słów na wektory), backpropagation through time (BPTT — sposób uczenia RNN) oraz problem vanishing/exploding gradient.