#dan5. — Gradient descent — basics #100daychallenge
U ovom delu još malo stručnije priče o jednom optimizacionom algoritmu pa se vraćam na laička objašnjenja, linkove ka stranicama ili radovima gde je super nešto objašnjeno jer dnevni #stayhome ritam ne dozvoljava da kreiram priču kakvu zamišljam sa sopstvenim ilustracijama. ALI obećavam (sebi) da kada završim ovaj izazov od 100 dana pisanja, nedeljno izbacujem pravu lekciju o svakoj navedenoj tehnici ili terminu sa sopstvenim primerima!
Na kraju prethodne priče sam napisala da je cilj cost f-je dobiti težinske faktore ϴ koji je minimiziraju, odnosno da bude što približnija 0. To znači da se greška svede na minimum i da mi dobijemo tačan odgovor od našeg algoritma za svaki primer koji smo mu dali u trening setu. Što je niža vrednost greške to će algoritam imati veću tačnost na test setu odnosno na primerima na kojima nije treniran. Dakle sledeći korak je optimizovati jednačinu kroz trening.
Najviše korišćen algoritam odnosno optimizacioni metod za ovaj problem je gradijentalni postupak (gradient descent) koji simultano ažurira težinske faktore do konvergencije (Bishop 2006) gde se funkcija greške može posmatrati kao reljefna površina (ukoliko je problem definisan sa dve ili tri karakteristike) sa ciljem pronalaženja globalnog minimuma, primer je prikazan na sledećoj slici. Vizuelno nije moguće prikazati sa više parametara.
Prvi korak je inicijalizovati vrednosti parametara koje se iterativno podešavaju do umanjenja greške funkcije, tj. do globalnog minimuma. Inicijalne vrednosti težinskih faktora se uzimaju nasumično i preporuka je da budu različite od 0. Pri svakoj iteraciji, vrednosti parametara se kreću u smeru suprotnom smeru od gradijenta cost f-je, odnosno u smeru koja je smanjuje.
Na gornjoj slici a) je prikazana idealna putanja konvergencije do globalnog minimuma a na slici b) jedna od mogućih putanja koja može doći do lokalnog minimuma. To znači da postoji mogućnost da ćete ‘zaglaviti’ sa nekom vrednošću koja nije minimalna moguća.
Na putanju utiču inicijalne vrednosti i brzina/parametar učenja (Learning rate) koja predstavlja jedan od hiperparametara koji se podešavaju. Learning rate utiče na brzinu konvergencije. Ukoliko se postavi suviše velika vrednost, neće doći do konvergencije. Ukoliko se postavi suviše mala vrednost, konvergencija će se izvršavati veoma sporo (Goodfellow i dr. 2016). Uobičajeno je da se brzina učenja menja tokom treninga. Uglavnom vrednost α je <1. Praksa je da se na samom početku postavi veća vrednost između 0.1 i 1, i da se tokom treninga postepeno smanjuje (Zhang i dr. 2019). Na izbor pravog stepena smanjenja takođe treba obratiti pažnju. Previše ubrzan redosled smanjenja usporava napredak ka optimalnoj vrednosti, dok usporeni redosled vodi do haotičnih ažuriranja sa malim poboljšanjima.
Kako ovo funkcioniše pojednostavljeno? U svoju jednačinu ubacite nasumično izabrane vrednosti težinskih faktora, dobijeni rezultat oduzmete vrednošću tačnog rezutata iz trening seta i dobili ste vrednost greške (cost f-ja). Dalje prethodnu vrednost težinskog faktora oduzimate od dobijene vrednosti greške pomnožene sa izabranom brzinom učenja (learning rate). Novu vrednost ubacite u jednačinu i tako u krug dok greška ne bude približna 0 ili 0 i na kraju ste dobili vrednost težinskog faktora koji odgovara za svaki primer u trening setu. E sad caka je samo što ovo navedeno se simultano ažurira za svaki težinski faktor i za svaki primer u trening setu i s toga ove gore jednačine su morale biti napisane.
But don’t worry, nećeš ih ti pisati jer gotov gradient descent te čeka npr. u Tensor Flow.
Ne vredi, šta god da napišem zahteva pojedinačnu priču, tako da negde neki neuron neka ti zapamti da postoji negde neki Tensor Flow ili izguglaj odmah.
Kad smo kod takvih stvari, hajde u ovoj priči samo da napomenem da prevod izvornih engleskih termina za mene nema smisla ali ipak stavljam neke na koje sam naišla ili sama prevela. Imam napisan predlog mini rečnika koji ću podeliti sa vama u nekoj od preostalih 100 priča.
Verujem da je nekom ko je apsolutno nov ovo ipak za početak malo previše ali lagano, bitno je pohvatati ključne termine na početku pa će se šira slika stvoriti. Sa druDo sutrašnje laganije priče…
Reference:
Bishop, M.C. 2006. Pattern Recognition and Machine Learning. Springer, NY, USA.
Goodfellow, I., Bengio, Y., Courville, A. 2016. Deep Learning. MIT Press. http://www.deeplearningbook.org
Zhang, Z., He, T., Zhang, H., Zhang, Z., Xie, J., Li, M. 2019. Bag of Freebies for Training Object Detection Neural Networks. Computer Vision and Pattern Recognition. arXiv:1902.04103