способ борьбы с переобучением в машинном обучении

Переобучение

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

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

Содержание

Примеры [ править ]

На примере линейной регрессии [ править ]

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

На Рис. 2 представлена ситуация, когда выбранная полиномиальная функция подходит для описания исходных данных.

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

На примере логистической регрессии [ править ]

Представьте задачу классификации размеченных точек. Красные точки представляют данные класса 1. Голубые круглые точки — класса 2. Синие линии являются представлением различных моделей, которыми производится классификация данных.

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Рис. 4 показывает результат использования слишком простой модели для представленного датасета

Кривые обучения [ править ]

Кривые обучения при переобучении [ править ]

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Рис. 7 демонстрирует зависимость средней ошибки для обучающей и тестовой выборок от объема датасета при переобучении.

Кривые обучения при недообучении [ править ]

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Рис. 8 демонстрирует зависимость средней ошибки для обучающей и тестовой выборок от объема датасета при недообучении.

High variance и high bias [ править ]

Bias — ошибка неверных предположений в алгоритме обучения. Высокий bias может привести к недообучению.

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

При использовании нейронных сетей variance увеличивается, а bias уменьшается с увеличением количества скрытых слоев.

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

Дилемма bias–variance [ править ]

Дилемма bias–variance — конфликт в попытке одновременно минимизировать bias и variance, тогда как уменьшение одного из негативных эффектов, приводит к увеличению другого. Данная дилемма проиллюстрирована на Рис 10.

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

При небольшой сложности модели мы наблюдаем high bias. При усложнении модели bias уменьшается, но variance увеличится, что приводит к проблеме high variance.

Источник

Мы продолжаем знакомиться с теоретическими вопросами обучения НС, без которых невозможно их качественное построение. И это занятие начнем с очень важной темы – переобучения. Что это такое и чем это чревато? Давайте представим, что у нас есть два класса линейно-разделимых образов:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

В процессе обучения она способна формировать уже более сложную разделяющую линию, например, провести ее вот так:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

К чему это в итоге приведет? Да, на обучающем множестве все будет отлично, но в процессе эксплуатации такой сети будем получать массу ошибок:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

Рекомендация обучения №6:

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

Однако, мы все же можем контролировать этот эффект в процессе обучения. Для этого обучающая выборка разбивается на два множества: обучающее и валидации (проверочное):

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

Здесь у вас может возникнуть вопрос: зачем мы разбиваем обучающую выборку, а не используем в качестве проверочного множества тестовое? Тестовое – это то, на котором как раз и проверяется качество работы сети:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

Рекомендация обучения №7:

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

Вот такие основные подходы существуют для предотвращения переобучения НС.

Критерии останова процесса обучения

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

Видео по теме

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Нейронные сети: краткая история триумфа

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Структура и принцип работы полносвязных нейронных сетей | #1 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Ускорение обучения, начальные веса, стандартизация, подготовка выборки | #4 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Функции активации, критерии качества работы НС | #6 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как нейронная сеть распознает цифры | #9 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Оптимизаторы в Keras, формирование выборки валидации | #10 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Batch Normalization (батч-нормализация) что это такое? | #12 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как работают сверточные нейронные сети | #13 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Делаем сверточную нейронную сеть в Keras | #14 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Примеры архитектур сверточных сетей VGG-16 и VGG-19 | #15 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Теория стилизации изображений (Neural Style Transfer) | #16 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Делаем перенос стилей изображений с помощью Keras и Tensorflow | #17 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как нейронная сеть раскрашивает изображения | #18 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Введение в рекуррентные нейронные сети | #19 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как рекуррентная нейронная сеть прогнозирует символы | #20 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Делаем прогноз слов рекуррентной сетью Embedding слой | #21 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как работают RNN. Глубокие рекуррентные нейросети | #22 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как делать сентимент-анализ рекуррентной LSTM сетью | #24 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Рекуррентные блоки GRU. Пример их реализации в задаче сентимент-анализа | #25 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Двунаправленные (bidirectional) рекуррентные нейронные сети | #26 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Автоэнкодеры. Что это и как работают | #27 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Вариационные автоэнкодеры (VAE). Что это такое? | #28 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Делаем вариационный автоэнкодер (VAE) в Keras | #29 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Расширенный вариационный автоэнкодер (CVAE) | #30 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Что такое генеративно-состязательные сети (GAN) | #31 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Делаем генеративно-состязательную сеть в Keras и Tensorflow | #32 нейросети на Python

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

Источник

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

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

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

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

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

Цель этого метода – снизить специализацию каждого отдельного нейрона и сделать из них «специалистов более широкого профиля». Именно в этом корень проблемы переобучения. Но как уменьшить специализацию, сохраняя прежнее число нейронов? Очень просто. Давайте снова представим, что в некоторой школе работают учителя по различным предметам: химия, биология, история, математика, физика, география и информатика. Это их специализация. Затем, в какой-то момент времени директор школы озаботился их приверженностью только одной дисциплине и решил расширить горизонты их деятельности. Что он сделал? Он заставил учителя по химии время от времени вести занятия по физике, учителя по физике – химию, математика менялась с информатикой, а биология, история и география – между собой. В итоге, учителям волей-неволей пришлось изучить смежные дисциплины и расширить свою специализацию. Теперь, директор школы был доволен и знал, если какой-то отдельный учитель заболеет или уволится, у него будет кем его заменить.

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Теперь, осталось понять, как проделать тот же фокус с нейронами нейронной сети? Как в процессе обучения им «сказать», чтобы они брали на себя функции других нейронов? Решение просто до гениальности: на каждой итерации изменения весовых коэффициентов часть нейронов нужно исключать с заданной вероятностью p:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Это эквивалентно ситуации, когда часть учителей заболела и остальные вынуждены их заменять. Причем, в следующий момент, уже другие учителя уходят на больничный, а оставшиеся их заменяют. В результате, расширяется специализация всех учителей школы. Именно это происходит с нейронами в алгоритме dropout, которые то выключаются, то включаются. В какой же момент происходит их переключение? Как я выше отмечал – на каждой итерации изменения весов. Например, если веса меняются после каждого mini-batch, значит, переключение происходит после него. Если же веса меняются при каждом новом наблюдении, значит и переключение происходит с той же частотой. И так далее, то есть, мы переключаемся после каждой корректировки весовых коэффициентов.

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

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

В режиме эксплуатации значение на входе нейрона будет x, а в момент обучения значение:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как вы понимаете, это приводит к искаженным входным значениям, а значит, и к неверным результатам на выходе всей НС. Как поправить ситуацию, чтобы, в среднем, эти суммы были равными? Для этого нужно вычислить среднее число выключенных нейронов в текущем слое. Пусть их будет n штук. А понятие среднего в теории вероятностей – это математическое ожидание, которое в дискретном случае определяется выражением:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

У нас роль СВ X играет число исключенных нейронов в текущем слое; способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении— вероятность выключения; способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении— число нейронов, к которым применяется эта вероятность. Получаем среднее значение:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

А среднее число оставшихся нейронов, будет равно:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

И из этого выражения хорошо видно, что для сохранения масштаба суммы, ее нужно разделить на величину q:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

Итак, мы приходим ко второй рекомендации в борьбе с переобучением:

Рекомендация №2: если наблюдается переобучение и сокращение числа нейронов недопустимо (по тем или иным причинам), то следует попробовать метод Dropout.

Здесь остается один открытый вопрос: как выбирать значение вероятности p? Авторы этого подхода рекомендуют для нейронов скрытого слоя начинать со значения p=0,5. От себя добавлю, что, затем, при необходимости можно пробовать значения 0,4 и 0,3.

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

Реализация Dropout в Keras

Используемый нами пакет Keras, для построения и обучения НС позволяет применять алгоритм Dropout к любому отдельному слою. Для демонстрации его работы я смоделировал искусственный пример переобучения распознавания цифр. Взял маленькую обучающую выборку в 5000 изображений. Столько же отвел для проверочной. Число нейронов скрытого слоя установил в 300 – это явно много для таких выборок и такой задачи. Неизбежно должны возникнуть проблемы при обучении. Так и происходит. После 50 эпох мы видим расходящиеся графики:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Теперь, применим к скрытому слою из 300 нейронов алгоритм Dropout с параметром p=0,8 (я специально взял его таким большим, чтобы был виден эффект):

То есть, мы записываем Dropout после слоя, к которому он применяется. Теперь после обучения у нас возникает следующая картина:

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

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

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

Видео по теме

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Нейронные сети: краткая история триумфа

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Структура и принцип работы полносвязных нейронных сетей | #1 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Ускорение обучения, начальные веса, стандартизация, подготовка выборки | #4 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Функции активации, критерии качества работы НС | #6 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как нейронная сеть распознает цифры | #9 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Оптимизаторы в Keras, формирование выборки валидации | #10 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Batch Normalization (батч-нормализация) что это такое? | #12 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как работают сверточные нейронные сети | #13 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Делаем сверточную нейронную сеть в Keras | #14 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Примеры архитектур сверточных сетей VGG-16 и VGG-19 | #15 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Теория стилизации изображений (Neural Style Transfer) | #16 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Делаем перенос стилей изображений с помощью Keras и Tensorflow | #17 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как нейронная сеть раскрашивает изображения | #18 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Введение в рекуррентные нейронные сети | #19 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как рекуррентная нейронная сеть прогнозирует символы | #20 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Делаем прогноз слов рекуррентной сетью Embedding слой | #21 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как работают RNN. Глубокие рекуррентные нейросети | #22 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Как делать сентимент-анализ рекуррентной LSTM сетью | #24 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Рекуррентные блоки GRU. Пример их реализации в задаче сентимент-анализа | #25 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Двунаправленные (bidirectional) рекуррентные нейронные сети | #26 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Автоэнкодеры. Что это и как работают | #27 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Вариационные автоэнкодеры (VAE). Что это такое? | #28 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Делаем вариационный автоэнкодер (VAE) в Keras | #29 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Расширенный вариационный автоэнкодер (CVAE) | #30 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Что такое генеративно-состязательные сети (GAN) | #31 нейросети на Python

способ борьбы с переобучением в машинном обучении. Смотреть фото способ борьбы с переобучением в машинном обучении. Смотреть картинку способ борьбы с переобучением в машинном обучении. Картинка про способ борьбы с переобучением в машинном обучении. Фото способ борьбы с переобучением в машинном обучении

Делаем генеративно-состязательную сеть в Keras и Tensorflow | #32 нейросети на Python

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

Источник

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

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