Sieci neuronowe od podstaw do nowoczesnej AI · Sekwencje: RNN, LSTM i GRU
RNN: pętla ukrytego stanu, BPTT i first-step implementacja
Sekwencje: RNN, LSTM i GRU
Wprowadzenie
Rekurencyjna sieć neuronowa (Elman 1990, Jordan 1986) wprowadza do feedforward jeden dodatkowy element: wektor ukrytego stanu h_t aktualizowany rekurencyjnie. Klasyczna formuła to h_t = tanh(W_xh x_t + W_hh h_{t-1} + b_h), a wyjście y_t = W_hy h_t + b_y. To pozornie minimalna zmiana ma trzy konsekwencje: (1) parameter sharing across time — te same macierze W_xh, W_hh, W_hy w każdym kroku, (2) pamięć — h_t niesie podsumowanie historii x_1..x_t, (3) sekwencyjność obliczeń — h_t zależy od h_{t-1}, więc forward pass jest z natury sekwencyjny i nie paralelizuje się przez czas (w przeciwieństwie do Transformera). Trening działa przez Backpropagation Through Time (BPTT, Werbos 1990): rozwijamy sieć w czasie do grafu obliczeniowego o T krokach, propagujemy gradient od ostatniego kroku wstecz przez wszystkie T-1 wcześniejszych. Praktyczna implementacja używa truncated BPTT (k1, k2; Mikolov 2010) — propagujemy gradient tylko k2 kroków wstecz, by zmieścić w pamięci sekwencje o tysiącach kroków. Lekcja zarysowuje też Elman vs Jordan, archetyp char-RNN (Karpathy 2015 "The Unreasonable Effectiveness of Recurrent Neural Networks") i podstawowe warianty: many-to-one (klasyfikacja), many-to-many synchroniczny (POS tagging), seq2seq (encoder-decoder, Sutskever et al. 2014).