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

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

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

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

  1. Вычислить наклон (градиент), который является производной первого порядка функции в текущей точке.
  2. Двигаться в направлении, противоположном увеличению уклона от текущей точки на вычисленную величину

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

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

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

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

Преимущества стохастического градиентного спуска

  1. Его легче вписать в память за счет того, что сеть обрабатывает одну обучающую выборку.
  2. Это быстрое вычисление, так как одновременно обрабатывается только один образец.
  3. Для больших наборов данных он может сходиться быстрее, поскольку вызывает более частое обновление параметров.
  4. Из-за частых обновлений шаги, предпринимаемые в направлении минимумов функции потерь, имеют колебания, которые могут помочь выйти из локальных минимумов функции потерь (в случае, если вычисленное положение оказывается локальным минимумом)

Недостатки стохастического градиентного спуска

  1. Из-за частых обновлений шаги, предпринимаемые в направлении минимумов, очень шумны. Это часто может привести к градиентному спуску в других направлениях.
  2. Кроме того, из-за шумных шагов может потребоваться больше времени для достижения сходимости к минимумам функции потерь.
  3. Частые обновления требуют больших вычислительных ресурсов из-за использования всех ресурсов для обработки одной обучающей выборки за раз.
  4. Он теряет преимущество векторизованных операций, поскольку работает только с одним примером за раз.

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

Концепция выполнения градиентного спуска такая же, как и у стохастического градиентного спуска. Разница в том, что вместо обновления параметров сети после вычисления потери каждой обучающей выборки в обучающем наборе параметры обновляются один раз, то есть после того, как все обучающие примеры были переданы через сеть. Например, если набор обучающих данных содержит 100 обучающих примеров, то параметры нейронной сети обновляются один раз. Уравнение на рисунке 2 повторяется только один раз.

Преимущества пакетного градиентного спуска

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

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

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

Мини-партия с градиентным спуском: компромисс

Это смесь стохастического и пакетного градиентного спуска. Обучающий набор разделен на несколько групп, называемых партиями. В каждом пакете есть несколько обучающих выборок. Одновременно через сеть проходит один пакет, который вычисляет потерю каждой выборки в пакете и использует их среднее значение для обновления параметров нейронной сети. Например, предположим, что обучающий набор содержит 100 обучающих примеров, которые разделены на 5 пакетов, каждый из которых содержит 20 обучающих примеров. Это означает, что уравнение на рисунке 2 будет повторяться более 5 раз (количество партий).

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

  1. Легко помещается в памяти
  2. Вычислительно эффективен
  3. Воспользуйтесь векторизацией
  4. Если застрять в локальных минимумах, некоторые шумные шаги могут выйти из них.
  5. Среднее значение обучающих выборок дает стабильные градиенты ошибок и сходимость.

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

Если вам понравился этот пост или он был полезен, пожалуйста, оставьте аплодисменты!

Если вы обнаружите какие-либо ошибки или проблемы в этом сообщении, свяжитесь со мной по адресу [email protected], и я исправлю их.

использованная литература

[1] https://en.wikipedia.org/wiki/Gradient_descent

[2] https://www.oreilly.com/library/view/learn-arcore-/9781788830409/e24a657a-a5c6-4ff2-b9ea-9418a7a5d24c.xhtml

[3] http://eric-yuan.me/linear-regression/