Trening, walidacja, test: przeuczenie i niedouczenie
🎯 Po co Ci to?
Model, który w laboratorium rozpoznaje choroby z trafnością 99%, w szpitalu obok potrafi zjechać do 60%. To nie oszustwo i zwykle nie awaria — to najczęstsza porażka w całym uczeniu maszynowym, mająca nazwę i dobrze znany mechanizm. Po tej jednostce będziesz wiedział, dlaczego wynik podany bez zdania „na jakich danych mierzony" nie znaczy nic, i będziesz umiał zadać to jedno pytanie, które demaskuje większość przereklamowanych rezultatów.
✅ Czego się nauczysz
Po tej lekcji potrafisz:
- wyjaśnić, dlaczego jakości modelu nie wolno mierzyć na danych, na których się uczył;
- opisać rolę zbioru treningowego, walidacyjnego i testowego oraz podzielić dane między nie;
- rozpoznać przeuczenie i niedouczenie na podstawie zestawienia wyników;
- odróżnić parametry modelu od hiperparametrów;
- wskazać typowe przecieki danych, które sztucznie zawyżają wynik.
🔁 Przypomnij sobie
Z Jednostki 9.2: dane treningowe to przykłady z etykietami, a model uczy się odwzorowywać jedno na drugie. Z Jednostki 9.1: celem nie jest zapamiętanie tych przykładów, ale rozpoznawanie nowych, niewidzianych wcześniej przypadków — dziecko, które nauczyło się rozpoznawać psy, poznaje też psa, którego nigdy nie widziało.
📘 Wyjaśnienie
Prawdziwy cel: uogólnianie, nie zapamiętanie
Wyobraź sobie ucznia, który przed sprawdzianem dostał 50 zadań z odpowiedziami — i wykuł te 50 par na pamięć, nie rozumiejąc ani jednego. Na tych 50 zadaniach ma 100%. Na sprawdzianie z nowymi zadaniami — porażka.
Model może zrobić dokładnie to samo, a jeśli ma dużo parametrów, to nawet bardzo łatwo. Dlatego cel uczenia formułujemy ostrożnie: chodzi o uogólnianie (generalizację), czyli poprawne działanie na danych, których model nigdy nie widział. A skoro tak, to sprawdzanie go na materiale treningowym jest bezcelowe — to jak ocenianie ucznia z zadań, do których ma klucz.
📐 DEFINICJA — uogólnianie (generalizacja): zdolność modelu do poprawnego działania na nowych danych, niewystępujących w zbiorze treningowym.
Po ludzku: umiejętność, a nie wyuczona na pamięć lista odpowiedzi. Czym to NIE jest: to nie to samo co niska strata na treningu. Model może mieć zerowy błąd na przykładach treningowych i zerową wartość praktyczną.
Trzy zbiory i jedna złota zasada
Dane dzielimy więc na trzy rozłączne części — najczęściej losowo:
- zbiór treningowy (typowo 60–80%) — na nim model dostraja swoje parametry (wagi);
- zbiór walidacyjny (10–20%) — na nim my podejmujemy decyzje: ile warstw, jak duży krok uczenia, kiedy przerwać trening. Model się na nim nie uczy, ale wpływa on na nasze wybory;
- zbiór testowy (10–20%) — używany raz, na samym końcu, żeby oszacować, jak model zadziała w świecie.
WSZYSTKIE DANE (np. 10 000 przykładów)
┌──────────────────────┬───────────┬───────────┐
│ TRENINGOWY 70% │ WALID. 15%│ TEST 15% │
│ 7 000 │ 1 500 │ 1 500 │
└──────────────────────┴───────────┴───────────┘
model dostraja my wybieramy jednorazowy
wagi ustawienia pomiar końcowy
Złota zasada brzmi: zbioru testowego nie dotykasz. Jeśli po zobaczeniu wyniku na teście wrócisz i zmienisz cokolwiek w modelu, test przestał być testem — stał się drugim zbiorem walidacyjnym, a Twoje szacowanie jakości znów jest zawyżone. Właśnie dlatego istnieje osobny zbiór walidacyjny: żeby było gdzie eksperymentować.
Gdy danych jest mało, stosuje się walidację krzyżową: dzielimy dane na k części (np. 5), trenujemy pięć razy, każdorazowo używając czterech części do treningu i jednej do sprawdzenia, a potem uśredniamy wyniki. Dzięki temu każdy przykład raz posłużył do oceny, a szacunek jest stabilniejszy.
Parametry a hiperparametry
Rozróżnienie proste, ale mylone nagminnie.
Parametry to liczby, które model sam ustawia w trakcie uczenia — wagi neuronów. Ich jest dużo: od tysięcy do setek miliardów.
Hiperparametry to nastawy, które ustala człowiek przed treningiem: liczba warstw, liczba neuronów w warstwie, wielkość kroku uczenia, liczba epok, siła regularyzacji. Ich jest niewiele, ale bywają decydujące.
Zbiór walidacyjny służy dokładnie do wyboru hiperparametrów. Model dostraja parametry na treningu, my dostrajamy hiperparametry na walidacji, a test mówi, co z tego wszystkiego wyszło.
Dwie choroby modelu
Niedouczenie (ang. underfitting): model jest za prosty (albo trenowany za krótko) na strukturę obecną w danych. Myli się na treningu i na nowych danych. To jak próba opisania kształtu góry linią prostą — nie ma jak, brakuje środków wyrazu.
Przeuczenie (ang. overfitting): model jest tak pojemny, że zamiast reguły zapamiętał szczegóły — łącznie z przypadkowym szumem konkretnych przykładów. Ma znakomity wynik na treningu i zły na nowych danych.
Diagnoza jest łatwa, bo wystarczy porównać dwie liczby:
| błąd na treningu | błąd na walidacji | diagnoza | |
|---|---|---|---|
| A | duży | duży | niedouczenie — model za słaby |
| B | mały | mały | w porządku |
| C | bardzo mały | duży | przeuczenie — model zapamiętał |
| D | duży | mały | podejrzenie błędu w podziale danych |
Przebieg treningu wygląda zwykle tak:
błąd
^
| W
| W W W W <- walidacja
| W W W W (znów rośnie)
| T W W W W W W W W W
| T
| T T
| T T T T
| T T T T T T T T <- trening
+-----------------------------------------------> czas treningu
^
tu warto przerwać
(najniższy błąd na walidacji)
Punkt, w którym błąd na walidacji przestaje spadać i zaczyna rosnąć, to sygnał: dalszy trening już nie uczy reguły, tylko szczegółów. Przerwanie w tym miejscu nazywa się wczesnym zatrzymaniem (ang. early stopping) i jest najprostszym lekarstwem na przeuczenie.
💭 Pomyśl: Model rozpoznający czerniaka osiąga 99,8% trafności na zbiorze treningowym i 71% na walidacyjnym. Co się stało i co zrobiłbyś najpierw?
Sprawdź odpowiedź
To podręcznikowe przeuczenie: ogromna różnica między treningiem a walidacją znaczy, że model zapamiętał konkretne zdjęcia, a nie cechy zmiany skórnej. Najprostsze pierwsze kroki: zebrać albo wygenerować więcej i bardziej różnorodnych danych (obroty, przycięcia, zmiany jasności — tak zwana augmentacja), zmniejszyć model albo dodać regularyzację (Jednostka 11.5), zastosować wczesne zatrzymanie. Warto też sprawdzić coś banalnego, a częstego: czy w treningu i walidacji nie znalazły się różne zdjęcia tego samego pacjenta — to już przeciek danych.
Model uczy się nie tego, co myślisz
Najbardziej pouczające porażki nie wynikają z matematyki, ale z tego, że w danych była łatwiejsza droga do dobrej odpowiedzi niż ta, o którą nam chodziło.
W badaniach nad wykrywaniem czerniaka opisywano modele, które przy zdjęciach zmian złośliwych osiągały świetne wyniki, bo na tych zdjęciach częściej widoczna była linijka przystawiana przez dermatologa do groźnie wyglądających zmian albo ślady barwnika. Model bezbłędnie wykrywał linijkę. Z punktu widzenia funkcji straty (Jednostka 11.1) zachował się idealnie — zrobił dokładnie to, o co go poprosiliśmy: znalazł najprostszy wzorzec odróżniający jedną grupę zdjęć od drugiej. Tylko że ten wzorzec nie był chorobą.
Zapamiętaj z tego regułę: model uczy się najtańszej cechy, która działa na danych treningowych, a nie tej, którą uważamy za istotną. Sprawdzanie, na co patrzy model, jest osobnym rzemiosłem — wrócimy do niego w Jednostkach 12.4 i 18.1.
Przeciek danych
Przeciek (ang. data leakage) to sytuacja, w której do zbioru treningowego trafia informacja, której model nie będzie miał w rzeczywistym użyciu — albo gdy zbiory treningowy i testowy nie są naprawdę rozłączne. Wynik wychodzi znakomity i całkowicie fałszywy. Najczęstsze przypadki:
- ten sam obiekt w obu zbiorach — dwa zdjęcia tej samej zmiany skórnej, dwa nagrania tej samej osoby, dwa wpisy o tym samym mieszkaniu;
- cecha z przyszłości — przewidujemy, czy pacjent zostanie przyjęty do szpitala, a wśród cech jest „numer oddziału", który nadaje się dopiero po przyjęciu;
- cecha zastępcza dla etykiety — przewidujemy, czy klient zrezygnuje z usługi, a w danych jest kolumna „data złożenia rezygnacji";
- przygotowanie danych przed podziałem — obliczenie średnich do skalowania cech na całym zbiorze, łącznie z testowym, wprowadza do treningu informację o teście.
⚠️ Uwaga, pułapka
Gdy usłyszysz „nasz model ma 97% skuteczności", zadaj jedno pytanie: na jakich danych? Jeśli na treningowych — liczba nie znaczy nic. Jeśli na testowych, ale zbiór testowy pochodzi z tego samego szpitala, tej samej kamery i tego samego miesiąca co trening — znaczy niewiele, bo mierzy działanie w warunkach laboratoryjnych, a nie w świecie. Najbardziej wiarygodna jest ocena na danych z innego źródła (innego szpitala, innego miasta, innego roku); nazywa się to walidacją zewnętrzną i w praktyce prawie zawsze wychodzi z niej wynik niższy niż z laboratorium. Spadek jakości po wyjściu z laboratorium to reguła, nie wyjątek.
🌍 Powiązania
Metody walki z przeuczeniem — regularyzacja, porzucanie neuronów (dropout), augmentacja — rozbierzemy w Jednostce 11.5. Techniczna strona pomiaru błędu (funkcja straty) to Jednostka 11.1, a bogatszy zestaw miar jakości niż samo „ile procent" to następna jednostka. Pytanie o to, czy model naprawdę uchwycił regułę, czy tylko powierzchowną korelację, wraca w najpoważniejszej postaci przy modelach językowych (Jednostka 19.2).
📐 Definicje tej lekcji
- Uogólnianie (generalizacja) — poprawne działanie modelu na danych, których nie widział w treningu.
- Zbiór treningowy — część danych, na której model dostraja parametry.
- Zbiór walidacyjny — część danych służąca do wyboru hiperparametrów i momentu zakończenia treningu.
- Zbiór testowy — część danych używana jednorazowo do końcowego oszacowania jakości.
- Walidacja krzyżowa — wielokrotny trening na różnych podziałach danych i uśrednienie wyników.
- Parametry — liczby ustawiane przez model w trakcie uczenia (wagi).
- Hiperparametry — nastawy wybierane przez człowieka przed treningiem.
- Przeuczenie (overfitting) — zapamiętanie szczegółów zbioru treningowego zamiast reguły.
- Niedouczenie (underfitting) — model zbyt prosty, by uchwycić strukturę danych.
- Wczesne zatrzymanie — przerwanie treningu, gdy błąd na walidacji przestaje spadać.
- Przeciek danych (data leakage) — obecność w treningu informacji niedostępnej w realnym użyciu lub nierozłączność zbiorów.
📌 Najważniejsze w pigułce
- Celem uczenia jest uogólnianie, nie niski błąd na treningu.
- Dane dzielimy na trzy zbiory: treningowy (uczenie), walidacyjny (wybór hiperparametrów), testowy (jednorazowy pomiar końcowy).
- Zbioru testowego nie dotykamy — po zajrzeniu do niego przestaje mierzyć to, co miał mierzyć.
- Duża różnica trening–walidacja to przeuczenie; zły wynik na obu — niedouczenie.
- Model uczy się najtańszej cechy, która działa — także linijki na zdjęciu zamiast choroby.
- Wynik bez informacji „na jakich danych" jest bezwartościowy; walidacja zewnętrzna zawsze daje mniej niż laboratorium.
🎒 Zadania
Zadanie 9.3.1. Masz 12 000 opisanych zdjęć. Zaproponuj podział na trzy zbiory (podaj liczby) i napisz przy każdym jednym zdaniem, do czego dokładnie go użyjesz. Następnie odpowiedz: co robisz, jeśli po pomiarze na teście okazuje się, że wynik jest o 8 punktów procentowych niższy niż na walidacji?
Pokaż rozwiązanie
Przykładowy podział 70/15/15: 8 400 treningowych (dostrajanie wag), 1 800 walidacyjnych (wybór liczby warstw, kroku uczenia, momentu zatrzymania), 1 800 testowych (jednorazowy pomiar końcowy).
Co do drugiej części — pytanie jest podstępne. Poprawna odpowiedź: nie „poprawiam modelu, aż test wyjdzie lepiej", bo wtedy zamieniam test w drugą walidację i tracę uczciwe oszacowanie. Wolno natomiast: (1) zaraportować wynik testowy jako prawdziwy (to on opisuje rzeczywistość), (2) sprawdzić, czy podział był losowy i czy nie ma przecieku, (3) jeśli koniecznie chcę dalej pracować nad modelem — zebrać nowy zbiór testowy na końcową ocenę. Różnica 8 punktów sama w sobie nie musi znaczyć błędu: mniejsze zbiory dają wyniki obarczone wahaniami losowymi.
Zadanie 9.3.2. Trzy modele przewidujące ceny mieszkań dały następujące średnie błędy: model A — 12 tys. zł na treningu, 130 tys. zł na walidacji; model B — 95 tys. zł na treningu, 99 tys. zł na walidacji; model C — 4 tys. zł na treningu, 6 tys. zł na walidacji, ale wśród cech ma kolumnę „cena za m² w tym mieszkaniu". Zdiagnozuj każdy przypadek.
Pokaż rozwiązanie
Model A — klasyczne przeuczenie: znakomity na treningu, dziesięć razy gorszy na walidacji. Zapamiętał konkretne mieszkania.
Model B — niedouczenie: błąd duży i prawie identyczny w obu zbiorach, więc problem nie polega na zapamiętywaniu, ale na tym, że model (lub zestaw cech) jest zbyt ubogi, żeby uchwycić zależność. Lekarstwo: bogatszy model, lepsze cechy, dłuższy trening.
Model C — przeciek danych. Cena za metr kwadratowy pomnożona przez metraż daje wprost szukaną cenę, więc model nie przewiduje niczego, tylko odtwarza etykietę z cechy, która ją zawiera. Świetny wynik na obu zbiorach jest tu sygnałem ostrzegawczym, nie sukcesem — w realnym użyciu (mieszkanie bez znanej ceny) takiej cechy po prostu nie będzie.
Zadanie 9.3.3. Wyjaśnij, dlaczego zwiększanie liczby parametrów modelu może najpierw poprawiać, a potem pogarszać jego przydatność, mimo że błąd na zbiorze treningowym cały czas spada.
Pokaż rozwiązanie
Na początku model jest zbyt prosty, by uchwycić rzeczywistą zależność — jest niedouczony, więc dodawanie parametrów pozwala mu opisać coraz więcej prawdziwej struktury danych i błąd spada w obu zbiorach. Po przekroczeniu pewnego punktu pojemność modelu wystarcza już na coś więcej niż reguła: model zaczyna „opisywać" przypadkowy szum konkretnych przykładów treningowych — nietypowe mieszkanie, błędną etykietę, artefakt zdjęcia. Ten szum nie powtarza się w nowych danych, więc błąd treningowy wciąż maleje (model coraz dokładniej odtwarza to, co widział), a błąd na danych nowych rośnie. Dlatego o jakości modelu nie decyduje liczba parametrów, ale relacja między jego pojemnością, liczbą danych i siłą regularyzacji (Jednostka 11.5).
🔍 Sprawdź, czy umiesz
- [ ] Wyjaśnić, czym jest uogólnianie i dlaczego niski błąd treningowy nie wystarcza.
- [ ] Podzielić zbiór danych na trzy części i powiedzieć, do czego służy każda.
- [ ] Uzasadnić złotą zasadę „zbioru testowego nie dotykasz".
- [ ] Odróżnić parametry od hiperparametrów.
- [ ] Zdiagnozować przeuczenie i niedouczenie z pary liczb (błąd treningowy, błąd walidacyjny).
- [ ] Wskazać trzy typowe przecieki danych.