Jak właściwie wykorzystać wczesne zatrzymanie do treningu głębokiej sieci neuronowej?

20

Mam model głębokiej sieci neuronowej i muszę go wyszkolić na moim zestawie danych, który składa się z około 100 000 przykładów, moje dane weryfikacyjne zawierają około 1000 przykładów. Ponieważ trenowanie każdego przykładu zajmuje trochę czasu (około 0,5 s dla każdego przykładu) i aby uniknąć nadmiernego dopasowania, chciałbym zastosować wcześniejsze zatrzymanie, aby zapobiec niepotrzebnym obliczeniom. Ale nie jestem pewien, jak prawidłowo wyszkolić moją sieć neuronową przy wczesnym zatrzymywaniu, kilka rzeczy, których teraz nie do końca rozumiem:

  • Jaka byłaby dobra częstotliwość sprawdzania poprawności? Czy powinienem sprawdzić mój model na danych weryfikacyjnych na końcu każdej epoki? (Mój rozmiar partii to 1)

  • Czy to jest tak, że kilka pierwszych epok może przynieść gorszy wynik, zanim zacznie się zbliżać do lepszej wartości? W takim przypadku, czy powinniśmy trenować naszą sieć przez kilka epok przed sprawdzeniem, czy nie ma wcześniejszego zatrzymania?

  • Jak poradzić sobie ze sprawą, gdy utrata walidacji może rosnąć i spadać? W takim przypadku wcześniejsze zatrzymanie może uniemożliwić dalszą naukę mojego modelu, prawda?

Z góry dziękuję.

Leniwy dziennik
źródło
Zdecydowanie polecam wielkość partii większą niż jeden. Typowe rozmiary to 32, 64 i 128.
ComputerScientist,

Odpowiedzi:

20

Jaka byłaby dobra częstotliwość sprawdzania poprawności? Czy powinienem sprawdzić mój model na danych weryfikacyjnych na końcu każdej epoki? (Mój rozmiar partii to 1)

Nie ma złotej reguły, obliczanie błędu sprawdzania poprawności po każdej epoce jest dość powszechne. Ponieważ zestaw walidacyjny jest znacznie mniejszy niż zestaw treningowy, nie spowolni on znacznie treningu.

Czy to jest tak, że kilka pierwszych epok może przynieść gorszy wynik, zanim zacznie się zbliżać do lepszej wartości?

tak

W takim przypadku, czy powinniśmy trenować naszą sieć przez kilka epok przed sprawdzeniem, czy nie ma wcześniejszego zatrzymania?

Możesz, ale problem polega na tym, ile epok należy pominąć. W praktyce więc przez większość czasu ludzie nie pomijają żadnej epoki.

Jak poradzić sobie ze sprawą, gdy utrata walidacji może rosnąć i spadać? W takim przypadku wcześniejsze zatrzymanie może uniemożliwić dalszą naukę mojego modelu, prawda?

Ludzie zazwyczaj określają cierpliwość, tj. Liczbę epok, które należy czekać przed wczesnym zatrzymaniem, jeśli nie ma postępu w zestawie sprawdzania poprawności. Cierpliwość często ustawia się gdzieś pomiędzy 10 a 100 (10 lub 20 jest bardziej powszechne), ale tak naprawdę zależy to od zestawu danych i sieci.

Przykład z cierpliwością = 10:

wprowadź opis zdjęcia tutaj

Franck Dernoncourt
źródło
Czy należy korzystać z modelu na wczesnym etapie zatrzymania, czy też na patienceepokach modelu przed zatrzymaniem („najlepszy” bez dalszych ulepszeń)?
stackunderflow
2
@displayname epoki cierpliwości przed zatrzymaniem
Franck Dernoncourt
11

Ostatnio natknąłem się na artykuł zatytułowany „Early Stopping - but when?” autorstwa Lutza Prechelta, który ma wiele wspaniałych przykładów użycia wczesnego zatrzymania z jasnymi wyjaśnieniami tego, co każdy robi i formułami dla nich.

Mam nadzieję, że spojrzenie na to może pomóc.

Pro Q
źródło
Artykuł jest napisany w dziwnym stylu, ale informacje były pomocne.
Josiah
3

Aby dodać do innych doskonałych odpowiedzi, możesz także - nie przestawać. Ja zwykle:

  • uruchomić NN przez znacznie więcej czasu, pomyślałbym, że to rozsądne,
  • zapisz wagi modelu w każdej epoce oraz
  • kiedy widzę, że utrata treningu ustabilizowała się, po prostu wybieram model o najniższej utracie walidacji.

Oczywiście ma to sens tylko wtedy, gdy nie płacisz za minutę (lub koszt jest wystarczająco mały) i kiedy możesz ręcznie przerwać trening. Zaletą jest to, że o wiele łatwiej jest ustalić najniższy błąd sprawdzania poprawności z perspektywy czasu.

johndodo
źródło
1
Ja też to robię. Chociaż podobnie jak ty wiem, że to luksus. Kiedy modele zaczęły zajmować dużo miejsca, odkryłem, że korzystając z poprzednich danych dotyczących strat i współczynnika f, mogłem programowo określić, kiedy usunąć również poprzednie modele - w efekcie pojawia się ruchome okno kandydujących najlepszych modeli, które zużywają około dużo miejsca na dysku twardym, ponieważ prawdopodobnie będą warte.
QA Collective