Эпоха против итерации при обучении нейронных сетей


Ответы:


574

В терминологии нейронной сети:

  • одна эпоха = один проход вперед и один проход назад всех обучающих примеров
  • Размер партии = количество обучающих примеров за один проход вперед / назад. Чем больше размер пакета, тем больше места вам понадобится.
  • количество итераций = количество проходов, каждый проход с использованием [размера партии] количество примеров. Чтобы было ясно, один проход = один прямой проход + один обратный проход (мы не считаем прямой проход и обратный проход как два разных прохода).

Пример: если у вас 1000 обучающих примеров, а размер пакета равен 500, то для завершения 1 эпохи потребуется 2 итерации.

К вашему сведению: размер пакета в зависимости от количества итераций для обучения нейронной сети


Термин «партия» неоднозначен: некоторые люди используют его для обозначения всего учебного набора, а некоторые люди используют его для обозначения количества примеров обучения за один проход вперед / назад (как я сделал в этом ответе). Чтобы избежать этой двусмысленности и прояснить, что партия соответствует количеству обучающих примеров за один проход вперед / назад, можно использовать термин мини-партия .


37
Я смущен. Зачем вам тренироваться более одной эпохи - по всем данным более одного раза? Не приведет ли это к переоснащению?
Субрике

29
@ Soubriquet Нейронные сети, как правило, обучаются с использованием метода итеративной оптимизации (большую часть времени, градиентный спуск), который часто требует нескольких проходов на тренировочном наборе, чтобы получить хорошие результаты.
Франк Дернонкур

6
Но если будет много обучающих образцов, скажем, 1 миллион долларов, хватит ли одной эпохи? Что обычно делают люди, если тренировочный набор очень большой? Просто разделите тренировочный набор на партии и выполните одну эпоху?
pikachuchameleon

5
@pikachuchameleon Это зависит от сложности задачи: в некоторых случаях одной эпохи может быть действительно достаточно.
Франк Дернонкур

9
@MaxPower - как правило, шаг делается после каждой итерации , как подразумевал ответ Франка Дернонкура; это то, что мы делаем с информацией из обратного прохода. В мини-пакетном градиентном спуске с m итерациями за эпоху мы обновляем параметры m раз за эпоху.
Дэн Макинлай

142

Эпоха и итерация описывают разные вещи.


эпоха

Эпоха описывает количество раз алгоритм видит весь набор данных. Итак, каждый раз, когда алгоритм просматривал все выборки в наборе данных, эпоха завершалась.

итерация

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


пример

Пример может сделать это более понятным.

Скажем, у вас есть набор данных из 10 примеров (или образцов). У вас есть размер пакета 2, и вы указали, что хотите, чтобы алгоритм работал в течение 3 эпох.

Поэтому в каждой эпохе у вас есть 5 партий (10/2 = 5). Каждая партия проходит через алгоритм, поэтому у вас есть 5 итераций за эпоху. Поскольку вы указали 3 эпохи, у вас есть всего 15 итераций (5 * 3 = 15) для обучения.


15
Не могли бы вы объяснить, обновляются ли веса после каждой эпохи или после каждой итерации?
Унаследованный Geek

7
@InheritedGeek веса обновляются после каждого пакета, а не эпохи или итерации.
Thisisbhavin

2
@bhavindhedhi 1 партия = 1 итерация, не так ли?
Пчела

2
@ Нет, возьмите, например, 10000 обучающих выборок и 1000 выборок на партию, тогда для завершения 1 эпохи потребуется 10 итераций.
Thisisbhavin

4
@bhavindhedhi Я думаю, что Би спрашивал о том, что в вашем примере из 10000 общих выборок по 1000 на пакет у вас фактически есть 10 общих пакетов, что равно 10 итерациям. Я думаю, что это имеет смысл, но не уверен, правильно ли это интерпретировать.
Майкл Ду

24

Многие алгоритмы обучения нейронной сети предполагают создание нескольких представлений всего набора данных в нейронной сети. Часто одно представление всего набора данных называется «эпохой». Напротив, некоторые алгоритмы представляют данные нейронной сети по одному случаю за раз.

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


3
отлично, можете ли вы сослаться на публикацию, где это подробно?
Алекс

17

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

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

Партия полный набор данных. Его размер - это общее количество обучающих примеров в доступном наборе данных.

Размер мини-пакета - это число примеров, которые алгоритм обучения обрабатывает за один проход (вперед и назад).

Мини-партия небольшая часть набора данных данного мини-размера партии .

Итерации - это количество пакетов данных, просмотренных алгоритмом (или просто количество проходов, которые алгоритм выполнил в наборе данных).

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

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

Стохастический градиентный спуск - это особый случай мини-пакетного градиентного спуска, при котором размер мини-партии равен 1 .

Пакетный градиентный спуск против мини-градиентного спуска

Сравнение периодических, стохастических и мини-градиентных спусков.


12

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


Может ли это быть связано с перекрестной проверкой?
ск

8

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

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


7

Эпоха содержит несколько итераций. Вот на самом деле, что это за «эпоха». Давайте определим «эпоху» как количество итераций по набору данных для обучения нейронной сети.


4
Эпоха не число ... это может быть сделано с перефразировкой, я думаю.
Никана Рекламикс

Понижено, потому что это неверно: эпоха - это количество эпизодов или серий, в которых модель видела все данные тренировки за один раз.
ДжонАллен

7

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


6

Я полагаю, что итерация эквивалентна единственной партии вперед + backprop в партии SGD. Эпоха проходит через весь набор данных один раз (как кто-то еще упомянул).


5

Я думаю, в контексте терминологии нейронной сети:

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

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

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

  • Итерация: (так называемые этапы обучения) Вы знаете, что ваша сеть должна пройти все обучающие экземпляры за один проход, чтобы завершить одну эпоху. Но ждать! когда вы разбиваете свои обучающие экземпляры на партии, это означает, что вы можете обрабатывать только одну партию (подмножество обучающих экземпляров) за один прямой проход, так что же делать с другими партиями? Это где термин Итерация вступает в игру:

    • Определение: количество прямых проходов (количество созданных вами пакетов), которые ваша сеть должна выполнить для завершения одной эпохи (т. Е. Пройдя все обучающие экземпляры), называется итерацией .

Например, когда у вас есть 1000 обучающих экземпляров, и вы хотите выполнить дозирование размером 10; Вы должны сделать 10000/10 = 1000 итераций, чтобы завершить одну эпоху.

Надеюсь, что это может ответить на ваш вопрос!


3

эпоха - это итерация подмножества выборок для обучения, например, алгоритм градиентного спуска в нейтральной сети. Хорошая ссылка: http://neuralnetworksanddeeplearning.com/chap1.html

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

def SGD(self, training_data, epochs, mini_batch_size, eta,
        test_data=None):
    """Train the neural network using mini-batch stochastic
    gradient descent.  The "training_data" is a list of tuples
    "(x, y)" representing the training inputs and the desired
    outputs.  The other non-optional parameters are
    self-explanatory.  If "test_data" is provided then the
    network will be evaluated against the test data after each
    epoch, and partial progress printed out.  This is useful for
    tracking progress, but slows things down substantially."""
    if test_data: n_test = len(test_data)
    n = len(training_data)
    for j in xrange(epochs):
        random.shuffle(training_data)
        mini_batches = [
            training_data[k:k+mini_batch_size]
            for k in xrange(0, n, mini_batch_size)]
        for mini_batch in mini_batches:
            self.update_mini_batch(mini_batch, eta)
        if test_data:
            print "Epoch {0}: {1} / {2}".format(
                j, self.evaluate(test_data), n_test)
        else:
            print "Epoch {0} complete".format(j)

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


1

эпоха

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

итерация

Однократное обновление весов модели во время тренировки. Итерация состоит из вычисления градиентов параметров по отношению к потерям в одной партии данных.

в качестве бонуса:

партия

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

Смотрите также размер партии .

источник: https://developers.google.com/machine-learning/glossary/


0

1. Эпоха - это 1 полный цикл, в котором Нейронная сеть видела все данные.
2. Можно использовать 100 000 изображений для обучения модели, однако места памяти может быть недостаточно для обработки всех изображений одновременно, поэтому мы разбиваем обучение модели на меньшие порции данных, называемые пакетами. например, размер партии составляет 100.
3. Нам нужно покрыть все изображения, используя несколько партий. Таким образом, нам потребуется 1000 итераций, чтобы охватить все 100 000 изображений. (Размер 100 пакетов * 1000 итераций)
4. Как только Нейронная Сеть просматривает все данные, она называется 1 Эпоха (Точка 1). Для обучения модели может потребоваться несколько эпох. (скажем, 10 эпох).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.