Přeskočit na obsah
coden

LSTM a GRU: brány, které rozhodují, co si síť zapamatuje

Brány a paměťová buňka LSTM, ručně nastavená buňka, která si podrží symbol přes sto kroků, jednodušší GRU, útlum chybového signálu podle nastavení zapomínací brány a poctivý pokus s učením — na buňkách napsaných od nuly.

12 minut Matěj Žalmánek 2026-10-16

Série Základy AI Díl 66 z 83
  1. Mapa umělé inteligence: co je co a jak to do sebe zapadá
  2. Stručná historie umělé inteligence: od Turinga po jazykové modely
  3. Data, model, trénink, inference: základní pojmy na jednom příkladu
  4. Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relace: stavebnice, ze které se skládají definice v AI
  6. Funkce a zobrazení: proč je každý model v AI funkce
  7. Logika a důkazy: pravidla, podle kterých se v AI uvažuje
  8. Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
  9. Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
  10. Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
  11. Gradientní sestup: jak se model učí
  12. Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
  13. Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
  14. Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
  15. Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
  16. Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
  17. Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
  18. Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
  19. Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
  20. Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
  21. Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
  22. Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
  23. Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
  24. Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
  25. Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
  26. Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
  27. Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
  28. Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
  29. Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
  30. Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
  31. Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
  32. Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
  33. Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
  34. Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
  35. Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
  36. Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
  38. Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
  39. Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
  40. Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
  41. Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
  42. Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
  43. Přeučení a regularizace: proč model, který zná data nazpaměť, selže
  44. Vyhodnocení modelu: křížová validace, F1 a křivka ROC
  45. Shlukování a snížení dimenze: k-means, PCA a t-SNE
  46. Klasifikace a regrese: dvě úlohy učení s učitelem
  47. Lineární regrese: nejmenší čtverce geometricky i maticově
  48. Polynomiální a nelineární regrese: jak přímku ohnout
  49. Logistická regrese: sigmoida, šance a křížová entropie
  50. Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
  51. Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
  52. Ztrátové funkce: co přesně model minimalizuje
  53. Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
  54. Ansámbly: náhodný les a gradient boosting
  55. SVM a jádrový trik: nejširší hranice a jak ji ohnout
  56. Signál a vzorkování: proč platí Nyquistův teorém
  57. Fourierova transformace: rozklad signálu na frekvence
  58. Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
  59. Zvuk a řeč: spektrogram, melová škála a MFCC
  60. Obraz jako signál: pixely, barvy, konvoluce a hrany
  61. Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
  62. Neuronová síť od nuly: zpětné šíření chyby krok za krokem
  63. Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
  64. Konvoluční sítě: jak síť poznává obrázky
  65. Rekurentní sítě: paměť pro posloupnosti a mizející gradient
  66. LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
  67. Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
  68. Embeddingy a word2vec: jak se slovo stane vektorem
  69. Mechanismus pozornosti: jak se model naučí, kam se dívat
  70. Transformery a velké jazykové modely: architektura krok za krokem
  71. Tokenizace: jak se text rozseká na kousky pro model
  72. Předtrénování a škálování: proč větší model a víc dat funguje
  73. Doladění a RLHF: jak se z doplňovače textu stane asistent
  74. Prompty, kontext a RAG: jak modelu dát správné informace
  75. Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
  76. Generativní adversariální sítě (GAN): padělatel proti detektivovi
  77. Difúzní modely: jak se z čistého šumu stane obrázek
  78. Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
  79. Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
  80. Policy gradient a PPO: učení přímo strategie
  81. Jak funguje AI agent: jazykový model ve smyčce s nástroji
  82. Programování s AI agenty: zadání, testy a kontrola
  83. Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat

Celá osnova série 83 z 83 témat hotovo

Co si odnesete
  • Co dělají brány a paměťová buňka LSTM a jak se liší GRU.
  • Proč po paměťové buňce projde chybový signál mnoho kroků — a proč jen tehdy, když je zapomínací brána otevřená.
  • Co brány na malé úloze opravdu přinesou a proč se prosadily na skutečných datech.

Co se hodí znát předem: Rekurentní sítě: paměť pro posloupnosti a mizející gradient

Obyčejná rekurentní síť z minulého dílu zapomínala rychle: chybový signál slábl s každým krokem a vzdálené souvislosti se nenaučila. V roce 1997 navrhli Sepp Hochreiter a Jürgen Schmidhuber buňku, která má vedle obvyklého stavu ještě jednu, chráněnou paměť — a brány, které rozhodují, kdy do ní zapsat, kdy ji smazat a kdy z ní číst. Síti LSTM trvalo dvacet let, než se naplno prosadila; v letech 2015–2017 pak překládala v Google Translate, rozpoznávala řeč v telefonech a našeptávala slova na klávesnici. V tomhle dílu ji postavíme od nuly, podíváme se dovnitř a poctivě změříme, co na malé úloze opravdu přinese.

Navazuje na díl Rekurentní sítě (RNN).

1. Brána: neuron, který pouští dál

Definice — brána

Nechť m, n ≥ 1 jsou celá čísla (m je počet složek stavu, n počet složek vstupu), ht−1 ∈ ℝm je stav sítě po kroku t − 1, xt ∈ ℝn je vstup v kroku t, W ∈ ℝm×(m+n) je matice vah a b ∈ ℝm vektor prahů. Sigmoida σ, spojení [·, ·] a násobení po složkách ⊙ jsou definované v dalším bloku. Brána je vektor

g = σ(W[ht−1, xt] + b) ∈ (0, 1)m,

který se používá jen jako činitel v násobení po složkách g ⊙ v s jiným vektorem v ∈ ℝm. Složka (g ⊙ v)k = gkvk je tedy vk zmenšená na podíl gk ∈ (0, 1): pro gk blízké 1 projde skoro beze změny, pro gk blízké 0 se skoro zastaví.

Rozdělíme-li matici na bloky W = (Wh | U) s Wh ∈ ℝm×m a U ∈ ℝm×n, je W[ht−1, xt] = Whht−1 + Uxt — stejný tvar jako v obyčejné RNN z minulého dílu.

Laicky řečeno

Kohoutek, který síť sama otáčí podle toho, co právě vidí. Na rozdíl od váhy, která je po naučení pevná, se brána mění krok od kroku: u důležitého slova se otevře, u nedůležitého zavře.

Definice — sigmoida, spojení vektorů, násobení po složkách

Sigmoida je funkce

σ : ℝ → (0, 1),   σ(z) = 1/1 + e−z.

Převede libovolné reálné číslo do intervalu (0, 1): σ(0) = 0,5, σ(1) = 0,731, σ(3) = 0,953, σ(6) = 0,9975, σ(−5) = 0,007. Je rostoucí a její derivace je σ′(z) = σ(z)(1 − σ(z)) pro každé z ∈ ℝ.

Hyperbolický tangens je funkce tanh : ℝ → (−1, 1), tanh z = ez − e−z/ez + e−z, s derivací tanh′ z = 1 − tanh2 z.

Obě funkce používáme i na vektory, a to po složkách: pro v ∈ ℝm je σ(v) = (σ(v1), …, σ(vm)) a stejně tanh v.

Nechť h ∈ ℝm a x ∈ ℝn. Jejich spojení je vektor

[h, x] = (h1, …, hm, x1, …, xn) ∈ ℝm+n

— nejdřív složky h, za nimi složky x (v naší síti 16 + 5 = 21 čísel).

Nechť a, b ∈ ℝm. Jejich násobení po složkách (Hadamardův součin) je vektor

a ⊙ b = (a1b1, …, ambm) ∈ ℝm,

tj. vynásobí se odpovídající si složky: (0,9; 0,1) ⊙ (2; −3) = (1,8; −0,3). Symbolem 1 = (1, …, 1) ∈ ℝm značíme vektor samých jedniček.

g = σ( W [ht−1, xt] + b )

g
brána — vektor čísel mezi 0 a 1, jedno pro každou složku, kterou řídí
σ
sigmoida — právě ona zaručí rozsah (0, 1), takže se výsledkem dá „pouštět“: násobit jím jiný vektor a dostat 0 až 100 % jeho hodnoty
[ht−1, xt]
co síť právě ví a co právě vidí — podle toho se brána rozhoduje, a proto se mění krok od kroku
W
naučené váhy — určují, na které vstupy má brána reagovat
b
práh — výchozí otevření brány: na začátku učení jsou váhy malé a náhodné, W[h, x] kolísá kolem nuly a brána kolem σ(b); s b = 3 je brána otevřená na 0,953, s b = 1 jen na 0,731

2. LSTM: paměť se třemi branami

Definice — buňka LSTM

Nechť m, n, T ≥ 1 jsou celá čísla, x1, …, xT ∈ ℝn je vstupní posloupnost a nechť jsou dány matice vah Wf, Wi, Wo, Wg ∈ ℝm×(m+n) a prahy bf, bi, bo, bg ∈ ℝm. Síť LSTM (long short-term memory) s m neurony má v každém kroku paměťovou buňku ct ∈ ℝm a stav ht ∈ ℝm, začíná s c0 = h0 = 0 a pro t = 1, …, T počítá (s zt = [ht−1, xt] ∈ ℝm+n):

  1. zapomínací brána ft = σ(Wfzt + bf) ∈ (0, 1)m;
  2. vstupní brána it = σ(Wizt + bi) ∈ (0, 1)m;
  3. výstupní brána ot = σ(Wozt + bo) ∈ (0, 1)m;
  4. kandidát gt = tanh(Wgzt + bg) ∈ (−1, 1)m;
  5. paměť ct = ft ⊙ ct−1 + it ⊙ gt;
  6. stav ht = ot ⊙ tanh(ct).

Kde nehrozí záměna, index t u bran vynecháváme (f, i, o, g). Slovy: brány se počítají jen z předchozího stavu a vstupu, stará paměť se do nové dostane jen vynásobením zapomínací branou a stav je výstupní branou „přivřená“ paměť.

Laicky řečeno

Paměťová buňka je sešit. Zapomínací brána rozhodne, kolik ze starých poznámek vygumovat, vstupní brána, kolik nového zapsat, výstupní brána, co z poznámek teď prozradit navenek. Klíčová je první rovnice: stará paměť se do nové jen násobí zapomínací bránou a přičítá se k ní nové — žádná matice, žádná tanh. Když je brána blízko 1, informace i chybový signál po téhle „dálnici“ projdou mnoho kroků skoro beze ztráty.

ct−1ct × + f σ zapomenout i σ zapsat g tanh o σ přečíst × × tanh ht ht−1, xt paměť (dálnice)
Buňka LSTM: paměť c vede vodorovně, brány f, i, o ji řídí

ct = f ⊙ ct−1 + i ⊙ g

ct−1, ct
paměťová buňka před krokem a po něm — „dálnice“ ze schématu; nese informaci z kroku do kroku
f
zapomínací brána — kolik ze staré paměti nechat; 1 = nic nezapomenout, 0 = vymazat. Je to jediné, čím se stará paměť násobí, a proto rozhoduje, jak daleko paměť (i chyba) dosáhne
i
vstupní brána — zda tenhle krok stojí za zapsání; u nedůležitého vstupu ji síť zavře a paměť nepoškodí
g
kandidát (tanh, v intervalu (−1, 1)) — co by se zapsalo; oddělený od i, aby síť zvlášť rozhodovala „co“ a „jestli“
Stará paměť se jen násobí a sčítá — chybí tu matice i tanh, které v obyčejné RNN signál v každém kroku zeslabí.

ht = o ⊙ tanh(ct)

ht
stav, který vidí zbytek sítě: výstupní vrstva i brány v příštím kroku
o
výstupní brána — co z paměti teď ukázat; síť si může něco pamatovat a přitom to ještě nepoužívat
ct
paměť; tanh ji stlačí do (−1, 1), protože součet v paměti může přerůst 1

Jeden krok buňky LSTM jako pseudokód (Wf, … jsou čtyři matice 16 × 21, bf, … čtyři prahy):

z = [h[t−1], x[t]]               # spojení: 16 + 5 = 21 čísel
f = σ(W_f·z + b_f)               # zapomenout?
i = σ(W_i·z + b_i)               # zapsat?
o = σ(W_o·z + b_o)               # přečíst?
g = tanh(W_g·z + b_g)            # co zapsat
c[t] = f ⊙ c[t−1] + i ⊙ g
h[t] = o ⊙ tanh(c[t])

3. LSTM nastavená ručně

Než síť budeme učit, nastavme jednu buňku LSTM ručně na úlohu z minulého dílu: na začátku posloupnosti přijde symbol A nebo B, pak 99 rušivých symbolů, a na konci má buňka vědět, co bylo na začátku. Vstupní bránu nastavíme tak, aby se otevřela jen na A nebo B, kandidáta na +1 pro A a −1 pro B, zapomínací bránu skoro na 1 (práh 6, tedy f = 0,9975) a výstupní otevřenou.

−101 1265176100 krok posloupnosti (pořadí) hodnota (−1 až 1)
Ručně nastavená buňka LSTM: posloupnost „B, pak 99 rušivých symbolů“ vstupní brána paměťová buňka c výstup h

V prvním kroku je vstupní brána otevřená (0,993) a do paměti se zapíše −0,993 — „bylo B“. Pak se brána zavře (0,007) a rušivé symboly do paměti skoro nic nezapíšou. Paměť jen pomalu slábne násobením zapomínací branou: po 100 krocích je na −0,777, tedy zbývá 0,997599 = 78 % — a výstup je pořád jasně záporný (−0,65). Obyčejná RNN takové chování také umí (stav, který se sám drží), ale v LSTM je zabudované přímo v rovnici paměti a stačí ho nastavit jednou konstantou.

Příklad — ručně nastavená buňka krok za krokem

Vstup je jeden z pěti symbolů zakódovaný jako pět čísel, z nichž jedno je 1 (xA, xB a tři rušivé). Váhy buňky:

i = σ(10(xA + xB) − 5),   g = tanh(4(xA − xB)),   f = σ(6),   o = σ(6).

Dosazujeme do rovnic ct = f ⊙ ct−1 + i ⊙ g a ht = o ⊙ tanh(ct) (barvy podle vzorců výše); buňka má jediný neuron, takže ⊙ je obyčejné násobení.

Krok 1, symbol B (xB = 1): i = σ(10 − 5) = σ(5) = 0,993, g = tanh(−4) = −0,999, c1 = 0,9975 · 0 + 0,993 · (−0,999) = −0,993.

Krok 2, rušivý symbol: i = σ(−5) = 0,007, g = tanh 0 = 0, takže c2 = 0,9975 · c1 + 0,007 · 0 = 0,9975 · c1. Rušivý symbol do paměti nezapíše nic; paměť se jen vynásobí f.

Krok 100: totéž 99krát, c100 = 0,997599 · c1 = 0,783 · (−0,993) = −0,777, a výstup h100 = 0,9975 · tanh(−0,777) = 0,9975 · (−0,651) = −0,65.

Věčnou paměť by dala f = 1, ke které se sigmoida s rostoucím prahem libovolně blíží; s prahem 6 pomalu slábne, ale po 100 krocích je znaménko — to, co si máme pamatovat — pořád jasné.

4. GRU: jednodušší sestra

Definice — buňka GRU

Nechť m, n, T ≥ 1 jsou celá čísla, x1, …, xT ∈ ℝn je vstupní posloupnost a nechť jsou dány matice vah Wz, Wr, Wñ ∈ ℝm×(m+n) a prahy bz, br, bñ ∈ ℝm. Síť GRU (gated recurrent unit; Kjunghjun Čo a kol., 2014) s m neurony nemá oddělenou paměť, jen stav ht ∈ ℝm. Začíná s h0 = 0 a pro t = 1, …, T počítá:

  1. aktualizační brána zt = σ(Wz[ht−1, xt] + bz) ∈ (0, 1)m;
  2. resetovací brána rt = σ(Wr[ht−1, xt] + br) ∈ (0, 1)m;
  3. kandidát ñt = tanh(Wñ[rt ⊙ ht−1, xt] + bñ) ∈ (−1, 1)m;
  4. stav ht = (1 − zt) ⊙ ht−1 + zt ⊙ ñt.

Kde nehrozí záměna, index t u bran vynecháváme. Slovy: každá složka nového stavu je vážený průměr staré složky a kandidáta s vahami 1 − zk a zk. (V původním článku Čo a kol. mají role z a 1 − z prohozené; obě konvence jsou rovnocenné, liší se jen pojmenováním brány.)

Laicky řečeno

Jedna brána místo dvou: co se zapíše nového, o tolik se zapomene ze starého. Resetovací brána rozhodne, nakolik se kandidát ohlíží na minulost. GRU má o čtvrtinu méně vah než LSTM — u nás 1 090 proti 1 442 (obyčejná RNN 386) — a v praxi bývá podobně dobrá.

ht = (1 − z) ⊙ ht−1 + z ⊙ ñ

ht−1, ht
stav před krokem a po něm — v GRU je zároveň pamětí, oddělené c tu není
1 − z
kolik starého stavu ponechat — obdoba zapomínací brány f z LSTM
z
aktualizační brána: kolik nového zapsat — obdoba vstupní brány i; protože obě váhy dávají dohromady 1, je nový stav vážený průměr starého a kandidáta a nemůže přerůst rozsah (−1, 1)
ñ
kandidát, spočtený z r ⊙ ht−1 a xt — resetovací brána r v něm rozhodne, nakolik se nový obsah ohlíží na dosavadní stav
Přímá cesta ze starého stavu do nového vede přes (1 − z): když je z blízko 0, stav i chybový signál projdou krokem skoro beze změny.
Příklad — odkud jsou počty vah 386, 1 442 a 1 090

Vstup má 5 složek (symboly A, B a tři rušivé), stav 16, výstupy 2. Každá „vrstva uvnitř buňky“ (brána nebo kandidát) má matici 16 × (16 + 5) = 336 vah a 16 prahů, dohromady 352. Výstupní vrstva má 2 × 16 + 2 = 34.

RNN: jedna vrstva, 352 + 34 = 386. LSTM: čtyři (f, i, o, g), 4 · 352 + 34 = 1 442. GRU: tři (z, r, ñ), 3 · 352 + 34 = 1 090.

GRU má tedy 1 090/1 442 = 76 % vah LSTM — o čtvrtinu méně, protože jí chybí jedna ze čtyř vnitřních vrstev.

5. Kudy teče chybový signál

Hlavní slib LSTM se dá změřit ještě před učením: kolik chybového signálu doputuje zpátky přes 60 kroků v nenaučené síti. Pro každou variantu pět náhodných sítí, každá na dvaceti posloupnostech:

10010−310−610−9 0204059 vzdálenost od konce (kroky) norma signálu (vůči konci, log.)
Útlum chybového signálu v nenaučených sítích (posloupnosti délky 60) RNNLSTM, práh zapomínání 1LSTM, práh zapomínání 3GRU

Rozhoduje nastavení zapomínací brány. S prahem 3 (brána zhruba 0,95) se LSTM drží: i 59 kroků zpět dorazí 48 % signálu. S prahem 1 (brána zhruba 0,73) slábne podobně jako obyčejná RNN — 0,16 % proti 0,29 %. GRU s nulovými prahy, kde aktualizační brána začíná na 0,5, ztrácí signál nejrychleji ze všech: 3 · 10⁻⁹. Brány samy o sobě tedy nic nezaručují; dálnici je potřeba na začátku otevřít. Proto se dnes práh zapomínací brány standardně nastavuje kladný.

Věta — chybový signál na dálnici

Nechť je dána síť LSTM podle definice výše, krok t ∈ {1, …, T} a chyba E ∈ ℝ, která je diferencovatelnou funkcí výstupů sítě. Krok t chápejme jako zobrazení (ct−1, ht−1, xt) ↦ (ct, ht) a nechť ∂E/∂ct, ∂E/∂ht ∈ ℝm jsou derivace E podle výstupů kroku t (chybový signál, který do nich přichází z pozdějších kroků a z výstupní vrstvy). Pak derivace E podle vstupu ct−1 kroku t je

∂E/∂ct−1 = ft ⊙ (∂E/∂ct + ∂E/∂ht ⊙ ot ⊙ (1 − tanh2 ct)).

Důkaz. Brány ft, it, ot i kandidát gt se počítají z zt = [ht−1, xt], na ct−1 tedy nezávisí, a ct−1 vstupuje v kroku t jen do rovnice ct = ft ⊙ ct−1 + it ⊙ gt. Po složkách proto ∂ct,k/∂ct−1,k = ft,k (a pro různé složky nula). Hodnota ct působí na E přímo (signál ∂E/∂ct) a přes ht = ot ⊙ tanh(ct), kde ∂ht,k/∂ct,k = ot,k(1 − tanh2 ct,k). Řetízkové pravidlo sečte obě cesty a vynásobí je ft,k, což je tvrzení věty. ∎

Protože ct−1 je výstupem kroku t − 1 a vstupuje jen do kroku t, je levá strana zároveň signál „podle výstupu ct−1“ pro krok t − 1 a vzorec se dá opakovat krok za krokem dozadu. U obyčejné RNN je na odpovídajícím místě činitel WT a derivace tanh (díl o RNN).

∂E/∂ct−1 = ft ⊙ ( ∂E/∂ct + ∂E/∂ht ⊙ ot ⊙ (1 − tanh2 ct) )

∂E/∂ct, ∂E/∂ct−1
chybový signál v paměti — ten, který jede po dálnici zpátky
ft
zapomínací brána — jediný činitel na přímé cestě; co dopředu propustí z paměti, to dozadu propustí ze signálu
∂E/∂ht ⊙ ot ⊙ (1 − tanh2 ct)
signál, který do paměti přiteče z výstupu ht (přes výstupní bránu a tanh) — v každém kroku se na dálnici může přidat nový
Po n krocích po samotné dálnici je signál vynásobený součinem ft · ft−1 ⋯ ft−n+1 — bez matic a bez derivací tanh.
Příklad — součin bran po deseti krocích

Zjednodušeně: ať má zapomínací brána v každém kroku přesně hodnotu σ(práh). Pak po deseti krocích po dálnici zbude

práh 3: 0,95310 = 0,62,   práh 1: 0,73110 = 0,044

(barvy podle vzorce výše: ft = σ(práh) v každém z deseti kroků).

U GRU hraje roli f činitel 1 − z (barva podle vzorce GRU), s nulovým prahem 1 − σ(0) = 0,5, a 0,510 = 0,001.

Naměřené křivky v grafu nejsou přesně tyto součiny — brány v nenaučené síti kolísají kolem σ(práh) a signál teče i jinudy (přes h a brány) — ale pořadí tří variant s branami je stejné: čím blíž je brána k 1, tím víc signálu dojde.

6. Co přinese učení: poctivý pokus

Teď stejnou úlohu „první symbol přes mezeru“ všechny čtyři varianty učíme: 16 skrytých neuronů, obyčejný gradientní sestup na 3 000 posloupnostech, tři náhodné starty. Počítáme, kolik startů se úlohu naučilo (přesnost nad 95 %):

for varianta in RNN, LSTM práh 1, LSTM práh 3, GRU:
  for mezera T in 10, 30, 60:
    for start in 1, 2, 3:                  # tři náhodné počáteční váhy
      síť = nová(varianta, start)          # 16 skrytých, vstup 5, výstup 2
      opakuj 3 000×:
        x = A nebo B, pak T − 1 rušivých symbolů
        g = zpětné šíření v čase(síť, x, cíl = první symbol)
        g = g · min(1, 5 / ‖g‖)            # ořezání gradientu
        váhy = váhy − 0,1 · g
      přesnost = podíl správných na 300 nových posloupnostech
      naučila se = přesnost > 0,95
Délka mezeryRNNLSTM, práh 1LSTM, práh 3GRU
10 kroků3 ze 33 ze 33 ze 33 ze 3
30 kroků1 ze 30 ze 33 ze 30 ze 3
60 kroků3 ze 30 ze 30 ze 30 ze 3

Výsledek je méně učebnicový, než by se čekalo, a stojí za to ho číst pozorně. Na mezeře 30 kroků se spolehlivě učí jen LSTM s otevřenou dálnicí (práh 3) — přesně podle grafu útlumu. LSTM s prahem 1 a GRU, kterým signál na začátku utíká stejně rychle jako RNN, se nenaučí nic. Obyčejná RNN je loterie: na 30 krocích uspěla jednou ze tří, na 60 krocích třikrát. Ta úspěšná si totiž vytvořila stav, který se sám drží — a když se to na začátku učení podaří, další kroky už ho jen zpevní; o vzdálenosti pak rozhoduje spíš náhoda startu než síla gradientu. Na 60 krocích nestačilo LSTM 3 000 posloupností.

Co si z toho odnést: brány dávají síti mechanismus, kterým si informaci udrží a po kterém k ní dojde chybový signál. Jestli se ho síť naučí využít, záleží na inicializaci a na množství učení. Skutečné úlohy — jazyk, řeč — mají souvislosti na desítkách až stovkách kroků a miliony příkladů, a tam se LSTM a GRU proti obyčejným RNN prosadily jasně.

7. LSTM a GRU dnes

  • Historie. Původní LSTM (1997) zapomínací bránu neměla — přidali ji Felix Gers, Jürgen Schmidhuber a Fred Cummins v roce 2000. Doporučení nastavit práh zapomínací brány kladný se ustálilo kolem roku 2015.
  • Vrchol. V letech 2014–2017 byly LSTM a GRU standardem pro strojový překlad (sekvence na sekvenci), rozpoznávání řeči a modelování jazyka.
  • Po transformerech. Transformery vidí celou posloupnost naráz a dají se trénovat paralelně, takže v jazyce rekurentní sítě vytlačily. LSTM ale zůstávají v časových řadách, v malých zařízeních a v řízení; a moderní architektury jako xLSTM (2024) nebo stavové modely se k myšlence řízené paměti vracejí.

8. Shrnutí

  • Brána je sigmoida, která po složkách pouští nebo zastavuje informaci; síť ji řídí podle vstupu.
  • LSTM má paměťovou buňku, do které se jen násobí zapomínací branou a přičítá — informace i chyba po ní projdou mnoho kroků.
  • Ručně nastavená buňka si podržela symbol přes 100 kroků (paměť z −0,993 na −0,777).
  • GRU má dvě brány a o čtvrtinu méně vah (1 090 proti 1 442).
  • Rozhoduje práh zapomínací brány: s prahem 3 doputovalo přes 59 kroků 48 % signálu a LSTM se mezeru 30 kroků naučila ve všech startech; s prahem 1 v žádném.

Chcete si to osahat? Nechte AI agenta natrénovat v PyTorchi malou LSTM a GRU na předpovídání dalšího znaku textu a porovnat je s obyčejnou RNN — a pak zkuste totéž s prahem zapomínací brány 0 a 3.

Máte na to jiný názor? Napište na support@coden-app.com.

Agent na vašem počítači, ovládaný z telefonu