Обзор алгоритмов оптимизации Градиентного Спуска 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обзор алгоритмов оптимизации Градиентного Спуска



Оглавление

Обзор алгоритмов оптимизации Градиентного Спуска. 1

Градиентный спуск. 2

Варианты градиентного спуска. 2

Пакетный градиентный спуск. 2

Стохастический градиентный спуск. 3

Мини-пакетный градиентный спуск. 4

Вызовы для преодоления. 4

Алгоритмы оптимизации градиентного спуска. 5

Имупльс (momentum) 5

Ускоренный градиент Нестерова. 5

Adagrad. 6

Adadelta. 7

RMSprop. 8

Adam.. 8

AdaMax. 9

Nadam.. 9

AMSGrad. 10

Визуализация алгоритмов. 11

Какой оптимизатор использовать?. 12

Распараллеливание и распределение по вычислителям SGD.. 12

Hogwild (экстремально увлечённый, вышедший из под контроля) 13

Downpour SGD (ливень/поток) 13

Ускойчевый к задержке алгоритм SGD (delay-tolerant) 13

TensorFlow.. 13

Эластичное усреднение SGD.. 13

Дополнительные стратегии для оптимизации SGD.. 13

Перемешивание и учебный план обучения. 13

Пакетная нормализация. 14

Ранняя остановка. 14

Градиент шума. 14

Заключение. 14

 

Градиентный спуск

Градиентный спуск – один из самых популярных алгоритмов оптимизации и, безусловно, самый распространенный способ оптимизации нейронных сетей. В то же время каждая современная библиотека глубокого обучения содержит реализации различных алгоритмов градиентного спуска (например, lasagne, caffe и keras). Эти алгоритмы-оптимизаторы часто используются как «чёрный ящик», т.к. трудно найти практическое объяснение их сильных и слабых сторон.

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

 

Градиентный спуск – это способ минимизировать целевую функцию J(θ) модели, параметризованную θ ∈ Rd, путём обновления параметров в обратном направлении к градиенту целевой функции θ J(θ).

Скорость обучения η (learning rate) определяет размер шагов, которые нужно предпринять для достижения (локального) минимума.

Другими словами, следуем направлению наклона поверхности, созданной целевой функцией вниз, пока не достигнем долины. Если вы не знакомы с градиентным спуском, можете найти хорошее введение в оптимизацию нейронных сетей.

Варианты градиентного спуска

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

Пакетный градиентный спуск

Старый добрый градиентный спуск, известный как пакетный градиентный спуск, вычисляет градиент функции стоимости (cost function) относительно параметров θ для всего обучающего массива данных (dataset):

θ =θ − η ⋅∇ θ J(θ)

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

Для заранее определённого числа эпох сначала вычисляем вектор градиента params_grad функции потерь (loss function) для всего массива данных относительно вектора параметров params. Отметьте, что современные библиотеки глубокого обучения обеспечивают автоматическое дифференцирование, которое эффективно вычисляет градиент по нескольким параметрам. Если вы вычисляете градиенты самостоятельно, тогда проверка градиентов – это необходимость (см. здесь несколько полезных советов о том, как правильно проверять градиенты).

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



Поделиться:


Последнее изменение этой страницы: 2019-11-02; просмотров: 178; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.187.121 (0.006 с.)