Jaka jest różnica między siecią neuronową typu feed-forward i LSTM ? Czym różnią się od siebie architekturą?
Odpowiedź
Sieć neuronowa typu feed-forward wygląda następująco:
wejście -> ukryta warstwa 1 -> ukryta warstwa 2 -> … -> ukryta warstwa k -> wyjście.
Każda warstwa może mieć inną liczbę neuronów, ale taka jest architektura .
LSTM (komórka pamięci długookresowej) jest szczególnym rodzajem węzła w sieci neuronowej. Można ją umieścić w sprzężonej sieci neuronowej i zwykle jest . W takim przypadku sieć neuronowa z wyprzedzeniem jest nazywana LSTM (myląco!).
Jak więc działa LSTM? Spójrz na moją odpowiedź tutaj: Zapomnij o warstwie w rekurencyjnej sieci neuronowej (RNN) –
tl; dr: komórka LSTM ma trzy bramki, z których każda jest używana do modulowania swojego wejścia w jakiś sposób: bramka wejściowa, bramka zapomnienia i bramka wyjściowa. Posiada „pamięć” i wyjście, które są modyfikowane przez bramki. To znaczy w pojedynczej komórce LSTM:
(input poprzedni stan komórki) -> (input & zapomnij o bramkach) -> (zaktualizuj stan komórki)
(input & poprzedni stan komórki & zaktualizowany stan komórki) -> (bramka wyjściowa)
Komórki można układać w stosy w wielu różnych konfiguracjach. Nie ma więc jednej „sieci LSTM” – jest to raczej zestaw wielu możliwych architektur, które można zbudować z tych podstawowych węzłów.
Mam nadzieję, że to pomoże Ci zacząć!
Komentarze
- Bardzo dziękuję za odpowiedź, ale czy możesz dodać kilka zdjęć, aby poprawić moje zrozumienie architektury?
- Co z propagacją wsteczną w sieci feed forward? sieć typu feed forward
- Witaj @codezcar, w mojej odpowiedzi są obrazy LSTM, które połączyłem. W przypadku sieci neuronowej typu feedforward znajduje się tutaj obraz: medium.com/random-techpark/… Tak, może używać wstecznej propagacji, aby znaleźć optymalne wagi w dowolnym typie sieci neuronowej (feed forward, LSTM, GRU, … cokolwiek!).
Odpowiedź
Jak wspomniał Philipp, sieci z pętlami sprzężenia zwrotnego pomagają w modelowaniu czasu w danych.
W tym miejscu można znaleźć przegląd różnych architektur NN: https://i.stack.imgur.com/LgmYv.png
Odpowiedź
Sieci przekazujące to sieci, w których każdy węzeł jest połączony tylko z węzłami z następnej warstwy. Nie mają połączeń „kołowych”. Dane mogą przemieszczać się tylko od wejścia do wyjścia bez pętli. Przykładami mogą być perceptron prostej warstwy lub percepcja wielowarstwowa. Sieci splotowe są również sieciami wyłącznie typu feed forward.
W przeciwieństwie do które są powtarzającymi się sieciami neuronowymi. LSTM jest jedną z nich. Te RNN mogą być również połączone „bokiem”. Oznacza to, że dane mogą podróżować nie tylko do przodu do następnej warstwy, ale także do innych węzłów w tej samej warstwie lub do tyłu. Z architektury z punktu widzenia, który oznacza, że chociaż masz sieć z może tylko jedną ukrytą warstwą, uzyskujesz „głębię”, dodając pętle do węzłów w tej warstwie. Zwykle reprezentują one „czas” w danych.
Ten obraz pokazuje co mam na myśli przez „dogłębność” poprzez pętle opinii: https://en.wikipedia.org/wiki/Recurrent_neural_network#/media/File:Recurrent_neural_network_unfold.svg
Chociaż technicznie jest to jeden węzeł w architekturze warstwy, im więcej pętli dodasz, tym więcej pętli będzie się pogłębiać.
Odpowiedź
Chcę omówić ogólne intuicje związane z sieciami LSTM. Oto kilka pytań, które pomogą zbadać aspekty dlaczego :
- Dlaczego / kiedy mielibyśmy używać LSTM w sieci neuronowej (FFNN)?
- Jakie są wady i zalety LSTM i jak wypadają w porównaniu z FFNN?
- Czym różnią się od tradycyjnych rekurencyjnych sieci neuronowych (RNN)?
Feed Forward Neural Networks (FFNN)
Najpierw rozważmy standardową FFNN z architekturą:
Jak zapewne wiesz, ten FFNN pobiera trzy dane wejściowe, przetwarza je za pomocą warstwy ukrytej i generuje dwa wyjścia. Możemy rozszerzyć tę architekturę, aby uwzględnić więcej ukrytych warstw, ale podstawowa koncepcja nadal obowiązuje: wejścia wchodzą, są przetwarzane w jednym kierunku i są wyprowadzane na końcu.
Ta koncepcja jest bardzo dobrze wyjaśniona przez inne artykuły, więc nie będę wchodził w szczegóły.Najważniejsze jest to, że:
Podstawowym warunkiem oddzielającym FFNN od powtarzających się architektur jest to, że dane wejściowe do neuronu muszą pochodzić z warstwy poprzedzającej ten neuron.
Powtarzające się sieci neuronowe (RNN)
Powtarzające się sieci neuronowe są matematycznie dość podobne do modeli FFNN. Ich główna różnica polega na tym, że ograniczenie nałożone na FFNN nie jest już stosowane:
Dane wejściowe do neuronu mogą pochodzić z dowolnej innej warstwy.
Często można zauważyć, że ta architektura jest często „wtaczana” w powtarzającą się jednostkę, na przykład następującą:
Jednostkami „wyrzuconymi”, które możesz zobaczyć na diagramach architektury, mogą być zatem zwodniczo małe. Kiedy je rozwijasz, sieć często jest dość głęboka!
Pamięć długoterminowa (LSTM)
LSTM to specjalny typ RNN, który jest przeznaczony do rozwiązywania problemu znikającego / eksplodującego gradientu.
Kiedy trenujesz tradycyjny RNN, sieć często cierpi z powodu zanikających / eksplodujących gradientów: rozwinięcie powtarzającej się jednostki skutkuje bardzo głęboką siecią! Jeśli przejdziesz przez algorytm wstecznej propagacji przy użyciu tradycyjnych architektur RNN, wcześniejsze warstwy będą coraz mniej istotne w miarę propagowania przez sieć. To sprawia, że tradycyjne sieci RNN są podatne na zapominanie informacji, szczególnie danych, które pojawiają się wiele kroków czasowych przed bieżącym czasem.
Przykładowa komórka LSTM jest zilustrowana jako taka:
Ta struktura jest podobna do tradycyjnej jednostki rozwiniętej RNN, ale kluczowa różnica w porównaniu z LSTM to bramki: bramka wejściowa, bramka wyjściowa i bramka zapomnienia. Funkcje tych bramek są dobrze opisane przez ich nazwy:
- bramka wejściowa steruje dane, które wpływają do komórki
- zapomnij bramę kontroluje zakres, w jakim dane pozostają w komórce
- bramka wyjściowa steruje wyjściem komórki za pomocą funkcji aktywacji
Ten wpis we / wy na githubie to świetne wprowadzenie do podstaw LSTM. Świetnie wyjaśnia też intuicję związaną z matematyką LSTM.
Właściwości i przykładowy przypadek użycia RNN
Pętle sprzężenia zwrotnego lepiej nadają powtarzającym się sieciom neuronowym czasowym wyzwaniom. Czas jest uwzględniany w ich architekturze!
Przeanalizujmy przykład:
Być może używasz sieci do przewidywania następnego słowa w zdaniu. Powiedzmy, że masz dane wejściowe:
Głodująca Alicja jedzie do najbliższego sklepu, żeby kupić [prognozę]
Powracająca sieć neuronowa może zapomnieć o pierwszym słowie „głodujący”, podczas gdy LSTM idealnie by to propagował. Dlatego LSTM użyłby kontekstu, który słyszał wcześniej w zdaniu, aby odgadnąć „jedzenie”, podczas gdy RNN może odgadnąć wszystko, co jest kupione w sklepie, szczególnie biorąc pod uwagę długie zdanie lub wiele zdań.
Mechanizmy bramkowania które pozwalają na ten typ pamięci, jest dobrze wyjaśnione przez @StatsSorceress tutaj: Zapomnij o warstwie w powtarzającej się sieci neuronowej (RNN) –
RNN są przeznaczone do obsługi sekwencji. Można to wykorzystać do analizy wideo (sekwencji obrazów), pisma / mowy (sekwencje słów) itp.
LSTM są zaprojektowane tak, aby ważne informacje przetrwały w czasie. Sieci RNN często „zapominają” z czasem.
FFNN to systemy bez pamięci; po przetworzeniu niektórych danych wejściowych zapominają o wszystkim, co dotyczy tych danych wejściowych. Powiedzmy na przykład, że trenujemy FFNN, który przyjmuje 5 słów jako dane wejściowe i przewiduje następne wyjście. Model ten otrzyma dane z powyższego przykładu:
najbliższy sklep, w którym można kupić [prognozę] .
To wyraźnie traci kontekst, a my dałoby słaby wynik.
Teraz możesz zapytać, co by było, gdybyśmy stworzyli FFNN, który wymagałby wielu danych wejściowych, tak że zawierałby słowo „głodny” w swoich danych wejściowych? Innymi słowy, czy nie moglibyśmy zwiększyć liczby danych wejściowych do FFNN, aby wystarczająco reprezentować wcześniejsze dane?
Odpowiedź brzmi: tak, ale ta metoda jest zarówno nieefektywna, jak i często niepraktyczna. Powiedzmy na przykład, że musimy zapamiętać kontekst cały akapit wstecz. Potrzebowalibyśmy bardzo dużego FFNN! Co więcej, skąd wiemy, ile słów chcemy z powrotem jako kontekst? Czy 20 wystarczy? 30? 100? Architektura LSTM całkowicie eliminuje te problemy, pozwalając sieci zarządzać pamięcią przejściową. Ten problem jest zaostrzony przez wyzwania związane z przetwarzaniem wideo, ponieważ każda klatka będzie wymagała znacznie więcej danych wejściowych niż zadania NLP.
Należy jednak pamiętać, że jednostki LSTM są z natury bardziej złożone obliczeniowo niż jednostki FFNN, więc ich szkolenie jest często trudniejsze i zajmuje więcej czasu. Pomimo tych wad, ich sukces w tymczasowych wyzwaniach związanych z danymi wyraźnie uzasadnia ich użycie zamiast FFNN.