Параметр дельта в методе Адама

Я использую метод Адама в кафе. Он имеет параметр настройки дельта / эпсилон (используется, чтобы избежать деления на ноль). В caffe его значение по умолчанию - 1e-8. Я могу изменить его на 1e-6 или 1-e0. Из tensorflow я слышал, что этот параметр повлияет на производительность обучения, особенно на ограниченный набор данных.

Значение по умолчанию 1e-8 для epsilon в целом может быть не очень хорошим значением по умолчанию. Например, при обучении сети Inception на ImageNet текущий хороший выбор - 1.0 или 0.1.

Если кто-нибудь экспериментировал с изменением этого параметра, дайте мне совет о влиянии этого параметра на производительность?


person John    schedule 26.07.2017    source источник
comment
Насколько мне известно, все это практические правила. Это означает, что эти значения будут влиять и зависеть от данных, которые вы используете, а также от метода, который вы реализуете. Лучше всего выполнить поиск по сетке с использованием большого количества значений дельты и посмотреть производительность.   -  person seralouk    schedule 26.07.2017
comment
Каждый процесс обучения занимает 1-2 дня, поэтому поиск по сетке может занять один месяц. Очень плохо   -  person John    schedule 26.07.2017
comment
где вы запускаете код? На ноутбуке? Сервер? Вы используете все ядра?   -  person seralouk    schedule 26.07.2017
comment
Я использовал GPU TitanX с поддержкой cudnn. Я работаю на сервере   -  person John    schedule 26.07.2017
comment
Нужно ли вам проводить обучение в течение 1-2 дней, прежде чем вы получите какую-либо информацию о том, какие значения дельты являются хорошими?   -  person Ryan Stout    schedule 26.07.2017
comment
да. Поскольку покрытие моей сети очень медленное (50 000 итераций)   -  person John    schedule 26.07.2017


Ответы (1)


Рассмотрим уравнение обновления для Адама: эпсилон предотвращает деление на ноль в случае, когда (экспоненциально убывающее среднее) стандартное отклонение градиентов равно нулю.

Почему низкое значение epsilon может вызывать проблемы? Возможно, бывают случаи, когда некоторые параметры устанавливаются на хорошие значения раньше других, а слишком низкий эпсилон означает, что эти параметры получают огромную скорость обучения и отталкиваются от этих хороших значений. Я предполагаю, что это было бы более проблематично в чем-то вроде resnet, где многие слои мало влияют на большую часть примеров.

С другой стороны, установка более высокого значения epsilon ограничивает эффект скорости обучения по параметрам и снижает все скорости обучения, замедляя обучение. Можно найти примеры более высоких значений эпсилон, помогающих просто потому, что скорость обучения была слишком высокой для начала.

person Jason    schedule 26.07.2017