[NAISP] Gradivo
micho
TentationeM Skini si Pytorch i možeš svaki gradijent provjeriti.
Npr. za 3×4×1 mrežu sa sigmoidom nakon skrivenog sloja bi moglo ovako nešto:
import torch
l1 = torch.nn.Linear(3, 4)
a1 = torch.nn.Sigmoid()
l2 = torch.nn.Linear(4, 1)
# Ulazi i izlazi
inputs = torch.tensor([[0, 0, 1], [0, 1, 0], [1, 0, 0]])
outputs = torch.tensor([[0], [1], [2]])
loss_f = torch.nn.MSELoss()
optimizer = torch.optim.SGD([l1.parameters(), l2.parameters()], lr=1)
for i, x in enumerate(inputs):
# Forward pass
x = l1(x)
x = a1(x)
x = l2(x)
# Backward pass
loss = 0.5 * loss_f(x, outputs[i])
loss.backward()
print(f"Gradijenti l1 težina:\n{l1.weight.grad}")
print(f"Gradijenti l2 težina:\n{l2.weight.grad}")
print(f"Gradijenti l1 pomaka:\n{l1.bias.grad}")
print(f"Gradijenti l2 pomaka:\n{l2.bias.grad}\n")
# Ažuriranje parametara
optimizer.step()
# Reset gradijenata, pomaknuti izvan for petlje ako se radi o grupnom učenju
optimizer.zero_grad()
Za specifične početne težine, mogu se inicijalizirati s npr.
torch.nn.init.constant_(l1.weight, 1)
torch.nn.init.constant_(l1.bias, 1)
ovo će postaviti težine i pomake 1. sloja na 1.
Kladivec
Zna netko kako riješiti ovaj zadatak? Nije mi jasan ovaj dio s aktivacijskim f-jama za izlaz 1 i 2.
micho
Kladivec Budem stavio to danas (dobio sam sve bodove iz toga), samo mi treba još malo da sredim ELEKRU materijale, a ono što je optimalno raditi je računati gradijente element po element, pa se backprop za različite aktivacije može napisati kao vektor formula i primijeniti elementwise na gradijent po izlazu
U ovom slučaju bi umjesto formule za EA bila:
EA^0 = EI^0 \cdot^* \begin{bmatrix} & \frac{\partial{y}}{\partial{tanh(x)}} & \\\\ & \frac{\partial{y}}{\partial{y}} & \end{bmatrix}
ssbb
M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽ čisto da bacim svojih 5 centi, kada god se računaju greške matrice EI (za h i za 0, dakle EIh i EI0), ako su svi neuroni sigmoid, onda se koristi ona formula iz podsjetnika EA .* y .* (1 - y). Ono što je bitno zapamtit je da je ovaj y * (1 - y) zapravo derivacija izlaza neurona po ulazu u neuron. Neka je “u” ulaz u neuron, a “y” izlaz iz neurona nakon njegove aktivacijske funkcije. Za sigmoid imamo derivaciju: sigmoid’(u) = sigmoid(u) * (1 - sigmoid(u)) što je jednako y .* (1 - y), pri čemu je y izlaz iz neurona, odnosno sigmoid(u). Zato je formula EI = EA .* y .* (1 - y). Ako je neuron adaline, derivacija je uvijek jedan (adaline je pravac), pa je EI = EA .* 1 = EA. Ako su u sloju dve razlicite funkcije aktivacije, onda ih samo “kombiniramo”. Npr ako je gornji neuron tanh, a donji sigmoid, imamo ovo što je @M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽ gore napisao.
TentationeM
Koliko su vam nakraju ispali rezultati neuronke iz ovogodišnjeg JIR-a?
doakes
Moze netko jednostavno napisati rjesenje(postupak) zadatka ovog sa neuronskim mrezama, a ne samo objasnjavati?
micho
doakes Daj mi 1-2 sata, da dođem doma i natipkan to, jučer sam nakon egzorcizma s latexom imao premalo snage napisati
stateboli
doakes rješenje su 0, za svaki izlaz njegovu aktivacijsku fju, tanh znači da se y*(1-y) množi sa 4 zbog derivacije tanh
orb-of-sadder
Jel moze netko objasniti sta se tocno trazi u ovom zadatku ? +
micho
orb-of-sadder Dvofazni simpleks + 2 linearna programa u b (tako je rekao Brčić)
micho
Stavio sam 2. zadatak na materijale, kad dovršim ispitni template ću staviti cijeli ispit:
sara
zna li netko kako ovo rjesiti?pretpostavljam da moramo skuziti kojim su redom upisana slova, pa po tom skicirati rb stablo , ali kako
micho
Gragas Nemaš baš nešto za skužiti, dali su ti BFS ispis, nacrtaj stablo tako da zadovoljava pravila i čitaj crvene čvorove
Prve 3 razine su ti potpune, A G S U Z O moraš skužiti kak staviti da bi bilo dobro binarno stablo
sara
Dobro znaci ovo je stablo onda, i koji su mi sad tu crveni cvorovi? zar to ne ovisi o redosljedu upisivanja podataka?
Još jedno pitanje, jeli u RB stablu uvijek samo zadnja razina djelomicno popunjena, tj.jeli ono uvijek savrseno uravnotezeno?
micho
Gragas Dobro znaci ovo je stablo onda
Ovo nije binarno stablo nikako, S je veće od I
Gragas zar to ne ovisi o redosljedu upisivanja podataka?
Nebitno za zadatak
Gragas Još jedno pitanje, jeli u RB stablu uvijek samo zadnja razina djelomicno popunjena, tj.jeli ono uvijek savrseno uravnotezeno?
Da
EDIT: RB stablo je savršeno uravnoteženo ali to ne znači da mu je samo zadnja razina djelomično popunjena, nije nužno savršeno uravnoteženo
fPolic
M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽
Nije RB savrseno balansirano, unesi npr. brojeve od 1-7 tim redom u stablo
A za zadatak ovaj, kad binarno stablo napravis, vidjet ces da je O sam u novoj razini, pa sigunrno nemoze bit crn jer bi postojao put od M -> O koji ima jedan crni cvor vise od ostalih puteva od M do nekog lista, za root znas da je crn, i ostalo si gledas da ti svi putevi od root do lista prolaze istim brojem crnih cvorova (vise rjesenja?)
micho
fPolic Skužio sam lapsus i ispravio, idem spavati sad
sara
d?
doakes
Gragas Mislim da je cak b), jer ako izbrises neki cvor moze doci do narusavanja ravnoteze u njegovom višem sloju a ne samo u trenutnom…. ispravite me ako sam krivo razumio
doakes
Je li postoji slučaj dvofaznog simpleksa kada se trazi MIN i imamo par jednadzbi u kojoj su npr 2 jednadbe imaju >= , dok jedna ima <= , kako onda dalje? ( ja koristim postupak ono gdje matricu transponiram pa trazim max od toga gdje prepostavim da su sve te nove jednadzbe pod uvjetom <=, sad jeli se tu prebacilo >= u <= i ako da sta onda ako je orginalno bilo <=?)
fPolic
b) je istina, (kod dodavanja; prvi i jedini koji treba intervenciju je onaj kojem je FR = +/- 2)
d) je takoder istina
c je neistina jer FR je jednak razlici visina podstabala, a ne razlici FR od djece?
sto se simplexa tice, kod dvofaznog nema transponiranja matrica, kod dvofaznog dodajes umjetne varijable ako imas (= ili >=)