Wytyczne dotyczące wyboru optymalizatora do szkolenia sieci neuronowych

18

Od jakiegoś czasu korzystam z sieci neuronowych. Jednak jedną rzeczą, z którą ciągle mam problemy, jest wybór optymalizatora do szkolenia sieci (przy użyciu backprop). To, co zwykle robię, to zaczynam od jednego (np. Standardowego SGD), a następnie wypróbowuję inne dość losowo. Zastanawiałem się, czy istnieje lepsze (i mniej przypadkowe) podejście do znalezienia dobrego optymalizatora, np. Z tej listy:

  • SGD (z lub bez pędu)
  • AdaDelta
  • AdaGrad
  • RMSProp
  • Adam

W szczególności jestem zainteresowany, czy istnieje jakieś teoretyczne uzasadnienie wyboru między sobą, ponieważ dane szkoleniowe mają jakąś właściwość, np. Są rzadkie. Wyobrażam sobie również, że niektóre optymalizatory działają lepiej niż inne w określonych dziedzinach, np. Podczas szkolenia sieci splotowych vs. sieci sprzężenia zwrotnego lub klasyfikacji vs. regresji.

Jeśli któryś z was opracował strategię i / lub intuicję dotyczącą wyboru optymalizatorów, byłbym bardzo zainteresowany jego usłyszeniem. Co więcej, jeśli jest jakaś praca, która teoretycznie uzasadnia wybieranie jednej z drugiej, byłoby to jeszcze lepsze.

mplappert
źródło

Odpowiedzi:

3

1) AdaGrad zbyt surowo karze szybkość uczenia się za parametry, które są często aktualizowane, i zapewnia większą szybkość uczenia się rzadkim parametrom, które nie są aktualizowane tak często. W kilku problemach często najbardziej krytyczne informacje są obecne w danych, które nie są tak częste, ale rzadkie. Więc jeśli problem, nad którym pracujesz, dotyczy rzadkich danych, takich jak tf-idf itp. Adagrad może być przydatny.

2) AdaDelta, RMSProp prawie działa na podobnych liniach, z tą jedyną różnicą w Adadelcie, że nie wymaga początkowej stałej szybkości uczenia się.

3) Adam łączy dobre właściwości Adadelty i RMSprop i dlatego lepiej radzi sobie z większością problemów.

4) Spadek gradientu stochastycznego jest bardzo prosty i obecnie jest rzadko używany. Jednym z problemów jest związany z tym globalny wskaźnik uczenia się. W związku z tym nie działa dobrze, gdy parametry są w różnych skalach, ponieważ niski wskaźnik uczenia się spowoduje spowolnienie uczenia się, podczas gdy duży wskaźnik uczenia się może prowadzić do oscylacji. Również zejście gradientu stochastycznego z trudem wymyka się punktom siodła. Adagrad, Adadelta, RMSprop i ADAM ogólnie lepiej radzą sobie z punktami siodłowymi. SGD z pędem przyspiesza optymalizację, a także pomaga lepiej unikać lokalnych minimów.

Santanu_Pattanayak
źródło
2

Moim osobistym podejściem jest wybranie optymalizatora, który jest najnowszy (tj. Najnowszy-opublikowany-w-recenzowanym czasopiśmie), ponieważ zwykle raportują wyniki na standardowych zestawach danych lub pobijają najnowszy stan wiedzy lub oba te elementy. Kiedy na przykład używam Caffe, zawsze używam Adama ( http://arxiv.org/abs/1412.6980 ).

mprat
źródło
0
Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=None, schedule_decay=0.004)

Podobnie Adamjest RMSpropz pędem, podobnie jak NadamAdam RMSpropz pędem Niestierowa.

rigo
źródło