Korzystam z dwukierunkowego RNN, aby wykryć zdarzenie niezrównoważonego wystąpienia. Klasa dodatnia jest 100 razy rzadziej niż klasa negatywna. Chociaż nie używa się regularyzacji, mogę uzyskać 100% dokładności na zestawie pociągów i 30% na zestawie walidacji. Włączam regularyzację l2, a wynik to tylko 30% dokładności na zestawie pociągów zamiast dłuższego uczenia się i 100% dokładności na zestawie sprawdzania poprawności.
Pomyślałem, że może moje dane są za małe, więc dla eksperymentu połączyłem zestaw pociągów z zestawem testowym, którego wcześniej nie używałem. Sytuacja była taka sama, jak bym użył regularyzacji l2, czego nie zrobiłem teraz. Dostaję 30% dokładności na pociąg + test i walidację.
W użyciu 128 ukrytych jednostek i 80 kroków czasowych we wspomnianych eksperymentach Kiedy zwiększyłem liczbę ukrytych jednostek do 256, mogę ponownie przełożyć się na pociąg + zestaw testowy, aby uzyskać 100% dokładności, ale nadal tylko 30% na zestawie walidacyjnym.
Próbowałem tak wielu opcji dla hiperparametrów i prawie bez rezultatu. Być może problem stanowi entropia krzyżowa ważona, w danych eksperymentach waga klasy dodatniej wynosi 5. Podczas próby większych ciężarów wyniki są często gorsze, około 20% dokładności.
Próbowałem komórek LSTM i GRU, bez różnicy.
Najlepsze wyniki, jakie uzyskałem. Wypróbowałem 2 ukryte warstwy z 256 ukrytymi jednostkami, zajęło to około 3 dni obliczeń i 8 GB pamięci GPU. Osiągnąłem około 40-50% dokładności, zanim znów zacznie się przestawiać, gdy normalizacja l2 była włączona, ale nie tak silna.
Używam optymalizatorów Adama, inne nie działały tak dobrze. Funkcja, którą posiadam, jest wystarczająca, ponieważ podczas korzystania z automatu stanów mogę uzyskać 90% dokładności. W maszynie stanów główną cechą jest sumowanie i progowanie na podstawie innych właściwości elementu, a jego zmienna długość czasami wynosi 10, a czasem 20 znaczników czasu, które mówią o tej funkcji.
Czy istnieją jakieś ogólne wytyczne dotyczące postępowania w tej sytuacji? Nic nie znalazłem.
źródło