stub Vad är Transfer Learning? - Unite.AI
Anslut dig till vårt nätverk!

AI 101

Vad är Transfer Learning?

mm
Uppdaterad on

Vad är Transfer Learning?

När man tränar maskininlärning kan det ta lång tid att träna en modell. Att skapa en modellarkitektur från grunden, träna modellen och sedan justera modellen är en enorm mängd tid och ansträngning. Ett mycket mer effektivt sätt att träna en maskininlärningsmodell är att använda en arkitektur som redan har definierats, eventuellt med vikter som redan har beräknats. Detta är huvudtanken bakom överför lärande, ta en modell som redan har använts och återanvända den för en ny uppgift.

Innan vi går in i de olika sätten som transferinlärning kan användas på, låt oss ta en stund för att förstå varför transferinlärning är en så kraftfull och användbar teknik.

Att lösa ett djupinlärningsproblem

När du försöker lösa ett problem med djupinlärning, som att bygga en bildklassificerare, måste du skapa en modellarkitektur och sedan träna modellen på dina data. Att träna modellklassificeraren innebär att justera nätverkets vikter, en process som kan ta timmar eller till och med dagar beroende på komplexiteten hos både modellen och datasetet. Träningstiden kommer att skalas i enlighet med storleken på datamängden och komplexiteten i modellarkitekturen.

Om modellen inte uppnår den typ av noggrannhet som krävs för uppgiften, kommer justeringar av modellen sannolikt att behöva göras och sedan kommer modellen att behöva tränas om. Detta innebär fler timmars träning tills en optimal arkitektur, träningslängd och datauppsättningspartition kan hittas. När du tänker på hur många variabler som måste anpassas till varandra för att en klassificerare ska vara användbar, är det vettigt att maskininlärningsingenjörer alltid letar efter enklare och effektivare sätt att träna och implementera modeller. Av denna anledning skapades tekniken för transferinlärning.

Efter att ha designat och testat en modell, om modellen visade sig användbar, kan den sparas och återanvändas senare för liknande problem.

Typer av överföringslärande

I allmänhet finns det två olika typer av överföringslärande: utveckla en modell från grunden och använda en förtränad modell.

När du utvecklar en modell från grunden måste du skapa en modellarkitektur som kan tolka din träningsdata och extrahera mönster från den. Efter att modellen har tränats för första gången kommer du förmodligen behöva göra ändringar i den för att få ut den optimala prestandan ur modellen. Du kan sedan spara modellarkitekturen och använda den som utgångspunkt för en modell som ska användas på en liknande uppgift.

I det andra villkoret – användningen av en förtränad modell – behöver du bara välja en förtränad modell att använda. Många universitet och forskarlag kommer att göra specifikationerna för sin modell tillgängliga för allmänt bruk. Modellens arkitektur kan laddas ner tillsammans med vikterna.

När man genomför överföringsinlärning kan hela modellens arkitektur och vikter användas för uppgiften, eller så kan bara vissa delar/lager av modellen användas. Att bara använda en del av den förtränade modellen och träna resten av modellen kallas finjustering.

Finjustera ett nätverk

Att finjustera ett nätverk beskriver processen att träna bara några av lagren i ett nätverk. Om en ny träningsdatauppsättning är mycket lik den datauppsättning som användes för att träna den ursprungliga modellen, kan många av samma vikter användas.

Antalet lager i nätverket som ska frysas upp och omskolas bör skalas i enlighet med storleken på den nya datamängden. Om datauppsättningen som tränas på är liten är det en bättre praxis att hålla majoriteten av lagren som de är och träna bara de sista lagren. Detta för att förhindra att nätverket överanpassas. Alternativt kan de sista lagren i det förtränade nätverket tas bort och nya lager läggas till som sedan tränas. Om datauppsättningen däremot är en stor datauppsättning, potentiellt större än den ursprungliga datauppsättningen, bör hela nätverket tränas om. För att använda nätverket som en fast funktionsutdragare, kan majoriteten av nätverket användas för att extrahera funktionerna medan bara det sista lagret av nätverket kan frysas upp och tränas.

När du finjusterar ett nätverk, kom bara ihåg att de tidigare lagren i ConvNet är de som innehåller informationen som representerar bildernas mer allmänna egenskaper. Dessa är funktioner som kanter och färger. Däremot innehåller ConvNets senare lager detaljerna som är mer specifika för de individuella klasserna som hålls inom datamängden som modellen från början tränades på. Om du tränar en modell på en datauppsättning som skiljer sig ganska mycket från den ursprungliga datauppsättningen, vill du förmodligen använda de första lagren av modellen för att extrahera funktioner och bara träna om resten av modellen.

Överför lärande exempel

De vanligaste tillämpningarna för överföringsinlärning är förmodligen de som använder bilddata som indata. Dessa är ofta förutsägelse/klassificeringsuppgifter. Vägen Konventionella nervnätverk tolka bilddata lämpar sig för att återanvända aspekter av modeller, eftersom faltningsskikten ofta skiljer mycket liknande egenskaper. Ett exempel på ett vanligt överföringsinlärningsproblem är uppgiften ImageNet 1000, en massiv datauppsättning full av 1000 olika klasser av objekt. Företag som utvecklar modeller som uppnår hög prestanda på denna datauppsättning släpper ofta sina modeller under licenser som låter andra återanvända dem. Några av modellerna som har resulterat från denna process inkluderar Microsoft ResNet-modell, Google Inception Model och Oxford VGG-modell grupp.

Bloggare och programmerare med specialiteter inom Maskininlärning och Deep Learning ämnen. Daniel hoppas kunna hjälpa andra att använda kraften i AI för socialt bästa.