AI 101
Što je transferno učenje?
Što je transferno učenje?
Pri prakticiranju strojnog učenja obuka modela može potrajati dugo. Stvaranje arhitekture modela od nule, obuka modela, a zatim ugađanje modela je ogromna količina vremena i truda. Daleko učinkovitiji način treniranja modela strojnog učenja je korištenje arhitekture koja je već definirana, potencijalno s težinama koje su već izračunate. Ovo je glavna ideja iza transferno učenje, uzimajući model koji je već korišten i mijenjajući ga za novi zadatak.
Prije nego što se upustimo u različite načine na koje se prijenos učenja može koristiti, uzmimo trenutak da shvatimo zašto je prijenos učenja tako moćna i korisna tehnika.
Rješavanje problema dubokog učenja
Kada pokušavate riješiti problem dubinskog učenja, kao što je izgradnja klasifikatora slika, morate stvoriti arhitekturu modela i zatim obučiti model na svojim podacima. Uvježbavanje klasifikatora modela uključuje podešavanje težine mreže, proces koji može trajati satima ili čak danima, ovisno o složenosti modela i skupa podataka. Vrijeme obuke skalirat će se u skladu s veličinom skupa podataka i složenošću arhitekture modela.
Ako model ne postigne vrstu točnosti koja je potrebna za zadatak, vjerojatno će biti potrebno ugoditi model, a zatim će se morati ponovno uvježbati. To znači više sati obuke dok se ne pronađe optimalna arhitektura, duljina obuke i particija skupa podataka. Kada uzmete u obzir koliko varijabli mora biti usklađeno jedna s drugom da bi klasifikator bio koristan, logično je da inženjeri strojnog učenja uvijek traže lakše, učinkovitije načine za obuku i implementaciju modela. Iz tog razloga je stvorena tehnika prijenosnog učenja.
Nakon dizajniranja i testiranja modela, ako se model pokazao korisnim, može se spremiti i kasnije ponovno koristiti za slične probleme.
Vrste transfernog učenja
Općenito, postoje dvije različite vrste transfernog učenja: razvoj modela od nule i korištenje prethodno obučenog modela.
Kada razvijate model od nule, morat ćete stvoriti arhitekturu modela koja može interpretirati vaše podatke o vježbanju i iz njih izvući uzorke. Nakon što se model prvi put uvježba, vjerojatno ćete morati unijeti promjene u njega kako biste dobili optimalnu izvedbu iz modela. Zatim možete spremiti arhitekturu modela i koristiti je kao početnu točku za model koji će se koristiti na sličnom zadatku.
U drugom uvjetu – korištenje unaprijed obučenog modela – samo morate odabrati unaprijed obučeni model za korištenje. Mnoga sveučilišta i istraživački timovi učinit će specifikacije svojih modela dostupnima za opću upotrebu. Arhitektura modela može se preuzeti zajedno s težinama.
Prilikom provođenja prijenosnog učenja, cijela arhitektura modela i težine mogu se koristiti za zadatak koji je pri ruci ili se mogu koristiti samo određeni dijelovi/slojevi modela. Korištenje samo dijela prethodno obučenog modela i treniranje ostatka modela naziva se finim podešavanjem.
Fino podešavanje mreže
Fino podešavanje mreže opisuje proces treniranja samo nekih slojeva u mreži. Ako je novi skup podataka za obuku sličan skupu podataka korištenom za obuku izvornog modela, mogu se koristiti mnoge iste težine.
Broj slojeva u mreži koje treba odmrznuti i ponovno uvježbati treba skalirati u skladu s veličinom novog skupa podataka. Ako je skup podataka na kojem se trenira mali, bolje je zadržati većinu slojeva onakvima kakvi jesu i trenirati samo zadnjih nekoliko slojeva. Time se sprječava prekomjerno opremanje mreže. Alternativno, završni slojevi prethodno obučene mreže mogu se ukloniti i dodati novi slojevi, koji se zatim treniraju. Nasuprot tome, ako je skup podataka veliki skup podataka, potencijalno veći od izvornog skupa podataka, cijelu mrežu treba ponovno uvježbati. Za korištenje mreže kao ekstraktor fiksnih značajki, većina mreže može se koristiti za izdvajanje značajki dok se samo završni sloj mreže može odmrznuti i obučiti.
Kada fino podešavate mrežu, zapamtite da raniji slojevi ConvNet-a sadrže informacije koje predstavljaju generičke značajke slika. To su značajke poput rubova i boja. Nasuprot tome, kasniji slojevi ConvNet-a sadrže detalje koji su specifičniji za pojedinačne klase unutar skupa podataka na kojima je model inicijalno treniran. Ako obučavate model na skupu podataka koji se prilično razlikuje od izvornog skupa podataka, vjerojatno ćete htjeti upotrijebiti početne slojeve modela za izdvajanje značajki i samo ponovno uvježbati ostatak modela.
Primjeri prijenosa učenja
Najčešće primjene prijenosnog učenja vjerojatno su one koje koriste slikovne podatke kao ulazne podatke. To su često zadaci predviđanja/klasifikacije. Put Konvolucionarne neuronske mreže interpretacija slikovnih podataka pogodna je za ponovnu upotrebu aspekata modela, budući da konvolucijski slojevi često razlikuju vrlo slične značajke. Jedan primjer uobičajenog problema učenja prijenosa je zadatak ImageNet 1000, masivni skup podataka pun 1000 različitih klasa objekata. Tvrtke koje razvijaju modele koji postižu visoku izvedbu na ovom skupu podataka često objavljuju svoje modele pod licencama koje drugima omogućuju ponovnu upotrebu. Neki od modela koji su proizašli iz ovog procesa uključuju Microsoft ResNet model, Google Inception Model i Oxford VGG model skupina.