Wednesday, May 17, 2023

Python, kralj programskih jezika za mašinsko učenje i AI razvoj; učimo osnove

Danas postoji dosta ljudi koji jednostavno misle da je AI – Artificial Intelligence – veštačka inteligencija i mašinsko učenje jedna te ista stvar. Istina je da su obe stvari veoma široke i kompleksne; ali mašinsko učenje je samo deo veštačke inteligencije. Veštačka inteligencija je grana računarstva koja se bavi razvojem računarskih sistema koji imaju sposobnost izvršavanja zadataka koji zahtevaju inteligenciju, sličnu ili čak nadmašujući sposobnosti ljudskog uma. Veštačka inteligencija se fokusira na razvoj algoritma, tehnika i modela koji omogućavaju računarima da razmišljaju, uče, razumeju i donose odluke i komuniciraju na način sličan ljudskom. Ona ima sve veći uticaj na različite industrije i sektore, transformišući način na koji se obavljaju poslovi, donose odluke i komunicira sa tehnologijom. Veštačka inteligencija jednostavnije rečeno omogućava računarima da automatizuju i simuliraju ljudsku inteligenciju, oslanjajući se na principe i načine na koje ljudski mozak obrađuje informacije kako bi računari mogli da razmišljaju i deluju slično kao ljudi i čak bolje. Upotrebom veštačke inteligencije, računari su u stanju da obavljaju zadatke koje inače zahtevaju ljudsku inteligenciju. Ali kako veštačka inteligencija radi? Ona u suštini imitira ljudske procese razmišljanja dok u isto vreme stimuliše ljudska čula poput slušanje, govora, razumevanje jezika, pamćenja, razmišljanja, vida i pokreta. U suštini, veštačka inteligencija pokušava da oponaša kognitivne sposobnosti ljudskog uma koristeći algoritme i modele koji omogućavaju računarima da donose odluke, uče iz iskustva i izvršavaju složene zadatke na način sličan ljudskom razmišljanju i delovanju.


( AI - veštačka inteligencija i mašinsko učenje nisu isto )

Postoji dosta podela po pitanju veštačke inteligencije; ali postoje i one koje su na neki način već usvojene. Obratite pažnju na prvu i najjednostavniju podelu: 

  • NAI – Narrow Artificial Intelligence - UVI – Uska Veštačka Inteligencija za obavljanje jednog ili nekoliko konkretnih zadataka sa visokim nivoom efikasnosti i tačnosti. Ovi sistemi su usko fokusirani na specifične zadatke i nemaju sposobnost opšteg razumevanja ili obavljanja drugih tipova zadataka. Na primer, uska veštačka inteligencija može biti razvijena za prepoznavanje objekata na slikama, preporuke proizvoda, automatsko prevođenje ili samovozeći automobil.
  • GAI – General Artificial Intelligence – OVI – Opšta Veštačka Inteligencija se odnosi na sistem veštačke inteligencije koji ima sposobnost razumevanja, učenja i obavljanja širokog spektra različitih zadataka na nivou ili iznad ljudske inteligencije. Opšta veštačka inteligencija bi bila sposobna da primeni znanje i veštine koje je stekla u jednom domenu na rešavanje problema u drugim domenima. Ideja opšte veštačke inteligencije je da mašina ima sposobnost da misli i deluje kao čovek, adaptirajući se na nove situacije, učeći iz iskustva i donoseći kreativne odluke.
  • Superintelligence – Super Veštačka Inteligencija se odnosi na nivo veštačke inteligencije koji prevazilazi intelektualne sposobnosti najinteligentnijih ljudi u svim oblastima. Super veštačka inteligencija bi bila neuporedivo inteligentnija od ljudi i imala bi potencijal da prevaziđe ljudske sposobnosti u svim aspektima. Ovo je futuristički koncept i još uvek nije postignut, ali se često razmatra u kontekstu dugoročnog razvoja veštačke inteligencije.
Pored ove najjednostavnije podele, veštačka inteligencija obuhvata različite grane i područja istraživanja. Pogledajte nekoliko važnih grana veštačke inteligencije.

Važne grane veštačke inteligencije 

1.      Machine Learning – mašinsko učenje je grana veštačke inteligencije koja se bavi razvojem algoritama i modela koji omogućavaju računarima da "uče" iz podataka i donose odluke na osnovu naučenih obrazaca. Ili još jednostavnije rečeno, mašinsko učenje omogućava računarima da identifikuju obrasce, steknu znanje i poboljšaju performanse na osnovu iskustva.

2.      Deep Learning – duboko učenje je specifična grana više mašinskog učenja nego veštačke inteligencije koja se fokusira na konstrukciju i treniranje neuronskih mreža sa više slojeva. Ono omogućava računarima da automatski otkrivaju složene obrasce i strukture u podacima.

3.      NLP - Natural Language Processing – prirodno jezičko procesiranje se bavi obradom, analizom i generisanjem prirodnog jezika. To uključuje prepoznavanje i razumevanje jezičkih obrazaca, mašinsko prevođenje, analizu sentimenta i druge zadatke vezane za jezik.

4.      Computer Vision – kompjuterski vid se odnosi na sposobnost računara da analizira, razume i tumači vizuelne informacije, poput slika i video-a. Ova grana veštačke inteligencije se bavi prepoznavanjem objekata, detekcijom lica, segmentacijom slika i drugim zadacima vezanim za vizuelne podatke.

5.     Robotics – robotika kombinuje veštačku inteligenciju sa fizičkim robotima kako bi se omogućilo autonomno kretanje, manipulacija objektima i interakcija sa okruženjem. To uključuje razvoj algoritama za navigaciju robota, prepoznavanje objekata i planiranje putanja.

6.     Decision Making and Optimization – odlučivanje i optimizacija je grana veštačke inteligencije koja se bavi razvojem algoritama i modela za donošenje odluka i optimizaciju resursa. To uključuje rešavanje problema planiranja, raspoređivanja, rutiranja i optimizacije u različitim domenima.

7.      ANN - Artificial Neural Networks – veštačke neuronske mreže su modeli inspirisani strukturom i funkcijom ljudskog mozga. One se koriste za obradu podataka, prepoznavanje obrazaca i donošenje odluka.

8.      Itd.

Tako i na osnovu navedenih podela, možete zaključiti da su po pitanju veštačke inteligencije neke stvari isprepletene. Na primer, za mašinsko učenje možete reći da ono pripada kategoriji UVI – uske veštačke inteligencije, ali ono takođe može biti ključni alat u ostvarivanju OVI – opšte veštačke inteligencije. Kroz mašinsko učenje, sistemi mogu da steknu sposobnost učenja iz iskustva i poboljšaju svoje performanse tokom vremena. Ovo je važan korak ka razvoju inteligentnijih sistema, ali sam koncept opšte veštačke inteligencije i super veštačke inteligencije ide mnogo dalje od samog mašinskog učenja i uključuje različite aspekte kao što su razumevanje, kreativnost, svest i druge kognitivne sposobnosti. Tako kroz svu ovu kompleksnost sa razlogom se možete pitati pa gde i kako početi sa učenjem kreiranja veštačke inteligencije.


( Različiti stručnjaci, različiti pristupi AI - veštačkoj inteligenciji )

Kako se snaći u svemu ovome, kako početi?

Pretpostavimo da hoćete da se bavite veštačkom inteligencijom, hoćete da otvorite i firmu i da zaposlite prave ljude kako bi ste napravili neku svoju vlastitu veštačku inteligenciju i napravili od toga ogroman posao. Koga zaposliti? Verovatno bi ste tražili:

·       Data Scientist – Naučnik podataka, stručnjak koji je odgovoran za prikupljanje, čišćenje, analizu i tumačenje podataka. Oni primenjuju statističke i matematičke metode kako bi izvukli značenje iz podataka i izgradili modele mašinskog učenja.

·       Machine Learning Engineer – Inženjer mašinskog učenja, stručnjak koji je fokusiran na implementaciju i održavanje modela mašinskog učenja. Odgovoran je za izgradnju, treniranje i evaluaciju modela, kao i za optimizaciju performansi.

·       AI Researcher – Istraživač veštačke inteligencije se bavi naprednim istraživanjem u oblasti veštačke inteligencije. On istražuje nove tehnike, algoritme i modele kako bi unapredili polje veštačke inteligencije i razvili inovativna rešenja. 

·       Software Engineer – Softver inženjer je odgovoran za razvoj softverski sistema i platformi za veštačku inteligenciju. On se bavi implementacijom i optimizacijom softvera, upravljanjem infrastrukturom i skaliranjem sistema.

·       NLP Engineer – Inženjer obrade prirodnog jezika se fokusira na razumevanje i obradu ljudskog jezika. Oni razvijaju algoritme za prepoznavanje entiteta, analizu sentimenta, mašinsko prevođenje i druge zadatke koji se odnose na obradu jezika.

·       Computer Vision Engineer – Inženjer kompjuterskog vida se bavi analizom i interpretacijom vizualnih informacija. On razvija algoritme za prepoznavanje objekta, detekciju lica, segmentaciju slika i druge zadatke povezane sa obradom slika i videa.

·       Robotics Engineer – inženjer robotike je stručnjak zadužen za projektovanje, razvoj, implementaciju i održavanje robotskog sistema koji koriste AI tehnologiju. Njegova dužnost je raznolika i može se menjati ovisno o specifičnosti projekta, industriji i području primene.

·       Ethical AI Specialist – specijalista za etičku veštačku inteligenciju je stručnjak koji razmišlja o etičkim pitanjima u vezi sa primenom veštačke inteligencije. On se bavi sigurnošću, pitanjima transparentnosti, privatnosti, zakonima, dilemama i analizi i proceni rizika.

·       Itd.

Ovo je minimum od minimalnog tima stručnjaka koji su neophodni kako bi ste izgradili vašu vlastitu veštačku inteligenciju. Ovde je prikazan manji spisak po jedan stručnjak iz neophodnih oblasti iako je on u praksi mnogo duži. Svaki navedeni stručnjak u praksi verovatno ima čitav tim ljudi koji rade sa njim. Možete li vi sami zameniti sve ove stručnjake? Mislim da ne, čak i kad bi ste završili više fakulteta. Ali možete ući u svet veštačke inteligencije na manja vrata. Koja? To zavisi od toga šta volite da radite i čime se bavite. Ja sam softver inženjer i znam koja su moja vrata; ali pravi ulaz čak i za mene u ovaj kompleksni svet je kao i za mnoge, programski jezik Python.  

Zašto je Python najbolji programski jezik za mašinsko učenje?

Verujem da postoje programeri koji se možda neće složiti samnom jer na primer kod programiranja ManuelChatGPT-a sam koristio JavaScript programski jezik. Pogledajte ovde. Da to je tačno ali ja tu nisam ništa programirao po pitanju mašinskog učenja već sam koristio besplatno već isprogramiran OpenAI API za pristup GPT-3.5 modelu. I na taj način samo koristim ono što je stotinu stručnjaka već kreiralo za mene u Python programskom jeziku.


( ManuelChatGPT - pogledajte na navigatoru )

Python se sa razlogom smatra najboljim programskim jezikom za mašinsko učenje. Čak iako ne poznajete ovaj programski jezik, sintaksa Python programskog jezika je toliko jednostavna, čista, jasna i intuitivna što olakšava razumevanje koda i brže razvijanje projekta. Samo nedostatak vitičasti zagrada {} za C# programere može biti iritirajuća. Zamislite tek JavaScript programski jezik gde morate da nagađate kad idu a kad ne vitičaste zagrade {}. Sa Python programskim jezikom bar znate na čemu ste. Python programski jezik je interpretirani jezik visokog nivoa sa kojim vam je omogućena brza implementacija ideja bez potrebe za složenom programerskom sintaksom. On je univerzalan jer se bukvalno koristi za razvoj totalno različitih vrsta aplikacija. Međutim, ono što definitivno čini Python najboljim programskim jezikom za mašinsko učenje, jesu upravo obilje biblioteka od kojih su mnoge specijalizirane upravo za mašinsko učenje kao što su na primer NumPy, SciPy, TensorFlow, PyTorch, scikit-learn, Keres i druge. Pre nego što i počnemo da učimo mašinsko učenje neophodno je da instalirate Anaconda distribuciju u vaš operativni sistem. Razlog? Anaconda ima više od 7500 paketa, od kojih su preko 250 automatski već instalirani. Sve ovo će vam itekako značiti u svakom vašem koraku progresa koji ćete sticati tokom učenja. Prirodno okruženje za razvoj AI – veštačke inteligencije su definitivno Linux operativni sistemi i serveri. Ali s obzirom da ćete učiti i raditi na manjim projektima, imate izbor da koristite i Windows operativni sistem. Pogledajte kako se instalira Anaconda na Windows operativni sistem i kako se počinje sa korišćenjem Project-a Jupyter.  


( Windows - 26. How to install Anaconda and use Project Jupyter? )

Ukoliko koristite Linux operativni sistem, pogledajte kao se instalira Anaconda na Ubuntu distribuciji.


( Linux - 24. How to install Anaconda and use Project Jupyter? )

 

 

 

 

 

 

 

 

 

No comments:

Post a Comment