4 min read

Эпоха (Epoch)

Эпоха (Epoch)

Эпоха – это Гиперпараметр (Hyperparameter) Модели (Model), одна из повторяющихся стадий обработки Тренировочного набора (Train Data).

Для удобства восприятия термин стоит рассматривать в контексте определенного алгоритма, например, Стохастического градиентного спуска (SGD).

Два гиперпараметра, которые часто путают новички, – это число Пакетов (Batch) и количество эпох. Они оба являются целочисленными значениями и, похоже, делают одно и то же.

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

Стохастический градиентный спуск – это алгоритм Оптимизации (Optimization), используемый для обучения Алгоритмов (Algorithm) Машинного обучения (ML), в первую очередь, искусственных Нейронных сетей (Neural Network), используемых в Глубоком обучении (Deep Learning).

Задача алгоритма – найти набор внутренних параметров модели, которые хорошо работают с показателями производительности, такими как Логарифмические потери (Log Loss) или Среднеквадратичная ошибка (MSE).

Оптимизация – это тип поискового процесса, и вы можете думать об этом как о обучении. Алгоритм оптимизации называется «градиентный спуск», где «градиент» относится к вычислению темпа снижения ошибки, а «спуск» относится к движению вниз по этому наклону к некоторому минимальному уровню ошибки.

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

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

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

Прежде чем мы углубимся в пакеты и эпохи, давайте посмотрим, что подразумевается под Выборкой (Sample).

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

Теперь, когда мы знаем, что такое образец, давайте определим партию. Что это такое? Размер пакета – это гиперпараметр, который определяет количество выборок, которые необходимо обработать перед обновлением внутренних параметров модели.

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

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

  • Пакетный градиентный спуск: Размер партии = Размер обучающего набора
  • Стохастический градиентный спуск: Размер партии = 1
  • Мини-пакетный градиентный спуск (Mini-Batch Gradient Descent): 1 < Размер партии < Размер обучающего набора

В случае мини-пакетного градиентного спуска популярные размеры пакета – 32, 64 и 128 образцов. Но что делать, если набор данных не делится равномерно по размеру пакета? Это может происходить и часто случается при обучении модели. Это просто означает, что в последней партии образцов меньше, чем в других партиях.

В качестве альтернативы вы можете удалить некоторые образцы из набора данных или изменить размер пакета так, чтобы количество образцов в наборе данных делилось равномерно на размер пакета.

Пакет обновляет модель с использованием записей. Теперь давайте изучим эпоху.

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

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

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

Число эпох традиционно велико, часто сотни или тысячи, что позволяет алгоритму обучения работать до тех пор, пока ошибка модели не будет достаточно минимизирована. Вы можете увидеть примеры количества эпох в литературе и в учебных пособиях, установленных на 10, 100, 500, 1000 и больше.

Обычно создают линейные графики, которые показывают эпохи по оси x как время, а ошибки или навыки модели по оси y. Эти графики иногда называют Кривой обучения (Learning Curve). Эти графики помогут определить, переобучена ли модель, недостаточно обучена и подходит ли она для обучающего набора данных.

Если все еще непонятно, давайте посмотрим на различия между партиями и эпохами.

Размер пакета – это количество образцов, обработанных перед обновлением модели. Количество эпох – это количество полных проходов через обучающий набор данных.

Размер пакета должен быть больше или равен единице и меньше или равен количеству выборок в обучающем наборе данных.

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

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

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

Пример. Предположим, у вас есть набор данных с 200 строками данных, и вы выбрали размер пакета из 5 и 1000 эпох. Это означает, что набор данных будет разделен на 40 пакетов по пять образцов в каждом. Вес модели будет обновляться после каждой партии из пяти образцов.

Это также означает, что одна эпоха будет включать 40 пакетов или 40 обновлений модели.

Для 1000 эпох модель будет представлена ​​или пройти через весь набор данных 1000 раз. Это всего 40 000 партий за весь тренировочный процесс.

Фото: @andrewcoop

Автор оригинальной статьи: Jason Brownlee