Anslut dig till vÄrt nÀtverk!

AI 101

Vad Àr Transfer Learning?

mm

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.