Что такое эпохи в нейронных сетях
Перейти к содержимому

Что такое эпохи в нейронных сетях

  • автор:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Нейросеть

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

Освойте профессию «Data Scientist»

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

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

Профессия / 24 месяца
Data Scientist

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

Group 1321314349 (1)

Где применяют нейросети и кто с ними работает

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

Готовыми нейросетями могут пользоваться специалисты разных сфер. Сейчас нейронные сети можно встретить в любых областях:

  • поисковые системы;
  • анализ данных, классификация и статистика;
  • подсчеты и прогнозирование;
  • создание контента;
  • системы распознавания лиц;
  • монтаж видеороликов и т.д.

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

Например, блогер Илона Нейро — гламурная девушка, которая на самом деле является нейросетью. Даже двумя: одна генерирует тексты постов, другая создает фотографии Илоны на основе женской версии лица Илона Маска.

Илона Нейро — созданная нейросетью девушка-блогер

Читайте также Самые востребованные IT-профессии 2024 года

Три задачи нейронных сетей

Сейчас принято разделять задачи, которые решают нейронные сети, на три категории:

Классификация Такие нейросети берут заданные данные и классифицируют их. Например, могут догадаться, к какому жанру относится текст, или оценить платежеспособность человека по его банковскому профилю Предсказание Эти сети делают какие-то выводы на основе заданной информации. Сюда можно отнести как предсказание будущих доходов по текущим данным, так и «дорисовывание» картинки Распознавание Часто применяемая задача — распознавать те или иные объекты. Такие нейросети используются в умных камерах, при наложении фотофильтров, в камерах видеонаблюдения и других подобных программах и устройствах.

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

Начните карьеру в Data Science.
Онлайн-магистратура МФТИ с практикой на реальных проектах

Как устроена нейросеть

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

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

Признаки. Информация, важная для нейросети, — это какие-то признаки, которые нужны ей для распознавания, генерации или структурирования данных. Можно привести пример из работы человеческого мозга:

  • когда мы видим кошку, мы понимаем, что это кошка, по ряду признаков: треугольные уши, большие глаза, четыре лапы, определенные пропорции;
  • когда нас просят представить себе дерево, у нас в голове визуализируется картинка. Дерево в нашем разуме может выглядеть по-разному, но у него наверняка будут ствол, ветки и корни, возможно — листья.

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

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

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

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

Кроме того, есть входной и выходной слои. Входной принимает информацию и преобразовывает ее, например переводит картинку в матрицу из чисел. Выходной обрабатывает результат и представляет его в понятном человеку виде. Например, результат 0,77827273 он представит как «с точностью в 78% это такой-то предмет».

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

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

Станьте аналитиком данных и получите востребованную специальность

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

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

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

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

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

Как работает нейронная сеть

  1. На вход поступает какая-то информация или запрос. Входной слой нейронной сети обрабатывает ее и переводит в понятный машине вид — в числовые наборы. Затем эти наборы передаются нейронам.
  2. Нейроны по формулам, которые в них заложены, обрабатывают информацию. Как именно реагировать на разные детали этих данных, определяют коэффициенты — их нейросеть разработала при обучении. По сути, эти коэффициенты работают как память: нейросеть «вспоминает», как следует реагировать на похожие кластеры информации с известными ей признаками.
  3. Данные передаются дальше по нейронной сети, проходит разные слои и типы нейронов. В конечном итоге на последнем слое нейросеть может сделать вывод. На выход подается ее финальная «реакция» на запрос.

Нейросеть — аналог мозга?

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

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

Какими бывают нейросети

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

Перцептроны — Это классические нейронные сети, изначально однослойные, позже многослойные. Сейчас используются в основном для вычислений. Сверточные нейронные сети — Это многослойные сети, которые состоят из чередующихся сверточных и субдискретизирующих слоев и предназначены специально для работы с изображениями. Рекуррентные нейронные сети Их особенность в возможности последовательно обрабатывать цепочки данных и «запоминать» предыдущую информацию. Поэтому их применяют для работы с изменяющимися сведениями или длинными цепочками данных, например рукописными текстами. Генеративные нейронные сети Предназначены для создания контента. Иногда используются генеративно-состязательные нейросети — связка из двух сетей, где одна создает контент, а другая оценивает его качество.

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

Как обучают нейросети

Когда нейронная сеть готова и инициализирована, у нее случайные веса — они еще не настроились под нужный результат. Такая нейросеть называется необученной. Ее надо обучить на определенные действия.

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

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

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

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

Переобучение и другие ошибки

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

Эффект переобучения наблюдается и у людей — он выражен в явлении апофении, из-за которого люди видят взаимосвязи в случайных наборах информации.

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

*Организация, запрещенная на территории РФ

Data Scientist

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

картинка (74)

Статьи по теме:
Почему люди — важнее всего, а если нет ресурса, его можно создать
И как их использовать

Специалист по компьютерному зрению рассказывает, как увлечение рептилиями помогло перейти из юриспруденции в Data Science.

Методы классификации и прогнозирования. Нейронные сети

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

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

Алгоритм работы нейронной сети является итеративным, его шаги называют эпохами или циклами.

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

Процесс обучения осуществляется на обучающей выборке.

Обучающая выборка включает входные значения и соответствующие им выходные значения набора данных. В ходе обучения нейронная сеть находит некие зависимости выходных полей от входных.

Таким образом, перед нами ставится вопрос — какие входные поля (признаки) нам необходимо использовать. Первоначально выбор осуществляется эвристически, далее количество входов может быть изменено.

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

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

Аналитик должен определить количество слоев в сети и количество нейронов в каждом слое .

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

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

Функция ошибок — это целевая функция , требующая минимизации в процессе управляемого обучения нейронной сети .

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

От качества обучения нейронной сети зависит ее способность решать поставленные перед ней задачи.

Переобучение нейронной сети

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

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

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

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

Один из вариантов борьбы с переобучением сети — деление обучающей выборки на два множества (обучающее и тестовое).

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

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

Описанный процесс проиллюстрирован на рис. 11.2.

Процесс обучений сети. Явление переобучения

Рис. 11.2. Процесс обучений сети. Явление переобучения

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

Прогноз на тестовом множестве является проверкой работоспособности построенной модели. Ошибка на тестовом множестве может являться ошибкой прогноза, если тестовое множество максимально приближено к текущему моменту.

Нейросеть: в чём разница между Batch и Epoch

Стохастический градиентный спуск — это алгоритм обучения, который имеет ряд гиперпараметров.
Два гиперпараметра, которые часто путают новичков, — это размер пакета и количество эпох. Они оба являются целочисленными значениями и, кажется, отражают одно и то же.
Подчеркнём разницу между партиями и эпохами в стохастическом градиентном спуске.
В чем разница между Партией и Эпохой в Нейронной сети?

Стохастический Градиентный спуск

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

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

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

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

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

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

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

Узнайте больше о градиентном спуске здесь:

Градиентный Спуск Для Машинного Обучения

Что такое Образец?

Образец — это одна строка данных.

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

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

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

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

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

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

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

Пакетный Градиентный Спуск. Размер пакета = Размер обучающего набора
Стохастический Градиентный Спуск. Размер партии = 1
Мини-Пакетный градиентный спуск. 1

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

Что делать, если набор данных не делится равномерно по размеру пакета?

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

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

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

Краткое введение в Градиентный спуск Мини-пакетов и Как настроить размер пакета

Для получения дополнительной информации о влиянии размера пакета на процесс обучения см. Сообщение:

Как контролировать скорость и стабильность обучения нейронных сетей Размер пакета

Пакет включает в себя обновление модели с использованием образцов; далее давайте рассмотрим эпоху.
Что такое Эпоха?

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

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

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

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

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

Для получения дополнительной информации о диагностике с помощью кривых обучения в сетях LSTM см. Сообщение:

Мягкое введение в кривые обучения для диагностики производительности модели

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

Размер партии — это количество образцов, обработанных до обновления модели.

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

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

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

Они оба являются целочисленными значениями и оба являются гипер-параметрами для алгоритма обучения, например, параметрами процесса обучения, а не параметрами внутренней модели, найденными в процессе обучения.

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

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

Наконец, давайте конкретизируем это на небольшом примере.

Предположим, у вас есть набор данных с 200 образцами (строками данных), и вы выбираете размер пакета от 5 до 1000 эпох.

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

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

С 1000 эпохами модель будет подвергнута воздействию или пройдет через весь набор данных 1000 раз. Это в общей сложности 40 000 партий за весь учебный процесс.
Дальнейшее Чтение

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

Градиентный Спуск Для Машинного Обучения
Как контролировать скорость и стабильность обучения нейронных сетей Размер пакета
Краткое введение в Градиентный спуск Мини-пакетов и Как настроить размер пакета
Мягкое введение в кривые обучения для диагностики производительности модели
Стохастический градиентный спуск в Википедии
Обратное распространение в Википедии

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

В частности, вы узнали:

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

У вас есть какие-нибудь вопросы?

Вот самые популярные комментарии:

Меняется ли наполнение пакетов от эпохи к эпохе?

Да. Образцы перемешиваются в конце каждой эпохи, и партии в разные эпохи различаются с точки зрения содержащихся в них образцов.

Если вы создаете модель прогнозирования временных рядов (скажем, что-то со слоем lstm), будут ли пакетные наблюдения обучающего набора храниться в “кусках” (то есть группы времени не будут разбиты, и, следовательно, основной шаблон нарушен)? Это имеет значение, верно?

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

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

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

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

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

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

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

Еще раз спасибо за отличный пост в блоге. Для данных временных рядов в LSTM имеет ли смысл когда-либо иметь размер пакета больше одного?
Я искал и искал, и я не мог найти ни одного примера, где размер пакета больше одного, но я также не нашел никого, кто сказал бы, что это не имеет смысла.

Да, если вы хотите, чтобы модель обучалась в нескольких под-последовательностях.

У меня есть несколько сообщений, которые демонстрируют это по расписанию.

спасибо вам за ваше объяснение действительно очень большое спасибо еще раз

Это очень ясно. Спасибо.
Я также вижу «steps_per_epoch» в некоторых случаях, что это значит? Это то же самое, что и партии?

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

Мы любим примеры! Большое вам спасибо!

Привет,
В настоящее время я работаю с Word2Vec. В связи с эпохами и размером партии я все еще не совсем понимаю, что такое образец. Выше вы описали, что образец представляет собой одну строку данных. В своей программе я сначала редактирую свой текстовый файл с помощью SentenceIterator, чтобы получить по одному предложению на строку, а затем использую маркер для получения отдельных слов в этих строках. Является ли образец в Word2Vec словом из набора данных или это строка (содержащая предложение)? Заранее большое вам спасибо ?

Терминология samples/epoch/batch не соответствует word2vec. Вместо этого у вас просто есть обучающий набор данных текста, из которого вы изучаете статистику.
Ответить

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

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

После каждой эпохи точность либо улучшается, либо иногда нет. Например, эпоха 1 достигла точности 94, а эпоха 2 достигла точности 95. После окончания эпохи 1 мы получаем новые веса (т. е. обновленные после последней партии эпохи 1). Означает ли это, что новые веса, используемые в эпоху 2, начинают улучшать его с 94% до 95%? Если да, то является ли это причиной того, что какая-то эпоха получает более низкую точность по сравнению с предыдущей эпохой из-за обобщения весов для всего набора данных? Вот почему мы получаем хорошую точность после прохождения стольких эпох благодаря лучшему обобщению?

Как правило, больше тренировок означает лучшую точность, но не всегда.

Иногда может быть хорошей идеей прекратить тренировки пораньше

Действительно, в последнем примере общее количество мини-пакетов составляет 40 000, но это верно только в том случае, если пакеты выбраны без перетасовки обучающих данных или выбраны с перетасовкой данных, но без повторения. В противном случае, если в течение одной эпохи мини-пакеты создаются путем выбора обучающих данных с повторением, у нас могут быть некоторые точки, которые появляются более одного раза в одну эпоху (они появляются в разных мини-пакетах в одну эпоху), а другие — только один раз. Таким образом, общее количество мини-партий в этом случае может превысить 40 000.

Обычно данные перемешиваются перед каждой эпохой.

Обычно мы не выбираем образцы с заменой, так как это приведет к смещению обучения.

Если у меня есть 1000 обучающих выборок и мой размер пакета =400, то мне нужно удалить 200 выборок
исходя из моих тренировочных данных, мои тренировочные данные всегда должны быть кратны размеру пакета

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

Лучше выбрать размер партии, который делит образцы равномерно, если это возможно, например, 100, 200 или 500 в вашем случае.

спасибо за вашу замечательную статью, и у меня есть вопрос
если у меня есть следующие настройки и я использую функцию fit_generator
эпохи =100
данные=1000 изображений
партия = 10
шаг_пер_почты = 20
я знаю, что должен установить значение step_per_epochs = (1000/10)= 100, но если я установлю его равным 20

Означают ли эти настройки, что модель будет обучаться с использованием только части обучающих данных (в каждую эпоху будут использоваться одни и те же 200 изображений (пакет*step_per_epochs)), а не все 1000 изображений?
или он будет использовать первые 200 изображений в наборе данных в первую эпоху, затем следующие 200 изображений во вторую эпоху и так далее (разделит 1000 изображений на каждые 5 эпох), и модель будет обучена 20 раз с использованием всего обучающего набора данных в 100 эпохах
Спасибо

Да, будет использоваться только 200 изображений за эпоху.

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

Если бы я создавал свои собственные пользовательские пакеты, скажем, в методе model.fit_generator().

Создаем ли мы новые случайно отобранные партии для каждой эпохи или мы просто создаем партии в __init__ и используем их без каких-либо изменений на протяжении всего обучения?

Каков рекомендуемый способ?

P.S. Если я произвольно отбираю партии в каждую эпоху, я вижу всплески в val_acc, но не уверен, что это из-за этого!

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

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

Спасибо вам за ваш ответ.

Я также только что подтвердил, что Keras разделит предоставленный X в мини-пакетах только один раз, прежде чем войти в цикл эпохи.

Сегодня мне в голову пришел один вопрос.

Что происходит при обучении нейронной сети в мини-пакетах, когда метки классов несбалансированы. Должны ли мы расслаивать партии?

Потому что кажется, что мой NN предсказывает только доминирующий класс, что бы я ни делал!

Отличный вопрос. У нас бывают плохие времена!

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

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

Я обязательно взгляну на эту книгу.

Кстати, я на самом деле занимаюсь рейтинговым бизнесом. Так что у меня очень мало 1-го и 2-го ранга, но много 3-го и выше, где-то как (10%, 10%, 80%) соответственно.

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

У меня есть вопрос – Если я правильно понял, веса и смещения обновляются после выполнения пакета, поэтому любые изменения после запуска пакета применяются к следующему пакету? И так продолжается и дальше.

Сейчас я нахожусь в середине изучения практического машинного обучения, и часть 2 в главе 11 я не могу понять значение пакетной обработки. Сначала я думаю, что нейронная сеть должна обучаться по образцу один за другим. Но они сказали “партия”, и я не могу понять на земле.
Но ваша статья дает мне хорошее представление о партии.
Я полностью понимаю вас только по одному вопросу.
Как я могу использовать метод градиента с пакетной обработкой?
Я имею в виду, что в одном примере это понятно.
Но с пакетной обработкой я не понимаю, как оценить ошибку.
Спасибо.

Это происходит один за другим, но после “пакетного” количества выборок веса обновляются с накопленной ошибкой.

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

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

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

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

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

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

Спасибо, что поделились.

Это блестяще и прямолинейно. Спасибо за мини-курс

Я рад, что это помогло.

Еще раз спасибо за отличный пост в блоге. Для данных временных рядов в LSTM имеет ли смысл когда-либо иметь размер пакета больше одного?
Я искал и искал, и я не мог найти ни одного примера, где размер пакета больше одного, но я также не нашел никого, кто сказал бы, что это не имеет смысла.

Да, если вы хотите, чтобы модель обучалась в нескольких под-последовательностях.

У меня есть несколько сообщений, которые демонстрируют это по расписанию.

спасибо вам за ваше объяснение действительно очень большое спасибо еще раз

Я рад, что это помогло.

Я читал много блогов, написанных вами о таких вещах. Это мне очень помогает, спасибо!

Спасибо, отличное объяснение. До сих пор ваш блог является лучшим источником для изучения ML, который я нашел (для начинающих, таких как я).

Я также вижу «steps_per_epoch» в некоторых случаях, что это значит? Это то же самое, что и партии?

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

Привет,
обновления выполняются после завершения каждой партии. Я просто использовал один образец и дал разные размеры пакета в model.fit, почему значение меняется каждый раз. он должен быть способен принимать один размер партии, если есть только один образец, не так ли?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *