Насколько большим должен быть размер партии для стохастического градиентного спуска?


49

Ответы:


72

«Размер выборки» вы говорите, называется размером партии , . Параметр размера пакета - это лишь один из гиперпараметров, которые вы будете настраивать при обучении нейронной сети с помощью мини-пакета Stochastic Gradient Descent (SGD), и он зависит от данных. Самый основной метод поиска гиперпараметров - это поиск в сетке по скорости обучения и размеру пакета, чтобы найти пару, которая объединяет сеть.B

Чтобы понять, каким должен быть размер партии, важно увидеть взаимосвязь между градиентным спуском партии, SGD в режиме онлайн и SGD для мини-партии. Вот общая формула для шага обновления веса в мини-партии SGD, которая является обобщением всех трех типов. [ 2 ]

θt+1θtϵ(t)1Bb=0B1L(θ,mb)θ
  1. Пакетный градиентный спуск,B=|x|
  2. Стохастический градиентный спуск онлайн:B=1
  3. Мини-пакетный стохастический градиентный спуск: но,B>1B<|x|

Обратите внимание, что с 1 функция потерь больше не является случайной величиной и не является стохастическим приближением.

SGD сходится быстрее, чем обычный «пакетный» градиентный спуск, потому что он обновляет веса после просмотра случайно выбранного подмножества обучающего набора. Пусть будет нашим обучающим набором и пусть . Размер партии - это просто количество элементов :,xmxBmB=|m|

Пакетный градиентный спуск обновляет веса используя градиенты всего набора данных ; тогда как SGD обновляет веса, используя среднее значение градиентов для мини-партии . (Использование среднего значения в отличие от суммы не позволяет алгоритму предпринимать шаги, которые слишком велики, если набор данных очень большой. В противном случае вам нужно будет скорректировать скорость обучения на основе размера набора данных.) Ожидаемое значение этого Стохастическая аппроксимация градиента, используемого в SGD, равна детерминированному градиенту, используемому при спуске градиента партии. .θxmE[LSGD(θ,m)]=L(θ,x)

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

Допустим, у нас есть некоторый вектор данных , вектор начального веса, который параметризует нашу нейронную сеть, и функция потерь который мы пытаемся минимизировать , Если у нас есть обучающих примеров и размер пакета , то мы можем разделить эти обучающие примеры на C мини-партии:x:RDθ0:RSL(θ,x):RSRDRSTB

C=T/B

Для простоты мы можем предположить, что T делится на B. Равномерно делится на B. Хотя, когда это не так, как это часто бывает, каждому мини-пакету должен быть назначен правильный вес в зависимости от его размера.

Итерационный алгоритм для SGD с эпохами приведен ниже:M

t0while t<Mθt+1θtϵ(t)1Bb=0B1L(θ,mb)θtt+1

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

Основные параметры для ванильного (без импульса) SGD, описанные выше:

  1. Скорость обучения:ϵ

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

ϵ(t):NR

Если вы хотите, чтобы скорость обучения была фиксированной, просто определите эпсилон как постоянную функцию.

  1. Размер партии

Размер партии определяет, сколько примеров вы просматриваете перед обновлением веса. Чем он ниже, тем шумнее будет тренировочный сигнал, чем он выше, тем больше времени потребуется для вычисления градиента для каждого шага.

Цитаты и дальнейшее чтение:

  1. Введение в градиентное обучение
  2. Практические рекомендации по градиентному обучению глубоких архитектур
  3. Эффективное мини-пакетное обучение для стохастической оптимизации

1
For simplicity we can assume that D is evenly divisible by B, Разве вы не имеете в виду, что T должно делиться на B равномерно?
Антуан

4
и чтобы действительно ответить на вопрос ОП, вы можете добавить B is typically chosen between 1 and a few hundreds, e.g. B = 32 is a good default value, with values above 10 taking advantage of the speed-up of matrix-matrix products over matrix-vector products.(из статьи
Антуан

@sabalaba Хороший ответ. Но не правда ли, что в уравнении «Итерационный алгоритм для SGD с M эпохами приведен ниже» мы будем обновлять вес после выполнения каждой мини-партии. Другими словами, не должно быть еще одной петли (над партиями C mini) внутри петли над эпохой, т.
Каушик Ачарья

2
В статистике выборка состоит из нескольких наблюдений. Таким образом, размер выборки правильно интерпретируется статистиками. В информатике (в частности, в машинном обучении) выборка - это отдельное наблюдение, а серия - это набор образцов. Это может быть немного запутанным. Образец для статистики - это партия для исследователей данных;) Источник: en.wikipedia.org/wiki/Sample_size_determination
Олег Мельников,

«Параметр размера пакета - это только один из гиперпараметров, которые вы будете настраивать ...» Разве работа с несколькими моделями тюнинга в первую очередь не победит всю цель SGD? Я думаю, что ОП просит эмпирическое правило для размера выборки. Если ваши данные содержат записей и переменных, каков подходящий размер выборки для адекватного расчета градиента? nm
RobertF
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.