2016-03-22 10 views
30

Jestem studyng TensorFlow i jak go używać, nawet jeśli nie jestem ekspertem od sieci neuronowej i głębokiej nauki (tylko podstawy).Gradient Descent vs Adagrad vs Momentum w TensorFlow

Poniższe samouczki Nie rozumiem rzeczywistej i praktycznej różnicy między trzema optymalizatorami pod względem strat. Patrzę na API i rozumiem zasady, ale moje pytania są następujące:

1. Kiedy lepiej używać jednego zamiast innych?

2. Czy istnieją ważne różnice, o których należy wiedzieć?

+1

Nie ma teorii, co do których optymalizator ma lepiej działać na powiedzmy MNIST, więc ludzie wypróbowują kilka z nich i wybierają jeden, który najlepiej pasuje do ich problemu. Gradient Descent jest zwykle najgorszy ze wszystkich, Momentum/AdaGrad może być lepszy/gorszy od drugiego w zależności od zbioru danych. –

+0

Ok, potrzebuję stworzyć model do rozpoznawania obrazów z 4 - 5 klasami rozpoznawania. Jeśli używam zbioru danych Imagenet, co sugerujesz mi? – Kyrol

+0

AdamOptimizer wydaje się działać dobrze na Imagenet –

Odpowiedz

85

Oto krótkie wyjaśnienie na podstawie mojego zrozumienia:

  • pędhelps SGD poruszać się wzdłuż odpowiednich kierunków i zmiękcza oscylacje w znaczenia. Po prostu dodaje ułamek kierunku z poprzedniego kroku do bieżącego kroku. Pozwala to uzyskać wzmocnienie prędkości we właściwym kierunku i zmiękcza oscylacje w niewłaściwych kierunkach. Ta frakcja zazwyczaj znajduje się w zakresie (0, 1). Sensowne jest także wykorzystanie dynamiki adaptacyjnej. Na początku nauki duży impet będzie tylko przeszkadzał waszemu postępowi, więc sensowne jest użycie czegoś podobnego do 0.01 i gdy znikną wszystkie wysokie gradienty, można użyć większego impetu. Jest jeden problem z rozmachem: kiedy jesteśmy bardzo blisko celu, nasz pęd w większości przypadków jest bardzo wysoki i nie wie, że powinien zwolnić. To może spowodować, że będzie chybiał albo oscyluje wokół minima
  • przyspieszony gradient nesterov pokonuje ten problem, zaczynając zwalniać wcześniej. W pędzie najpierw obliczamy gradient, a następnie wykonujemy skok w tym kierunku, wzmocniony jakimkolwiek rozmachem, jaki mieliśmy wcześniej. NAG robi to samo, ale w innej kolejności: najpierw wykonujemy duży skok w oparciu o nasze zapisane informacje, a następnie obliczamy gradient i wprowadzamy niewielką korektę. Ta pozornie nieistotna zmiana daje znaczne przyspieszenia praktyczne.
  • AdaGrad lub gradient adaptacyjny umożliwia dostosowanie szybkości uczenia się w oparciu o parametry. Wykonuje większe aktualizacje dla rzadkich parametrów i mniejszych aktualizacji dla częstych. Z tego powodu dobrze nadaje się do rozrzedzonych danych (NLP lub rozpoznawanie obrazu). Kolejną zaletą jest to, że zasadniczo eliminuje potrzebę dostrajania szybkości uczenia się. Każdy parametr ma swoją własną szybkość uczenia się, a ze względu na specyfikę algorytmu szybkość uczenia się maleje monotonicznie. To powoduje największy problem: w pewnym momencie tempo uczenia się jest tak małe, że system przestaje się uczyć.
  • AdaDeltaresolves Problem monotonicznego spadku wskaźnika uczenia się w AdaGrad. W AdaGrad wskaźnik uczenia się został obliczony w przybliżeniu jako jeden podzielony przez sumę pierwiastków kwadratowych. Na każdym etapie dodajemy kolejny pierwiastek kwadratowy do sumy, co powoduje, że mianownik stale rośnie. W AdaDelta zamiast sumowania wszystkich przeszłych pierwiastków kwadratowych wykorzystuje okno przesuwne, które pozwala zmniejszyć sumę. RMSprop jest bardzo podobna do AdaDelta
  • Adama lub adaptacyjny algorytm pęd jest podobna do AdaDelta. Oprócz przechowywania współczynników uczenia dla każdego z parametrów, przechowuje również zmiany pędu dla każdego z nich osobno.

    few visualizations: enter image description here enter image description here

Powiedziałbym, że SGD, Momentum i Nesterov są gorsze niż ostatni 3.

+1

Wreszcie ktoś świeci na mnie! :) Naprawdę dzięki za odpowiedź! – Kyrol

+7

Dzięki za niesamowity post! smutne, ale prawdziwe, właśnie zapisałem się, aby dać ci +1 ze względu na GIF-y –

+2

to, proszę pana, jest przemyślaną odpowiedzią –

Powiązane problemy