Powszechną techniką po przeszkoleniu, sprawdzeniu poprawności i przetestowaniu preferowanego modelu uczenia maszynowego jest użycie pełnego zestawu danych, w tym podzestawu testowego, do wyszkolenia ostatecznego modelu w celu wdrożenia go, np. Produktu.
Moje pytanie brzmi: czy zawsze tak jest najlepiej? Co jeśli wydajność faktycznie się pogorszy?
Załóżmy na przykład, że model ocenia około 65% w klasyfikacji podzbioru testowego. Może to oznaczać, że albo model nie jest odpowiednio przeszkolony LUB, że podzbiór testowy składa się z wartości odstających. W tym drugim przypadku trenowanie z nimi ostatecznego modelu zmniejszy jego wydajność, a dowiesz się dopiero po jego wdrożeniu.
Przeformułowanie mojego pierwszego pytania:
Jeśli miałeś jednorazową demonstrację modelu , na przykład wdrożenie go na wbudowanej elektronice na pokładzie drogiego eksperymentu z rakietą, czy zaufałbyś modelowi, który został ponownie przeszkolony z podzbiorem testowym w ostatnim etapie bez konieczności ponownego przetestowany pod kątem nowej wydajności?
Interesujące pytanie. Osobiście nie widziałem tego w przypadku produktów wprowadzanych do produkcji, ale rozumiem logikę.
Teoretycznie im więcej danych widział twój wdrożony model, tym lepiej powinno się uogólniać. Więc jeśli wyszkoliłeś model na pełnym zestawie dostępnych danych, powinien uogólnić się lepiej niż model, który widział tylko na przykład zestawy pociągów / wartości (np. ~ 90%) z pełnego zestawu danych.
Problem z tym (a przede wszystkim z powodu tego, że dzielimy dane na zestawy kolejowe / wartościowe / testowe!) Polega na tym, że chcemy być w stanie zgłaszać dane statystyczne dotyczące dokładności niewidzialnych danych. Gdy tylko ponownie przeszkolimy model na wszystkich danych, nie będzie już możliwe zgłaszanie takich roszczeń.
[Edytować]
Oto powiązane pytanie na temat Cross-Validated , w którym zaakceptowana odpowiedź przedstawia mi podobne punkty i wymienia inne sposoby robienia rzeczy.
Pętlimy:
W końcu, jeśli uda ci się uzyskać świetny wynik w zestawie testowym, możesz twierdzić, że dobrze się uogólnia. Zatem pytanie, czy ponowne szkolenie w pełnym zbiorze danych poprawi wydajność przyszłych niewidzialnych danych, nie jest czymś, co można dokładnie przetestować. Empiryczne dowody lepszej wydajności w innych powiązanych zestawach problemów byłyby jedynym źródłem lub wskazówką w momencie, w którym należy podjąć decyzję.
Sprawdzeniem rozsądku byłoby ponowne przetestowanie końcowego ponownie wyszkolonego modelu na oryginalnym zestawie testowym; spodziewając się, że uzyska wyniki wyższe niż kiedykolwiek wcześniej, gdy model widział tylko zestaw pociąg / wartość, ponieważ faktycznie widział zestaw testowy podczas treningu. Nie dałoby mi to 100% pewności, że ten ostateczny model jest lepszy we wszystkich przyszłych przypadkach, ale przynajmniej jest tak dobry, jak to tylko możliwe przy danych danych.
Być może istnieją bardziej rygorystyczne argumenty przeciwko robieniu tego, co mówisz (prawdopodobnie naukowo umotywowane), jednak wydaje się atrakcyjne dla praktycznych zastosowań!
źródło
W statystycznym uczeniu maszynowym należy podkreślić, że nie ma żadnych gwarancji . Gdy oceniasz wydajność za pomocą ustalonego zestawu, jest to tylko oszacowanie . Szacunki mogą być błędne.
To wymaga trochę przyzwyczajenia się, ale musisz się z tym dobrze czuć. Kiedy powiesz „Co, jeśli wydajność rzeczywiście się pogorszy?”, Odpowiedź jest pewna, że może się zdarzyć. Rzeczywista wydajność może być gorsza niż szacowana / przewidywana. Może być również lepiej. Oba są możliwe. To nieuniknione. Istnieje pewna nieodłączna niepewność.
Oceniając wydajność przy użyciu wstrzymanego zestawu testów, używasz danych z przeszłości, aby spróbować przewidzieć przyszłą wydajność. Jak mówią, wyniki osiągnięte w przeszłości nie stanowią gwarancji przyszłych wyników . To fakt, który musimy zaakceptować.
Nie możesz pozwolić, żeby cię to unieruchomiło. Fakt, że można zrobić gorzej niż przewidywano, nie jest powodem do unikania wdrażania do produkcji modelu wyszkolonego w zakresie danych. W szczególności można również źle postępować, jeśli tego nie zrobisz. Możliwe, że model wytrenowany na wszystkich danych (pociąg + walidacja + test) będzie gorszy niż model wytrenowany tylko na części pociąg + walidacja. Możliwe też, że będzie lepiej. Zamiast szukać gwarancji, musimy zadać sobie pytanie: co daje nam największą szansę na sukces? Co najprawdopodobniej będzie najbardziej skuteczne?
A w tym przypadku, gdy chcesz wdrożyć do produkcji, najlepsze, co możesz zrobić, to wykorzystać wszystkie dostępne dane. Pod względem oczekiwanej wydajności wykorzystanie wszystkich danych nie jest gorsze niż wykorzystanie niektórych danych i potencjalnie lepsze. Tak więc możesz równie dobrze wykorzystać wszystkie dostępne dane, aby wyszkolić model podczas tworzenia modelu produkcyjnego. Sprawy mogą się jeszcze potoczyć źle - zawsze można mieć pecha, za każdym razem, gdy używasz metod statystycznych - ale daje to najlepszą możliwą szansę, aby wszystko poszło dobrze.
W szczególności standardowa praktyka jest następująca:
Zarezerwuj część swoich danych w ustalonym zestawie testowym. Nie ma twardej i szybkiej reguły dotyczącej tego, której części użyć, ale na przykład możesz zarezerwować 20% na zestaw testowy i zachować pozostałe 80% na szkolenie i walidację. Zwykle wszystkie podziały powinny być losowe.
Następnie skorzystaj z danych szkoleniowych i walidacyjnych, aby wypróbować wiele architektur i hiperparametrów, eksperymentując, aby znaleźć najlepszy model, jaki możesz. Weź 80% zatrzymanych na szkolenie i walidację i podziel go na zestaw szkoleniowy i zestaw walidacyjny, i wytrenuj model przy użyciu zestawu szkoleniowego, a następnie zmierz jego dokładność na zestawie sprawdzającym poprawność. Jeśli korzystasz z walidacji krzyżowej, dokonasz tego podziału wiele razy i uśredniasz wyniki w zestawie walidacji; jeśli nie, zrobisz pojedynczy podział (np. 70% / 30% z 80% lub coś w tym stylu) i ocenisz wydajność na zestawie sprawdzania poprawności. Jeśli masz wiele hiperparametrów do wypróbowania, zrób to raz dla każdego potencjalnego ustawienia hiperparametru. Jeśli masz wiele architektur do wypróbowania, zrób to dla każdej architektury kandydującej. Możesz iterować w tym, używając tego, co „
Gdy jesteś szczęśliwy, zamrażasz wybór architektury, hiperparametrów itp. Teraz eksperymentujesz. Po osiągnięciu tego punktu nigdy nie możesz wypróbować żadnych innych opcji (bez uzyskania nowego zestawu testowego) - więc nie naciskaj tego punktu, dopóki nie będziesz pewien, że jesteś gotowy.
Kiedy będziesz gotowy, trenujesz model na pełnym zestawie szkolenia + walidacji (to 80%), korzystając z architektury i hiperparametrów, które wcześniej wybrałeś. Następnie zmierz jego dokładność na odłożonym zestawie testowym. To jest twoje oszacowanie / prognoza tego, jak dokładne będzie to podejście do modelowania. Otrzymasz tutaj jeden numer. Ta liczba jest taka: jeśli nie jesteś z niej zadowolony, nie możesz wrócić do kroków 1 i 2 i przeprowadzić więcej eksperymentów; to byłoby nieprawidłowe.
Wreszcie, do użytku produkcyjnego, możesz wytrenować model na całym zestawie danych, szkolenie + walidacja + zestaw testowy i wprowadzić go do użytku produkcyjnego. Pamiętaj, że nigdy nie mierzysz dokładności tego modelu produkcyjnego, ponieważ nie masz na to żadnych danych; wykorzystałeś już wszystkie dane. Jeśli chcesz oszacować, jak dobrze się sprawdzi, masz prawo wykorzystać szacunkową dokładność z kroku 4 jako swoją prognozę wydajności w produkcji, ponieważ jest to najlepsza dostępna prognoza jego przyszłej wydajności. Jak zawsze nie ma gwarancji - to tylko najlepsze możliwe oszacowanie, biorąc pod uwagę dostępne nam informacje. Z pewnością możliwe jest, że będzie gorzej niż się spodziewałeś lub lepiej niż się spodziewałeś - to zawsze prawda.
źródło
Jednym z powodów posiadania zestawu danych jest unikanie nadmiernego dopasowania. Jeśli zastosujesz walidację krzyżową, zasadniczo zezwalasz, aby cały zestaw danych działał jako zestaw szkoleniowy, ale ponowne przeszkolenie nie pozwoli ci sprawdzić, czy istnieje oznaka nadmiernego dopasowania. Wydaje mi się, że tak czy inaczej (walidacja krzyżowa lub przekwalifikowanie z całym zestawem danych) nie powinna radykalnie zmienić twojego wyniku (z mojego niewykształconego przypuszczenia), ale nie będziesz w stanie przeprowadzić strojenia hiperparametrów ani zweryfikować wydajności modelu, ponieważ nie mieć zestaw testowy. Trudno powiedzieć, czy skończy się lepiej, ale wydaje mi się, że jedynym sposobem na sprawdzenie jest wykonanie A / B obu modeli w czasie rzeczywistym.
źródło