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

В чем разница между эпохой и итерацией при обучении многослойного персептрона?

Ответ 1

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

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

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

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


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

Ответ 2

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


Epoch

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

Итерация

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


Пример

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

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

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

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

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

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

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

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

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

Batch gradient descent vs Mini-batch gradient descent

Comparison of batch, stochastic and mini-batch gradient descents.

Ответ 7

Эпоха содержит несколько итераций. На самом деле, что это за "эпоха". Пусть определите "эпоху" как число итераций над набором данных, чтобы обучить нейронную сеть.

Ответ 8

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

Ответ 9

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

Ответ 10

epoch - итерация подмножества выборок для обучения, например, алгоритм спуска градиента в нейтральной сети. Хорошая ссылка: 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)

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

Ответ 11

epoch

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

iteration

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

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

batch

The set of examples used in one iteration (that is, one gradient update) of model training.

See also batch size.

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

Ответ 12

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