AI 101
Vad Àr Transfer Learning?

Vad är Transfer Learning?
När man praktiserar maskinlärning, kan utbildning av en modell ta lång tid. Att skapa en modellarkitektur från scratch, utbilda modellen och sedan justera modellen är en enorm mängd tid och ansträngning. Ett mycket mer effektivt sätt att utbilda en maskinlärningsmodell är att använda en arkitektur som redan har definierats, potentiellt med vikter som redan har beräknats. Detta är den huvudsakliga idén bakom transfer learning, att ta en modell som redan har använts och återanvända den för en ny uppgift.
Innan vi dyker in i de olika sätten som transfer learning kan användas, låt oss ta en stund att förstå varför transfer learning är en så kraftfull och användbar teknik.
Att lösa ett djuplärningsproblem
När du försöker lösa ett djuplärningsproblem, som att bygga en bildklassificerare, måste du skapa en modellarkitektur och sedan utbilda modellen på dina data. Utbildning av modellklassificeringen innebär att justera vikterna i nätverket, en process som kan ta timmar eller till och med dagar beroende på komplexiteten hos både modellen och datamängden. Utbildningstiden kommer att öka i takt med datamängdens storlek och modellarkitekturens komplexitet.
Om modellen inte uppnår den typ av noggrannhet som behövs för uppgiften, kommer justering av modellen troligen att behövas och sedan måste modellen utbildas om. Detta innebär fler timmars utbildning tills en optimal arkitektur, utbildningstid och datadelning kan hittas. När du överväger hur många variabler som måste sammanfalla med varandra för att en klassificerare ska vara användbar, är det logiskt att maskinläringsingenjörer alltid letar efter enklare, mer effektiva sätt att utbilda och implementera modeller. Av denna anledning skapades transfer learning-tekniken.
Efter att ha designat och testat en modell, om modellen visade sig vara användbar, kan den sparas och återanvändas senare för liknande problem.
Typer av Transfer Learning
I allmänhet finns det två olika typer av transfer learning: att utveckla en modell från scratch och att använda en förutbildad modell.
När du utvecklar en modell från scratch, måste du skapa en modellarkitektur som kan tolka dina utbildningsdata och extrahera mönster från dem. Efter att modellen har utbildats för första gången, kommer du troligen att behöva göra ändringar i den för att få den optimala prestandan från modellen. Du kan sedan spara modellarkitekturen och använda den som en utgångspunkt för en modell som ska användas för en liknande uppgift.
I det andra fallet – användning av en förutbildad modell – behöver du bara välja en förutbildad modell att använda. Många universitet och forskargrupper 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 du utför transfer learning, kan hela modellarkitekturen och vikterna användas för uppgiften, eller bara vissa delar/lager av modellen kan användas. Att använda bara en del av den förutbildade modellen och utbilda resten av modellen kallas finjustering.
Finjustering av ett nätverk
Finjustering av ett nätverk beskriver processen att utbilda bara vissa lager i ett nätverk. Om en ny utbildningsdatamängd är mycket lik den datamängd som användes för att utbilda den ursprungliga modellen, kan många av samma vikter användas.
Antalet lager i nätverket som bör avfrysas och utbildas om bör öka i takt med den nya datamängdens storlek. Om datamängden som utbildas på är liten, är det en bättre praxis att hålla de flesta lagren som de är och utbilda bara de sista lagren. Detta är för att förhindra att nätverket överanpassas. Alternativt kan de sista lagren i den förutbildade modellen tas bort och nya lager läggas till, som sedan utbildas. Om datamängden däremot är en stor datamängd, potentiellt större än den ursprungliga datamängden, bör hela nätverket utbildas om. För att använda nätverket som en fast funktionsextraherare kan de flesta av nätverket användas för att extrahera funktioner medan bara det sista lagret i nätverket kan avfrysas och utbildas.
När du finjusterar ett nätverk, kom ihåg att de tidigare lagren i ConvNet är de som innehåller informationen som representerar de mer generiska funktionerna i bilderna. Detta är funktioner som kanter och färger. I kontrast innehåller ConvNet:s senare lager detaljer som är mer specifika för de enskilda klasserna i datamängden som modellen ursprungligen utbildades på. Om du utbildar en modell på en datamängd som är ganska annorlunda än den ursprungliga datamängden, kommer du troligen att vilja använda de tidigare lagren i modellen för att extrahera funktioner och bara utbilda resten av modellen.
Exempel på Transfer Learning
De vanligaste tillämpningarna av transfer learning är troligen de som använder bilddata som indata. Detta är ofta förutsägelse/klassificeringsuppgifter. Sättet på vilket Convolutional Neural Networks tolkar bilddata lämpar sig för att återanvända delar av modeller, eftersom de convolutionella lagren ofta känner igen mycket liknande funktioner. Ett exempel på ett vanligt transfer learning-problem är ImageNet 1000-uppgiften, en enorm datamängd full av 1000 olika klasser av objekt. Företag som utvecklar modeller som uppnår hög prestanda på denna datamängd släpper ofta ut sina modeller under licenser som tillåter andra att återanvända dem. Några av de modeller som har resulterat från denna process inkluderar Microsoft ResNet-modellen, Google Inception-modellen och Oxford VGG-modellgruppen.












