Takéoverfit, přetrénování, přeučený modelPokročilý
Definice
Přeučení je stav modelu strojového učení, kdy se příliš přizpůsobí trénovacím datům včetně šumu a náhodných detailů. Model pak dosahuje výborných výsledků na známých příkladech, ale zhoršuje se na nových datech, protože místo obecného vzoru si zapamatoval konkrétní trénovací sadu.
Proč přeučený model selže mimo trénovací data
Přeučený model neodhalil obecný vztah, ale přizpůsobil se detailům konkrétní trénovací sady. Může si zapamatovat náhodný šum, chyby ve štítcích, jednorázové sezónní výkyvy nebo nepodstatné korelace. Na trénovacích datech pak vypadá výborně, protože odpovědi už de facto zná. Na nových datech se stejný trik rozpadne.
Typický průběh je vidět při učení neuronové sítě nebo stromového modelu. Trénovací chyba dál klesá, ale validační chyba se po určité době zastaví a začne růst. Zlepšování na trénovací sadě už nepřináší lepší zobecnění. Model se stává přesnější pro minulost, ne pro budoucnost.
Přeučení není jen problém příliš velkých neuronových sítí. Objeví se i u lineárního modelu s nevhodně vytvořenými příznaky, u rozhodovacího stromu bez omezení hloubky, při ladění mnoha hyperparametrů na stejné validační sadě nebo při úniku informací z budoucnosti do trénovacích dat.
Kde se přeučení v praxi pozná
Nejjednodušší signál je rozdíl mezi výsledkem na trénovacích a validačních datech. Klasifikátor spamu může mít téměř dokonalou přesnost na historických e-mailech, ale selhávat na nové kampani, protože si zapamatoval konkrétní domény a formulace. Predikce poptávky může přesně opsat loňské akce, ale špatně odhadnout další měsíc.
Samotná vysoká metrika není důkaz kvality. Důležité je, zda byla měřena na datech, která model během vývoje neviděl ani nepřímo. Testovací sada má být poslední kontrola, ne nástroj pro opakované ladění. Opakované zkoušení variant proti stejnému testu může vytvořit přeučení na testovací sadu.
Omezení kapacity, regularizace a validace
Více dat a jednodušší model
Jedním protiopatřením je snížit kapacitu modelu. Rozhodovací strom dostane menší hloubku, neuronová síť méně parametrů nebo méně epoch, regresní model méně příznaků. Dalším protiopatřením je získat pestřejší data. Data musejí pokrývat situace, ve kterých se model později použije, jinak přidání dalších podobných příkladů pomůže jen omezeně.
Regularizace a brzké zastavení
Regularizace přidává do trénování cenu za příliš složité řešení. L2 penalizace omezuje velikost vah, dropout náhodně vypíná části sítě a datová augmentace vytváří obměny vstupů. Brzké zastavení ukončí trénování ve chvíli, kdy validační výkon přestane růst. Smyslem není mít co nejnižší trénovací chybu, ale model, který stabilně funguje na dosud neviděných příkladech.
Příklady z praxe
Příliš dlouhé trénování neuronové sítě
Tým trénuje model pro rozpoznání vadných výrobků z fotografií. Trénovací ztráta klesá dál, ale validační ztráta po několika epochách roste, takže model se začíná učit šum v konkrétních snímcích. Early stopping vrátí váhy z nejlepší validační epochy a nasazení má stabilnější výsledky na nových šaržích.
import tensorflow as tf callback = tf.keras.callbacks.EarlyStopping( monitor="val_loss", patience=3, restore_best_weights=True ) history = model.fit( x_train, y_train, validation_data=(x_val, y_val), epochs=100, callbacks=[callback] )Únik informace do příznaků
E-shop vytvoří model pro doporučování produktů a do trénovacích dat omylem zahrne informaci, zda zákazník nakonec koupil položku po zobrazení doporučení. Validace ukáže skvělé metriky, protože model vidí signál, který v reálném čase nebude k dispozici. Po nasazení doporučení ztratí kvalitu a metriky spadnou.
Časté omyly
- Mýtus„Když má model na trénovacích datech skoro 100 %, je hotovo.“
- Ve skutečnostiSkóre na trénovacích datech ukazuje hlavně to, jak dobře model zvládl známé příklady. Kvalitu pro nasazení ověřuje až validace a test na oddělených datech.
- Mýtus„Přeučení se týká jen neuronových sítí.“
- Ve skutečnostiPřeučení se týká každého modelu s dostatečnou volností vzhledem k datům. Může vzniknout u stromů, regrese, pravidlových systémů i při ručním ladění mnoha příznaků.
Časté dotazy
- Jak poznám přeučení během trénování modelu?
- Přeučení během trénování obvykle prozradí rostoucí rozdíl mezi výkonem na trénovacích a validačních datech. Trénovací chyba dál klesá, zatímco validační chyba stagnuje nebo se zhoršuje. Praktická kontrola zahrnuje křivky loss, samostatnou validační sadu, křížovou validaci a později test na datech, která nebyla použita při ladění architektury, příznaků ani hyperparametrů.
- Pomůže větší dataset proti přeučení vždycky?
- Větší dataset proti přeučení často pomůže, ale větší počet řádků sám o sobě nestačí. Dataset musí obsahovat rozmanité příklady podobné budoucímu provozu. Další milion téměř stejných záznamů může jen posílit existující zkreslení. Přeučení také nezmizí, pokud data obsahují únik informací, systematické chyby ve štítcích nebo validační schéma neodpovídá reálnému použití modelu.
- Proč může mít přeučený model vysokou přesnost?
- Přeučení se může objevit i u vysoké přesnosti, protože metrika může být měřená na datech, která jsou trénovacím příkladům příliš podobná. Model pak využívá náhodné vzory, zkratky nebo skryté úniky informací místo robustního vztahu. Důležitější než samotná hodnota metriky je způsob měření: oddělený test, časové rozdělení u časových řad a kontrola výkonu na odlišných segmentech dat.
- Kdy má smysl použít early stopping proti přeučení?
- Brzké zastavení má smysl, když validační metrika přestane zlepšovat kvalitu, zatímco trénovací metrika se dál zlepšuje. Přeučení se v takové chvíli teprve rozbíhá. Early stopping není náhrada za správná data ani za validaci, ale praktická pojistka u modelů trénovaných iterativně, například u neuronových sítí a gradient boosting modelů.
Zdroje
- Overfit and underfit(otevře se v novém okně)
- Overfitting(otevře se v novém okně)
- Improving neural networks by preventing co-adaptation of feature detectors(otevře se v novém okně)
- tf.keras.regularizers.Regularizer(otevře se v novém okně)