Zamislite svet u kojem mašine nadmašuju ljudski um – nije to nova ideja.
Jedan od prvih izazova koje je računarstvo postavilo ljudskoj „inteligenciji“ bio je šah. Mnogi su smatrali (i još uvek smatraju) da je šah ultimativni test ljudskog intelekta i kreativnosti. Šezdesetih i sedamdesetih godina prošlog veka, u svetu računarstva, postojale su različite struje mišljenja.
Dok su neki verovali da je samo pitanje vremena kada će računari postati bolji šahisti od ljudi, drugi su bili skeptični, smatrajući da se to nikada neće dogoditi.
Kasparov protiv Deep Blue
Možda najzanimljiviji okršaj čoveka i mašine u nadmetanju umova bio je šahovski meč 1996. godine. Tadašnji svetski šampion, Gari Kasparov (verovatno najbolji šahista svih vremena), suprotstavio se Deep Blue, superračunaru kojeg je IBM razvio posebno za ovu priliku.
Slika preuzeta sa: Vikipedija
Da skratimo priču, Kasparov je ubedljivo pobedio u meču 1996. godine (4-2), ali je izgubio revanš 1997. godine (4.5-3.5). Ovaj revanš bio je obavijen mnogim kontroverzama i Kasparovljevim otvorenim optužbama protiv IBM-a za varanje.
Međutim, ova era je u šahu i informatici završena. Računari su se dokazali superiornim u odnosu na bilo kog živog čoveka. IBM, zadovoljan ostvarenom osvetom, rastavio je Deep Blue i nastavio dalje.
Danas je nezamislivo da bilo koji velemajstor može pobediti bilo koji standardni šahovski program koji radi na običnom hardveru.
Šta nije mašinsko učenje?
Pre nego što detaljnije uđemo u temu mašinskog učenja, razjasnimo neke zablude. Mašinsko učenje nije, ni u kom slučaju, pokušaj da se iskopira ljudski mozak. Uprkos senzacionalističkim tvrdnjama ljudi poput Elona Maska, istraživači u računarstvu ističu da nemaju takav cilj i da mu nisu ni blizu.
Jednostavno rečeno, mašinsko učenje je praksa primene procesa učenja na računare, po principu uzorka. Ovo je suprotno tradicionalnom pristupu, koji se oslanja na ljudskog programera da definiše sve moguće scenarije i za njih napiše pravila u programskom kodu.
Iskreno rečeno, mašinsko učenje je zapravo ubacivanje ogromne količine podataka u računar, kako bi on mogao da uči iz primera (proba → greška → poređenje → poboljšanje), umesto da se oslanja na unapred napisan izvorni kod.
Primena mašinskog učenja
Ako mašinsko učenje nije crna magija i neće stvoriti Terminatore, čemu onda služi?
Mašinsko učenje je korisno u situacijama kada tradicionalno programiranje zakaže, a te situacije se obično mogu podeliti u dve kategorije.
Kao što i samo ime govori, klasifikacija se odnosi na ispravno označavanje podataka, dok predviđanje ima za cilj da ostvari buduće projekcije, na osnovu dovoljno velike količine podataka iz prošlosti.
Neke od zanimljivih primena mašinskog učenja su:
Filtriranje neželjene pošte
Neželjena pošta je svuda prisutna, ali pokušaj da se zaustavi može biti pravi košmar. Kako definisati neželjenu poštu? Da li je to prisustvo određenih ključnih reči? Ili način na koji je tekst napisan? Teško je smisliti detaljan skup pravila za program.
Zato koristimo mašinsko učenje. Sistem „hranimo“ milionima neželjenih i željenih poruka i prepuštamo mu da sam shvati razliku. Ovo je bila tajna iza odličnih Gmail filtera za neželjenu poštu, koji su napravili pravu revoluciju u ličnoj e-pošti početkom 2000-ih!
Preporuke
Sve velike kompanije za e-trgovinu danas imaju moćne sisteme preporuka. Ponekad je njihova sposobnost da preporuče stvari za koje „možemo“ biti zainteresovani neverovatno tačna, iako nikada pre nismo kliknuli na taj proizvod.
Slučajnost? Nikako!
Mašinsko učenje ovde naporno radi, analizirajući ogromne količine podataka i pokušavajući da predvidi naše promene raspoloženja i preference.
Četbotovi
Da li ste ikada naišli na korisničku podršku prvog nivoa koja je delovala čudno robotski, a opet je mogla voditi zanimljiv mali razgovor?
Ako jeste, onda vas je prevarilo mašinsko učenje!
Učenje iz razgovora i određivanje šta reći je uzbudljiva oblast primene četbotova, koja je tek u razvoju.
Uklanjanje korova
U poljoprivredi se roboti pokretani mašinskim učenjem koriste za selektivno prskanje korova i drugih neželjenih biljaka, među usevima.
Ovo bi inače moralo da se radi ručno ili bi bilo veoma rasipno jer bi sistem prskao i sam usev tečnošću za ubijanje korova!
Glasovna pretraga
Interakcija s računarima pomoću glasa više nije naučna fantastika. Danas imamo digitalne asistente poput Alexe, Siri i Google Home koji mogu verbalno da primaju komande i rade to bez greške (pa, skoro!).
Neki bi mogli reći da je to izum koji treba izbegavati jer čini ljudsku rasu lenjom, ali ne može se poreći njegova efikasnost.
Medicinska dijagnoza
Na pragu smo revolucije u medicinskoj dijagnostici jer sistemi zasnovani na mašinskom učenju počinju da nadmašuju iskusne lekare u dijagnozi pomoću rendgenskih snimaka i slično.
To ne znači da lekari više neće biti potrebni, već da će se kvalitet medicinske nege drastično poboljšati, dok će troškovi biti niži (osim ako poslovni karteli ne odluče drugačije!).
Ovo je samo mali deo onoga za šta se koristi mašinsko učenje. Samovozeći automobili, botovi za strateške igre, mašine za savijanje majica, rešavanje CAPTCHA i bojenje crno-belih fotografija su sve primeri kako se ova tehnologija primenjuje.
Vrste mašinskog učenja
Postoje dve osnovne tehnike mašinskog učenja.
Učenje pod nadzorom, gde je sistem vođen ljudskim uputstvima, i učenje bez nadzora, gde se sistem prepušta da sam uči. Drugim rečima, u kontrolisanom učenju imamo skup podataka koji sadrži i ulaze i željene izlaze, koje sistem koristi za upoređivanje i ispravljanje. U učenju bez nadzora, ne postoji očekivani rezultat, tako da rezultati mogu varirati.
Zanimljiva primena učenja bez nadzora, koja ledi krv u žilama?
To su botovi koji igraju društvene igre. Program sam uči pravila i uslove za pobedu, a zatim se pušta da samostalno igra. Program zatim igra milione partija protiv samog sebe, učeći iz svojih grešaka i usavršavajući strategije.
Na dovoljno moćnom računaru, napredni AI može biti spreman za samo nekoliko sati!
Sledeće slike ukratko ilustruju ove ideje (izvor: Medium):
Resursi za početak učenja o mašinskom učenju
Sada kada ste se zagrejali za mašinsko učenje i mogućnosti koje ono pruža, odakle početi?
U nastavku sam naveo nekoliko fantastičnih resursa na internetu koji vam mogu pomoći da steknete znanje o mašinskom učenju, bez doktorata iz informatike! Ako niste istraživač u ovoj oblasti, mašinsko učenje možete smatrati praktičnom i prijatnom veštinom, kao i programiranje uopšte.
Zato ne brinite, bez obzira na to gde se trenutno nalazite, možete, baš kao i dobar program za mašinsko učenje, da učite i da se usavršavate. 😛
#1. Programiranje
Prvi preduslov za ulazak u svet mašinskog učenja je da naučite da programirate. Sistemi za mašinsko učenje dolaze u obliku biblioteka za različite programske jezike.
Python se najviše preporučuje, delom zato što se lako uči, a delom zato što ima veliki ekosistem biblioteka i resursa.
Zvanični vodič za početnike je odlično mesto za početak, čak i ako ste već malo upoznati sa Python-om. Ili, uzmite ovaj bootcamp kurs da biste od nule postali heroj.
#2. Think Stats
Kada završite sa osnovama Python-a, moja druga preporuka je da pređete dve sjajne knjige. One su 100% besplatne i dostupne u PDF formatu. Think Stats i Think Bayes su dva moderna klasika koja bi svaki ambiciozni inženjer mašinskog učenja trebalo da pročita.
#3. Udemy
U ovom trenutku preporučujem da pohađate nekoliko kurseva sa Udemy. Interaktivan, samostalan format će vam pomoći da uđete u suštinu i izgradite samopouzdanje.
Obavezno pogledajte opis kursa, recenzije (posebno one negativne!) i opšti utisak o kursu pre nego što počnete.
Takođe možete besplatno naići na sjajne tutorijale na YouTube-u. Sentdex je jedan takav kanal koji mogu da preporučim, koji je veoma zabavan, ali njegov pristup nije baš prilagođen početnicima.
#4. Andrew Ng
Kurs koji vodi Andrew Ng na Coursera je verovatno najpopularniji resurs za učenje osnova mašinskog učenja.
Iako se koristi programski jezik R, ovaj kurs je nenadmašan u svojoj obradi teme i jasnim objašnjenjima. Zbog ovog kursa, Andrew Ng je stekao gotovo božanski status u ML krugovima, i ljudi se ugledaju na njega zbog vrhunske mudrosti (ne šalim se!).
Ovo nije kurs za početnike, ali ako ste već dobri u obradi podataka i ne smetaju vam dodatna istraživanja, ovaj kurs je moja najbolja preporuka.
#5. Udacity
Postanite inženjer mašinskog učenja tako što ćete steći ovaj nanostepen na Udacity.
Potrebno je oko 3 meseca da se završi kurs, nakon čega se od vas očekuje da imate solidno znanje o algoritmima mašinskog učenja, kako da ih modelujete i primenite u praksi.
Zaključak
Na internetu postoji bezbroj resursa i lako se možete izgubiti na samom početku. Većina tutorijala i diskusija je matematički zahtevna ili im nedostaje struktura, što može da poljulja vaše samopouzdanje pre nego što počnete.
Zato vas želim upozoriti na samoporažavanje: postavite sebi skroman cilj i napredujte malim koracima. Mašinsko učenje nije nešto što možete savladati za dan ili dva, ali ćete uskoro početi da uživate i, ko zna, možda čak i stvorite nešto izuzetno!
Zabavite se! 🙂