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

Разница между алгоритмами градиентного спуска: пакетным градиентным спуском, стохастическим градиентным спуском и мини-пакетным градиентным спуском заключается в подмножестве данных, на которых вычисляются градиенты.

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

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

Пакетный градиентный спуск всегда будет зависать на локальном минимуме в подобном случае. Пакетный градиентный спуск — худший из алгоритмов градиентного спуска.

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

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

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

Мини-пакетный градиентный спуск или MBGD является лучшим из SGD и BGD. MBGD берет несколько случайных точек данных и рассчитывает градиенты на их основе. Это имеет много преимуществ. MBGD обеспечивает довольно хорошее представление данных, работает так же быстро, как SGD, благодаря параллельной обработке на графическом процессоре и может отскакивать от локальных минимумов, как и SGD. Тем не менее, это намного больше потерь, чем SGD, как видно на этой диаграмме, сравнивающей 3:

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

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