RNN, czyli rekurencyjna sieć neuronowa, to sieć neuronowa zbudowana do pracy z sekwencjami, takimi jak tekst, mowa czy szeregi czasowe. Na każdym kroku łączy bieżące wejście ze stanem ukrytym z poprzedniego kroku, dzięki czemu wyjście może zależeć od tego, co pojawiło się wcześniej.
To jest kluczowa idea: RNN ma działającą na bieżąco pamięć. LSTM to bramkowany rodzaj RNN, który ostrożniej zarządza tą pamięcią, gdy ważne informacje muszą przetrwać wiele kroków.
Co robi RNN w każdym kroku czasowym
W kroku czasowym prosty RNN aktualizuje swój stan ukryty według reguły takiej jak
Tutaj to bieżące wejście, to poprzedni stan ukryty, a to nowy stan ukryty. Macierze i oraz bias są uczone podczas treningu.
Jeśli model tworzy też wyjście na każdym kroku, często używa się postaci
Dokładna reguła wyjścia zależy od zadania. Niektóre problemy wymagają jednego wyjścia na krok, a inne wykorzystują tylko końcowy stan ukryty.
Dlaczego stan ukryty jest ważny
Sieć jednokierunkowa widzi jedno wejście i przechodzi dalej. RNN ponownie wykorzystuje część wcześniejszych obliczeń. To właśnie sprawia, że jest przydatny w tekście, mowie, szeregach czasowych i innych uporządkowanych danych.
Możesz myśleć o stanie ukrytym jak o krótkiej notatce, którą model zapisuje sam sobie po każdym kroku. Następny krok odczytuje tę notatkę, aktualizuje ją i przekazuje dalej poprawioną wersję.
Jeśli zmienisz kolejność tych samych wejść, stany ukryte zwykle też się zmienią. Kolejność w sekwencji ma znaczenie.
Przykład działania RNN
Prawdziwe RNN zwykle używają wektorów i nieliniowych funkcji aktywacji. Żeby rachunki były czytelne, użyjmy zabawkowego stanu z jedną liczbą:
Teraz przetwórz sekwencję , , .
Pierwszy krok:
Drugi krok:
Trzeci krok:
Najważniejsza nie jest tu dokładna postać wzoru. Chodzi o zależność od poprzedniego stanu. W kroku 2 aktualizacja nie używa tylko ; korzysta też z tego, co zostało przeniesione z kroku 1. To jest sedno działania RNN.
Jeśli zamienisz kolejność i użyjesz , , , to
Końcowy stan jest inny, mimo że pojawiły się te same liczby. Właśnie dlatego RNN są modelami sekwencji, a nie modelami traktującymi wejście jak nieuporządkowany zbiór.
Dlaczego podstawowe RNN mają trudności z długimi sekwencjami
W podstawowym RNN stare informacje muszą przetrwać wiele kolejnych aktualizacji. Jeśli sekwencja jest długa, może to być trudne. Przydatne sygnały mogą zanikać, a podczas treningu gradienty mogą też maleć albo rosnąć zbyt mocno na przestrzeni wielu kroków.
Dlatego zwykłe RNN często mają problemy, gdy zadanie zależy od informacji pochodzących z odległych miejsc w sekwencji. Problem nie polega na tym, że rekurencja jest zła. Problem polega na tym, że pamięć długiego zasięgu trudno utrzymać przy prostej aktualizacji stanu ukrytego.
Jak LSTM poprawia pamięć RNN
LSTM, czyli long short-term memory, to bramkowany RNN. Wprowadza bardziej uporządkowaną ścieżkę pamięci, zwykle nazywaną stanem komórki, oraz bramki kontrolujące, jakie informacje są zapominane, jakie nowe informacje są zapisywane i jaka część jest ujawniana jako wyjście.
Nie musisz znać pełnych równań bramek, żeby zrozumieć sens. Ta konstrukcja daje modelowi większą kontrolę nad pamięcią. Jeśli jakiś szczegół ma przetrwać wiele kroków, LSTM jest lepiej przygotowany do jego zachowania niż zwykły RNN.
To nie znaczy, że LSTM pamięta wszystko bez końca. Oznacza to, że ta architektura lepiej uczy się, kiedy zachować informację, a kiedy ją odrzucić.
RNN kontra LSTM prostym językiem
Podstawowy RNN ma jeden bieżący stan i wielokrotnie go aktualizuje. LSTM dodaje do tego pomysłu silniejszy mechanizm pamięci.
Jeśli sekwencja jest krótka, a zależność lokalna, zwykły RNN może wystarczyć. Jeśli zadanie zależy od informacji z dużo wcześniejszej części sekwencji, LSTM jest często bezpieczniejszym wyborem.
Typowe błędy dotyczące RNN i LSTM
Myślenie, że RNN widzi całą sekwencję naraz
Zwykle tak nie jest. Standardowy obraz to przetwarzanie krok po kroku, ze stanem przenoszonym dalej.
Zakładanie, że LSTM idealnie rozwiązuje problem pamięci
Pomaga przy zależnościach długiego zasięgu, ale nadal jest wyuczonym modelem o skończonej pojemności i praktycznych ograniczeniach.
Ignorowanie kolejności sekwencji
RNN są zbudowane do pracy z uporządkowanymi danymi. Przetasowanie elementów sekwencji zmienia obliczenia.
Traktowanie stanu ukrytego jak pamięci czytelnej dla człowieka
Stan ukryty to wyuczona reprezentacja numeryczna, a nie czyste podsumowanie w formie zdania.
Kiedy używa się RNN i LSTM
Są używane w problemach sekwencyjnych, takich jak modelowanie języka, mowa, pismo odręczne, strumienie danych z czujników i prognozowanie szeregów czasowych. Dziś wiele zadań językowych wykorzystuje zamiast nich transformery, ale RNN i LSTM nadal są ważne, bo jasno pokazują ideę pamięci sekwencji i wciąż mogą być przydatne w mniejszych albo wyspecjalizowanych zastosowaniach.
Wypróbuj własną wersję
Zapisz własną sekwencję czterech kroków i zastosuj zabawkową regułę . Następnie zamień kolejność dwóch wejść i porównaj końcowy stan. Ten mały eksperyment pokazuje rolę rekurencji znacznie wyraźniej niż sam skrót.
Jeśli chcesz przeanalizować inny przypadek, porównaj tę stronę z omówieniem transformera albo łańcucha Markowa i zwróć uwagę, co każdy model robi z informacjami z przeszłości.
Potrzebujesz pomocy z zadaniem?
Prześlij pytanie i otrzymaj zweryfikowane rozwiązanie krok po kroku w kilka sekund.
Otwórz GPAI Solver →