RMSProp и Адам против SGD


12

Я выполняю эксперименты на валидации EMNIST, используя сети с RMSProp, Adam и SGD. Я достиг 87% точности с SGD (скорость обучения 0,1) и отсева (0,1 отсева), а также регуляризация L2 (1e-05 штраф). При тестировании точно такой же конфигурации с RMSProp и Adam, а также с начальной скоростью обучения 0,001 я достигаю точности 85% и значительно менее плавной кривой обучения. Я не знаю, как объяснить это поведение. Что может быть причиной отсутствия плавности в кривой обучения, а также низкой точности и более высокой частоты ошибок?


Это зависит от сети. Можете ли вы показать нам подробности о сети? Также вы можете предоставить кривые обучения?
Мемминг

Это сеть из 5 уровней (Dropout, Affine, ELU в каждом слое), настроенная следующим образом: 150 скрытых измерений, используемая функция активации ELU, скорость обучения 0,1 для SGD, скорость обучения 0,001 для RMS и Adam, регуляризация L2 с 1e -05 штраф, выпадение с вероятностью исключения 0,1.
Алк

И когда вы говорите «точно такая же конфигурация ... начальная скорость обучения 0,001», вы имеете в виду, что вы использовали другую скорость обучения или вы провели два эксперимента: один с одинаковой скоростью обучения, а другой - с другой? Это может зависеть от того, какое программное обеспечение вы используете, какие параметры по умолчанию и какие.
Уэйн

Поэтому я использовал 0,1 для SGD и 0,001 для Adam и RMSProp. Это потому, что когда я запустил Adam и RMSProp со скоростью обучения 0,1, они оба показали плохие результаты с точностью до 60%. Кроме того, 0,001 является рекомендуемым значением в статье об Адаме.
Алк

Вы должны опубликовать кривые обучения, а также то, измеряете ли вы ошибку на тестовых или обучающих данных.
Якуб Барчук

Ответы:


4

После изучения нескольких статей в Интернете и документации Keras было предложено рекомендовать оптимизатор RMSProp для рекуррентных нейронных сетей. https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L209

Stochastic Gradient Descent, кажется, использует свою скорость обучения и импульс между каждой партией для оптимизации весов модели на основе информации о функции потерь, в моем случае это «categoryor_crossentropy».

Я предлагаю http://ruder.io/optimizing-gradient-descent/index.html дополнительную информацию об алгоритмах оптимизации.


Я не уверен, что вы подразумеваете под "оптимизатором RMSProp, рекомендованным для периодических нейронных сетей". Ссылка, которую вы указали, теперь не работает, и нигде не упоминается, что она рекомендуется.
Харшал Парех
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.