Dlaczego warto korzystać zarówno z zestawu sprawdzania poprawności, jak i zestawu testowego?

18

Rozważ sieć neuronową:

Dla danego zestawu danych dzielimy je na zestaw szkoleniowy, walidacyjny i testowy. Załóżmy, że robimy to w klasycznym stosunku 60:20:20, a następnie zapobiegamy przeuczeniu, sprawdzając poprawność sieci, sprawdzając ją na zestawie sprawdzania poprawności. Jaka jest więc potrzeba przetestowania go na zestawie testowym, aby sprawdzić jego działanie?

Czy błąd w zestawie testowym nie będzie nieco taki sam jak zestaw sprawdzania poprawności, ponieważ dla sieci są to niewidzialne dane, podobnie jak zestaw sprawdzania poprawności, a także oba są tego samego numeru?

Czy zamiast tego nie możemy zwiększyć zestawu szkoleniowego poprzez połączenie z nim zestawu testowego, abyśmy mieli więcej danych szkoleniowych, a sieć trenowała lepiej, a następnie użyć zestawu sprawdzającego, aby zapobiec nadmiernemu dopasowaniu? Dlaczego tego nie robimy?

użytkownik1825567
źródło
4
Chciałbyś, aby było tak samo, ale nie możesz być tego pewien, ponieważ dotknąłeś go w celu optymalizacji hiperparametrów i wczesnego zatrzymania, więc potrzebujesz dziewiczego zestawu testowego.
Emre
@Emre Ale wagi zostaną dostosowane na podstawie zestawu treningowego, a nie zestawu sprawdzania poprawności, więc wynik testu i zestawu sprawdzania poprawności nie powinien być inny.
user1825567 14.04.17
Nie, nie robią tego (dostosuj się zgodnie z zestawem treningowym). To dotyczy zwykłych parametrów.
Emre,

Odpowiedzi:

24

Załóżmy, że trenujesz model, którego wydajność zależy od zestawu hiperparametrów. W przypadku sieci neuronowej tymi parametrami mogą być na przykład szybkość uczenia się lub liczba iteracji treningowych.

Biorąc pod uwagę wybór wartości hiperparametrów, używasz zestawu treningowego do trenowania modelu. Ale jak ustawić wartości dla hiperparametrów? Do tego właśnie służy zestaw sprawdzania poprawności . Można go użyć do oceny wydajności modelu dla różnych kombinacji wartości hiperparametrów (np. Za pomocą procesu wyszukiwania siatki) i utrzymania najlepiej wyszkolonego modelu.

Ale jak Twój wybrany model wypada w porównaniu z innymi modelami? Czy Twoja sieć neuronowa działa lepiej niż, powiedzmy, losowy las przeszkolony z tą samą kombinacją danych treningowych / testowych? Nie można porównywać na podstawie zestawu sprawdzania poprawności, ponieważ ten zestaw sprawdzania poprawności był częścią dopasowania twojego modelu. Użyłeś go, aby wybrać wartości hiperparametrów!

Zestaw testowy pozwala porównywać różne modele w sposób bezstronny, opierając swoje porównania na danych, które nie były wykorzystywane w żadnej części procesu wyboru treningu / hiperparametrów.

Pablo Suau
źródło
11

Zestaw testowy i zestaw krzyżowej weryfikacji mają różne cele. Jeśli upuścisz jedno z nich, tracisz jego zalety:

  • Zestaw weryfikacji krzyżowej służy do wykrywania nadmiernego dopasowania i do pomocy w wyszukiwaniu hiperparametrowym.

  • Zestaw testowy służy do pomiaru wydajności modelu.

Nie można użyć zestawu weryfikacji krzyżowej do dokładnego pomiaru wydajności modelu, ponieważ celowo dostosuje się wyniki, aby uzyskać najlepszą możliwą metrykę, może ponad setki wariantów parametrów. Wynik krzyżowej weryfikacji prawdopodobnie będzie zatem zbyt optymistyczny.

Z tego samego powodu nie można upuścić zestawu sprawdzania poprawności i używać zestawu testowego do wybierania hiper parametrów, ponieważ wtedy jest prawie pewne, że przeceniasz, jak dobry jest twój model. W idealnym świecie zestaw testowy jest używany tylko raz lub można go używać w „neutralny” sposób w celu porównania różnych eksperymentów.

Jeśli krzyż validate, znaleźć najlepszy model, a następnie dodać w danych testowych do pociągu, to jest możliwe (aw niektórych sytuacjach może całkiem prawdopodobne) zostanie poprawiona model. Jednak nie ma sposobu, aby upewnić się, czy tak się rzeczywiście stało, a nawet jeśli tak, nie ma żadnego obiektywnego oszacowania, jaka jest nowa wydajność.

Z bycia świadkiem wielu zawodów Kaggle, mam doświadczenie, że dostrojenie się do zestawu testowego przez nadmierne użycie go jest prawdziwą rzeczą i ma duży wpływ na te zawody. Często istnieje grupa konkurentów, którzy wspięli się na publiczną tabelę wyników i wybrali swój najlepszy model w teście (publiczna tabela wyników jest w rzeczywistości zestawem testowym), ale nie są tak dokładni w kwestii weryfikacji krzyżowej. . . ci konkurenci wypadają z tabeli liderów, gdy na końcu wprowadzany jest nowy zestaw testowy.

Jednym z rozsądnych podejść jest ponowne wykorzystanie danych (pociąg + CV) do ponownego trenowania przy użyciu hiperparamów, które znalazłeś, przed testowaniem. W ten sposób możesz ćwiczyć na większej liczbie danych, a na końcu nadal otrzymujesz niezależną miarę wydajności.

Jeśli chcesz uzyskać więcej z walidacji krzyżowej, zwykle stosuje się k-krotną walidację krzyżową . Powszechną sztuczką w zawodach Kaggle jest stosowanie k-krotnej weryfikacji krzyżowej i zamiast ponownego łączenia danych w większy zestaw treningowy (pociąg + CV), aby zestawić lub ułożyć wyniki CV w meta-model.

Na koniec zawsze sprawdź, czy podziały dla sprawdzania poprawności i testowania są odporne na ewentualną korelację w zestawie danych.

Neil Slater
źródło
1
co rozumiesz przez „odporny na ewentualną korelację w swoim zbiorze danych”?
user6903745