Математика, Лежащая В Основе Оптимизаторов Нейронных Сетей

В этой статье мы поговорим о математике градиентного спуска, о том, почему стохастический градиентный спуск используется при обучении нейронных сетей, а также о вариации SGD (Stochastic Gradient Descent) с использованием скользящего среднего (SGD с импульсом и ускоренного градиента Нестерова).



Математика, лежащая в основе оптимизаторов нейронных сетей



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

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

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



Математика, лежащая в основе оптимизаторов нейронных сетей

– антиградиент функционала, Где

Математика, лежащая в основе оптимизаторов нейронных сетей

— параметры функции (веса нейронной сети),

Математика, лежащая в основе оптимизаторов нейронных сетей

— функциональность ошибки.

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

Другими словами, осуществляется поиск параметров функции, при которых достигается минимальный функционал ошибки.

Это происходит с помощью итерационного метода оптимизации функционала — градиентного спуска.

Процесс можно записать следующим образом:

Математика, лежащая в основе оптимизаторов нейронных сетей



Математика, лежащая в основе оптимизаторов нейронных сетей

Где

Математика, лежащая в основе оптимизаторов нейронных сетей

это номер шага,

Математика, лежащая в основе оптимизаторов нейронных сетей

— размер шага обучения.

В результате этапа оптимизации веса нейронной сети принимают новые значения.



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

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

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

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

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

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

  • Стохастический градиентный спуск Этот подход предполагает корректировку весов нейронной сети с использованием аппроксимации градиента функционала, рассчитанного только на одном случайном обучающем примере из выборки.

    Метод вносит в процесс обучения «шум», что позволяет (иногда) избежать локальных экстремумов.

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

    Под SGD часто понимают тот, который описан ниже.

  • Мини-пакетный градиентный спуск Гибрид двух подходов SGD и BatchGD, в этом варианте параметры изменяются за счет учета случайного подмножества примеров в обучающем наборе.

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



Математика, лежащая в основе оптимизаторов нейронных сетей

Источник В целом при работе с нейронными сетями веса оптимизируются путем стохастического градиентного спуска или его вариации.

Давайте поговорим о двух модификациях, использующих скользящее среднее градиентов.



SGD с импульсом и ускоренным градиентом Нестерова

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



Математика, лежащая в основе оптимизаторов нейронных сетей

Гладкая выпуклая функция

Математика, лежащая в основе оптимизаторов нейронных сетей

Функция со многими локальными минимумами (источник)

Первая модификация

В SGD с импульсом на каждой новой итерации оптимизации используется скользящее среднее градиента.

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

Для этих целей достаточно использовать приблизительное скользящее среднее и не хранить все предыдущие значения градиента, чтобы вычислить «справедливое среднее».

Запишем формулы, определяющие этот подход:

Математика, лежащая в основе оптимизаторов нейронных сетей



Математика, лежащая в основе оптимизаторов нейронных сетей



Математика, лежащая в основе оптимизаторов нейронных сетей

— накопленное среднее градиентов на шаге

Математика, лежащая в основе оптимизаторов нейронных сетей

, коэффициент

Математика, лежащая в основе оптимизаторов нейронных сетей

требуется сохранение истории средних значений (обычно выбираемых близких к

Математика, лежащая в основе оптимизаторов нейронных сетей

.



Вторая модификация

Ускоренный градиент Нестерова отличается от импульсного метода; его особенность — расчет градиента при обновлении

Математика, лежащая в основе оптимизаторов нейронных сетей

в отличный момент. Эта точка берется спереди по направлению движения накопленного градиента:

Математика, лежащая в основе оптимизаторов нейронных сетей



Математика, лежащая в основе оптимизаторов нейронных сетей

На картинке показаны различия между этими двумя методами.



Математика, лежащая в основе оптимизаторов нейронных сетей

источник Красный вектор в первой части показывает направление градиента в текущей точке пространства параметров; этот градиент используется в стандартном SGD. Во второй части красный вектор указывает градиент, сдвинутый накопленным средним значением.

Зеленые векторы на обеих частях выделяют импульсы и накопленные градиенты.



Заключение

В этой статье мы подробно рассмотрели истоки градиентного спуска с точки зрения оптимизации нейронных сетей.

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

Дальнейшее изучение темы предполагает анализ адаптивных к частоте встречаемости подходов, таких как Adagrad, RMSProp, ADAM.

Эта статья написана в преддверии старта курса «Математика для науки о данных» от ОТУС.

Я приглашаю всех запишитесь на демо-день курса , где вы сможете подробно узнать о курсе и процессе обучения, а также познакомиться с экспертами OTUS — ЗАПИСАТЬСЯ НА ДЕМО ДЕНЬ

Теги: #Машинное обучение #математика #нейронные сети #глубокое обучение #градиентный спуск
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.