TensorFlow Playground
Sada kada znaš šta su to neuronske mreže i kako se treniraju, možeš i da pokušaš da napraviš i istreniraš svoju mrežu!
TensorFlow Playground je grafičko okruženje koje će ti približiti kako zapravo izgleda trenirati jednu neuronsku mrežu. Možeš mu pristupiti na adresi https://playground.tensorflow.org/ pa onda nastaviti da čitaš i pratiš dalje. Nije ti potreban poseban nalog ili dodatni softver, sve će se izvršavati u tvom pregledaču. U prozoru koji će te sačekati videćeš odmah mnogo kvadratića koji predstavljaju neurone i linija koje predstavljaju veze između njih!

Interfejs okruženja TensorFlow Playground
Na vrhu stranice TensorFlow Playground se nalazi traka koja ti omogućava da odabereš tip zadatka, a zatim i da, kada kreiraš mrežu koja rešava zadatak, započneš njeno treniranje. Tip zadatka, koji može da bude klasifikacioni ili regresioni, možeš da odabereš u polju Problem type sa krajnje desne strane. Preko polja Learning rate možeš da utičeš na veličinu koraka učenja koji se koristi tokom određivanja najboljih vrednosti parametara. U polju Activation možeš da odabereš neku od ponuđenih aktivacionih funkcija. Polja Regularization i Regularization rate utiču na regularizaciju pojedinačnih slojeva neuronske mreže, slično kao u lekciji o regularizaciji i primeru linearne regresije. Samo treniranje mreže započinje se klikom na strelicu sa leve strane. Broj epoha treniranja će se ispisivati u polju Iterations .
Početna traka sa opcijama za podešavanje treniranja
Za početak se možeš oprobati u nekom od ponuđenih klasifikacionih zadataka. Svi klasifikacioni zadaci su zadaci binarne klasifikacije, ima ih ukupno četiri i predstavljeni su ikonicama koje opisuju skupove podataka koji se u njima koriste. Instance koje pripadaju pozitivnoj klasi su obojene plavom bojom dok su instance koje pripadaju negativnoj klasi obojene narandžastom bojom. Skupove možeš da odabereš u sekciji Data sa leve strane ekrana. Za vežbu ćemo u startu odabrati skup predstavljen koncentričnim krugovima - preostali skupovi su spirala, četiri kvadranta koja odgovaraju zadatku učenja ekskluzivne disjunkcije i dva klastera podataka. Podešavanjima koja se nalaze u ovoj sekciji možeš da utičeš i na razmeru skupa za treniranje i skupa za testiranje (podrazumevano su ova dva skupa jednakih veličina) i nivo preklapanja klasa (parametar Noise ). Veličina paketića za treniranje je podrazumevano postavljena na vrednost 10 (parametar Batch size ).

Sekcija Features se odnosi na ulazni sloj i atribute mreže. Kako su skupovi sa kojima se radi skupovi tačaka u ravni, atribut x1 predstavlja vrednost x koordinate a atribut x2 vrednost y koordinate. Moguće je odabrati i atribute x12, x22, x1x2, kao i sin(x1) i sin(x2).
Broj slojeva neuronske mreže možeš da kontrolišeš opcijom Hidden layers . Klikom na dugme + dodaje se novi skriveni sloj, dok se klikom na dugme - briše skriveni sloj. Broj neurona u pojedinačnim slojevima kontroliše se, takođe, klikom na dugmiće + i -. Mreža koja se na ovaj način kreira je potpuno povezana neuronska mreža. Veze između neurona su prikazane isprekidanim linijama i njihova boja i debljina su usklađene sa vrednostima parametara koji ih prate. Klikom na svaku od ovih linijica se može pojedinačno podesiti vrednost parametra.
Kada kreiraš mrežu, potrebno je da klikneš na strelicu za početak treniranja. U panelu sa desne strane koji se zove Output moći ćeš da pratiš uspešnost treniranja vizuelno ili preko iscrtavanja krivih funkcije greške i prikaza njihovih vrednosti.

Problem sa koncentričnim krugovima podataka koji smo odabrali za vežbu nije linearan - ne može se povući prava koja razdvaja skup plavih i skup narandžastih instanci. Zato je potrebno da naučimo neki kompleksniji nelinearni model. Možemo prvo oprobati mrežu koja ima ulaze x1 i x2 i jedan skriveni sloj sa dva neurona koja koriste ReLU aktivacionu funkciju. Primetićemo da nakon neke epohe mreža stagnira sa učenjem pa ako je zaustavimo posle 500 epoha, dobijamo prikaz kao na donjoj slici. Sam problem nije idealno rešen jer nema jasne granice između klasa. Vidimo da je prvi neuron skrivenog sloja naučio da klasifikuje instance na leve i desne (kvadratić
) a drugi neuron na one ispod i iznad glavne dijagonale (kvadratić
) tako da kombinujući ova znanja dobijamo granicu kao na slici. Zadržavanjem na dva neurona i isprobavanjem i drugih aktivacionih funkcija rezultati neće biti zadovoljavajući (to obavezno proveri!).

Ako sada kreiramo mrežu koja ima ulaze \(x_1\) i \(x_2\) i jedan skriveni sloj sa tri neurona koja koriste ReLU aktivacionu funkciju, dobićemo prikaz kao na donjoj slici. Sada uspevamo da finije razdvojimo instance - prvi neuron je naučio da uočava one koje su u donjem desnom uglu, drugi da ih horizontalno (blago iskošeno) razdvaja, a treći vertikalno (blago iskošeno). Sva ova znanja su uslovljena i prirodom aktivacione funkcije koju smo koristili. Kombinujući ih svakako možemo da stignemo do bolje granice između klasa.

Oprobajmo se sada sa istom kombinacijom, ali uz korišćenje sigmoidne aktivacije. U sličnom broju epoha smo stigli do ovalnije granice. Vidimo i da su sada neuroni naučili da razlikuju instance i prema nekim malo drugačijim kriterijumima i to podjednako uspešno.

Postoji još mnogo mreža koje mogu rešiti ovaj zadatak - nastavi dalje da eksperimentišeš i otkriješ svoju mrežu. Za kraj vežbe možeš ostaviti zadatak sa spiralom jer je on najizazovniji. Evo kako može da izgleda jedna mreža koja ga prati!

U praksi se za kreiranje i obučavanje neuronskih mreža koriste biblioteke kao što su TensorFlow , Keras , PyTorch , JAX i druge. One kroz svoj API nude funkcionalnosti kojima se opisuju slojevi mreže, podešavaju optimizacioni algoritmi i prati ceo proces treniranja. Uz ove osnovne funkcionalnosti, biblioteke definišu i tehnike praćenja preprilagođavanja, mere za evaluaciju modela, kao i mehanizme za kontrolu i raspoređivanje hardverskih resursa. Ove biblioteke se obično uparuju i sa bibliotekama koje ceo proces treniranja finije prikazuju grafički. Takve su, recimo, biblioteke TensorBoard i Weights & Biasis . Tu su i mnogobrojni alati prilagođeni specifičnim zadacima.
- Make a submission
