
Čest problem s kojim se svi susrećemo tijekom rada na projektima dubokog učenja je odabir stupnja učenja i optimizatora (hiper-parametara). Ako ste poput mene, pogađate optimizator i brzinu učenja, a zatim provjeravate rade li (i nismo sami).
Da bih bolje razumio utjecaj optimizatora i odabir stope učenja, trenirao sam isti model 500 puta. Rezultati pokazuju da su pravi hiper-parametri presudni za uspjeh treninga, no teško ih je pronaći.
U ovom ću članku razgovarati o rješenjima ovog problema pomoću automatiziranih metoda za odabir optimalnih hiper-parametara.
Eksperimentalno postavljanje
Osposobljavao sam osnovnu konvolucijsku neuronsku mrežu iz TensorFlow-ovih tutorial serijala koji uči prepoznavati MNIST znamenke. Ovo je relativno mala mreža, s dva uvojna sloja i dva gusta sloja, ukupno oko 3.400 utega za treniranje.Za svaki trening koristi se isto slučajno sjeme.
Treba napomenuti da su rezultati u nastavku za jedan određeni model i skup podataka. Idealni hiper-parametri za ostale modele i skupove podataka će se razlikovati.
(Ako želite dati malo GPU vremena za pokretanje veće verzije ovog eksperimenta na CIFAR-10, kontaktirajte).
Koja stopa učenja najbolje djeluje?
Prvo što ćemo istražiti jest kako stopa učenja utječe na trening modela. U svakom se pokretu isti model trenira ispočetka, varirajući samo optimizator i brzinu učenja.
Model je obučen sa 6 različitih optimizatora: Gradient Descent, Adam, Adagrad, Adadelta, RMS Prop i Momentum. Za svaki je optimizator treniran s 48 različitih stopa učenja, od 0,000001 do 100 u logaritamskim intervalima.
U svakoj vožnji mreža se uvježbava dok ne postigne najmanje 97% točnosti vlaka. Maksimalno dopušteno vrijeme bilo je 120 sekundi. Eksperimenti su izvedeni na Nvidiji Tesla K80, čiji je domaćin bio FloydHub. Izvorni kod dostupan je za preuzimanje.
Evo vremena treninga za svaki odabir stupnja učenja i optimizatora:

Gornji graf je zanimljiv. Vidimo da:
- Za svaki optimizator većina stopa učenja ne uspijeva istrenirati model.
- Za svaki optimizator postoji oblik doline: preniska stopa učenja nikad ne napreduje, a previsoka stopa učenja uzrokuje nestabilnost i nikada se ne konvergira. Između toga postoji opseg „baš kako treba“ stopa učenja koje uspješno treniraju.
- Ne postoji stopa učenja koja odgovara svim optimizatorima.
- Stopa učenja može utjecati na vrijeme treninga za red veličine.
Da rezimiramo gore navedeno, presudno je da odaberete ispravnu brzinu učenja. Inače vaša mreža neće uspjeti trenirati ili će trebati puno više vremena da se konvergira.
Da bismo ilustrirali kako se svaki optimizator razlikuje u svojoj optimalnoj brzini učenja, ovdje je najbrži i najsporiji model za svaku brzinu učenja, među svim optimizatorima. Primijetite da je maksimalno vrijeme 120 s (na primjer, mreža nije uspjela trenirati) na cijelom grafikonu - ne postoji jedna stopa učenja koja odgovara svakom optimizatoru:

Provjerite širok raspon stopa učenja (od 0,001 do 30) koji postižu uspjeh s barem jednim optimizatorom iz gornjeg grafikona.
Koji optimizator ima najbolju izvedbu?
Sad kad smo identificirali najbolje stope učenja za svaki optimizator, usporedimo izvedbu svakog treninga optimizatora s najboljom stopom učenja koja je za njega pronađena u prethodnom odjeljku.
Ovdje je točnost provjere valjanosti svakog optimizatora tijekom vremena. To nam omogućuje da uočimo koliko brzo, precizno i stabilno svaki izvodi:

Nekoliko zapažanja:
- Svi optimizatori, osim RMSPropa (vidi završnu točku) , uspijevaju se konvergirati u razumnom vremenu.
- Adam uči najbrže.
- Adam je stabilniji od ostalih optimizatora i ne trpi značajnija smanjenja točnosti.
- RMSProp je pokrenut sa zadanim argumentima iz TensorFlow-a (stopa raspadanja 0,9, epsilon 1e-10, zamah 0,0) i može biti slučaj da oni ne rade dobro za ovaj zadatak. Ovo je dobar slučaj za automatizirano pretraživanje hiper-parametara (više o tome pogledajte u posljednjem odjeljku).
Adam je također imao relativno širok raspon uspješnih stopa učenja u prethodnom eksperimentu. Sveukupno gledano, Adam je najbolji izbor od naših šest optimizatora za ovaj model i skup podataka.
Kako veličina modela utječe na vrijeme treninga?
Pogledajmo sada kako veličina modela utječe na način na koji trenira.
Promijenit ćemo veličinu modela linearnim faktorom. Taj će faktor linearno skalirati broj konvolucijskih filtara i širinu prvog gustog sloja, čime će približno linearno skalirati ukupan broj utega u modelu.
Istražit ćemo dva aspekta:
- Kako se vrijeme treninga mijenja kako model raste, za fiksni optimizator i brzinu treninga?
- Koja stopa učenja trenira najbrže za svaku veličinu modela, za fiksni optimizator?
Kako se vrijeme treninga mijenja kako model raste?
Ispod je prikazano vrijeme potrebno za postizanje 96% točnosti treninga na modelu, povećavajući njegovu veličinu s 1x na 10x. Koristili smo jedan od naših najuspješnijih hiper-parametara iz ranije:

- Vrijeme treninga linearno raste s veličinom modela.
- Ista stopa učenja uspješno trenira mrežu u svim veličinama modela.
(Napomena: na sljedeće se rezultate može pouzdati samo za skup podataka i ovdje testirane modele, ali moglo bi biti vrijedno testiranja za vaše eksperimente.)
Ovo je lijep rezultat. Naš izbor hiper-parametara nije poništen linearnim skaliranjem modela. To može nagovijestiti da se pretraživanje hiperparametara može izvoditi na smanjenoj verziji mreže radi uštede na vremenu računanja.
To također pokazuje da, kako mreža postaje veća, ona ne podrazumijeva O (n²) rad na konvergenciji modela (linearni rast u vremenu može se objasniti dodatnim operacijama koje su potrebne za svaki trening s utezima).
Ovaj rezultat dodatno ohrabruje jer pokazuje da se naš okvir dubokog učenja (ovdje TensorFlow) učinkovito prilagođava.
Koja stopa učenja ima najbolju izvedbu za različite veličine modela?
Pokrenimo isti eksperiment za više stopa učenja i pogledajte kako vrijeme treninga odgovara veličini modela:

- Stope učenja 0,0005, 0,001, 0,00146 su se najbolje pokazale - one su se također najbolje pokazale u prvom eksperimentu. Ovdje vidimo isti bend "slatke točke" kao u prvom eksperimentu.
- Vrijeme učenja svakog stupnja učenja linearno raste s veličinom modela.
- Izvedba stope učenja nije ovisila o veličini modela. Iste stope koje su se najbolje pokazale za 1x veličinu, najbolje su se pokazale za veličinu od 10x.
- Iznad 0,001, povećanje stope učenja povećalo je vrijeme za treniranje i također povećalo odstupanje u vremenu treninga (u usporedbi s linearnom funkcijom veličine modela).
- Vrijeme za trening može se približno modelirati kao c + kn za model s n utega, fiksnim troškom c i konstantom učenja k = f (stopa učenja) .
Ukratko, stopa učenja s najboljom izvedbom za veličinu 1x ujedno je bila i stopa učenja za veličinu 10x.
Automatizacija izbora stope učenja
Kao što pokazuju raniji rezultati, presudno je za trening modela imati dobar izbor optimizatora i brzine učenja.
Ručni odabir ovih hiper-parametara dugotrajan je i podložan pogreškama. Kako se vaš model mijenja, prethodni odabir hiper-parametara možda više neće biti idealan. Nepraktično je neprestano ručno vršiti nova pretraživanja.
Postoji nekoliko načina za automatski odabir hiper-parametara. Ovdje ću iznijeti nekoliko različitih pristupa.
Pretraživanje mreže
Pretraživanje mreže je ono što smo izveli u prvom eksperimentu - za svaki hiper-parametar izradite popis mogućih vrijednosti. Zatim za svaku kombinaciju mogućih vrijednosti hiperparametara obučite mrežu i izmjerite kako se ona izvodi. Najbolji hiper-parametri su oni koji daju najbolje uočene performanse.
Mrežno pretraživanje vrlo je jednostavno implementirati i razumjeti. Također je lako provjeriti jeste li pretražili dovoljno širok odjeljak pretraživanja parametara. Iz ovih je razloga vrlo popularan u istraživanjima.
Obuka zasnovana na stanovništvu
Trening zasnovan na populaciji (DeepMind) elegantna je provedba korištenja genetskog algoritma za odabir hiper-parametara.
U PBT-u se stvara populacija modela. Svi oni kontinuirano paralelno treniraju. Kad je bilo koji pripadnik populacije imao dovoljno vremena za trening kako bi pokazao poboljšanje, njegova se točnost provjere uspoređuje s ostatkom populacije. Ako je njegova izvedba u najnižih 20%, tada kopira i mutira hiper-parametre i varijable jednog od najboljih 20% izvođača.
Na taj način, najuspješniji hiper-parametri iznjedruju mnoge svoje malo mutirane inačice i vjerojatno se otkrivaju najbolji hiper-parametri.
Sljedeći koraci
Hvala što ste pročitali ovo istraživanje o stopama učenja. Te sam eksperimente započeo iz vlastite znatiželje i frustracije zbog okretanja hiper-parametara i nadam se da ćete uživati u rezultatima i zaključcima koliko i ja.
Obavijestite me ako postoji određena tema ili proširenje koje želite vidjeti. Također, ako ste zainteresirani za doniranje GPU-a za pokretanje puno veće verzije ovog eksperimenta, volio bih razgovarati.
Ova su djela dio jednogodišnjeg istraživanja tema arhitekture umjetne inteligencije. Slijedite ovu publikaciju (i uputite ovom članku pljesak!) Da biste dobivali ažuriranja kad izađu sljedeći komadi.