Overfitting en underfitting zijn de twee manieren waarop een AI-model de verkeerde les leert uit zijn voorbeelden. Een overfit model kent zijn voorbeelden uit het hoofd, inclusief de toevalligheden erin, en doet het slecht op nieuwe gevallen. Een underfit model is te eenvoudig om zelfs het hoofdpatroon op te pikken. Een verkoopprognose die elke piek en dip van vorig jaar natekent, kan de volgende maand nog steeds missen.
Hoe herken je ze?
De Machine Learning Crash Course van Google vergelijkt een overfit model met een uitvinding die in het lab goed werkt en in de echte wereld niets waard is; een underfit model werkt zelfs in het lab niet goed. Je ziet het verschil door data apart te houden. Volg tijdens het trainen de fout, de loss, op de trainingsdata en op aparte validatiedata. Lopen de twee curves eerst samen op en gaan ze daarna uiteen, met een stijgende validatieloss, dan overfit het model. Blijft de fout ook op de trainingsdata hoog, dan underfit het.
Wat veroorzaakt het?
Google noemt twee oorzaken van overfitting: trainingsdata die niet lijkt op de data in de praktijk, en een model dat te complex is. De documentatie van scikit-learn beschrijft de balans met twee begrippen. Bias is de gemiddelde fout van een model over verschillende trainingssets; een te eenvoudig model heeft een hoge bias en underfit. Variantie is hoeveel het model verandert als de trainingsset verandert; een te flexibel model heeft een hoge variantie en overfit. Het doel is beide laag te houden.
Hoe voorkom je het?
Tegen overfitting:
- Meer data. Dat verlaagt de variantie, al raadt scikit-learn aan alleen meer te verzamelen als een eenvoudiger model het patroon niet kan vangen.
- Regularisatie, die het model eenvoudiger houdt. L2-regularisatie in de cursus van Google geeft een straf op grote gewichten; dropout (Srivastava e.a., 2014) schakelt tijdens het trainen willekeurige eenheden van een neuraal netwerk uit.
- Early stopping: stop met trainen zodra de validatieloss begint te stijgen.
- Data augmentation: Krizhevsky e.a. (2012) vergrootten hun set afbeeldingen met verschoven en gespiegelde kopieën, volgens hen de makkelijkste en meest gebruikte manier om overfitting bij beelddata te beperken.
- Een eenvoudiger model. Volgens Google doen complexe modellen het meestal beter op de trainingsset en eenvoudige op de testset.
Tegen underfitting gaan de stappen de andere kant op: een flexibeler model, bijvoorbeeld met extra polynoomtermen zoals in het voorbeeld hieronder, of minder regularisatie. Google merkt op dat een regularization rate die te hoog is ten opzichte van de learning rate zwakke gewichten en slechte voorspellingen oplevert.
Geldt dit nog voor grote modellen?
Slechts ten dele. Zhang e.a. (2016) lieten zien dat beeldnetwerken volledig willekeurige labels kunnen leren, zodat de klassieke uitleg niet verklaart waarom ze op echte data toch goed generaliseren. Belkin e.a. (2018) beschreven double descent: zodra een model zijn trainingsdata exact past, kan de testfout weer dalen als het model groter wordt. Nakkiran e.a. (2019) vonden dat patroon in deep learning, zowel bij de modelgrootte als bij de trainingsduur. Grote taalmodellen voegen er een eigen vorm aan toe: testvragen die ze uit het hoofd kennen. Op GSM1k, nieuwe rekenopgaven in de stijl van een bestaande benchmark, daalde de nauwkeurigheid met maximaal 8%, en vertoonden meerdere modelfamilies tekenen van systematische overfitting.
Voorbeeld
In een voorbeeld van scikit-learn worden 30 punten met ruis van een cosinuscurve benaderd met polynomen van graad 1, 4 en 15. De rechte lijn (graad 1) is te eenvoudig voor de trainingspunten: underfitting. Graad 4 komt dicht bij de echte curve. Graad 15 past de trainingspunten bijna perfect en mist de echte curve, omdat het de ruis heeft geleerd. De fout bij kruisvalidatie in de documentatie van versie 1.9.1 laat het zien: 0,41 voor graad 1, 0,04 voor graad 4 en ongeveer 180 miljoen voor graad 15.
Bronnen
- Google: Overfitting (Machine Learning Crash Course)Web
- scikit-learn: Validation curves, plotting scores to evaluate models (user guide)Web
- scikit-learn: Underfitting vs. Overfitting (example)Web
- Srivastava et al.: Dropout, A Simple Way to Prevent Neural Networks from Overfitting (JMLR, 2014)Web
- Belkin et al.: Reconciling modern machine learning practice and the bias-variance trade-off (2018)arXiv
- Zhang et al.: Understanding deep learning requires rethinking generalization (2016)arXiv
