Почему исследователи нейронных сетей заботятся о эпохах?

69

Эпоха в стохастическом градиентном спуске определяется как один проход данных. Для каждой мини-партии SGD отбирается k выборок, вычисляется градиент и обновляются параметры. В настройках эпохи образцы оформляются без замены.

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

Восстановить Монику
источник
1
+1 за вопрос, интересно, у меня был почти точно такой же вопрос, который собирался задать!
Haitao Du
Неподтвержденное свидетельство, но я недавно установил однослойную нейронную сеть, используя SGD на данных MNIST, которые составляют 50000 в размере обучения. После одного случайного прогона точность классификации была не намного выше 30-40%, и логарифмическая вероятность явно не сходилась. Поэтому я повторил процедуру еще для 30 эпох, что привело к точности более 90%. По крайней мере, контрпримером это показало мне, что они могут быть необходимы.
Томка
6
@tomka Это, по-видимому, свидетельствует о необходимости нескольких проходов данных, что согласуется с методом, предложенным здесь: продолжайте рисовать выборок за одну итерацию обучения до тошноты. k
Восстановить Монику
1
Еще один интересный вопрос: повлияет ли мини-пакетный заказ на переоснащение?
Х40ТиК
3
@Pinocchio Стандартная практика SGD - выборка без замены (до тех пор, пока пул выборок не будет исчерпан, и в этот момент новая эпоха начинается снова со всеми данными). Мой вопрос, почему он не использует выборку с заменой. Оказывается, один из ответов заключается в том, что выборка без замены улучшает скорость сходимости модели.
Восстановить Монику

Ответы:

60

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

В 2009 году Леон Ботту сравнил эффективность сходимости по конкретной проблеме классификации текста ( ).n=781,265

Ботту (2009). Любопытно быстрая сходимость некоторых алгоритмов стохастического градиентного спуска . Материалы симпозиума по обучению и науке о данных. ( авторский pdf )

Он обучил машину опорных векторов через SGD тремя способами:

  • Случайный : на каждой итерации выбирайте случайные выборки из полного набора данных.
  • Цикл : перемешайте набор данных перед началом процесса обучения, затем последовательно пройдитесь по нему, чтобы в каждой эпохе вы видели примеры в одном и том же порядке.
  • Перемешать : перестановка набора данных перед каждой эпохой, чтобы каждая эпоха проходила в различном порядке.

E[C(θt)minθC(θ)]Cθtt

  • t1
  • tαα>1α1.8
  • T-2

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

Позднее это было теоретически подтверждено в статье:

Gürbüzbalaban, Ozdaglar и Parrilo (2015). Почему случайные перестановки бьют стохастический градиентный спуск . arXiv: 1510.08560 . ( видео с приглашенной речью на NIPS 2015 )

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

Дугал
источник
3
Это очень проницательный ответ. Большое спасибо за ваш вклад.
Восстановить Монику
1
извините за невежество, но не могли бы вы объяснить немного больше, в чем разница между тремя? В частности, я не совсем понимаю, что такое Random, когда вы говорите «образец», что вы имеете в виду? Я знаю, что это не то, на что вы ссылаетесь, но стандартная мини-партия SGD Neural Net обычно отбирает партии без замены на каждой итерации. Это то, что делает Рэндом? Если это так, как это отличается от Shuffle?
Буратино
1
Теперь, когда я перечитал его, все три алгоритма кажутся одинаковыми. Какая разница, если набор данных перемешан или нет, и как часто, если пакеты для SGD всегда бывают случайными?
Буратино
3
@Pinocchio Вообразите набор данных с четырьмя плачами. Случайно может идти ACADBBCA; каждая запись абсолютно случайна. Цикл может идти BDAC BDAC BDAC; он выбирает один заказ для каждой эпохи, а затем повторяется. Shuffle может быть BDAC ADCB CBAD; это происходит в эпоху, но каждая случайна. В этом анализе не используются мини-пакеты, а только SGD по одному элементу за раз.
Дугал
Это отличный ответ. Спасибо тебе!
DankMasterDan
24

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

  • это дает довольно хороший показатель: «нейронная сеть была обучена в течение 10 эпох» - более ясное утверждение, чем «нейронная сеть была обучена для 18942 итераций» или «нейронная сеть была обучена более 303072 выборок».
  • на этапе обучения происходит достаточно случайных вещей: случайная инициализация веса, мини-перетасовка, выпадание и т. д.
  • это легко реализовать
  • это избегает задаваться вопросом, является ли тренировочный набор достаточно большим, чтобы не иметь эпох

[1] дает еще одну причину, которая не так уж актуальна, учитывая сегодняшнюю конфигурацию компьютера:

Что касается любого метода стохастического градиентного спуска (включая случай мини-партии), для эффективности оценщика важно, чтобы каждый пример или мини-партия отбиралась приблизительно независимо. Поскольку произвольный доступ к памяти (или, что еще хуже, к диску) является дорогостоящим, хорошее приближение, называемое инкрементным градиентом (Bertsekas, 2010), заключается в посещении примеров (или мини-пакетов) в фиксированном порядке, соответствующем их порядку в памяти или диск (повторяя примеры в том же порядке во второй эпохе, если мы не находимся в чистом онлайн-случае, где каждый пример посещается только один раз).В этом контексте безопаснее, если примеры или мини-пакеты сначала располагаются в случайном порядке (чтобы убедиться, что это так, было бы полезно сначала перемешать примеры). Более быстрая конвергенция наблюдалась, если порядок, в котором посещаются мини-партии, изменяется для каждой эпохи, что может быть достаточно эффективным, если учебный набор сохраняется в памяти компьютера.


[1] Бенджо, Йошуа. « Практические рекомендации по градиентной основе подготовки глубоких архитектур. » Нейронные сети: приемы торговли. Springer Berlin Heidelberg, 2012. 437-478.

Франк Дернонкур
источник
1
К
1
@Sycorax Выборка без замены, несмотря на то, что она, конечно, не является независимой, является «приблизительно независимой» в том смысле, что она может быть заменена . С точки зрения обучения классификатора, который не слишком заботится о какой-либо одной точке данных, эта взаимозаменяемость определенно довольно близка к «приблизительно независимой».
Дугал
18

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

В R мы можем быстро увидеть, как выглядит дистрибутив

plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")

биномиальный PMF

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

Рассмотрим недавний случай, когда один избиратель из Иллинойса фактически подвергся избыточной выборке в 30 раз и резко изменил оценки модели для своей демографической группы (и в меньшей степени для всего населения США). Если мы случайно перепишем изображения «рябчиков», снятые на зеленом фоне в пасмурные дни с узкой глубиной резкости, и не будем выбирать другие виды изображений рябчиков, модель может связать эти нерелевантные функции с меткой категории. Чем больше будет способов срезать данные, тем больше будет этих подгрупп и тем больше будет возможностей для такого рода ошибок.

Дэвид Дж. Харрис
источник
1
Я не думаю, что это будет иметь большое значение на практике для большого тренировочного набора, но определенно ожидаю, что это будет с меньшим тренировочным набором.
Франк Дернонкур
5
@FranckDernoncourt хорошо, суть в том, что для больших наборов данных может иметь значение, если вы начнете смотреть на небольшие подгруппы. Что не является необычной процедурой в больших наборах данных,
dimpol
почти наверняка вам следовало использовать единый дистрибутив, а не биномиальный
lahwran
2
107106samples = sample(1:1E6, size = 1E7, replace = TRUE)plot(table(table(samples)) / 1E7)
2
Ага! Тогда я был неправ.
lahwran