В этой статье мы поговорим о математике градиентного спуска, о том, почему стохастический градиентный спуск используется при обучении нейронных сетей, а также о вариации SGD (Stochastic Gradient Descent) с использованием скользящего среднего (SGD с импульсом и ускоренного градиента Нестерова).
Градиентный спуск
Предполагается, что вы знакомы с понятием нейронной сети, имеете представление о том, какие задачи можно решить с помощью этого алгоритма машинного обучения и каковы параметры (веса) нейронной сети.Также важно понимать, что градиент функции — это направление наиболее быстрого роста функции, а градиент, взятый с минусом, — это направление наиболее быстрого убывания.
– антиградиент функционала,
Где
— параметры функции (веса нейронной сети),
— функциональность ошибки.
Обучение нейронной сети — это процесс, в котором подбираются оптимальные параметры модели с точки зрения минимизации функционала ошибок.
Другими словами, осуществляется поиск параметров функции, при которых достигается минимальный функционал ошибки.
Это происходит с помощью итерационного метода оптимизации функционала — градиентного спуска.
Процесс можно записать следующим образом:
Где
это номер шага,
— размер шага обучения.
В результате этапа оптимизации веса нейронной сети принимают новые значения.
Виды градиентного спуска
- Пакетный градиентный спуск .
При таком подходе градиент функционала обычно рассчитывается как сумма градиентов, учитывающих сразу каждый элемент обучения.
Это хорошо работает в случае выпуклых и относительно гладких функционалов, например в задаче линейный или логистическая регрессия , но не так хорошо, когда мы тренируем многослойные нейронные сети.
Поверхность, определяемая функционалом ошибок нейронной сети, часто бывает негладкой и имеет множество локальных экстремумов, в которых мы обречены застрять, если будем двигаться пакетным градиентным спуском.
Кроме того, обилие обучающих данных делает задачу поиска градиента с использованием всех примеров трудоемкой.
- Стохастический градиентный спуск
Этот подход предполагает корректировку весов нейронной сети с использованием аппроксимации градиента функционала, рассчитанного только на одном случайном обучающем примере из выборки.
Метод вносит в процесс обучения «шум», что позволяет (иногда) избежать локальных экстремумов.
Также в этом варианте этапы обучения происходят чаще, и нет необходимости держать в памяти градиенты всех обучающих примеров.
Под SGD часто понимают тот, который описан ниже.
- Мини-пакетный градиентный спуск
Гибрид двух подходов SGD и BatchGD, в этом варианте параметры изменяются за счет учета случайного подмножества примеров в обучающем наборе.
Благодаря более точной аппроксимации полного градиента процесс оптимизации становится более эффективным, не теряя при этом преимуществ SGD. Поведение трех описанных вариантов хорошо показано на картинке ниже.
Источник В целом при работе с нейронными сетями веса оптимизируются путем стохастического градиентного спуска или его вариации.
Давайте поговорим о двух модификациях, использующих скользящее среднее градиентов.
SGD с импульсом и ускоренным градиентом Нестерова
Следующие две модификации SGD призваны помочь решить проблему достижения локальных минимумов при оптимизации невыпуклого функционала.
Гладкая выпуклая функция
Функция со многими локальными минимумами (источник)
Первая модификация
В SGD с импульсом на каждой новой итерации оптимизации используется скользящее среднее градиента.Движение в направлении среднего значения прошлых градиентов добавляет импульсный эффект алгоритму оптимизации, что позволяет корректировать направление следующего шага относительно исторически доминирующего направления.
Для этих целей достаточно использовать приблизительное скользящее среднее и не хранить все предыдущие значения градиента, чтобы вычислить «справедливое среднее».
Запишем формулы, определяющие этот подход:
— накопленное среднее градиентов на шаге
, коэффициент
требуется сохранение истории средних значений (обычно выбираемых близких к
.
Вторая модификация
Ускоренный градиент Нестерова отличается от импульсного метода; его особенность — расчет градиента при обновлениив отличный момент. Эта точка берется спереди по направлению движения накопленного градиента:
На картинке показаны различия между этими двумя методами.
источник
Красный вектор в первой части показывает направление градиента в текущей точке пространства параметров; этот градиент используется в стандартном SGD. Во второй части красный вектор указывает градиент, сдвинутый накопленным средним значением.
Зеленые векторы на обеих частях выделяют импульсы и накопленные градиенты.
Заключение
В этой статье мы подробно рассмотрели истоки градиентного спуска с точки зрения оптимизации нейронных сетей.Мы говорили о трех типах спуска с точки зрения используемых данных и о двух модификациях SGD, которые используют импульс для достижения более качественной оптимизации невыпуклых и негладких функционалов ошибок.
Дальнейшее изучение темы предполагает анализ адаптивных к частоте встречаемости подходов, таких как Adagrad, RMSProp, ADAM.
Эта статья написана в преддверии старта курса «Математика для науки о данных» от ОТУС.Теги: #Машинное обучение #математика #нейронные сети #глубокое обучение #градиентный спускЯ приглашаю всех запишитесь на демо-день курса , где вы сможете подробно узнать о курсе и процессе обучения, а также познакомиться с экспертами OTUS — ЗАПИСАТЬСЯ НА ДЕМО ДЕНЬ
-
Хват - Инструктор На Плече
19 Oct, 24 -
Делаем Моноблок Acer Из Ноутбука
19 Oct, 24 -
Реактивное Программирование
19 Oct, 24 -
Опрос По Тестированию Социальной Магии
19 Oct, 24 -
Карта Мира Социальных Сетей
19 Oct, 24