Czy zmieści się mój LSTM, jeśli będę go trenował przy użyciu okna przesuwnego? Dlaczego ludzie nie używają go do LSTM?
W uproszczonym przykładzie załóżmy, że musimy przewidzieć kolejność znaków:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Czy to źle (czy lepiej?), Jeśli nadal trenuję mój LSTM z następującymi minibatchem:
A B C D E F G H I J K L M N, backprop, erase the cell
B C D E F G H I J K L M N O, backprop, erase the cell
.... and so on, shifting by 1 every time?
Wcześniej zawsze trenowałem to jako:
A B C D E F G H I J K L M N, backprop, erase the cell
O P Q R S T U V W X Y Z, backprop, erase the cell
Czy zamiast przesuwać się o jeden, lepiej byłoby przesunąć okno o 2 wpisy, itp.? Co to by znaczyło (pod względem precyzji / nadmiernego dopasowania)?
Ponadto, jeśli miałbym zastosować podejście polegające na przesuwaniu okien w sieci feed-forward, czy spowodowałoby to nadmierne dopasowanie? Zakładam, że tak, ponieważ sieć jest bardzo narażona na te same regiony informacyjne. Na przykład jest narażonyE F G H I J K
na długi czas.
Edytować:
Pamiętaj, że stan komórki jest usuwany między partiami treningowymi, więc LSTM będzie miał wtedy „młotek do głowy”. Nie można zapamiętać, co było przed OPQRSTUVWXYZ. Oznacza to, że LSTM nie jest w stanie nigdy dowiedzieć się, że „O” następuje po „M”.
Pomyślałem więc (więc całe moje pytanie), dlaczego nie dać mu pośredniej (nakładającej się) partii pomiędzy ... a w takim razie dlaczego nie zastosować wielu nakładających się minibatek - dla mnie zapewniłoby to płynniejsze szkolenie? Ostatecznie oznaczałoby to przesuwane okno dla LSTM.
Kilka przydatnych informacji, które znalazłem po odpowiedzi, zostało zaakceptowanych:
Pierwsze słowo w tłumaczeniu na angielski jest prawdopodobnie silnie skorelowane z pierwszym słowem zdania źródłowego. Ale to oznacza, że dekoder musi wziąć pod uwagę informacje sprzed 50 kroków, a informacje te muszą być w jakiś sposób zakodowane w wektorze. Wiadomo, że powtarzające się sieci neuronowe mają problemy z radzeniem sobie z takimi zależnościami dalekiego zasięgu. Teoretycznie architektury takie jak LSTM powinny być w stanie sobie z tym poradzić, ale w praktyce zależności dalekiego zasięgu są nadal problematyczne.
Na przykład naukowcy odkryli, że odwrócenie sekwencji źródłowej (podawanie jej wstecz do enkodera) daje znacznie lepsze wyniki, ponieważ skraca ścieżkę od dekodera do odpowiednich części enkodera. Podobnie dwukrotne wprowadzenie sekwencji wejściowej wydaje się również pomagać sieci w lepszym zapamiętywaniu rzeczy.Na przykład, jeśli jednym z przykładów szkolenia jest „John poszedł do domu”, podałbyś „John poszedł do domu John poszedł do domu” jako jeden sygnał wejściowy.
Edytuj po zaakceptowaniu odpowiedzi:
Kilka miesięcy później jestem bardziej skłonny do stosowania okna przesuwnego, ponieważ lepiej wykorzystuje dane. Ale w takim przypadku prawdopodobnie nie chcesz trenować BCDEFGHIJKLMNO zaraz po ABCDEFGHIJKLMNO. Zamiast tego przetasuj przykłady, aby stopniowo i równomiernie „ wkleić ” wszystkie informacje do LSTM. Daj mu HIJKLMNOPQRSTU po ABCDEFGHIJKLMNO itp. Jest to bezpośrednio związane z katastrofalnym zapominaniem. Jak zawsze, uważnie monitoruj zestaw Sprawdzanie poprawności i Test i zatrzymaj się, gdy tylko zauważysz, że ich błędy stale rosną
Ponadto można poprawić problem „młota w głowę” za pomocą gradientów syntetycznych. Zobacz jego zalety tutaj: (połączona odpowiedź omawia zalety długich sekwencji) /datascience//a/32425/43077
LSTM nie wymagają przesuwanego okna danych wejściowych. Mogą zapamiętać to, co widzieli w przeszłości, a jeśli podasz przykłady szkoleń pojedynczo, wybiorą odpowiednie okno wielkości danych do zapamiętania samodzielnie.
LSTM są już podatne na nadmierne dopasowanie, a jeśli wprowadzisz wiele zbędnych danych za pomocą przesuwanego okna, to tak, prawdopodobnie się przeregulują.
Z drugiej strony, przesuwne okno jest konieczne do prognozowania szeregów czasowych za pomocą sieci neuronowych Feedforward, ponieważ sieci FNN wymagają danych wejściowych o stałym rozmiarze i nie mają pamięci, więc jest to najbardziej naturalny sposób zasilania ich danymi szeregów czasowych.
To, czy FNN się dopasuje, zależy od jego architektury i twoich danych, ale wszystkie standardowe techniki regularyzacji będą miały zastosowanie, jeśli tak się stanie. Na przykład możesz spróbować wybrać mniejszą sieć, regularyzację L2, rezygnację itp.
źródło