Как размер партии влияет на конвергенцию SGD и почему?

18

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

Однако это кажется нелогичным, поскольку средние потери мини-пакета можно рассматривать как приближение к ожидаемым потерям при распределении данных

1|Икс|ΣИксИксL(Икс,вес)ЕИкс~пdaTa[L(Икс,вес)]
чем больше размер партии, тем более точной она должна быть. Почему на практике это не так?


Вот некоторые из моих (вероятно, неправильных) мыслей, которые пытаются объяснить.

Параметры модели сильно зависят друг от друга: когда партия становится слишком большой, это повлияет на слишком много параметров одновременно, так что для параметров трудно достичь стабильной внутренней зависимости? (например, проблема внутреннего ковариатного сдвига, упомянутая в статье о нормализации партии )

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

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


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

Однако эта статья (Wilson and Martinez, 2003) показывает, что больший размер партии все еще несколько невыгоден даже при достаточном количестве тренировочных эпох. Это вообще так? введите описание изображения здесь

dontloo
источник

Ответы:

12

N

  • 27N
  • 8343×N200000,47N

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

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

КВJ1JКВJ

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

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

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

В конце процесса конвергенции SGD становится менее точным, чем (пакетный) GD. Но в этот момент вещи становятся (как правило) своего рода бесполезно точным соответствием. В то время как вы получаете немного меньшую функцию потерь на тренировочном наборе, вы не получаете реальной предсказательной силы. Вы ищете только очень точный оптимум, но это не помогает. Если функция потерь правильно упорядочена (что предотвращает переоснащение), вы не совсем «переоцениваете», вы просто бесполезно «перестраиваете». Это показывает, как незначительное изменение в точности на тестовом наборе.

Бенуа Санчес
источник
1
спасибо, это имеет большой смысл. Таким образом, в основном, если делать то же самое количество обновлений, тогда больший размер пакета будет, по крайней мере, столь же хорошим, верно?
dontloo
вам доводилось знакомиться с опубликованными экспериментами по этому вопросу (сравнивая разные размеры пакетов с фиксированным количеством обновлений)?
dontloo
Да, при том же количестве обновлений большие партии всегда лучше. Я не знаю о публикации, если я когда-нибудь найду, я опубликую ее.
Бенуа Санчес
Я прочитал остальную часть вашего вопроса (таблица). Интересно, что он показывает результаты на тестовом наборе, в то время как цель градиентного приличия состоит в оптимизации на тренировочном наборе. Небольшие партии могут избежать определенного переоснащения путем рандомизации оптимального количества. Это тонкая вещь, о которой я не догадываюсь.
Бенуа Санчес
Согласно статье, разница в точности не значительна. Они просто хотят указать, что точность по сути одинакова. В основном они хотят отметить, что SGD с небольшими партиями намного быстрее.
Бенуа Санчес
4

Чтобы добавить к ответу Кертиса Уайта (и добавить еще несколько ссылок):

Да SGD работает как тип регуляризации. Это важно, потому что в противном случае трудно объяснить, почему DNN не всегда подходят, потому что они могут .

Причина, как я понимаю, заключается в том, что SGD вызывает «скачкообразное изменение» в пространстве параметров, поэтому во время обучения параметры не могут оставаться в узком минимуме, только в (или близко к) более широким. И эти более широкие, по-видимому, [1] обобщают лучше (иначе, меньше переобучения).

Больше ссылок:

  • Вот [2] еще одна статья, которая формализует это (или пытается, я не все проследил, проверьте сами!)
  • В этой статье [3] утверждается, что существует фаза, к "stochastic relaxation, or random diffusion"которой приводит стохастичность, присущая SGD "maximiz[ation of] the conditional entropy of the layer".

Оба типа говорят, что SGD соответствует члену регуляризации энтропии.

Определенно могут быть и другие способы влияния размера партии на конвергенцию; это тот, о котором я знаю.


[1] Пример: «Байесовская перспектива обобщения и стохастического градиентного спуска», Smith, Le, 2018. Из аннотации: "We propose that the noise introduced by small mini-batches drives the parameters towards minima whose evidence is large."

[2] «Стохастический градиентный спуск выполняет вариационный вывод, сходится к предельным циклам для глубоких сетей», Chaudhari, Soatto 2017

[3] «Открытие черного ящика глубоких нейронных сетей с помощью информации» Шварц-Зив, Тишби, 2017

[4] «Понимание глубокого обучения требует переосмысления обобщений», К. Чжан и др. 2016

dasWesen
источник
(+1) Хорошие ссылки. Кстати, первым автором [4] является C. Zhang
user20160
О, ты прав! Отредактировал, спасибо за исправление.
dasWesen
0

Слишком большой размер пакета может предотвратить конвергенцию, по крайней мере, при использовании SGD и обучении MLP с использованием Keras. Что касается того, почему, я не уверен на 100%, связано ли это с усреднением градиентов или что небольшие обновления обеспечивают большую вероятность выхода из локальных минимумов.

Смотрите здесь .

Кертис Уайт
источник