Разница между тремя алгоритмами градиентного спуска (BGD, SGD, MBGD)

искусственный интеллект глубокое обучение

предисловие

Мы часто задаем размер_пакета при обучении сети. Для чего нужен этот размер_пакета? Насколько большим должен быть набор данных из 10 000 изображений? В чем разница между установкой его на 1, 10, 100 или 10 000?

# 手写数字识别网络训练方法
network.fit(
  train_images,
  train_labels,
  epochs=5,
  batch_size=128)

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

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

Пакетный градиентный спуск — самая примитивная форма градиентного спуска. Его идея состоит в том, чтобы использовать все данные обучения для обновления градиента вместе. Алгоритм градиентного спуска должен брать производную функции потерь. Вполне возможно, что если набор обучающих данных относительно большой, все данные необходимо прочитать вместе, обучить их в сети вместе и суммировать их вместе, это будет огромная матрица, и объем вычислений будет огромным. Конечно, это тоже выгодно, ведь учитывая все обучающие выборки, сеть должна оптимизироваться в сторону оптимального (экстремального) значения.

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

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

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

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

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

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

对比图

Суммировать

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

  • Эта статья была впервые опубликована с:RAIS