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