Эпоха в стохастическом градиентном спуске определяется как один проход данных. Для каждой мини-партии SGD отбирается выборок, вычисляется градиент и обновляются параметры. В настройках эпохи образцы оформляются без замены.
Но это кажется ненужным. Почему бы не нарисовать каждый мини-пакет SGD как случайных отрисовок из всего набора данных на каждой итерации? В течение большого количества эпох небольшие отклонения от образцов, которые видны более или менее часто, могут показаться несущественными.
neural-networks
deep-learning
gradient-descent
Восстановить Монику
источник
источник
Ответы:
В дополнение к ответу Франка о практичности и ответу Дэвида о взгляде на небольшие подгруппы - обе из которых являются важными моментами - на самом деле есть некоторые теоретические причины, чтобы предпочесть выборку без замены. Причина, возможно, связана с точкой зрения Дэвида (которая, по сути, является проблемой сборщика купонов ).
В 2009 году Леон Ботту сравнил эффективность сходимости по конкретной проблеме классификации текста ( ).n = 781 , 265
Он обучил машину опорных векторов через SGD тремя способами:
Это его рисунок 1, иллюстрирующий, что:
Позднее это было теоретически подтверждено в статье:
Их доказательство применимо только к случаю, когда функция потерь сильно выпуклая, т.е. не к нейронным сетям. Вполне разумно ожидать, однако, что подобные рассуждения могут применяться к случаю нейронной сети (который гораздо сложнее анализировать).
источник
Это действительно совершенно не нужно с точки зрения производительности с большим обучающим набором, но использование эпох может быть удобным, например:
[1] дает еще одну причину, которая не так уж актуальна, учитывая сегодняшнюю конфигурацию компьютера:
[1] Бенджо, Йошуа. « Практические рекомендации по градиентной основе подготовки глубоких архитектур. » Нейронные сети: приемы торговли. Springer Berlin Heidelberg, 2012. 437-478.
источник
Я не согласен с тем, что это явно не имеет значения. Допустим, есть миллион обучающих примеров, и мы берем десять миллионов образцов.
В R мы можем быстро увидеть, как выглядит дистрибутив
plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")
Некоторые примеры будут посещены более 20 раз, тогда как 1% из них будут посещены 3 раза или реже. Если обучающий набор был выбран тщательно для представления ожидаемого распределения примеров в реальных данных, это может оказать реальное влияние на некоторые области набора данных - особенно после того, как вы начнете разбивать данные на более мелкие группы.
Рассмотрим недавний случай, когда один избиратель из Иллинойса фактически подвергся избыточной выборке в 30 раз и резко изменил оценки модели для своей демографической группы (и в меньшей степени для всего населения США). Если мы случайно перепишем изображения «рябчиков», снятые на зеленом фоне в пасмурные дни с узкой глубиной резкости, и не будем выбирать другие виды изображений рябчиков, модель может связать эти нерелевантные функции с меткой категории. Чем больше будет способов срезать данные, тем больше будет этих подгрупп и тем больше будет возможностей для такого рода ошибок.
источник
samples = sample(1:1E6, size = 1E7, replace = TRUE)
plot(table(table(samples)) / 1E7)