LSTM (Long Short-Term Memory) to rodzaj rekurencyjnej sieci neuronowej (RNN), zaprojektowany tak, żeby pamiętać informacje przez długie sekwencje danych. Sekret tkwi w mechanizmie bramek (gates) oraz w osobnym stanie komórki (cell state), który przepływa przez całą sekwencję niemal nienaruszony. Dzięki temu LSTM radzi sobie z problemem zanikającego gradientu (vanishing gradient), na którym klasyczne RNN potykały się przy dłuższych zależnościach. Pomysł opisali Sepp Hochreiter i Jürgen Schmidhuber w 1997 roku, a popularną dziś bramkę zapominania (forget gate) dodał zespół Gersa około 2000 roku.
Jak to działa
Zwykła sieć RNN przy każdym kroku miesza nowe dane ze starym stanem, przez co po kilkunastu krokach gradient w trakcie uczenia maleje praktycznie do zera i sieć „zapomina” początek sekwencji. LSTM rozwiązuje to trzema bramkami sterującymi przepływem informacji: forget gate decyduje, ile starej pamięci wyrzucić, input gate wybiera, co nowego zapisać, a output gate ustala, co przekazać dalej. Każda bramka to mała warstwa z funkcją sigmoid, która zwraca wartość od 0 (zamknij) do 1 (przepuść wszystko).
Najważniejszy jest jednak cell state — coś w rodzaju taśmy transportowej biegnącej przez całą sekwencję. Informacja może się po niej przesuwać bez ciągłego przemnażania, więc gradient nie zanika tak gwałtownie. To właśnie pozwala modelowi pamiętać kontekst sprzed wielu kroków: początek zdania, gdy dochodzisz do jego końca.
Przykład z praktyki
Najprościej dotknąć LSTM w Kerasie. Warstwę dodajesz dosłownie jedną linijką:
model.add(LSTM(128, return_sequences=False))
Taki model świetnie nadaje się do prognozowania szeregów czasowych (np. zużycia energii czy cen), klasyfikacji tekstu albo rozpoznawania mowy. W praktyce do danych wstrzykujesz sekwencje o stałej długości, a parametr return_sequences=True ustawiasz tylko wtedy, gdy układasz kilka warstw LSTM jedna na drugiej. Wariant Bidirectional(LSTM(...)) czyta sekwencję w obie strony naraz, co potrafi mocno podnieść wyniki w zadaniach językowych.
Częste błędy i mity
Pierwszy mit: „LSTM pamięta wszystko”. Nie pamięta — pamięta to, co bramki uznają za warte zapamiętania, a przy bardzo długich sekwencjach i tak się gubi. Drugi błąd to brak skalowania wejścia; LSTM jest wrażliwy na zakres danych, więc MinMaxScaler albo standaryzacja to obowiązek, nie fanaberia. Trzecia pułapka: ludzie wciąż sięgają po LSTM odruchowo, choć od 2017 roku w wielu zadaniach NLP wygrywają architektury Transformer (te z mechanizmem attention), które uczą się szybciej i lepiej zrównoleglają na GPU. LSTM nadal ma sens przy mniejszych zbiorach i klasycznych szeregach czasowych — tam bywa lżejszy i wystarczający.
Pojęcia powiązane
RNN, GRU (lżejszy kuzyn z dwiema bramkami zamiast trzech), vanishing gradient, sequence-to-sequence, attention, Transformer, backpropagation through time (BPTT).