Rekurentní neuronová síť (RNN – Recurrent Neural Network) je typ neuronové sítě určený pro zpracování sekvenčních dat. Na rozdíl od běžných dopředných sítí (Feedforward), které zpracovávají každý vstup nezávisle, mají RNN vnitřní paměť. To jim umožňuje brát v úvahu předchozí vstupy při zpracování toho aktuálního.
Díky tomu jsou ideální pro úlohy, kde význam informace závisí na kontextu toho, co se stalo dříve (např. slova ve větě nebo vývoj ceny akcií).
Hlavním rysem RNN je existence smyček. Výstup z neuronu v čase $t$ se vrací zpět jako vstup pro čas $t+1$. Tomuto mechanismu se říká skrytý stav (hidden state), který funguje jako paměť sítě.
http://googleusercontent.com/image_collection/image_retrieval/6107903186580698072_0
Standardní RNN trpí dvěma zásadními matematickými problémy při trénování na dlouhých sekvencích:
Aby se vyřešil problém se zapomínáním, byly vyvinuty komplexnější architektury buněk:
| Typ | Název | Popis |
|---|---|---|
| LSTM | Long Short-Term Memory | Obsahuje speciální „brány“ (gates), které řídí, co se má zapamatovat, co zapomenout a co poslat na výstup. |
| GRU | Gated Recurrent Unit | Zjednodušená verze LSTM s méně parametry, často stejně efektivní, ale výpočetně méně náročná. |
[Image comparing internal structures of Simple RNN, LSTM and GRU units] http://googleusercontent.com/image_collection/image_retrieval/8455641202566121773_0
RNN jsou nepostradatelné všude tam, kde je důležitý kontext v čase:
V posledních letech byly RNN v mnoha úlohách (zejména v překladu textu) nahrazeny architekturou Transformer. Transformery totiž dokážou zpracovat celou sekvenci najednou (paralelně), zatímco RNN musí postupovat krok za krokem, což je na moderním hardwaru pomalejší.
Příklad: Pokud čtete větu „Jan šel do obchodu, protože zapomněl koupit…“, RNN si musí pamatovat „Jan“ od samého začátku, aby věděla, že slovo „zapomněl“ je v mužském rodě.