Training Deep Neural Networks Flashcards
Na czym polega Vanishing Gradient Problem?
Gradient coraz bardziej maleje i praktycznie nie zmienia wag polaczen -> nie osiagnie dobrego rozwiazania
Exploding Gradients Problem
gradient coraz to rosnie, zostawiajac ogroomne wagi polaczen -> rozbieznosc
Unstable Gradients
rozne warstwy ucza sie z innymi predkosciami
Problemy funkcji sigmoid
srednia 0.5 zamiast 0,
kiedy inputy sa bezwglednie duze, funkcja bardzo sie zbliza do 1 lub 0, a pochodna do 0 -> bardzo maly gradient
Czym sa fan-in i fan-out
liczba inputow i outputow warstwy
Na czym polega inizjalizacja Glorota?
wariancja outputoq powinna byc rowna wariancji outputow
gradienty rowniez powinny miec rowna wariance przed i po przejsciu
kompromis: wagi polaczen powinny byc randomowe:
albo normal ditribution, srednia 0, wariancja = 1/fan_avg
albo uniform distribution, miedzy -r a r, gdzie r = sqrt(3/fan_avg)
Jaki jest zwiazek miedzy inicjalizacja LeCun a Glorota?
Zamiana fan_avg na fan_in
He inicjalization
inicjalizacja dla funkcji relu,
wariancja 2/fan_in
dying Relus
podczas trenowania, niektore neurony umieraja. zwracajac tylko 0
kiedy suma wazona inputow zawszej jest ujemna
leaky Relu
max(az,z)
a okresla jak bardzo funkcja ‘przecieka’ - jakie nachylenie dla mniejszych od zera, dzieki czemu neurony nie umieraja, a najwyzej zasypiaja
typy:
standardowa
random
parametric
ELU
Exponential Linear Unit
funkcja zastepujaca RELU,
najczesciej lepsza, ale wolniejsza
y = x dla x>=0
y=exp(x) -1 dla x<0
SELU
scaled ELU
sama sie normalizuje
warunki:
znormalizowane inputy
Lecun initialization
architektura musi byc sekwencyjne
jesli dropout to alphadropout
Batch normalization
dziala przeciwko vanishing/exploding gradients
zawsze przed albo po zastosowaniu funkcji aktywacyjnej
centruje i normalizuje kazdy input dla instancji
potem skaluje i przesuwa, wykorzystujac przygotowane do tego wektory dla kazdej warstwy -> model uczy sie optymalnej skali dla kazdej warstwy
srednia i ochylenia wylicza dla kazdego mini-batcha inputow
2 dodatkowe wektory: srednie ruchome sredniej i sd, wykorzystywane przy testowaniu
lacznie oblicza 4 wektory
Gradient Clipping
dzialanie przeciwko exploding gradients,
po prostu ograniczamy gradient do jakiegos przedzialu, czesto uzywane przy sieciach rekurencyjnych
keras.optimizers(clipvalue=1.0)
Reusing Pretrained Layers
wykorzystanie juz wytrenowanych warstw jakiejs sieci,
jesli inputy maja innae rozmiary. trzeba wykonac jakis preprocessing
dobrze wstrzymac trenowanie juz juz utworzonych i potem wlaczac po jednej warstwie
najlepiej dziala z glebokimi sieciami konwolucyjnymi
Unsupervided Pretraining
wykonywane najczesciej z RBM albo autoencoderami, kiedy mamy malo oznaczonych danych i nie mozna skorzystac z innego modelu
trenuje sie warstwa po warstwie, pozostale sa zamrozone
Restricted Boltzmann Machines
_
Pretraining on an auxiliary task
kiedy nie mamy za duzo oznaczonych danych, mozna wytrenowac siec na jakies poboczne zadanie dla ktorego latwo mozemy uzyskac labele i potem wykorzystac jego warstwy
np siec porownujaca czy na zdjeciach sa te same osoby -> siec rozpoznajaca twarze
Faster Optimizers
momentum, nesterov accelerated gradient, adagrad, rmsprop, adam and nadam
Momentum Optimization
na zasadzie przyspieszajacej kuli
w kazdej iteracji: od wektora meomentum odejmuje sie lokalny gradient, przemnozony przez learning rate
do wagi dodaje sie wektor momentum
-> gradient jest uzywany do przyspieszenia, nie szybkosci
zeby momentum nie byl zbyt duzy, wymnaza sie go przez parametr Beta (0 -1)
Nesterov Accelerated Gradient
zamist mierzyc gradient w lokalnej pozycji, mierzymy go troche dalej, w kierunku momentum
dziala bo zazwyczaj momentum jest skierowane w dobrym kierunku
AdaGrad
wykrywa kierunki gradientu i koryguje w kierunku optimum - skaluje wektor gradientu zgodnie z najbardziej stromymi wymiarami
wyznacz kwadrat gradientu do wektora s
odejmuje od wektora wag gradient podzielony elementami przed pierwiastek z wektora s + jakis epsilon,
nie dziala dobrze dla glebszych sieci
RMSProp
dziala podobnie jak Ada, ale uwzglednia tylko gradienty z ostatnich iteracji
wykorzystuje exponential decay
Adam
adaptive moment estimations,
laczy idee momentum i rmsprop
roznice - decaying average not sum,
Adamax
adam ale do skalowania uzywa l_infinity, zamiast l2, czyli max
nadam optimization
adam optimization plus nesterov trick
problem adapcyjnych metod optymalizacyjnych
moga miec problem z genrealizacja, nalezy wtedy sprobowac z nesterov
trenowanie sparse models
1 opcja: uzycie mocnej regularyzacji l1, co zeruje bardzo duzo wag
2.Dual Averaging - Follow the Regularized Leader
Learning Rate Scheduling
strategie opisujace zmiany learning rate
power scheduling
_
exponential scheduling
zmniejszanie poprzez dzielenie o 10 co s krokow
piecewise constant scheduling
stale learning rate dla roznych przedzialow epochow
performance scheduling
mierzymy blad walidacji co N krokow i zmieniamy learning rate kiedy blad nie spada
regularyzacja l1 i l2
z kazdym krokiem dodaje sie regularization loss
dropout
z kazdym krokiem, kazdy neuron oprocz outputu, ma prawdopodobiensto p bycia wyrzoconym z trenowania podczas aktualnego kroku
p - dropout rate, najczesciej 50 %
powoduje to tworzenie z kazdym krokiem unikalnej sieci
dla p =50%, przy testowaniu kazdy neuron bedzie podloczony dla 2-krotnie wiekszej liczby neuronow niz byl przy trenowaniu -> musimy pomnozyc input connection weight kazdego neurona przez 0.5
Monte Carlo Dropout
wlaczamy training mode -> wlacza dropout
robimy np 100 predykcji i przechowujemy (liczba jest hyperparametrem)
poniewaz jest wlaczamy dropout, wszystkie predykcje beda rozne
usredniamy predykcje -> dostajemy bardziej realny wynik
Max-Norm regularization
dla kazdego neurona ograniczamy wagi inputow tak ze |w|_2 <= r, gdzie r to max-norm hyperparameter
mniejsze r-> wieksza regularyzacja i mniejszy overfitting
. Maxnorm regularization can also help alleviate the vanishing/exploding gradients prob‐
lems (if you are not using Batch Normalization).
- Name three advantages of the SELU activation function over ReLU.
nie ma problemu dying relus
zredukowany czas trenowania
moze przyjmowac dowolne ujemne wartosci, przez co sredni output jest bliski zera
moze zapewniac wlasna normalizacja
In which cases would you want to use each of the following activation functions:
SELU, leaky ReLU (and its variants), ReLU, tanh, logistic, and softmax?
selu - generalnie dobra
leakyRelu - szybkosc
relu - prostota
tangent - jesli mamy output 0-1
logistic - jesli mamy ocenic prawdopodobienstwo,
softmax - jesli mamy prawdopodobienstwo i ma sie sumowac do 1
- What may happen if you set the momentum hyperparameter too close to 1 (e.g.,
- 99999) when using an SGD optimizer?
nabierze szybkosci ale moze przskoczyc minimum, moze powodowac oscylacje