Другое

Что такое batch? Эпоха, батч, итерация – в чем различия? Руководство

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

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

Нейронные сети — это программы, которые состоят из множества алгоритмов. Алгоритмы отвечают за распознавание конкретных свойств входных данных.  Причем все эти свойства конвертированы в цифровой мир. То есть  нейронной сети нельзя просто показать две фотографии и сказать: «Вот это кошка, а вот это собака». Им нужно «объяснить», почему кошка — это кошка, а собака — это собака. Причем не просто «объяснить», а показать на конкретные свойства, которые отличают кошек от собак.  Таких свойств может быть сотни и даже тысячи.

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

Что такое  batch (батч), эпоха и итерация?

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

Что такое эпоха?

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

  • размеру и форме тела;
  • форме мордочки;
  • характерной окраске;
  • форме хвоста.

Обычно процесс обучения нейронной сети состоит из нескольких эпох. После прохождения эпохи обучения, нейронная сеть уже выдает положительную динамику в обучении. Например, после первой эпохи, мы научили нейронную сеть различать кошек и собак по 4 признакам, которые мы описали чуть выше. В результате получаем, что нейросеть корректно распознает этих животных в 60% случаев, в 40% все-таки ошибается. Вроде бы результат уже есть, но  не тот, который бы нас устраивал. Тогда можно создать еще одну эпоху обучения и добавить еще несколько признаков, по которым можно различить кошек и собак, например по:

  • форме лап;
  • форме ушей;
  • форме глаз;
  • форме усов на мордочке.

После окончания этой эпохи обучения, нейронная сеть начала корректно распознавать кошек и собак в 80% случаев, потому что распознает уже не по 4 признакам, а по 8. 

Все цифры условные, но смысл должен быть понятен, что такое эпоха. Важно отметить, что в определенный момент количество эпох не влияет на качество обучения нейронной сети. То есть утверждать, что обучение в 10 эпох лучше, чем обучение в 5 эпох — это неправильно. Плюс, при обучении нейронной сети есть  такое понятие, как «переобучение», о котором мы поговорим в отдельной статье.

Что такое итерация?

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

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

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

Что такое батч?

Батч — это составная часть итерации.  Условно, мы имеем одну итерацию, в которой хотим обучить нейронную сеть отличать кошек и собак по размеру и форме тела. Для этого процесса мы подготовили 100 тысяч изображений. То есть, после того как нейронная сеть изучит эти изображения, закончится первая итерация первой эпохи.

Если рассмотреть этот вопрос подробнее, тогда мы увидим, что в процессе одной итерации мы не выгружаем сразу все 100 тысяч изображений в нейронную сеть, а разбиваем их нелогические части. Например, в одной части итерации мы будем обучать нейросеть различать высоту тела животного, в другой части длину тела животного, в третьей — расположение головы и др. Все это относится к форме тела животного, но все же — это разные признаки. Таких признаков может быть очень много. Условно, в процессе этой итерации мы определили 10 таких признаков, и на каждый признак выделили по 10 тысяч изображений.

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

Заключение

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

Схожие статьи

Компиляторы: принципы, технологии и инструментарий — книга и теория компиляторов
Другое

Компиляторы: принципы, технологии и инструментарий — книга и теория компиляторов

Что такое Middleware или функции связующего программного обеспечения
Другое

Что такое Middleware или функции связующего программного обеспечения

Программы для визуализации данных: ТОП-10 лучших с описанием
Другое

Программы для визуализации данных: ТОП-10 лучших с описанием

Как сделать авторизацию в C: руководство и примеры рабочего кода
Другое

Как сделать авторизацию в C: руководство и примеры рабочего кода

×