Найти в Дзене

Оптимизаторы (Optimizers). Обзор оптимизаторов в глубоком обучении

Оглавление

Алгоритмы оптимизации играют ключевую роль в обучении моделей глубокого обучения. Они отвечают за обновление параметров модели для минимизации функции потерь, которая измеряет разницу между прогнозами модели и фактическими данными. Выбор алгоритма оптимизации может значительно повлиять на производительность модели как в плане скорости, так и точности. В этой статье представлен подробный обзор различных алгоритмов оптимизации, используемых в глубоком обучении, включая их математические формулы, характеристики и области применения.

Градиентный спуск (Gradient Descent)

Это самый базовый оптимизатор, который напрямую использует производную функции потерь и скорость обучения для уменьшения потерь и достижения минимума. Веса обновляются, когда рассчитывается градиент всего набора данных, что замедляет процесс. Алгоритм GD - один из наиболее понятных оптимизаторов в глубоком обучении. Его формула выглядит следующим образом:

-2

Здесь a - это текущая позиция (или значение), alpha - это скорость обучения, а f'(a) - это производная функции в точке a.

Стохастический градиентный спуск (Stochastic Gradient Descent)

Термин «стохастический» означает случайность, на которой строится алгоритм. Вместо того чтобы принимать весь набор данных для всех итераций, стохастический градиент позволяет вам выбирать партии данных случайным образом. Это означает, что вам нужно взять только несколько образцов из набора данных. Таким образом, делается вывод, что оптимизатор SGD в глубоком обучении предпочтительнее, если данные массовые, а вычислительное время значительное. Правило обновления аналогично GD:

-3

Мини-пакетный градиентный спуск (Mini-Batch Gradient Descent)

Еще один вариант этого подхода GD - мини-пакет, где параметры модели обновляются в небольших размерах пакетов. Это означает, что после каждого n пакетов параметры модели будут обновляться, и это гарантирует, что модель движется к минимуму за меньшее количество шагов, не часто сбиваясь с пути. Это приводит к меньшему использованию памяти и низкому разбросу в модели. Правило обновления аналогично GD:

-4

Градиентный спуск на основе импульса (Momentum Based Gradient Descent)

Давайте вернемся к методу, который мы используем для обновления параметров. На основе первой производной функции потерь мы обратно распространяем градиенты. Частота обновлений может быть после каждой итерации, пакета или в конце, но мы не учитываем, сколько у нас обновлений в параметрах. Если этот элемент истории включен в следующие обновления, то это может ускорить весь процесс, и это то, что означает импульс в этом оптимизаторе. Этот элемент истории похож на то, как наш разум запоминает вещи. Если вы идете по улице и проходите довольно большое расстояние, то вы будете уверены, что ваш пункт назначения находится на некотором расстоянии впереди, и вы увеличите скорость.

Этот элемент зависит от предыдущего значения, скорости обучения и нового параметра под названием гамма, который контролирует это обновление истории. Правило обновления будет что-то вроде w = w – v, где v - это элемент истории.

-5

Ускоренный градиент Нестерова (Nesterov Accelerated Gradient)

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

-6

Adagrad

Решение для этого - иметь адаптивную скорость обучения, которая может меняться в соответствии с предоставленным входом. Оптимизатор Adagrad пытается предложить эту адаптивность, уменьшая скорость обучения пропорционально обновленной истории градиентов.

Это означает, что когда есть большие обновления, элемент истории накапливается, и, следовательно, он уменьшает скорость обучения и наоборот. Одним из недостатков этого подхода является то, что скорость обучения уменьшается агрессивно, и через некоторое время она стремится к нулю.

-7

RMSProp

Это улучшение оптимизатора Adagrad. Это направлено на снижение агрессивности скорости обучения путем взятия экспоненциального среднего градиентов вместо накопительной суммы квадратов градиентов. Адаптивная скорость обучения остается неизменной, так как теперь экспоненциальное среднее будет наказывать большую скорость обучения в условиях, когда обновлений меньше, и меньшую скорость при большем количестве обновлений.

-8

Adam

Адаптивная оценка момента объединяет возможности RMSProp (корень из среднеквадратичного проп) и GD на основе импульса. В оптимизаторах Adam, способность GD на основе импульса удерживать историю обновлений и адаптивную скорость обучения, предоставляемую RMSProp, делает оптимизатор Adam мощным методом.

-9

Здесь a - это текущая позиция (или значение), alpha - это скорость обучения, f'(a) - это производная функции в точке a, v - это скорость (элемент истории), gamma - это импульс, G - это накопленный квадратный градиент, epsilon - это маленькое число, чтобы предотвратить деление на ноль, g_t - это градиент на временном шаге t, E[g^2]_t - это ожидание квадратных градиентов на временном шаге t, m_t и v_t - это оценки первого момента (среднее значение) и второго момента (несмещенная дисперсия) градиентов соответственно, beta1 и beta2 - это скорости экспоненциального затухания для оценок момента, а m_hat и v_hat - это исправленные на смещение оценки первого и второго момента.

Заключение

Алгоритмы оптимизации - это фундаментальная часть обучения моделей глубокого обучения. Они направляют процесс обучения, итеративно обновляя параметры модели для минимизации функции потерь. Выбор алгоритма оптимизации может значительно повлиять на скорость и точность процесса обучения. Понимание различных типов оптимизаторов и их характеристик может помочь в выборе наиболее подходящего для данной задачи. По мере продолжения исследований в этой области мы можем ожидать появления новых и улучшенных алгоритмов оптимизации, которые могут еще больше повысить производительность моделей глубокого обучения.

Весь код, и даже больше, в моем телеграм канале.