stub Hvad er Transfer Learning? - Unite.AI
Følg os

AI 101

Hvad er Transfer Learning?

mm
Opdateret on

Hvad er Transfer Learning?

Når man træner maskinlæring, kan træning af en model tage lang tid. At skabe en modelarkitektur fra bunden, træne modellen og derefter finjustere modellen er en enorm mængde tid og kræfter. En langt mere effektiv måde at træne en maskinlæringsmodel på er at bruge en arkitektur, der allerede er defineret, potentielt med vægte, der allerede er beregnet. Dette er hovedtanken bag overføre læring, tager en model, der allerede er blevet brugt, og genbruger den til en ny opgave.

Før vi dykker ned i de forskellige måder, hvorpå overførselslæring kan bruges, lad os tage et øjeblik på at forstå, hvorfor overførselslæring er en så kraftfuld og nyttig teknik.

Løsning af et dybt læringsproblem

Når du forsøger at løse et problem med dyb læring, som at bygge en billedklassifikator, skal du oprette en modelarkitektur og derefter træne modellen på dine data. Træning af modelklassifikatoren involverer justering af netværkets vægte, en proces, der kan tage timer eller endda dage afhængigt af kompleksiteten af ​​både modellen og datasættet. Træningstiden vil skaleres i overensstemmelse med størrelsen af ​​datasættet og kompleksiteten af ​​modelarkitekturen.

Hvis modellen ikke opnår den form for nøjagtighed, der er nødvendig for opgaven, vil det sandsynligvis være nødvendigt at justere modellen, og derefter skal modellen omskoles. Dette betyder flere timers træning, indtil en optimal arkitektur, træningslængde og datasætpartition kan findes. Når du overvejer, hvor mange variabler der skal justeres efter hinanden, for at en klassifikator er nyttig, giver det mening, at maskinlæringsingeniører altid leder efter nemmere og mere effektive måder at træne og implementere modeller på. Af denne grund blev transferlæringsteknikken skabt.

Efter at have designet og testet en model, hvis modellen viste sig nyttig, kan den gemmes og genbruges senere til lignende problemer.

Typer af overførselslæring

Generelt er der to forskellige former for overførselslæring: udvikling af en model fra bunden og brug af en fortrænet model.

Når du udvikler en model fra bunden, bliver du nødt til at skabe en modelarkitektur, der er i stand til at 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 ydeevne ud af modellen. Du kan derefter gemme modelarkitekturen og bruge den som udgangspunkt for en model, der skal bruges på en lignende opgave.

I den anden betingelse – brugen af ​​en præ-trænet model – skal du blot vælge en præ-trænet model at bruge. Mange universiteter og forskerhold vil stille specifikationerne for deres model til rådighed til generel brug. Modellens arkitektur kan downloades sammen med vægtene.

Ved udførelse af overførselslæring kan hele modelarkitekturen og vægtene bruges til den aktuelle opgave, eller blot visse dele/lag af modellen kan bruges. Brug af kun noget af den fortrænede model og træning af resten af ​​modellen kaldes finjustering.

Finjustering af et netværk

Finjustering af et netværk beskriver processen med at træne blot nogle af lagene i et netværk. Hvis et nyt træningsdatasæt ligner det datasæt, der blev brugt til at træne den originale model, kan mange af de samme vægte bruges.

Antallet af lag i netværket, der skal frigøres og genoptrænes, skal skaleres i overensstemmelse med størrelsen af ​​det nye datasæt. Hvis det datasæt, der trænes på, er lille, er det en bedre praksis at holde størstedelen af ​​lagene som de er og træne kun de sidste par lag. Dette er for at forhindre netværket i at overfitte. Alternativt kan de sidste lag af det fortrænede netværk fjernes og nye lag tilføjes, som derefter trænes. Hvis datasættet derimod er et stort datasæt, potentielt større end det originale datasæt, bør hele netværket omskoles. For at bruge netværket som en fast funktionsudtrækker, kan størstedelen af ​​netværket bruges til at udtrække funktionerne, mens kun det sidste lag af netværket kan frigøres og trænes.

Når du finjusterer et netværk, skal du bare huske, at de tidligere lag af ConvNet er det, der indeholder informationen, der repræsenterer de mere generiske træk ved billederne. Disse er funktioner som kanter og farver. I modsætning hertil rummer ConvNets senere lag de detaljer, der er mere specifikke for de individuelle klasser afholdt i det datasæt, som modellen oprindeligt blev trænet på. Hvis du træner en model på et datasæt, der er ret forskelligt fra det originale datasæt, vil du sandsynligvis bruge de indledende lag af modellen til at udtrække funktioner og blot genoptræne resten af ​​modellen.

Overfør læringseksempler

De mest almindelige anvendelser af transfer learning er sandsynligvis dem, der bruger billeddata som input. Disse er ofte forudsigelses-/klassificeringsopgaver. Vejen Konvolutional neurale netværk fortolkning af billeddata egner sig til at genbruge aspekter af modeller, da de foldede lag ofte skelner meget lignende funktioner. Et eksempel på et almindeligt overførselsindlæringsproblem er ImageNet 1000-opgaven, et massivt datasæt fyldt med 1000 forskellige klasser af objekter. Virksomheder, der udvikler modeller, der opnår høj ydeevne på dette datasæt, frigiver ofte deres modeller under licenser, der lader andre genbruge dem. Nogle af de modeller, der er resultatet af denne proces, inkluderer Microsoft ResNet-model, Google Inception Model og Oxford VGG-model gruppe.

Blogger og programmør med speciale i Maskinelæring , Deep Learning emner. Daniel håber at kunne hjælpe andre med at bruge AI's kraft til socialt gode.