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