Robocikowo>ROBOCIKOWO
Architektura

Recurrent Neural Network

Historyczny
Rodzina sieci neuronowych przetwarzających sekwencje krok po kroku poprzez utrzymywanie wewnętrznego stanu ukrytego, który przekazuje informację między kolejnymi krokami czasowymi.
Kategoria
Architektura
Poziom abstrakcji
Primitive
Poziom operacji
ModelInferencjaTrening
Zastosowania
Modelowanie języka naturalnego (przed Transformerami)Tłumaczenie maszynowe (architektura seq2seq)Rozpoznawanie mowy (ASR)Analiza i prognozowanie szeregów czasowychGenerowanie tekstu i muzykiKlasyfikacja sekwencji (sentiment, intencja)

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

Stan ukryty (hidden state) przekazywany między krokami czasowymi
Współdzielone wagi w czasie — ta sama macierz w każdym kroku
Aktualizacja: h_t = tanh(W_xh · x_t + W_hh · h_{t-1} + b)
Backpropagation through time (BPTT) — rozwijanie sieci w czasie
Truncated BPTT — ograniczenie horyzontu propagacji do okna
Warianty topologii: jeden-do-wielu, wiele-do-jednego, wiele-do-wielu, encoder-decoder
Klipping gradientu jako standardowa technika stabilizacji treningu

Mocne strony i ograniczenia

Mocne strony
Naturalna obsługa sekwencji o zmiennej długości
Liniowa złożoność względem długości sekwencji (vs kwadratowa w Transformerze)
Niskie wymagania pamięciowe przy inferencji online
Niewielka liczba parametrów (współdzielone wagi)
Praca w trybie streaming — token po tokenie, bez bufora kontekstu
Dobrze pasuje do urządzeń edge i zadań niskiej latencji
Ograniczenia
Problem zanikającego gradientu — trudność w nauce zależności długoterminowych
Problem eksplodującego gradientu — wymaga clippingu
Sekwencyjny trening — trudna paralelizacja po długości sekwencji
Krótka efektywna pamięć (kilkadziesiąt kroków) w wariancie vanilla
Słaba skalowalność do bardzo dużych modeli vs Transformer
Słabe wyniki w porównaniu z Transformerem dla długich kontekstów tekstowych

Implementacja

Pułapki implementacyjne
Zanikające i eksplodujące gradientyŚrednia

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.

Sekwencyjne przetwarzanie uniemożliwia pełną równoległośćŚrednia

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

Oryginalny paper · 1990 · Cognitive Science · Jeffrey L. Elman
Finding Structure in Time
Jeffrey L. Elman
1982
John Hopfield wprowadza sieci Hopfielda — wczesne rekurencyjne sieci neuronowe ze stanem dynamicznym.
1986
Rumelhart, Hinton i Williams opisują backpropagation through time (BPTT) dla sieci rekurencyjnych.
1990
Elman publikuje "Finding Structure in Time" — pierwszy w pełni opisany model SRN (Simple Recurrent Network).
1994
Bengio, Simard i Frasconi formalizują problem zanikającego gradientu w RNN.
1997
Hochreiter i Schmidhuber publikują LSTM — bramkowany wariant rozwiązujący problem zanikania.
2014
Sutskever, Vinyals i Le wprowadzają seq2seq oparty na RNN/LSTM — przełom w tłumaczeniu maszynowym.
2017
Vaswani et al. publikują Transformer ("Attention Is All You Need"), który stopniowo wypiera RNN w NLP.

Złożoność obliczeniowa

Charakterystyki obliczeniowe
Złożoność czasowa: O(T · d²) gdzie T to długość sekwencji, d wymiar stanu
Złożoność pamięci treningu: O(T · d) dla BPTT (przechowanie stanów)
Słaba paralelizacja po długości sekwencji — silnie sekwencyjny
Dobra paralelizacja po batchu
Inferencja streamowa: O(1) pamięci na token, stały koszt na krok
Niska liczba parametrów względem Transformera o podobnej pojemności
Uwagi do benchmarku

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.