Deep Learning
Deep Learning, odnosno duboko učenje, predstavlja jednu od najuticajnijih oblasti savremene veštačke inteligencije. Njegova osnovna ideja je da model ne uči samo jednostavne veze između ulaza i izlaza, već kroz više slojeva postepeno gradi sve bogatije i složenije reprezentacije podataka.
Kada govorimo o dubokom učenju, najčešće govorimo o dubokim neuralnim mrežama. One su sastavljene od slojeva neurona, težina, bias vrednosti, aktivacionih funkcija i postupaka optimizacije. Svaki sloj obrađuje ulaz na svoj način i prosleđuje rezultat sledećem sloju.
Snaga deep learning modela nije u jednom neuronu, već u saradnji velikog broja neurona kroz više slojeva. Jednostavne transformacije, kada se povežu u duboku strukturu, mogu naučiti veoma složene obrasce u slikama, tekstu, govoru, signalima i drugim vrstama podataka.
Duboko učenje se razvilo iz šire oblasti mašinskog učenja, ali se od klasičnih pristupa razlikuje po tome što često samo uči korisne osobine iz podataka. Kod tradicionalnog mašinskog učenja čovek često mora ručno da osmisli osobine, dok deep learning model može da ih otkriva kroz slojeve.
U obradi slika niži slojevi mogu naučiti ivice, uglove i jednostavne teksture. Srednji slojevi mogu prepoznavati delove objekata, a viši slojevi mogu kombinovati te delove u složenije pojmove. Na sličan način, u obradi teksta model može učiti odnose između reči, značenja, konteksta i namere.
Zato se deep learning često opisuje kao učenje reprezentacija. Model ne dobija samo zadatak da pronađe odgovor, već tokom treniranja gradi unutrašnji način predstavljanja podataka koji mu pomaže da taj odgovor pronađe.
Važno je odmah reći da deep learning nije magija. Iako rezultati mogu izgledati impresivno, u osnovi se nalaze brojevi, funkcije, matrice, greške, gradijenti i optimizacija. Model uči tako što poredi svoju predikciju sa očekivanim odgovorom i prilagođava parametre.
Ulazni podaci se najpre pretvaraju u numerički oblik. Slika postaje niz piksela, tekst postaje niz tokena ili vektora, zvuk postaje signal, a tabela postaje skup numeričkih i kategorijskih osobina. Deep learning model ne radi direktno sa značenjem, već sa brojevima koji značenje nose posredno.
Forward pass je postupak u kome podatak prolazi kroz mrežu od ulaza ka izlazu. U svakom sloju vrši se određeno računanje: množenje ulaza težinama, dodavanje bias vrednosti i primena aktivacione funkcije. Na kraju mreža daje predikciju.
Aktivacione funkcije su ključne jer uvode nelinearnost. Bez njih bi više slojeva u mnogim slučajevima moglo da se svede na jednu linearnu transformaciju. Nelinearnost omogućava mreži da uči složene granice odlučivanja i obrasce koji nisu jednostavne prave ili ravni.
Funkcija greške, odnosno loss funkcija, meri koliko je predikcija modela udaljena od očekivanog odgovora. Ako model pogreši, loss je veći; ako se predikcija približi istini, loss je manji. Upravo ta vrednost greške daje modelu signal za učenje.
Backpropagation je postupak kojim se informacija o grešci vraća kroz mrežu od izlaza ka ranijim slojevima. Na taj način model izračunava kako je svaki parametar doprineo grešci i u kom smeru ga treba promeniti.
Gradijenti pokazuju pravac promene. Ako znamo kako se greška menja u odnosu na težinu, možemo tu težinu malo prilagoditi. Deep learning u velikoj meri počiva na ponavljanju tog procesa kroz mnogo primera, batch-eva i epoha.
Optimizatori su algoritmi koji upravljaju promenom parametara. Najjednostavniji pristup je gradient descent, ali se u praksi često koriste varijante kao što su SGD, Momentum, RMSprop i Adam. One pomažu da učenje bude stabilnije i efikasnije.
Learning rate određuje veličinu koraka kojim model menja parametre. Ako je prevelik, treniranje može postati nestabilno. Ako je premali, učenje može trajati veoma dugo. Zato je podešavanje learning rate-a jedno od važnih praktičnih pitanja.
Deep learning modeli često imaju veliki broj parametara. To im daje veliku moć, ali i rizik da previše dobro zapamte trening podatke. Kada model dobro radi na trening skupu, a loše na novim primerima, govorimo o overfitting-u.
Suprotan problem je underfitting, kada model nema dovoljno kapaciteta, nije dovoljno dugo treniran ili ne uspeva da nauči osnovne obrasce u podacima. Dobar model treba da pronađe ravnotežu između učenja i generalizacije.
Zato se podaci dele na train, validation i test skup. Trening skup služi za učenje parametara, validation skup za izbor podešavanja i praćenje ponašanja, a test skup za završnu procenu modela na podacima koje nije koristio tokom razvoja.
Regularizacija pomaže da model bude otporniji i manje sklon pamćenju napamet. Dropout, weight decay, normalizacija, augmentacija podataka i rano zaustavljanje treniranja samo su neki od načina da se poboljša generalizacija.
Konvolutivne neuralne mreže, poznate kao CNN, posebno su važne za obradu slika. One koriste filtere koji prolaze preko slike i uče lokalne obrasce kao što su ivice, teksture, oblici i delovi objekata.
CNN modeli su pokazali koliko je korisno da arhitektura modela bude prilagođena prirodi podataka. Slika ima prostornu strukturu, pa konvolucije koriste lokalne odnose između piksela. Zbog toga su konvolutivne mreže dugo bile dominantne u računarskom vidu.
Pooling slojevi pomažu da se informacije sažmu, smanji dimenzionalnost i zadrže najvažnije osobine. Feature maps prikazuju aktivacije filtera i mogu pomoći da razumemo šta mreža u određenom sloju prepoznaje.
Transfer learning omogućava da iskoristimo model koji je već treniran na velikom skupu podataka. Umesto da uvek krećemo od nule, možemo preuzeti naučene reprezentacije i prilagoditi ih novom zadatku. To je posebno korisno kada imamo malo sopstvenih podataka.
Rekurentne neuralne mreže, poznate kao RNN, razvijene su za sekvencijalne podatke. One pokušavaju da zadrže informaciju iz prethodnih koraka, što je važno za tekst, vremenske serije, govor i signale.
Kod običnih RNN modela javljaju se problemi sa učenjem dugih zavisnosti. Zbog toga su razvijeni LSTM i GRU modeli, koji bolje kontrolišu šta se pamti, šta se zaboravlja i kako se informacija prenosi kroz vreme.
Embedding reprezentacije omogućavaju da reči, tokeni, korisnici, proizvodi ili drugi objekti budu predstavljeni vektorima. Slični objekti mogu biti blizu u prostoru, što modelu pomaže da nauči odnose i značenja.
Attention mehanizam uvodi ideju da model ne mora jednako da tretira sve delove ulaza. Umesto toga, može da nauči na koje delove treba više da obrati pažnju u određenom trenutku. To je posebno važno u obradi jezika i složenih sekvenci.
Transformeri su arhitektura zasnovana na attention mehanizmu i predstavljaju jednu od najvažnijih prekretnica u savremenoj veštačkoj inteligenciji. Oni su omogućili veliki napredak u obradi prirodnog jezika, prevođenju, generisanju teksta i multimodalnim sistemima.
Self-attention omogućava modelu da posmatra odnose između elemenata unutar istog ulaza. U tekstu to znači da model može povezati reči koje su udaljene, ali značenjski važne jedna za drugu. Zbog toga transformeri bolje razumeju kontekst.
Encoder-decoder arhitektura koristi se kada model treba da razume ulaz i generiše izlaz. To je važno u prevođenju, sumarizaciji, odgovaranju na pitanja i drugim zadacima gde iz jednog oblika informacije nastaje drugi.
Veliki jezički modeli predstavljaju posebno vidljivu primenu deep learninga. Oni koriste ogromne količine teksta i veliki broj parametara da bi učili obrasce jezika, znanja, stila, konteksta i generisanja odgovora.
Ipak, važno je razumeti i ograničenja velikih modela. Oni mogu dati koristan odgovor, ali mogu i pogrešiti, izmisliti podatak ili preneti pristrasnost iz podataka na kojima su trenirani. Zato deep learning zahteva i tehničko i kritičko razumevanje.
Autoenkoderi su modeli koji uče da kompresuju podatke u manju reprezentaciju i zatim ih rekonstruišu. Koriste se za smanjenje dimenzionalnosti, otkrivanje anomalija, uklanjanje šuma i učenje skrivenih struktura u podacima.
Generativni modeli pokušavaju da nauče kako izgleda raspodela podataka i da zatim stvaraju nove primere. U tu grupu spadaju različite porodice modela koje se koriste za slike, tekst, zvuk, dizajn i kreativne primene AI sistema.
Praćenje treniranja je važan deo praktičnog rada. Loss, accuracy, precision, recall, F1 mera, krive učenja i ponašanje na validation skupu pomažu nam da vidimo da li model zaista uči ili samo deluje uspešno na prvi pogled.
Interpretabilnost deep learning modela pokušava da odgovori na pitanje zašto je model doneo određenu odluku. Kod složenih mreža to nije uvek lako, ali postoje metode koje pomažu da se prikaže koji delovi ulaza najviše utiču na predikciju.
Deep learning je moćan, ali nije uvek najbolji izbor. Za neke zadatke jednostavniji modeli mogu biti brži, razumljiviji i dovoljni. Dobar praktičar ne bira deep learning zato što je moderan, već zato što problem, podaci i cilj opravdavaju njegovu upotrebu.
Ovaj tutorijal je zamišljen kao praktičan i postepen ulazak u duboko učenje. Ne polazimo od pretpostavke da čitalac već razume sve detalje neuralnih mreža, ali se oslanjamo na osnovnu ideju da se modeli mogu razumeti ako ih razložimo na jasne korake.
Prvi deo praktikuma vodi kroz osnovne pojmove: šta je deep learning, kako se razlikuje od klasičnog mašinskog učenja, šta su slojevi, težine, bias, aktivacione funkcije, forward pass, loss funkcija, backpropagation, optimizatori i regularizacija.
Drugi deo praktikuma uvodi najvažnije arhitekture i primene: CNN modele za slike, RNN, LSTM i GRU za sekvence, embedding reprezentacije, NLP, attention, transformatore, velike jezičke modele, autoenkodere, generativne modele i interpretabilnost.
Mini projekat na kraju povezuje sve oblasti u jedan praktičan tok rada: izbor podataka, priprema ulaza, izrada modela, treniranje, praćenje metrika, procena rezultata i razmišljanje o tome šta model zna, gde greši i kako bi se mogao poboljšati.
Deep Learning je put od sirovih podataka ka dubokim reprezentacijama. Kada razumemo taj put, modeli prestaju da budu neprozirne crne kutije i postaju sistemi koje možemo da gradimo, proveravamo, popravljamo i odgovorno koristimo.