diff --git a/docs/_config.yml b/docs/_config.yml index afc5bd769..92d197e66 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -708,7 +708,13 @@ vi: ################################### Serbian #################################### sr: title: 'Duboko Učenje' - + chapters: + - path: sr/week01/01.md + sections: + - path: sr/week01/01-1.md + - path: sr/week01/01-2.md + - path: sr/week01/01-3.md + ################################### Bengali #################################### bn: title: 'ডীপ লার্নিং' diff --git a/docs/sr/README-SR.md b/docs/sr/README-SR.md index 3d0b42e44..f44df2cd3 100644 --- a/docs/sr/README-SR.md +++ b/docs/sr/README-SR.md @@ -43,9 +43,9 @@ source activate pDL ``` -## Startovati Jupyter Notebook ili JupyterLab +## Pokrenuti Jupyter Notebook ili JupyterLab -Startovati iz terminala: +Pokrenuti iz terminala: ```bash jupyter lab diff --git a/docs/sr/index.md b/docs/sr/index.md index d77300643..c57cbc65c 100644 --- a/docs/sr/index.md +++ b/docs/sr/index.md @@ -34,20 +34,21 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F + - + Lekcije - Istorija i motivacija + Istorija i motivacija 🖥️ 🎥 - Evolucija i duboko učenje + Evolucija i duboko učenje Praktikum - Neuronske mreže (NN) + Neuronske mreže (NN) 📓 📓 @@ -56,18 +57,18 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Stohastički gradijentni spust (SGD) i propagacija unazad + Stohastički gradijentni spust (SGD) i propagacija unazad 🖥️ 🎥 - Propagacija unazad u praksi + Propagacija unazad u praksi Praktikum - Obučavanje neuronskih mreža + Obučavanje neuronskih mreža 🖥 📓 @@ -77,18 +78,18 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Transformacija parametara + Transformacija parametara 🖥️ 🎥 - Konvolucione neuronske mreže (CNN) + Konvolucione neuronske mreže (CNN) Praktikum - Svojstva prirodnih signala + Svojstva prirodnih signala 🖥 📓 @@ -97,9 +98,9 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Praktikum - 1D konvolucija + 1D konvolucija 📓 🎥 @@ -107,18 +108,18 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Optimizacija I + Optimizacija I 🖥️ 🎥 - Optimizacija II + Optimizacija II Praktikum - Konvolucione neuronske mreže (CNN), autograd + Konvolucione neuronske mreže (CNN), autograd 📓 📓 @@ -127,19 +128,19 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - CNN primene + CNN primene 🖥️ 🖥️ 🎥 - Rekurentne neuronske mreže (RNN) i mehanizam pažnje (attention) + Rekurentne neuronske mreže (RNN) i mehanizam pažnje (attention) Praktikum - Obučavanje RNN + Obučavanje RNN 📓 📓 @@ -149,18 +150,18 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Modeli zasnovani na energiji (EBM) + Modeli zasnovani na energiji (EBM) 🖥️ 🎥 - Samonadgledano učenje (SSL), EBM + Samonadgledano učenje (SSL), EBM Praktikum - Autoenkoderi + Autoenkoderi 🖥️ 📓 @@ -169,18 +170,18 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Kontrastivne metode + Kontrastivne metode 🖥️ 🎥 - Regularizovani latentni modeli energije + Regularizovani latentni modeli energije Praktikum - Obučavanje varijacionih autoenkodera (VAE) + Obučavanje varijacionih autoenkodera (VAE) 🖥️ 📓 @@ -189,18 +190,18 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Proređenost + Proređenost 🖥️ 🎥 - Model reči, GAN + Model reči, GAN Praktikum - Treniranje GAN-ova + Treniranje GAN-ova 🖥️ 📓 @@ -209,18 +210,18 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Računarska vizija (CV) SSL I + Računarska vizija (CV) SSL I 🖥️ 🎥 - Računarska vizija (CV) SSL II + Računarska vizija (CV) SSL II Praktikum - Prediktivno upravljanje + Prediktivno upravljanje 🖥️ 📓 @@ -229,9 +230,9 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Aktivacije + Aktivacije 🖥️ 🖥️ @@ -239,10 +240,10 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F 🎥 - Funkcije gubitka + Funkcije gubitka Praktikum - PPUU + PPUU 🖥️ 📓 @@ -251,18 +252,18 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Duboko učenje za obradu prirodnih jezika (NLP) I + Duboko učenje za obradu prirodnih jezika (NLP) I 🖥️ 🎥 - Duboko učenje za obradu prirodnih jezika (NLP) II + Duboko učenje za obradu prirodnih jezika (NLP) II Praktikum - Mehanizmi pažnje (attention) i Transformeri + Mehanizmi pažnje (attention) i Transformeri 🖥️ 📓 @@ -271,18 +272,18 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Grafovske konvolucione mreže (GCN) I + Grafovske konvolucione mreže (GCN) I 🖥️ 🎥 - Grafovske konvolucione mreže (GCN) II + Grafovske konvolucione mreže (GCN) II Praktikum - Grafovske konvolucione mreže (GCN) III + Grafovske konvolucione mreže (GCN) III 🖥️ 📓 @@ -291,18 +292,18 @@ Ovaj kurs prati najskorije tehnike u dubokom učenju i učenju reprezentacija. F - + Lekcije - Struktuirane predikcije + Struktuirane predikcije 🖥️ 🎥 - Grafičke metode + Grafičke metode Praktikum - Regularizacija i Bajesovske neuronske mreže + Regularizacija i Bajesovske neuronske mreže 🖥️ 📓 diff --git a/docs/sr/week01/01-1.md b/docs/sr/week01/01-1.md new file mode 100644 index 000000000..17b1df6d3 --- /dev/null +++ b/docs/sr/week01/01-1.md @@ -0,0 +1,158 @@ +--- +lang: sr +lang-ref: ch.01-1 +lecturer: Yann LeCun +title: Motivacija iza dubokog učenja, istorija i inspiracija +authors: Yunya Wang, SunJoo Park, Mark Estudillo, Justin Mae +date: 27 Jan 2020 +translation-date: 13 Dec 2020 +translator: Ema Pajić +--- + + +## [Plan kursa](https://www.youtube.com/watch?v=0bMe_vCZo30&t=217s) + + +- Osnove nadgledanog učenja, Neuronske mreže, Duboko učenje +- Propagacija unazad i komponente arhitekture +- Konvolucione neuronske mreže i njihove primene +- Arhitekture dubokih neuronskih mreža +- Regularizacijski i optimizacijski trikovi / Razumevanje kako radi duboko učenje +- Modeli zasnovani na energiji +- Samonadgledano učenje + + + +## Inspiracija za duboko učenje i njegova istorija + + +Na konceptualnom nivou, duboko učenje je inspirisano mozgom, ali su neki detalji zanemareni. Kao poređenje, avioni su inspirisani pticama - princip letenja je isti, ali su detalji veoma različiti. + + +Istorija dubokog učenja počinje sa oblašću nauke koja se trenutno zove kibernetika 1940-ih sa McCulloch-om i Pitts-om. Oni su došli na ideju da su neuroni jedinice koje mogu da budu u uključenom ili isključenom stanju i da postoji neki prag kada menjaju stanje. Moguće je napraviti Bulovo kolo (matematički model za kombinatorna digitalna logička kola) povezivanjem neurona i da se donose zaključci preko njih. Mozak je predstavljen kao mašina koja donosi zaključke preko neurona koji su binarni. Neuroni računaju težinsku sumu ulaza i porede je sa svojim pragom. Uključuju se ako je suma veća od praga, a isključuju ako je manja, što je uprošćen pogled na to kako mozak radi. + + +1947., Donald Hebb je došao na ideju da mozak uči promenama jačine veza između neurona. To je nazvano hiperučenje: ako dva neurona ispale impuls zajedno, veza između njih se pojačava, u suprotnom slabi. + + +Kasnije u toku 1948., Norbert Wiener je predložio kibernetiku, što je ideja da postoje sistemi koji imaju senzore i aktuatore, povratnu spregu i samoregulišući sistem. Pravila povratnog mehanizma automobila dolaze iz ovog rada. + + +1957., Frank Rosenblatt je osmislio perceptron, algoritam koji modifikuje težine veoma jednostavnih neuronskih mreža. + + +Ideja da se naprave inteligentne mašine simulacijom velikog broja neurona nastala je 1940-ih, razvijala se tokom 1950-ih, i kompletno je napuštena krajem 1960-ih. Glavni razlozi za napuštanje ove ideje 1960-ih su: + + +- Naučnici su koristili neurone koji su binarni. Međutim, da bi propagacija unazad radila, aktivacione funkcije su morale da budu neprekidne. U to vreme, naučnici nisu došli do ideje da upotrebe neprekidne neurone i nisu mislili da je moguće da se obučava preko gradijenata jer binarni neuroni nisu diferencijabilni. +- Kod neprekidnih neurona, aktivaciju neurona treba pomnožiti težinom da bi se dobio doprinos težinskoj sumi. Međutim, pre 1980-te, množenje dva broja, pogotovu decimalnih brojeva je bilo veoma sporo. To je bio još jedan razlog da se izbegne upotreba neprekidnih neurona. + + +Duboko učenje je nastavilo da se razvija 1985. sa pojavom propagacije unazad. 1995., oblast je ponovo pala u zaborav i napuštena je ideja neuronskih mreža. Početkom 2010-ih, neuronske mreže su upotrebljene u prepoznavanju govora i postigle veliko poboljšanje performansi, a zatim se upotreba veoma raširila. 2013-te, računarska vizija je počela da većinski koristi neuronske mreže. 2016-te, isto se desilo i sa obradom prirodnih jezika. Uskoro će se slične revolucije desiti i u robotici, automatskom upravljanju i mnogim drugim oblastima. + + +### Nadgledano učenje + + +$90\%$ primena dubokog učenja koriste nadgledano učenje. Nadgledano učenje je proces gde se mreži da veliki broj parova ulaza i izlaza iz kojih treba da nauči kako da za novi dati ulaz predvidi tačan izlaz. U procesu obučavanja, kada je izlaz tačan, ne radi se ništa. Ako je izlaz netačan, malo se promene parametri mreže i ispravi izlaz ka onome koji želimo. Trik je znati u kom smeru i koliko promeniti parametre - i to nas dovodi do računanja gradijenata i propagacije unazad. + + +Nadgledano učenje potiče od perceptrona i Adaline. Adaline mreža je bazirana na istoj arhitekturi sa težinskim ulazima - iznad praga se uključuje, a ispod isključuje. Perceptron je neuronska mreža sa 2 sloja. Drugi sloj se obučava, a prvi sloj je fiksiran. Uglavnom, prvi sloj je određen nasumično i zove se asocijativni sloj. + + +## [Istorija prepoznavanja oblika i uvod u gradijentni spust](https://www.youtube.com/watch?v=0bMe_vCZo30&t=1461s) + + +U nastavku su opisane konceptualne osnove prepoznavanja oblika pre razvoja dubokog učenja. Standardan model za prepoznavanje oblika ima deo koji izvlači obeležja i klasifikator koji se obučava. Ulaznim podacima se prvo izvlače obeležja - relevantne korisne karakteristike ulaza, kao na primer detektovano oko ako je cilj prepoznati lice. Nakon toga, vektor obeležja se prosleđuje klasifikatoru koji računa težinske sume i poredi sa pragom. Klasifikator koji obučavamo može da bude perceptron ili neuronska mreža. Problem je što odluku koja obeležja izvlačimo mora da napravi čovek. To znači da se prepoznavanje oblika / računarska vizija fokusirala na izvlačenje odlika i njihov dizajn za specifičan problem, a klasifikatoru se nije posvećivalo puno vremena. + + +Nakon pojave i razvoja dubokog učenja, umesto ova 2 dela počela je da se koristi sekvenca modula. Svaki modul ima podesive parametre i nelinearnost. Takva sekvenca modula čini više slojeva i zato se ova oblast i zove duboko učenje. Razlog za korišćenje nelinearnosti umesto linearnosti je to što dva linearna sloja mogu da budu jedan linearan sloj jer je kompozicija dva linearna sloja linearna. + + +Najjednostavnija višeslojna arhitektura sa podesivim parametrima i nelinearnošću može da bude: ulaz (recimo slika ili audio) je predstavljen kao vektor. Ulaz se pomnoži matricom težina čiji koeficijenti su podesivi. Zatim, svaka komponenta vektora rezultata se prosledi nelinearnoj funkciji kao što je ReLU. Ponavljajući taj proces, dobijamo običnu neuronsku mrežu. Razlog zašto se zove neuronska mreža je to što ova arhitektura računa težinsku sumu komponenti ulaza sa odgovarajućim redovima matrice. + + +Da se vratimo na smisao nadgledanog učena, poredimo izlaz koji vraća neuronska mreža sa ciljanim izlazima i optimizujemo funkciju gubitka, koja računa rastojanje / kaznu / divergenciju između dobijenog i ciljanog rezultata. Zatim, usrednjujemo ovu funkciju cene po obučavajućem skupu podataka. To je vrednost koju želimo da minimizujemo. Drugim rečima, želimo da nađemo vrednosti parametara koje minimizuju prosečnu grešku na obučavajućem skupu. + + +Način kako da nađemo željene parametre je računanjem gradijenata. Na primer, ako zamislimo da smo se izgubili na planini u maglovitoj noći i želimo da se spustimo do sela koje se nalazi u uvali, jedan način bi bio da se okrenemo oko sebe i pronađemo najstrmiji put dole i zakoračimo u tom smeru. Taj smer je (negativni) gradijent. Sa pretpostavkom da je uvala konveksna, mogli bismo da stignemo do sela. + + +Efikasniji način se zove stohastički gradijentni spust (SGD). Pošto želimo da minimizujemo prosečni gubitak na obučavajućem skupu, uzmemo jedan odbirak ili malu grupu odbiraka i izračunamo grešku, zatim primenimo gradijentni spust. Zatim uzmemo novi odbirak i dobijemo novu vrednost za grešku, zatim gradijent koji je obično u drugom smeru. Dva glavna razloga za korišćenje stohastičkog gradijentnog spusta su to što pomaže modelu da brže konvergra empirijski ako je obučavajući skup veoma veliki i omogućava bolju generalizaciju, što znači dobijanje sličnih performansi na različitim skupovima podataka. + + +### [Računanje gradijenata propagacijom unazad](https://www.youtube.com/watch?v=0bMe_vCZo30&t=2336s) + + +Računanje gradijenata propagacijom unazad je praktična primena lančanog pravila. Jednačina propagacije unazad za ulazne gradijente je: + +$$ +\begin{aligned} +\frac{\partial C}{\partial \boldsymbol{x}_{i - 1}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial \boldsymbol{x}_i}{\partial \boldsymbol{x}_{i - 1}} \\ +\frac{\partial C}{\partial \boldsymbol{x}_{i - 1}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial f_i(\boldsymbol{x}_{i - 1}, \boldsymbol{w}_i)}{\partial \boldsymbol{x}_{i - 1}} +\end{aligned} +$$ + + +Jednačina propagacije unazad za težinske gradijente je: + +$$ +\begin{aligned} +\frac{\partial C}{\partial \boldsymbol{w}_{i}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial \boldsymbol{x}_i}{\partial \boldsymbol{w}_{i}} \\ +\frac{\partial C}{\partial \boldsymbol{w}_{i}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial f_i(\boldsymbol{x}_{i - 1}, \boldsymbol{w}_i)}{\partial \boldsymbol{w}_{i}} +\end{aligned} +$$ + + +Napomena: umesto skalarnih ulaza, ulazi će biti vektori - uopštenije, multidimenzionalni ulazi. Propagacija unazad omogućava računanje izvoda razlike izlaza koji želimo i koji smo dobili (funkcije gubitka) po bilo kojoj vrednosti u mreži. Na kraju, propagacija unazad je neophodna jer se primenjuje na više slojeva. + + +Bitno je razmotriti kako da se interpretiraju ulazi. Na primer, slika 256$$\times$$256 bi zahtevala matricu sa 200,000 vrednosti. To bi bile ogromne matrice koje bi mreža morala da koristi i bilo bi nepraktično koristiti ih. Iz tog razloga, bitno je pretpostaviti strukturu matrice. + + +## Hijerarhijska reprezentacija vizuelnog korteksa + + +Eksperimenti koje je radio Fukušima doveli su do razumevanja kako mozak interpretira ono što oči vide. Ukratko, otkriveno je da neuroni na početku retine kompresuju ulaz (ovo je poznato kao normalizacija kontrasta) i signal putuje od naših očiju do mozga. Zatim, slika se procesira u fazama i određeni neuroni se aktiviraju za određene kategorije. Dakle, vizuelni korteks radi prepoznavanje oblika hijerarhijski. + + +Eksperimenti u kojima su naučnici postavljali elektrode u specifične regije vizuelnog korteksa, specifično V1 regija, doveli su do zaključka da određeni neuroni reaguju na motive koji se pojavljuju u veoma maloj površini vidnog polja i da susedni neuroni vide bliske delove vidnog polja. +Dodatno, neuroni koji reaguju na isti deo vidnog polja, reaguju na različite tipove ivica (na primer, vertikalne ili horizontalne ivice). Takođe, u nauci je većinom prihvaćena ideja da je vizuelni proces direktan, unapred propagiran proces. Dakle, donekle brzo prepoznavanje se može uraditi bez rekurentnih konekcija. + diff --git a/docs/sr/week01/01-2.md b/docs/sr/week01/01-2.md new file mode 100644 index 000000000..3dd4e960a --- /dev/null +++ b/docs/sr/week01/01-2.md @@ -0,0 +1,157 @@ +--- +lang: sr +lang-ref: ch.01-2 +lecturer: Yann LeCun +title: Evolucija, primene konvolucionih neuronskih mreža i zašto duboko učenje? +authors: Marina Zavalina, Peeyush Jain, Adrian Pearl, Davida Kollmar +date: 27 Jan 2020 +translation-date: 13 Dec 2020 +translator: Ema Pajić +--- + + +## [Evolucija konvolucionih neuronskih mreža (CNN)](https://www.youtube.com/watch?v=0bMe_vCZo30&t=2965s) + + +U mozgu životinja, neuroni reaguju na ivice koje su specifične orijentacije. Grupe neurona koje reaguju na istu orijentaciju nalaze se svuda po vidnom polju. + + +Fukušima je 1982. godine napravio neuronsku mrežu koja je radila na isti način kao i mozak, bazirano na 2 koncepta. Prvo, neuroni su postavljeni po celom vidnom polju. Drugo, postoje kompleksne ćelije koje agregiraju informacije iz jednostavnih ćelija (jedinica koje reaguju na orijentaciju). Kao rezultat, pomeraj slike će uticati na aktivacije jednostavnih ćelija, ali neće uticati na agregiranu aktivaciju komplikovane ćelije (agregiranje konvolucijom). + + +LeCun je 1990. godine iskoristio propagaciju unazad da obuči konvolucionu neuronsku mrežu da prepozna rukom pisane cifre. Postoji video iz 1992. gde algoritam prepoznaje cifre napisane različitim stilovima. Prepoznavanje karaktera / oblika koristeći model koji rešava problem od početka do kraja je bilo novo u to vreme. Ranije je bilo neophodno izvlačenje obeležja pre modela nadgledanog učenja. + + +Novi CNN sistemi mogli su da prepoznaju više karaktera na slici istovremeno. To se radilo tako što je postojao mali prozor koji se pomerao po celoj slici i on je prosleđivan na ulaz modela. Ako se aktivira, to znači da je prisutan određeni karakter. + + +Kasnije je ova ideja primenjena na detekciju lica / ljudi i semantičku segmentaciju (klasifikaciju piksela na slici). Primeri za to su Hadsel (2009) i Farabet (2012). Vremenom je ovo postalo popularno u industriji i koristi se, na primer, za praćenje trake na putu u autonomnoj vožnji. + + +Specijalan hardver za obučavanje konvolucionih neuronskih mreža je bila popularna tema 1980-ih, zatim je interesovanje opalo, ali se ponovo vratilo u skorije vreme. + + +Revolucija dubokog učenja (doduše, ovaj termin se nije koristio u to vreme) je počela 2010.-2013. Naučnici su se fokusirali na smišljanje algoritama koji bi mogli da ubrzaju treniranje velikih konvolucionih neuronskih mreža. Križevski je 2012. osmislio AlexNet, mnogo veću konvolucionu neuronsku mrežu nego što su ranije koriščene, i obučio je na ImageNet-u (skupu podataka sa oko 1.3 miliona odbiraka) koristeći GPU (Grafičku procesorsku jedinicu). Nakon obučavanja nekoliko nedelja, AlexNet je imao značajno bolje rezultate od najboljih rivalskih sistema -- 25.8% *vs.* 16.4% top-5 procenat greške. + + +Nakon uspeha AlexNet-a, naučnici iz oblasti računarske vizije bili su ubeđeni da konvolucione neuronske mreže rade. Dok su svi radovi iz 2011.-2012. koji su pominjali CNN bili odbijeni, nakon 2016. najveći broj objavljenih radova koristi CNN. + + +Vremenom se broj slojeva povećavao: LeNet -- 7, AlexNet -- 12, VGG -- 19, ResNet -- 50. Međutim, postoji kompromis između broja operacija potrebnog da se sračuna izlaz modela, veličine modela i njegove tačnosti. Iz tog razloga, trenutno popularna tema je kako kompresovati mreže da bi bile brže. + + + +## [Duboko učenje i izvlačenje obeležja](https://www.youtube.com/watch?v=0bMe_vCZo30&t=3955s) + + +Višeslojne mreže su uspešne jer koriste kompozicionu strukturu podataka. U kompozicionoj hijerarhiji, kombinacije objekata na jednom sloju hijerarhije kreiraju objekte na sledećem sloju. Ako imitiramo tu hijerarhiju pomoću više slojeva i pustimo mrežu da uči odgovarajuću kombinaciju obeležja, dobijemo arhitekturu duboke neuronske mreže. Dakle, duboke neuronske mreže su prirodno hijerarhijske. + + +Arhitekture dubokog učenja dovele su do neverovatnog napretka u računarskoj viziji, na raznim problemima, počevši od identifikacije i generacije tačnih "maski" objekata do identifikacije prostornih odlika objekta. Mask-RCNN i RetinaNet arhitekture su većinom dovele do ovog napretka. + + +Mask-RCNN mreže su pronašle primenu u segmentaciji pojedinačnih objekata, na primer kreiranju maske svakog objekta na slici. Ulaz i izlaz iz mreže su oba slike. Arhitektura takođe može da se primeni na segmentaciju instanci, tj identifikaciju različitih objekata istog tipa na slici. Detectron, softverski sistem Facebook AI Research (FAIR) centra, implementira sve najbolje algoritme detekcije objekata i open source-uje ih. + + +Neke od primena konvolucionih neuronskih mreža su i omogućavanje autonomne vožnje i analiza medicinskih slika. + + +Iako je nauka i matematika iza dubokog učenja dosta dobro shvaćena, i dalje postoje zanimljiva pitanja koja treba istražiti. Na primer: Zašto arhitekture sa više slojeva rade bolje, uzevši u obzir da možemo da aproksimiramo funkciju pomoću 2 sloja? Zašto konvolucione neuronske mreže rade dobro sa prirodnim podacima kao što su govor, slike i tekst? Kako uspevamo da toliko dobro optimizujemo nekonveksne funkcije? Zašto arhitekture sa previše parametara rade? + + +Izdvajanje odlika sastoji se od proširivanja dimenzije reprezentacije tako da proširena obeležja verovatnije budu linearno separabilna, tačke u prostoru više dimenzije su verovatnije linearno separabilne zbog povećanja broja potencijalnih separacionih ravni. + + +Ranije se u primenama mašinskog učenja oslanjalo na kvalitetne, ručno odabrane odlike, specifične za zadatak. Zbog napretka dubokog učenja, modeli su u mogućnosti da automatski izdvoje obeležja. Neki od pristupa korišćenih u izdvajanju odlika: + + + + + + + +- Popločavanje prostora +- Nasumične projekcije +- Polinomijalni klasifikator (vektorski proizvodi obeležja) +- Funkcije radijalne baze +- Kernel mašine + + +Zbog kompozitne prirode podataka, naučena obeležja imaju hijerarhiju reprezentacija sa rastućim nivoem apstrakcije. Na primer: + + +- Slike - Na najmanjem nivou, slike su pikseli. Kombinacija piksela čini ivice, dok kombinacija ivica čini tekstone (oblike sa više ivica). Tekstoni čine motive, a motivi čine delove slike. Kombinacijom delova slike dobijamo celu sliku. + +- Tekst - Slično, postoji inherentna hijerarhija u tekstualnim podacima. Karakteri formiraju reči, reči formiraju grupe reči, zatim klauzule, a kombinacijom klauzula dobijamo rečenice. Rečenice čine priču koja je zapisana. + +- Govor - U govoru, od zamisli, preko aparata za govor, do glasova i fonema, zatim celih reči i na kraju rečenica, takođe vidimo jasnu hijerarhiju. + + + +## [Učenje reprezentacija](https://www.youtube.com/watch?v=0bMe_vCZo30&t=4767s) + + +Ne žele svi da prihvate duboko učenje: ako možemo da aproksimiramo bilo koju funkciju pomoću 2 sloja, zašto koristiti više? + + +Na primer: SVM nalazi separacionu hiperravan "preko podataka", tj. predikcije su bazirane na poređenjima sa podacima iz obučavajućeg skupa. SVM je u suštini veoma jednostavna dvoslojna neuronska mreža, gde prvi sloj definiše "šablone", a drugi sloj je linearni klasifikator. Problem sa dvoslojnom mrežom je to što je kompleksnost i veličina srednjeg sloja eksponencijalna po $N$ (da bi dobro radila na teškom zadatku, potrebno je PUNO šablona). Međutim, ako proširimo broj slojeva na $\log(N)$, slojevi postaju linearni po $N$. Postoji kompromis između vremena i prostora. + + +Analogija je dizajniranje kola koje računa bulovu funkciju sa ne više od dva sloja kapija -- možemo da sračunamo **bilo koju bulovu funkciju** na ovaj način! Međutim, kompleksnost i resursi prvog sloja (broj kapija) brzo postaju nepraktični za kompleksne funkcije. + + +Šta je "duboko"? + + +- SVM nije dubok jer ima samo 2 sloja +- Klasifikaciono stablo nije duboko jer svaki sloj analizira ista obeležja +- Duboka neuronska mreža ima više slojeva i koristi ih da napravi **hijerarhiju obeležja rastuće kompleksnosti** + + +Kako modeli uče reprezentacije (dobra obeležja)? + + +Manifold hipoteza: prirodni podaci su u nisko-dimenzionom prostoru. Skup mogućih slika je u suštini beskonačan, ali je skup "prirodnih" slika mali podskup. Na primer: Za sliku osobe, skup mogućih slika je reda veličine broja mišića lica koji mogu da se pomere (stepeni slobode) ~ 50. Idealan (i nerealističan) izdvajač obeležja reprezentuje sve faktore (svaki mišić, svetlost, itd.) + + +Pitanja i odgovori sa kraja lekcije: + + + +- Za primer lica, da li bi neka druga tehnika redukcija dimenzija (npr. PCA) uspela da izvuče ta obeležja? + - Odgovor: to bi radilo samo ako je površina manifolda hiperravan, što nije. diff --git a/docs/sr/week01/01-3.md b/docs/sr/week01/01-3.md new file mode 100644 index 000000000..d86971ceb --- /dev/null +++ b/docs/sr/week01/01-3.md @@ -0,0 +1,208 @@ +--- +lang: sr +lang-ref: ch.01-3 +title: Motivacija, Linearna algebra i vizualizacija +lecturer: Alfredo Canziani +authors: Derek Yen, Tony Xu, Ben Stadnick, Prasanthi Gurumurthy +date: 28 Jan 2020 +translation-date: 14 Dec 2020 +translator: Ema Pajić +--- + + +## Materijali + + +Zapratite Alfredo Canziani [na Twitter nalogu @alfcnz](https://twitter.com/alfcnz). Videi i beleške sa relevantnim detaljima o linearnoj algebri i SVD dekompozicija se mogu naći na Alfredovom tviteru, na primer pretragom `linear algebra (from:alfcnz)`. + + +## [Transformacije i motivacija](https://www.youtube.com/watch?v=5_qrxVq1kvc&t=233s) + + +Kao motivišući primer, posmatrajmo klasifikaciju slika. Zamislite da smo napravili fotografiju kamerom sa rezolucijom 1 megapiksel. Ta slika će imati oko 1,000 piksela vertikalno i 1,000 piksela horizontalno i svaki piksel će imati 3 dimenzije za boje (RGB, crvena, zelena, plava). Svaka slika se može posmatrati kao jedna tačka u prostoru sa 3 miliona dimenzija. Sa tako velikom dimenzionalnošću, mnogo interesantnih slika koje želimo da klasifikujemo -- na primer pas *vs.* mačka -- će u suštini biti u istom regionu prostora. + + +Da bismo razdvojili te slike, razmatramo načine transformacije podataka. Prisetimo se da u 2D prostoru, linearna transformacija je isto što i množenje matrica. Na primer, sledeće transformacije su linearne: + +- Rotacija (kada je matrica ortonormalna). +- Skaliranje (kada je matrica dijagonalna). +- Refleksija (kada je determinanta negativna). +- Odsecanje. + + +Treba uzeti u obzir da sama translacija nije linearna jer se 0 neće uvek mapirati u 0, ali jeste afina transformacija. Vratimo se na primer slike - možemo da transliramo tačke tako da su centrirane oko 0 i skaliramo dijagonalnom matricom tako da "uvećamo" taj region. Na kraju, možemo da uradimo klasifikaciju traženjem linija u prostoru koje razdvajaju različite tačke u njihove klase. Drugim rečima, ideja je da koristimo linearne i nelinearne trensformacije da mapiramo tačke u prostor u kome su linearno separabilne. Ova ideja će biti konkretnije opisane u narednim sekcijama. + + + +## [Vizualizacija podataka - razdvajanje tačaka bojom koristeći neuronsku mrežu](https://www.youtube.com/watch?v=5_qrxVq1kvc&t=798s) + + +U našim vizualizacijama, imamo 5 grana spirale i svaka grana je druge boje. Tačke su u dvodimenzionalnom prostoru i mogu da se reprezentuju kao (x,y) parovi. Boja predstavlja treću dimenziju - klasu kojoj tačke pripadaju. Upotrebićemo neuronsku mrežu da razdvojimo tačke po boji. + + +|
|
| +| (a) Ulazne tačke, pre mreže | (b) Izlazne tačke, nakon mreže | + + +
Figure 1: Spirala sa 5 boja
+ +Mreža \"rasteže\" prostor u cilju da razdvoji tačke koje pripadaju različitim potprostorima. Kada iskonvergira, mreža razdvaja svaku od boja u različit potprostor konačnog prostora. Drugim rečima, svaka od boja u novom prostoru će biti linearno separabilna koristeći "1 protiv svih" regresiju. Vektori na dijagramu mogu da se predstave 5x2 matricom. Ta matrica se može pomnožiti svakom od tačaka i vratiće rezultate za svaku od 5 boja. Svaka od tačaka onda može biti klasifikovana po boji pomoću tih rezultata. Ovde je dimenzija izlaza 5, po jedna za svaku boju, a dimenzija ulaza je 2, po jedna za x i y koordinate tačaka. Da rezimiramo, ova mreža u suštini kreće od nekog prostora i vrši transformacije njega, parametrizovano sa nekoliko matrica a zatim nelinearnostima. + + +### Arhitektura neuronske mreže + + +
+
+Figure 2: Arhitektura neuronske mreže +
+ + +Prva matrica mapira dvodimenzionalni ulaz u 100-dimenzioni pomoćni skriveni sloj. Zatim imamo nelinearan sloj, `ReLU` (Rectified Linear Unit), koja je jednostavno *pozitivan deo* $(\cdot)^+$. Dalje, da bismo prikazali sliku, imamo embedding sloj koji mapira 100-dimenzioni skriveni sloj u dvodimenzioni izlaz. Na kraju, embedding sloj se projektuje na finalni, petodimenzioni sloj mreže koji predstavlja rezultat za svaku od boja. + + +## [Nasumične projekcije - Jupyter Notebook](https://www.youtube.com/watch?v=5_qrxVq1kvc&t=1693s) + + +Jupyter Notebook se može naći [ovde](https://github.com/Atcold/pytorch-Deep-Learning/blob/master/02-space_stretching.ipynb). Da bi se sveska pokrenula, proveriti da li je `pDL` okruženje instalirano kao što je specificirano u [`README.md`](https://github.com/Atcold/pytorch-Deep-Learning/blob/master/docs/sr/README-SR.md). + + +### PyTorch `device` + + +PyTorch može da pokreće kod i na CPU i GPU računara. CPU je koristan za sekvencijalne zadatke, dok je GPU koristan za paralelne zadatke. Pre pokretanja na željenom uređaju, prvo moramo da budemo sigurni da su se tenzori i modeli prebacili na memoriju uređaja. To se može uraditi sledećim linijama koda: + +```python +device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") +X = torch.randn(n_points, 2).to(device) +``` + + +Prva linija kreira promenljivu `device`, kojoj se dodeljuje GPU ako je dostupan, a u suprotnom CPU. U sledećoj liniji se kreira tenzor i šalje na memoriju uređaja pozivom `.to(device)`. + + +### Jupyter Notebook savet + + +Za gledanje dokumentacije za funkciju u ćeliji sveske, kliknuti `Shift + Tab.` + + +### Vizualizacija linearnih transformacija + + +Prisetimo se da se linearna transformacija može predstaviti matricom. Korišćenjem SVD dekompozicije, možemo da rastavimo tu matricu na 3 komponente matrice, tako da svaka predstavlja različitu linearnu transformaciju. + + +$$ +W = U\begin{bmatrix}s_1 & 0 \\ 0 & s_2 \end{bmatrix} V^\top +$$ + + +U jednačini (1), matrice $U$ i $V^\top$ su ortogonalne i predstavljaju transformacije rotacije i refleksije. Srednja matrica je dijagonalna i predstavlja transformaciju skaliranja. + + +Vizualizujemo linearne transformacije nekoliko nasumičnih matrica na Fig. 3. Obratiti pažnju na efekte singularnih vrednosti na rezultujuću transformaciju. + + +Matrice su generisane koristeći Numpy, ali takođe možemo da koristimo i PyTorch `nn.Linear` klasu sa `bias = False` opcijom da kreiramo linearne transformacije. + + +| ![]({{site.baseurl}}/images/week01/01-3/initial_scatter_lab1.png) | ![]({{site.baseurl}}/images/week01/01-3/matrix_multiplication_lab1.png) | ![]({{site.baseurl}}/images/week01/01-3/matrix_multiplication_lab1_2.png) | +| (a) Originalne tačke | (b) $s_1$ = 1.540, $s_2$ = 0.304 | (c) $s_1$ = 0.464, $s_2$ = 0.017 | + + +
Figure 3: Linearne transformacije nasumičnih matrica
+ + +### Nelinearne transformacije + + +Dalje vizualizujemo sledeću transformaciju: + +$$ +f(x) = \tanh\bigg(\begin{bmatrix} s & 0 \\ 0 & s \end{bmatrix} \bigg) +$$ + + +Prisetimo se, grafik $\tanh(\cdot)$ sa Fig. 4. + + +
+
+Figure 4: Hiperbolički tangens +
+ + +Efekat ove nelinearnosti je da ograniči tačke između $-1$ and $+1$, kreirajući kvadrat. Kako se vrednost $s$ u jednačini (2) povećava, sve više tačakau bivaju odgurnute na ivice kvadrata. To je pokazano na Fig. 5. Gurajući što više tačaka na ivice, povećava se rastojanje između njih i možemo da pokušamo da ih klasifikujemo. + + +| | | +| (a) Nelinearnost sa $s=1$ | (b) Nelinearnost sa $s=5$ | + +
Figure 5: Nelinearne transformacije
+ + +### Nasumična neuronska mreža + + +Na kraju, vizualizujemo transformaciju dobijenu jednostavnom, neobučenom neuronskom mrežom. Ova mreža ima linearni sloj, koji izvršava afinu transformaciju, iza kog sledi hiperbolički tangens nelinearnost i na kraju još jedan linearni sloj. Proučavanjem transformacije sa Fig. 6, vidimo da je različita od linearnih i nelinearnih transformacija koje smo videli ranije. U nastavku ćemo videti kako da napravimo transformacije koje vrši neuronska mreža korisne za naš krajnji cilj klasifikacije. + + +
+
+Figure 6: Transformacija dobijena neobučenom neuronskom mrežom +
diff --git a/docs/sr/week01/01.md b/docs/sr/week01/01.md new file mode 100644 index 000000000..efb335244 --- /dev/null +++ b/docs/sr/week01/01.md @@ -0,0 +1,28 @@ +--- +lang: sr +lang-ref: ch.01 +title: 1. Nedelja +translation-date: 13 Dec 2020 +translator: Ema Pajić +--- + + +## Lekcija, deo A + + +Objašnjavamo motivaciju iza dubokog učenja. Počinjemo sa istorijom i inspiracijom za nastanak dubokog učenja. Zatim diskutujemo istoriju prepoznavanja oblika i uvodimo gradijentni spust i njegovo računanje propagacijom unazad. Na kraju, diskutujemo hijerarhijsku reprezentaciju vizualnog korteksa. + + +## Lekcija, deo B + + +Prvo ćemo pričati o evoluciji konvolucionih neuronskih mreža (CNN), od Fukušime i LeCun-a do AlexNet-a. Zatim ćemo videti neke primene konvolucionih neuronskih mreža kao što je segmentacija slike, autonomna vozila i analiza medicinskih slika. Na kraju objašnjavamo hijerarhijsku prirodu dubokih neuronskih mreža i svojstva koja ih čine povoljnim. Završavamo pričom o generisanju i učenju obeležja / reprezentacija. + + +## Praktikum + + +Prvo ćemo pričati o motivaciji za primenu transformacija na podatke vizualizovane u prostoru, zatim o linearnoj algebri i primeni linearnih i nelinearnih transformacija. Razmatramo upotrebu vizualizacije za razumevanje funkcije i efekte ovih transformacija. Prolazimo kroz primere u Jupyter Notebook-u i zaključujemo diskusijom o funkciji koju reprezentuje neuronska mreža.