Video: Optimering af dåse 2025
At kunne validere en maskinundervisningshypotese giver mulighed for yderligere optimering af din valgte algoritme. Algoritmen giver det meste af den prædiktive ydeevne på dine data, da den er i stand til at detektere signaler fra data og tilpasse den sande funktionelle form af den prædiktive funktion uden overfitting og generere stor varians af estimaterne. Ikke alle maskindele algoritmer passer bedst til dine data, og ingen enkelt algoritme passer til ethvert problem. Det er op til dig at finde den rigtige til et bestemt problem.
En anden kilde til prædiktiv ydeevne er selve dataene, når de er passende transformeret og udvalgt for at forbedre læringsfunktionerne i den valgte algoritme.
Den endelige kilde til ydeevne skyldes finjustering af algoritmens hyperparametre, som er de parametre, du bestemmer, før du lærer, og som ikke læres af data. Deres rolle er at definere a priori en hypotese, mens andre parametre angiver det a posteriori, efter at algoritmen interagerer med dataene og ved hjælp af en optimeringsproces finder, at visse parameterværdier arbejde bedre med at opnå gode forudsigelser.
Ikke alle maskinalæringsalgoritmer kræver meget hyperparametertuning, men nogle af de mest komplekse gør det, og selv om sådanne algoritmer stadig virker ude af kassen, kan trække de rigtige løftestænger gøre en stor forskel i rigtigheden af forudsigelserne. Selv når hyperparametrene ikke læres ud fra data, bør du overveje de data, du arbejder på, når du beslutter dig for hyperparametre, og du bør gøre valget baseret på krydsvalidering og omhyggelig evaluering af muligheder.
Komplekse maskinindlæringsalgoritmer, dem der er mest udsat for varians af estimater, præsenterer mange valg udtrykt i et stort antal parametre. Twiddling med dem gør dem tilpas mere eller mindre til de data, de lærer fra. Sommetider kan for meget hyperparameter twiddling endda gøre algoritmen detektere falske signaler fra dataene. Det gør hyperparametre selv en uopdaget kilde til varians, hvis du begynder at manipulere dem for meget ud fra en bestemt fast reference som et testsæt eller et gentaget krydsvalideringsskema.
Både R og Python tilbyder udskæring af funktionaliteter, der skærer din inputmatrix i tog-, test- og valideringsdele. For mere komplekse testprocedurer, såsom krydvalidering eller bootstrapping, tilbyder Scikit-Learning-pakken et helt modul, og R har en specialpakke, der tilbyder funktioner til datasplitning, forbehandling og testning.Denne pakke hedder caret.
De mulige kombinationer af værdier, som hyperparametre kan danne, bestemmer, hvor man skal søge optimeringer hårdt. Som beskrevet under diskussion af gradientafstamning, kan et optimeringsrum indeholde værdikombinationer, der udfører bedre eller værre. Selv efter at du har fundet en god kombination, er du ikke sikker på, at det er den bedste løsning. (Dette er problemet med at blive fast i lokale minima, når fejlen minimeres).
Som en praktisk måde at løse dette problem på, er den bedste måde at kontrollere hyperparametre på for en algoritme anvendt på specifikke data, at teste dem alle ved kryds-validering, og at vælge den bedste kombination. Denne enkle tilgang, kaldet grid-søgning, tilbyder ubestridelige fordele ved at give dig mulighed for at prøve rækkevidden af mulige værdier til systematisk indlæsning i algoritmen og at få øje på når det generelle minimum sker.
På den anden side har gridsøgning også alvorlige ulemper, fordi det er beregningsintensivt (du kan nemt udføre denne opgave parallelt på moderne multicore-computere) og ganske tidskrævende. Desuden forbedrer systematiske og intensive test muligheden for at pådrage sig fejl, fordi nogle gode, men falske valideringsresultater kan skyldes støj, der findes i datasættet.
Nogle alternativer til net søgning er tilgængelige. I stedet for at teste alt kan du forsøge at udforske rummet af mulige hyperparameterværdier styret af computationally tunge og matematisk komplekse, ikke-lineære optimeringsteknikker (som Nelder-Mead-metoden) ved hjælp af en Bayesian-tilgang (hvor antallet af tests minimeres ved at tage fordel af tidligere resultater) eller ved hjælp af tilfældig søgning.
Overraskende nok fungerer tilfældig søgning utroligt godt, er let at forstå, og er ikke kun baseret på blind held, selvom det i starten kan synes at være. Faktisk er det vigtigste punkt i teknikken, at hvis du vælger nok tilfældige tests, har du faktisk nok muligheder for at få vist de rigtige parametre uden at spilde energi ved at teste lidt forskellige kombinationer af tilsvarende udførte kombinationer.
Den grafiske repræsentation nedenfor forklarer, hvorfor tilfældig søgning fungerer fint. En systematisk udforskning, men nyttig, har tendens til at teste hver kombination, som bliver til spild af energi, hvis nogle parametre ikke påvirker resultatet. En tilfældig søgning tester faktisk færre kombinationer, men mere inden for rækkevidden af hver hyperparameter, en strategi der viser sig at vinde, hvis visse parametre som oftest er vigtigere end andre.
Sammenligning af netværkssøgning til tilfældig søgning.For at randomiseret søgning skal fungere godt, bør du gøre fra 15 til maksimalt 60 tests. Det er fornuftigt at ty til tilfældig søgning, hvis en netværkssøgning kræver et større antal eksperimenter.