Вказівки щодо вибору оптимізатора для тренування нейронних мереж


18

Я вже деякий час використовую нейронні мережі. Однак одне, з чим я постійно борюся, - це вибір оптимізатора для тренінгу в мережі (використовуючи backprop). Що я зазвичай роблю, це просто почати з одного (наприклад, стандартний SGD), а потім спробувати інші інші, майже випадковим чином. Мені було цікаво, чи є кращий (і менш випадковий) підхід до пошуку хорошого оптимізатора, наприклад з цього списку:

  • SGD (з або без імпульсу)
  • AdaDelta
  • АдаГрад
  • RMSProp
  • Адам

Зокрема, мене цікавить, чи є якесь теоретичне обгрунтування вибору одного над іншим, враховуючи, що дані тренувань мають певну властивість, наприклад, вони є рідкісними. Я б також міг уявити, що деякі оптимізатори працюють краще, ніж інші в конкретних областях, наприклад, коли тренують конволюційні мережі проти мереж подачі вперед або класифікацію проти регресії.

Якщо хтось із вас розробив якусь стратегію та / або інтуїцію щодо вибору оптимізаторів, мені було б дуже цікаво почути це. Крім того, якщо є якась робота, яка дає теоретичне обгрунтування вибору один за одним, це було б ще краще.

Відповіді:


3

1) AdaGrad занадто різко штрафує ступінь навчання для параметрів, які часто оновлюються, і дає більше швидкості навчання для рідких параметрів, параметрів, які не оновлюються так часто. У ряді проблем часто найважливіша інформація присутня в даних, які не такі часті, але рідкісні. Тож якщо проблема, з якою ви працюєте, має справу з розрідженими даними, такими як tf-idf тощо. Адаград може бути корисним.

2) AdaDelta, RMSProp майже працює на подібних лініях, з тією лише різницею в Ададельті, для якої не потрібно початкової постійної швидкості навчання.

3) Адам поєднує в собі хороші властивості Ададельти та RMSprop, а отже, як правило, краще для більшості проблем.

4) Стохастичний градієнтний спуск дуже основний і зараз його рідко використовують. Одна з проблем - глобальний рівень навчання, пов'язаний з тим самим. Отже, він не працює добре, коли параметри знаходяться в різних масштабах, оскільки низький рівень навчання зробить навчання повільним, а велика швидкість навчання може призвести до коливань. Також стохастичний градієнтний спуск, як правило, важко уникає сідлових точок. Adagrad, Adadelta, RMSprop і ADAM, як правило, краще обробляють точки сідла. SGD з імпульсом надає деяку швидкість оптимізації, а також допомагає краще уникнути місцевих мінімумів.


2

Мій особистий підхід полягає в тому, щоб вибрати оптимізатор, який є найновішим (тобто найновішим, що публікується в журналі), тому що вони зазвичай повідомляють результати на стандартних наборах даних, або перемагають сучасний рівень, або обидва. Наприклад, коли я використовую Caffe, я завжди використовую Адама ( http://arxiv.org/abs/1412.6980 ).


0
Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=None, schedule_decay=0.004)

Начебто Adamпо суті RMSpropз імпульсом, Nadamце Адам RMSpropз імпульсом Нестерова.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.