Grundlæggende AI

Hvad er Transfer Learning?

mm
Føj Unite.AI til dine foretrukne kilder på Google

Hvad er Transfer Learning?

Når man arbejder med maskinlæring, kan det tage lang tid at træne en model. At oprette en modelarkitektur fra scratch, træne modellen og derefter justere modellen er en enorm mængde tid og arbejde. En langt mere effektiv måde at træne en maskinlæringmodel er at bruge en arkitektur, der allerede er defineret, potentelt med vægte, der allerede er beregnet. Dette er den grundlæggende idé bag transfer learning, at tage en model, der allerede er blevet brugt, og genbruge den til en ny opgave.

Før vi dykker ned i de forskellige måder, transfer learning kan bruges på, lad os tage et øjeblik til at forstå, hvorfor transfer learning er så kraftfuld og nyttig teknik.

Løsning af et dybt læringproblem

Når du forsøger at løse et dybt læringproblem, som f.eks. at bygge en billedklassifikator, skal du oprette en modelarkitektur og derefter træne modellen på dine data. Træning af modellens klassifikator indebærer at justere vægtene i netværket, en proces, der kan tage timer eller endda dage, afhængigt af kompleksiteten af både modellen og datasettet. Træningstiden vil være proportionel med størrelsen af datasettet og kompleksiteten af modelarkitekturen.

Hvis modellen ikke opnår den nødvendige nøjagtighed til opgaven, vil justering af modellen sandsynligvis være nødvendig, og derefter skal modellen trænes igen. Dette betyder endnu flere timer med træning, indtil en optimal arkitektur, træningstid og datasetpartition kan findes. Når man tænker over, hvor mange variable der skal være i harmoni med hinanden for at en klassifikator skal være nyttig, er det forståeligt, at maskinlæringingenører altid søger efter lettere og mere effektive måder at træne og implementere modeller på. Af denne grund blev transfer learning-teknikken oprettet.

Efter at have designet og testet en model, kan den gemmes og genbruges senere til lignende problemer.

Typer af Transfer Learning

Generelt findes der to forskellige typer af transfer learning: udvikling af en model fra scratch og brug af en forudtrænet model.

Når du udvikler en model fra scratch, skal du oprette en modelarkitektur, der kan fortolke dine træningsdata og udtrække mønstre fra dem. Efter at modellen er trænet for første gang, skal du sandsynligvis foretage ændringer i den for at få den optimale præstation ud af modellen. Du kan derefter gemme modelarkitekturen og bruge den som udgangspunkt for en model, der skal bruges til en lignende opgave.

I den anden situation – brug af en forudtrænet model – skal du blot vælge en forudtrænet model at bruge. Mange universiteter og forskningsteams vil gøre specifikationerne af deres model tilgængelige for almindelig brug. Modelarkitekturen kan downloades sammen med vægtene.

Når du udfører transfer learning, kan hele modelarkitekturen og vægtene bruges til opgaven, eller kun bestemte dele/lag af modellen kan bruges. At bruge kun en del af den forudtrænede model og træne resten af modellen kaldes finjustering.

Finjustering af et netværk

Finjustering af et netværk beskriver processen med at træne kun nogle af lagene i et netværk. Hvis et nyt træningsdataset er meget lig det dataset, der blev brugt til at træne den oprindelige model, kan mange af de samme vægte bruges.

Antallet af lag i netværket, der skal afkobles og trænes igen, skal være proportionelt med størrelsen af det nye dataset. Hvis datasettet, der trænes på, er lille, er det en bedre praksis at holde de fleste lag, som de er, og kun træne de sidste få lag. Dette er for at forhindre, at netværket overtræner. Alternativt kan de sidste lag af den forudtrænede model fjernes, og nye lag tilføjes, som derefter trænes. Til gengæld, hvis datasettet er et stort dataset, potentelt større end det oprindelige dataset, skal hele netværket trænes igen. For at bruge netværket som en fast funktionsekstraktor kan de fleste af netværket bruges til at udtrække funktioner, mens kun det sidste lag af netværket kan afkobles og trænes.

Når du finjusterer et netværk, skal du blot huske, at de tidlige lag i ConvNet er, hvad der indeholder informationen, der repræsenterer de mere generiske funktioner af billederne. Disse er funktioner som kanter og farver. Til gengæld indeholder ConvNets senere lag detaljerne, der er mere specifikke for de enkelte klasser, der er indeholdt i datasettet, som modellen oprindeligt blev trænet på. Hvis du træner en model på et dataset, der er ret forskelligt fra det oprindelige dataset, vil du sandsynligvis ønske at bruge de tidlige lag af modellen til at udtrække funktioner og kun træne resten af modellen.

Eksempler på Transfer Learning

De mest almindelige anvendelser af transfer learning er sandsynligvis dem, der bruger billeddata som input. Disse er ofte forudsigelses-/klassifikationsopgaver. Den måde, Convolutional Neural Networks fortolker billeddata, læner sig mod genbrug af aspekter af modeller, da de convolutionelle lag ofte skelner meget lignende funktioner. Et eksempel på en almindelig transfer learning-opgave er ImageNet 1000-opgaven, et enormt dataset fuldt af 1000 forskellige klasser af objekter. Virksomheder, der udvikler modeller, der opnår høj præstation på dette dataset, udgiver ofte deres modeller under licenser, der tillader andre at genbruge dem. Nogle af de modeller, der er resulteret fra denne proces, omfatter Microsoft ResNet-modellen , Google (GOOGL ) Inception-modellen og Oxford VGG Model-gruppen.

Blogger og programmør med specialer i Machine Learning og Deep Learning emner. Daniel håber at hjælpe andre med at bruge AI's kraft til sociale formål.