Grundlæggende AI
Hvad er Overfitting?
Hvad er Overfitting?
Når du træner et neuralt netværk, skal du undgå overfitting. Overfitting er et problem inden for maskinlæring og statistik, hvor en model lærer mønstrene i en træningsdataset for godt, og perfekt forklarer træningsdatasset, men ikke kan generalisere sin predictive kraft til andre datasæt.
For at sige det på en anden måde, i tilfælde af en overfitting model, vil den ofte vise ekstremt høj nøjagtighed på træningsdatasettet, men lav nøjagtighed på data, der er indsamlet og kørt gennem modellen i fremtiden. Det er en kort definition af overfitting, men lad os se på begrebet overfitting i mere detalje. Lad os se, hvordan overfitting opstår og hvordan det kan undgås.
Forståelse af “Fit” og Underfitting
Det er nyttigt at se på begrebet underfitting og “fit” generelt, når vi diskuterer overfitting. Når vi træner en model, prøver vi at udvikle en ramme, der kan forudsige naturen eller klassen af elementer i en dataset, baseret på funktionerne, der beskriver disse elementer. En model skal kunne forklare et mønster i en dataset og forudsige klasserne af fremtidige datapunkter på basis af dette mønster. Jo bedre modellen forklarer relationen mellem funktionerne i træningssettet, jo mere “fit” er vores model.

Blå linje repræsenterer forudsigelser fra en model, der er underfitting, mens den grønne linje repræsenterer en bedre fit-model. Billede: Pep Roca via Wikimedia Commons, CC BY SA 3.0, (https://commons.wikimedia.org/wiki/File:Reg_ls_curvil%C3%ADnia.svg)
En model, der dårligt forklarer relationen mellem funktionerne i træningsdata og derfor ikke kan klassificere fremtidige datapunkter nøjagtigt, er underfitting træningsdata. Hvis du skulle grafisk vise forudsigelserne fra en underfitting model mod de faktiske værdier af træningsdata, ville forudsigelserne afvige fra målet. Hvis vi havde en graf med de faktiske værdier af en træningsdataset, ville en kraftigt underfitting model drastisk misse de fleste datapunkter. En model med en bedre fit ville kunne følge en vej gennem midten af datapunkterne, med enkeltvis datapunkter, der afviger fra de forudsagte værdier kun lidt.
Underfitting kan ofte opstå, når der ikke er tilstrækkelig data til at skabe en nøjagtig model, eller når man prøver at designe en lineær model med ikke-lineær data. Mere træningsdata eller flere funktioner vil ofte hjælpe med at reducere underfitting.
Hvorfor ville vi ikke bare skabe en model, der forklarer hver punkt i træningsdata perfekt? Skaber en model, der har lært mønstrene i træningsdata for godt, er det, der forårsager overfitting. Træningsdatasset og andre, fremtidige datasæt, du kører gennem modellen, vil ikke være helt ens, men de vil sandsynligvis være meget lignende på mange måder, men de vil også adskille sig på nøgleområder. Derfor vil en model, der forklarer træningsdatasettet perfekt, resultere i en teori om relationen mellem funktionerne, der ikke generaliserer godt til andre datasæt.
Forståelse af Overfitting
Overfitting opstår, når en model lærer detaljerne i træningsdatasettet for godt, og modellen lider, når forudsigelser skal gøres på udenforliggende data. Dette kan opstå, når modellen ikke kun lærer funktionerne i datasettet, men også lærer tilfældige fluktuationer eller støj i datasettet og lægger vægt på disse tilfældige/uvæsentlige begivenheder.
Overfitting er mere sandsynligt at opstå, når ikke-lineære modeller bruges, da de er mere fleksible, når de lærer datafunktioner. Ikke-parametrisk maskinlæring har ofte flere parametre og teknikker, der kan anvendes til at begrænse modellens følsomhed over for data og dermed reducere overfitting. Eksempelvis er beslutningstræmodeller meget følsomme over for overfitting, men en teknik kaldet pruning kan bruges til at fjerne nogle af detaljerne, som modellen har lært.
Hvis du skulle grafisk vise forudsigelserne fra modellen på X- og Y-aksen, ville du have en forudsigelseslinje, der zigzagger frem og tilbage, hvilket afspejler, at modellen har forsøgt at tilpasse alle punkterne i datasettet til sin forklaring.
Kontrol af Overfitting
Når vi træner en model, ønsker vi ideelt, at modellen ikke committer fejl. Når modellens præstation konvergerer mod at gøre korrekte forudsigelser på alle datapunkterne i træningsdatasettet, bliver fit bedre. En model med en god fit kan forklare næsten alle datapunkter i træningsdatasettet uden overfitting.
Da en model trænes, forbedres dens præstation over tid. Modellens fejlrate vil falde, efterhånden som træningstiden passerer, men den falder kun til et vis punkt. Det punkt, hvor modellens præstation på testsettet begynder at stige igen, er typisk det punkt, hvor overfitting opstår. For at få den bedste fit for en model, ønsker vi at stoppe træningen af modellen på det punkt, hvor tabet er lavest på træningssettet, før fejlen begynder at stige igen. Det optimale stoppunkt kan bestemmes ved at grafisk vise modellens præstation over træningstiden og stoppe træningen, når tabet er lavest. Der er dog en risiko forbundet med denne metode til at kontrollere overfitting, nemlig at angivelse af endpoint for træningen baseret på testpræstation betyder, at testdata bliver inkluderet i træningsproceduren og mister sin status som ren “utilberørt” data.
Der er flere måder at bekæmpe overfitting på. En metode til at reducere overfitting er at bruge en resampling-taktik, der opererer ved at estimere modellens nøjagtighed. Du kan også bruge en valideringsdataset ud over testsettet og grafisk vise træningsnøjagtigheden mod valideringssettet i stedet for testdatasettet. Dette holder dit testdataset uset. En populær resampling-metode er K-folds cross-validering. Denne teknik giver dig mulighed for at opdele dine data i undermængder, som modellen trænes på, og derefter analyserer modellens præstation på undermængderne for at estimere, hvordan modellen vil præstere på udenforliggende data.
At bruge cross-validering er en af de bedste måder at estimere en modells nøjagtighed på usete data, og når kombineret med et valideringsdataset, kan overfitting ofte holdes til et minimum.












