Ответы:
В терминологии нейронной сети:
Пример: если у вас 1000 обучающих примеров, а размер пакета равен 500, то для завершения 1 эпохи потребуется 2 итерации.
К вашему сведению: размер пакета в зависимости от количества итераций для обучения нейронной сети
Термин «партия» неоднозначен: некоторые люди используют его для обозначения всего учебного набора, а некоторые люди используют его для обозначения количества примеров обучения за один проход вперед / назад (как я сделал в этом ответе). Чтобы избежать этой двусмысленности и прояснить, что партия соответствует количеству обучающих примеров за один проход вперед / назад, можно использовать термин мини-партия .
Эпоха и итерация описывают разные вещи.
Эпоха описывает количество раз алгоритм видит весь набор данных. Итак, каждый раз, когда алгоритм просматривал все выборки в наборе данных, эпоха завершалась.
Итерации описывают количество раз в партию данных , передаваемых через алгоритм. В случае нейронных сетей это означает прямой и обратный проход . Таким образом, каждый раз, когда вы передаете пакет данных через NN, вы выполняете итерацию .
Пример может сделать это более понятным.
Скажем, у вас есть набор данных из 10 примеров (или образцов). У вас есть размер пакета 2, и вы указали, что хотите, чтобы алгоритм работал в течение 3 эпох.
Поэтому в каждой эпохе у вас есть 5 партий (10/2 = 5). Каждая партия проходит через алгоритм, поэтому у вас есть 5 итераций за эпоху. Поскольку вы указали 3 эпохи, у вас есть всего 15 итераций (5 * 3 = 15) для обучения.
Многие алгоритмы обучения нейронной сети предполагают создание нескольких представлений всего набора данных в нейронной сети. Часто одно представление всего набора данных называется «эпохой». Напротив, некоторые алгоритмы представляют данные нейронной сети по одному случаю за раз.
«Итерация» - гораздо более общий термин, но поскольку вы спрашивали об этом вместе с «эпохой», я предполагаю, что ваш источник относится к представлению одного случая в нейронную сеть.
Чтобы понять разницу между ними, вы должны понимать алгоритм градиентного спуска и его варианты .
Прежде чем я начну с фактического ответа, я хотел бы создать некоторый фон.
Партия полный набор данных. Его размер - это общее количество обучающих примеров в доступном наборе данных.
Размер мини-пакета - это число примеров, которые алгоритм обучения обрабатывает за один проход (вперед и назад).
Мини-партия небольшая часть набора данных данного мини-размера партии .
Итерации - это количество пакетов данных, просмотренных алгоритмом (или просто количество проходов, которые алгоритм выполнил в наборе данных).
Epochs - это количество раз, которое алгоритм обучения видит полный набор данных. Теперь это может быть не равно количеству итераций , поскольку набор данных также может обрабатываться в мини-пакетах, по сути, за один проход можно обработать только часть набора данных. В таких случаях количество итераций не равно количеству эпох .
В случае Пакетного градиентного спуска вся партия обрабатывается на каждом тренировочном проходе. Следовательно, оптимизатор градиентного спуска обеспечивает более плавную сходимость, чем мини-пакетный градиентный спуск, но это занимает больше времени. Пакетный градиентный спуск гарантированно найдет оптимальный, если он существует.
Стохастический градиентный спуск - это особый случай мини-пакетного градиентного спуска, при котором размер мини-партии равен 1 .
У вас есть тренировочные данные, которые вы перемешиваете и выбираете из них мини-партии. Когда вы корректируете свои веса и смещения с помощью одной мини-партии, вы выполняете одну итерацию. Как только вы исчерпали свои мини-партии, вы завершили эпоху. Затем вы снова перетасовываете свои тренировочные данные, снова выбираете свои мини-партии и снова просматриваете их все. Это будет ваша вторая эпоха.
Как правило, вы разбиваете свой тестовый набор на небольшие партии для обучения в сети и делаете обучение пошаговым по количеству слоев, применяя градиентный спуск до самого конца. Все эти маленькие шаги можно назвать итерациями .
An эпоха соответствует всей подготовки пущен по всей сети один раз. Это может быть полезно для ограничения этого, например, для борьбы с переоснащением.
Эпоха содержит несколько итераций. Вот на самом деле, что это за «эпоха». Давайте определим «эпоху» как количество итераций по набору данных для обучения нейронной сети.
Я полагаю, что итерация эквивалентна единственной партии вперед + backprop в партии SGD. Эпоха проходит через весь набор данных один раз (как кто-то еще упомянул).
Я думаю, в контексте терминологии нейронной сети:
Чтобы определить итерацию (иначе говоря, шаги ), вам сначала нужно знать размер пакета :
Размер пакета: Вы, вероятно, не хотели бы обрабатывать все обучающие экземпляры за один проход, так как это неэффективно и требует огромного количества памяти. Поэтому обычно делается разделение обучающих экземпляров на подмножества (т. Е. Пакеты), выполнение одного прохода над выбранным подмножеством (т. Е. Пакет), а затем оптимизация сети с помощью обратного распространения. Количество обучающих экземпляров в подмножестве (т. Е. Пакетном режиме ) называется batch_size .
Итерация: (так называемые этапы обучения) Вы знаете, что ваша сеть должна пройти все обучающие экземпляры за один проход, чтобы завершить одну эпоху. Но ждать! когда вы разбиваете свои обучающие экземпляры на партии, это означает, что вы можете обрабатывать только одну партию (подмножество обучающих экземпляров) за один прямой проход, так что же делать с другими партиями? Это где термин Итерация вступает в игру:
Например, когда у вас есть 1000 обучающих экземпляров, и вы хотите выполнить дозирование размером 10; Вы должны сделать 10000/10 = 1000 итераций, чтобы завершить одну эпоху.
Надеюсь, что это может ответить на ваш вопрос!
эпоха - это итерация подмножества выборок для обучения, например, алгоритм градиентного спуска в нейтральной сети. Хорошая ссылка: 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)
Посмотри на код. Для каждой эпохи мы случайным образом генерируем подмножество входных данных для алгоритма градиентного спуска. Почему эпоха эффективна, также объясняется на странице. Взгляни, пожалуйста.
Полный тренировочный проход по всему набору данных, так что каждый пример был просмотрен один раз. Таким образом, эпоха представляет N итераций обучения размера партии , где N - общее количество примеров.
Однократное обновление весов модели во время тренировки. Итерация состоит из вычисления градиентов параметров по отношению к потерям в одной партии данных.
в качестве бонуса:
Набор примеров, использованных в одной итерации (то есть одном градиентном обновлении) обучения модели .
Смотрите также размер партии .
источник: https://developers.google.com/machine-learning/glossary/
1. Эпоха - это 1 полный цикл, в котором Нейронная сеть видела все данные.
2. Можно использовать 100 000 изображений для обучения модели, однако места памяти может быть недостаточно для обработки всех изображений одновременно, поэтому мы разбиваем обучение модели на меньшие порции данных, называемые пакетами. например, размер партии составляет 100.
3. Нам нужно покрыть все изображения, используя несколько партий. Таким образом, нам потребуется 1000 итераций, чтобы охватить все 100 000 изображений. (Размер 100 пакетов * 1000 итераций)
4. Как только Нейронная Сеть просматривает все данные, она называется 1 Эпоха (Точка 1). Для обучения модели может потребоваться несколько эпох. (скажем, 10 эпох).