Uvod u mašinsko učenje: Malo Pythona, mrva matematike i mnogo vežbe

Data science je najseksi zanimanje veka, a jedna od najzanimljivih podoblasti nauke o podacima je mašinsko učenje.

Aleksa Vidović
18/04/2020

Šta je uopšte mašinsko učenje? Da li biste mogli da prepoznate mačku na slici? Naravno, to je lako ukoliko ste ikada videli barem jednu mačku. Čak i da niste, kada bi vam je neko opisao, imali biste dobre šanse da je identifikujete. Stvari postaju komplikovane kada pokušamo da isprogramiramo računar da uradi isto.

Postoji bezbroj različitih načina da se mačka pojavi na jednoj slici i gotovo je nemoguće isprogramirati računar da prepozna svaki od tih slučajeva. Sa mašinskim učenjem, mi ne pokušavamo da tačno isprogramiramo računar da prepozna sliku mačke. Umesto toga mu damo bazu od, recimo, 100.000 slika — što više, to bolje — i kažemo mu na kojima od njih se nalaze mačke.

Računar počinje sa nekom pretpostavkom kako izgleda slika na kojoj se nalazi mačka, i ta pretpostavka je uglavnom pogrešna. Kako prolazi kroz sve slike koje su mu date, on pokušava da naštimuje svoje viđenje toga šta je to slika mačke. Nakon što je učenje završeno, računar ima solidne šanse da pogodi da li se na 100.001. slici (koju nikada nije video) nalazi ili ne nalazi mačka.

Pročitaj i: 

Freelance poslovi — prednosti i mane najpopularnijih sajtova za digitalni rad

Wikipedia piše da je mašinsko učenje oblast računarskih nauka koja daje računarima sposobnost da uče bez eksplicitnog programiranja. I naš računar je upravo to i uradio — naučio je da prepoznaje slike mačaka, iako mu nismo eksplicitno objasnili kako to da uradi.

Pored preoznavanja mačaka, mašinsko učenje na omogućava da imamo tehnologije kao što su prepoznavanje govora, samovozeći automobili, pametni asistenti poput Alexe i Siri. Mašinsko učenje čini veliki deo softvera koji koristimo “pametnijim”, a ovaj trend će u budućnosti biti sve prisutniji.

Jedna od podela mašinskog učenja jeste na nadgledano (supervised) učenje i nednadgledano (unsupervised) učenje. Glavna razilka je u tome da li su uzorci obeleženi, odnosno da li smo kao u našem primeru rekli računaru na kojim slikama su mačke ili smo ga pustili da sam pokuša da razume strukturu inputa.

Takođe, možemo sve posmatrati i kroz autput koji želimo da dobijemo. U tom slučaju se većina problema deli na probleme kalsifikacije, regresije, klasteringa, procene gustine, i druge.

Kako početi?

Kao što ste mogli da pretpostavite, iza svega ovoga se krije matematika. Ipak, da biste počeli da primenjujete mašinsko učenje u svojim projektima ne morate biti preterano dobri u matematici. Dovoljno je da razumete većinu pojmova na visokom nivou i možete koristiti gotove alate za većinu posla.

Da biste postali stvarno dobri i bili sposobni da gradite svoje modele kao i da razumete kako sve radi ispod haube, malo matematike je neophodno. Ne brinite, nećete morati da uplaćujete časove, sve možete naučiti preko interneta.

Okvirna staza učenja izgleda ovako:

  1. Naučite osnove Pythona
  2. Naučite malo matematike koja će vam biti korisna
  3. Naučite kako se analiziraju podaci
  4. Naučite da pravite sopstvene modele
  5. Vežbanje i projekti

Osnove programiranja u Pythonu

Mašinsko učenje možete raditi sa raznim programskim jezicima, ali jedno od najpopularnijih rešenja je Python. Ovo je odličan izbor ukoliko ste početnik, ali i profesionalac. Osnove Pythona se brzo nauče, jezik je elegantan i čitak, i već postoje biblioteke koje će vam olakšati život. Tu je i sjajna zajednica ljudi koji koriste Python upravo za ovu namenu, što ga čini odličnim izborom.

Pročitaj i:

Šta raditi s 220 milijardi linija COBOL koda,  zbog kojih je u Americi nastala čitava pometnja?

Dobar uvod u ovaj jezik je knjiga Zed A. Shawa — Learn Python The Hard Way.  Orijentisana je na učenje kroz samostalan rad i kucanje koda, što je čini odličnim prvim resursom. Za brzo upoznavanje sa sintaksom može vam poslužiti i Codecademy (besplatne lekcije su dovoljne).

Ne morate se predugo zadržavati na samim osnovama jezika, nije neophodno da postanete ekspert za Python. Ključno je da razumete osnovne pojmove poput kontrole toka, petlji, tipova podataka, funkcija.  Sve ostalo možete naučiti usput kada vam bude trebalo.

Malo matematike

Opciono, ali itekako korisno. Glavne oblasti na koje treba da se fokusirate su linearna algebra, verovatnoća, statistika, kalkulus. Ne morate baš da kupujete zbirku i radite zadatke, biće dovoljno da prođete materijale na Khan Academy-ju. Potrudite se da razumete glavne ideje ovih oblasti jer se mašinsko učenje bazira na njima.

Analiza podataka

Vreme je da počnete da se igrate sa nekim gotovim alatima za mašinsko učenje kao i za analizu i vizuelizaciju podataka.

OpenCV je biblioteka za “kompjutersku viziju” i koristi se za analizu i obradu slika i videa. Pomoću nje u manje od 20 linija Python koda možete napraviti skriptu koja pali vašu web kameru i detektuje vaše lice. Taj i slični projekti će vam dati sliku o tome kako mašinsko učenje otprilike radi u praksi.

Numpy se koristi za matematičke operacije i biće vam koristan u mnogim projektima. Matplotlib takođe vrši neke matematičke operacije, ali služi i za vizuelizaciju podataka. Pandas će biti koristan za pripremanje podataka koje ćete koristiti za treniranje vaših algoritama, obavezno se upoznajte sa njim.

Pravljenje modela za mašinsko učenje

Da biste mogli efektivno da primenjujete mašinsko učenje na probleme koji vas interesuju, moraćete da naučite da pravite sopstvene modele. Sve što ste do sada naučili bilo je priprema za ovo. Verovatno najbolji besplatni resurs koji postoji na temu mašinskog učenja jeste Machine Learning kurs na Courseri. Drži ga Andrew Ng, ekspert u ovoj oblasti, a povrh svega kurs je besplatan i “self-paced”.

Kroz kurs ćete naučiti sve što vam je potrebno da krenete sa samostalnom primenom mašinskog učenja ali se i nakon ovog kursa može reći da ste još na početku, jer ste tek zagrebali delić površine mašinskog učenja, veštačke inteligencije, i nauke o podacima. Takođe, tu je i knjiga Python Machine Learning koja dublje ulazi u materiju i upoznaje vas sa moćnom bibliotekom Scikit-Learn.

Vežbanje i projekti

Verovatno ćete tokom učenja doći do nekih ideja šta želite da pravite, a mogućnosti su zaista velike. Evo nekih zanimljivih projekata, možda vam nešto slično padne na pamet:

Samovozeća kola u GTA 5

Kaggle je platforma na kojoj ćete naći data setove, a možete učestvovati i u data science takmičenjima

Šta dalje?

Ukoliko savldate sve što smo naveli u ovom tekstu, možete se smatrati najjuniornijim data scientistom ikada.  Opet, to je više nego dobro za početak. Ukoliko završite sve što smo nabrojali bićete spremni da primenjujete mašinsko učenje na svakodnevne probleme.

Ako vam je pak cilj da zađete dublje u ovu oblast i ozbiljnije se njome bavite, onda je ovo bio samo mali uvod. Do sada bi već trebalo da znate šta da učite sledeće, a moj preporuka vam je da pogledate Deep Learning specijalizaciju na Courseri. Čak i ukoliko se ne odlučite za nju može vam poslužiti kao primer struktuirane staze za dalje učenje.

Aleksa Vidović

Objavio/la članak.

subota, 18. April, 2020.

IT Industrija

🔥 Najčitanije