Обучение нейросетей на основе SGD и Adam

Статья объясняет принцип работы популярных методов оптимизации SGD и Adam для обучения нейронных сетей. Рассматриваются формулы преимущества и недостатки каждого подхода

Обучение нейросетей на основе SGD и Adam

SGD (Stochastic Gradient Descent)

SGD — это один из наиболее распространенных методов оптимизации для обучения нейросетей. Основная идея SGD заключается в следующем:

  • Берется батч (подмножество) данных для обучения
  • Вычисляется градиент функции потерь по отношению к весам модели
  • Веса обновляются в направлении, противоположном градиенту, чтобы уменьшить функцию потерь

Математически один шаг SGD выглядит следующим образом:

w = w - η ∇Q(w;x,y) 

где:
w — вектор весов модели
η — скорость обучения (learning rate)
∇Q(w;x,y) — градиент функции потерь по отношению к w
Преимущества SGD:

  • Простота реализации
  • Эффективность для больших данных, так как используются не все данные, а только батчи

Недостатки SGD:

  • Медленная сходимость из-за шума при вычислении градиентов на маленьких батчах данных
  • Необходимость правильной настройки скорости обучения

Adam

Adam (Adaptive Moment Estimation) — адаптивный алгоритм оптимизации, который вычисляет индивидуальные скорости обучения для каждого параметра модели.
Ключевые особенности Adam:

  • Использует оценки первого (среднее) и второго (дисперсия) моментов градиента для адаптации скоростей обучения
  • Сходится быстрее, чем классический SGD за счет адаптивности скоростей обучения
  • Устойчив к резким изменениям градиента, так как придает больший вес градиентам с меньшей дисперсией

Формулы обновления весов в Adam:

m = β1*m + (1 - β1)*dx   # обновление 1го момента (среднего)
v = β2*v + (1 - β2)*(dx**2)   # обновление 2го момента (дисперсии) 

x += - learning_rate * m / (np.sqrt(v) + eps)

где:
m — оценка 1го момента
v — оценка 2го момента
β1, β2 — коэффициенты сглаживания (обычно 0.9 и 0.999)
eps — малое число для стабильности
Преимущества Adam:

  • Быстрая сходимость
  • Малая чувствительность к выбору гиперпараметров (таких как скорость обучения)
  • Хорошо подходит для обучения с большим количеством параметров и на больших объемах данных

Вопросы и ответы

В чем главное отличие между SGD и Adam?

Главное отличие в том, что SGD использует фиксированную скорость обучения, а Adam подстраивает скорость обучения для каждого параметра на основе оценок 1го и 2го моментов градиента. Благодаря этому Adam сходится быстрее и более устойчив к резким изменениям градиента.

Как выбрать скорость обучения в SGD?

Скорость обучения в SGD обычно выбирается эмпирически, на основе опыта. Хорошей стратегией является начать с небольшого значения (0.01) и увеличивать при необходимости. Слишком большая скорость обучения может привести к дивергенции и нестабильности обучения.

Какие гиперпараметры нужно настраивать в Adam?

В Adam основными гиперпараметрами являются скорость обучения, β1, β2. Скорость обучения можно оставить по умолчанию 0.001. β1 и β2 ставятся обычно около 0.9 и 0.999 соответственно. Их можно менять для ускорения или замедления адаптации скоростей обучения.

Оцените статью
Учеба легко