Grunnleggende AI

Hva er overføringslæring?

mm
Legg til Unite.AI blant dine foretrukne kilder på Google

Hva er overføringslæring?

Når du praktiserer maskinlæring, kan det å trene en modell ta lang tid. Å lage en modellarkitektur fra scratch, trene modellen og deretter justere modellen er en enorm mengde tid og innsats. En langt mer effektiv måte å trene en maskinlæringmodell er å bruke en arkitektur som allerede er definert, potensielt med vekter som allerede er beregnet. Dette er hovedideen bak overføringslæring, å ta en modell som allerede er brukt og gjenbruke den til en ny oppgave.

Før vi dykker ned i de ulike måtene overføringslæring kan brukes på, la oss ta et øyeblikk til å forstå hvorfor overføringslæring er en så kraftfull og nyttig teknikk.

Løsning av et dyp læring problem

Når du prøver å løse et dyp læring problem, som å bygge en bilde klassifiserer, må du lage en modellarkitektur og deretter trene modellen på dine data. Å trene modellklassifiseringen innebærer å justere vektene i nettverket, en prosess som kan ta timer eller sogar dager avhengig av kompleksiteten til både modellen og datasettet. Trenings­tiden vil øke i takt med størrelsen på datasettet og kompleksiteten til modellarkitekturen.

Hvis modellen ikke oppnår den nødvendige nøyaktigheten for oppgaven, vil justering av modellen sannsynligvis måtte gjøres og deretter må modellen trenes på nytt. Dette betyr flere timer med trening til en optimal arkitektur, treningstid og datasett­deling kan finnes. Når du tar i betraktning hvor mange variable som må være i harmoni med hverandre for at en klassifisering skal være nyttig, er det forståelig at maskinlæring­ingeniører alltid søker etter enklere og mer effektive måter å trene og implementere modeller på. Av denne grunn ble overføringslæringsteknikken utviklet.

Etter å ha designet og testet en modell, kan den, hvis den viser seg å være nyttig, lagres og gjenbrukes senere for lignende problemer.

Typer av overføringslæring

Generelt finnes det to ulike typer av overføringslæring: å utvikle en modell fra scratch og å bruke en forhåndstrengt modell.

Når du utvikler en modell fra scratch, må du lage en modellarkitektur som kan tolke dine treningsdata og trekke mønster ut av dem. Etter at modellen er trenet for første gang, må du sannsynligvis gjøre endringer i den for å få den optimale ytelsen ut av modellen. Du kan deretter lagre modellarkitekturen og bruke den som utgangspunkt for en modell som skal brukes til en lignende oppgave.

I den andre tilfelle – bruk av en forhåndstrengt modell – må du bare velge en forhåndstrengt modell å bruke. Mange universiteter og forskningsteam vil gjøre spesifikasjonene til deres modell tilgjengelig for generell bruk. Modellarkitekturen kan lastes ned sammen med vektene.

Når du utfører overføringslæring, kan hele modellarkitekturen og vektene brukes til oppgaven, eller bare visse deler/lag av modellen kan brukes. Å bruke bare noen deler av den forhåndstrengte modellen og trene resten av modellen kalles finjustering.

Finjustering av et nettverk

Finjustering av et nettverk beskriver prosessen med å trene bare noen av lagene i nettverket. Hvis et nytt treningsdataset er svært likt datasettet som ble brukt til å trene den opprinnelige modellen, kan mange av de samme vektene brukes.

Antallet lag i nettverket som bør låses opp og trenes på nytt, bør øke i takt med størrelsen på det nye datasettet. Hvis datasettet som trenes på er lite, er det bedre å holde de fleste lagene som de er og bare trene de siste lagene. Dette er for å forhindre at nettverket overfitter. Alternativt kan de siste lagene i den forhåndstrengte modellen fjernes og nye lag kan legges til, som deretter trenes. Til gjengjeld, hvis datasettet er et stort datasett, potensielt større enn det opprinnelige datasettet, bør hele nettverket trenes på nytt. For å bruke nettverket som en fast funksjonsuttrekker, kan de fleste av nettverket brukes til å trekke ut funksjoner, mens bare det siste laget i nettverket kan låses opp og trenes.

Når du finjusterer et nettverk, husk bare at de tidlige lagene i ConvNet er de som inneholder informasjon som representerer de mer generelle funksjonene i bildene. Disse er funksjoner som kanter og farger. Til gjengjeld inneholder ConvNet sine senere lag detaljer som er mer spesifikke for de enkelte klassene i datasettet som modellen ble opprinnelig trenet på. Hvis du trener en modell på et datasett som er ganske forskjellig fra det opprinnelige datasettet, vil du sannsynligvis ønske å bruke de tidlige lagene i modellen til å trekke ut funksjoner og bare trene resten av modellen.

Eksempler på overføringslæring

De vanligste anvendelsene av overføringslæring er sannsynligvis de som bruker bilde­data som inndata. Disse er ofte prediksjons-/klassifiserings­oppgaver. Måten Convolutional Neural Networks tolker bilde­data, lenker seg til gjenbruk av modell­delene, ettersom de konvolusjonelle lagene ofte skjelner svært like funksjoner. Et eksempel på en vanlig overføringslæring­oppgave er ImageNet 1000-oppgaven, et enormt datasett som består av 1000 ulike klasser av objekter. Selskaper som utvikler modeller som oppnår høy ytelse på dette datasettet, slipper ofte modellene under lisenser som tillater andre å gjenbruke dem. Noen av modellene som har resultert fra denne prosessen, inkluderer Microsoft ResNet-modellen (MSFT ), Google (GOOGL ) Inception-modellen og Oxford VGG-modellgruppen.

Blogger og programmerer med spesialområder i Machine Learning og Deep Learning emner. Daniel håper å hjelpe andre med å bruke kraften av AI for sosialt godt.