Recurrent Neural Network
Jak działa
1. W każdym kroku t sieć przyjmuje dwa wejścia: bieżący wektor x_t i poprzedni stan ukryty h_{t-1}. 2. Oblicza nowy stan: h_t = tanh(W_xh · x_t + W_hh · h_{t-1} + b_h). Te same macierze wag W_xh, W_hh są współdzielone we wszystkich krokach. 3. Opcjonalne wyjście w każdym kroku: y_t = W_hy · h_t + b_y (np. prawdopodobieństwo następnego tokenu). 4. Trening metodą BPTT (backpropagation through time): sieć jest rozwijana w czasie do T kroków, a gradienty propagowane wstecz. Gradient loss względem parametrów sumowany po wszystkich krokach. 5. Truncated BPTT: horyzont propagacji ograniczony do k kroków w celu redukcji kosztu. 6. Problem zanikającego gradientu: przy długich sekwencjach gradienty mnożone T razy przez W_hh → eksponencjalny zanik lub eksplozja → niemożność nauki zależności długoterminowych.
Rozwiązany problem
Standardowe sieci neuronowe (MLP, CNN) przetwarzają wejścia o stałym rozmiarze i nie mają wbudowanej pamięci — nie mogą modelować zależności między elementami sekwencji (np. słowami w zdaniu, próbkami audio). RNN rozwiązuje ten problem przez wprowadzenie stanu ukrytego przekazywanego między krokami czasowymi, umożliwiając modelowanie sekwencji o zmiennej długości i zależności czasowych.
Kluczowe mechanizmy
Mocne strony i ograniczenia
Implementacja
Podczas BPTT (Backpropagation Through Time) gradienty są mnożone przez macierz wag w każdym kroku — przy długich sekwencjach zanikają lub eksplodują. Gradient clipping łagodzi eksplozję, ale zanikanie wymaga LSTM/GRU.
RNN musi przetworzyć token T przed T+1 — brak możliwości zrównoleglenia po osi czasu. Przy długich sekwencjach jest to główny bottleneck szybkości treningu.
Ewolucja
Złożoność obliczeniowa
W Penn Treebank vanilla RNN osiągał ~120 perplexity, LSTM ~80 — co pokazało wyższość bramkowanych wariantów. W tłumaczeniu maszynowym WMT 2014 architektury seq2seq z RNN/LSTM osiągały BLEU ~30, ustępując Transformerom o kilka punktów. RNN nadal jest standardem w modelach mowy on-device i w niektórych systemach prognozowania szeregów czasowych.
Wymagania sprzętowe
Operacje macierzowe RNN (Wxh, Whh) są akcelerowane przez CUBLAS. cuDNN fused kernel dla RNN/LSTM/GRU daje 5-10× speedup vs PyTorch naiwna implementacja.