Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[MEKRAC] 5. domaća zadaća - 2021/2022

Jaster111

Jel može netko ukratko objasnit kako sva 3 algoritma funkcioniraju? Ako sam dobro shvatio, stohastički nakon svakog feed-forwarda izračuna gradijent i ažurira težine, a što je sa ostalima? Kako te varijante funkcioniraju?


micho

Jaster111

U sva 3 algoritma imaš nekoliko koraka

  • odabir uzorka
  • forward pass (uvrstiš uzorak u mrežu)
  • backward pass (računaš gradijente)
  • akumulacija gradijenta (npr. dodavanje u neku listu)
    • rezolucija gradijenta (ako si dosegao neki prag)
      • ažuriranje težina

U ovoj vježbi nećeš nužno imati akumulaciju gradijenta jer ti sve stane u memoriju. Možeš računati da nakon svakog prolaza dosegneš prag i ideš u rezoluciju gradijenta i ažuriranje težina.

Stohastički

  • (na neku shemu) odabireš uzorak kao jednu oznaku
  • provrtiš ga kroz mrežu
  • izračunaš gradijent uz rezultat i oznaku
  • akumuliraš gradijent
  • odmah ga riješiš, dakle gradijent ti je samo taj koji si izračunao
  • ažuriraš težine po već ustanovljenim pravilima

Grupni (batch)

  • (na neku shemu) odabireš uzorak kao n oznaka
  • provrtiš sve u komadu (npr. ako si tako složio da se izvršava), ili uzorak po uzorak
  • računaš gradijent
    • ako je sve bilo u komadu dobit ćeš tenzor oblika (n, dimenzije gradijenta…)
    • ako si vrtio stvari uzorak po uzorak onda ćeš imati n izračuna gradijenta, tj. neku listu s n tenzora dimenzija gradijenta
  • akumulaciju gradijenta imaš ak si vrtio uzorak po uzorak - u tom slučaju to ti je samo dodavanje u neku listu prije nego što ažuriraš težine; ako računaš n uzoraka odjednom onda ćeš ionako sve imati u nekom tenzoru odjednom
  • sad kad si izračunao sve gradijente koje trebaš ih razriješiš - ovo znači da ćeš sve te zasebne gradijente, bili oni u listi ili u jednom tenzoru spljoštiti nekom akumulacijskom funkcijom - npr. aritmetičkom sredinom, sumom… Vjv. aritmetičnom sredinom da ti veličina n ne utječe na normu gradijenta
    • npr. ako imaš tenzor [[1], [2], [3]] (recimo da su ti gradijenti vektori duljine 1), to bi išlo u [2] ili [6], ovisno jel uprosječuješ ili sumiraš
    • ako si vrtio uzorak po uzorak i imaš listu gradijenata [1, 2, 3], to će ti ići u 2 ili 6, isto ovisno jel uprosječivanje ili sumiranje
  • ažuriraš težine s tim gradijentom kojeg si spljoštio, kao da je on neki kojeg si dobio s 1 uzorkom

Obični GD

  • uzorak su ti sve oznake u skupu za treniranje
  • kao i iznad, možeš ih provrtiti u komadu ako imaš vektoriziranu implementaciju, a možeš i oznaku po oznaku
  • računanje gradijenta, akumulacija i rezolucija su analogni kao i za grupni GD, samo što ti je veličina grupe cijeli skup za treniranje
  • na isti način jednom kad si razriješio gradijent u oblik koji se može primijeniti na težini, ažuriraš težine

Što se tiče uzorkovanja n uzoraka, to možeš raditi po redu ili nasumično. Pravi SGD nema garanciju da će uopće proći kroz sve uzorke. U svakoj epohi možeš promiješati redoslijed uzoraka. Isto tako, možeš po njima ići po redu.

Što je najbolje? Pa, vjerojatno da ih u svakoj epohi izmiješaš i da ideš po redu. Tad si siguran da si prošao sve uzorke tijekom učenja, ali isto da inicijalni redoslijed podataka ne utječe na performanse mreže, bar ne sam po sebi.


Dootz

Kod uzimanja onoliko točaka koliki mi je ulaz od svih točaka jednog pisanja, koliko je bitno ono uzimanje udaljenosti? Čini mi se da je to dodatna zajebancija pa bi rađe samo uzeo uniformno po indeksima i bok, eventualno uzeo više točaka sam da to ne moram napraviti


Ducky

Dobre vijesti: uspio predat pol ure prije roka.
Loše vijesti: kod ispod je precizniji od mojih 200 linija…

def train(self):
‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎print(“Trained!”)

def evaluate(self):
‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎print(“Alfa!”)


ana

Jel imao netko labos? ako da, jel oni otvore kod, ili ga mi otvaramo i screen shareamo?


Ducky

anci joj fala, skoro sam otišo sutra na faks.
čekaj…, jel on pod 4. labos je od 17.1. mislio na 6. i 7. labos, a od danas 4. i 5.?


Ducky

anci screen shareamo


bodilyfluids

Ducky trebalo bi tako biti, da


« Prethodna stranica