Различные случаи недообучения и переобучения

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

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

ПРИМЕЧАНИЕ. Графики, показанные ниже, представляют собой потери модели по сравнению с EPOCHS (итерации, которые мы потратили на обучение модели). Они называются кривыми обучения модели машинного обучения. Они имеют решающее значение для диагностики моделей недообучения и переобучения.

Посмотрите на рисунок выше, он почти похож на рисунок -1. Вместо ошибок и времени здесь у нас потери модели и ЭПОХИ. Чем меньше ошибок делает модель, тем ниже будут потери. Потери, показанные на диаграмме, являются потерями при обучении. Мы измеряем способность модели к обучению на тех же данных, которые мы использовали для ее обучения. Вернемся к диаграмме для начинающих программистов (рисунок -1). Представьте, что новичок оценивает себя и свои знания, которые он выучил, не проводя для себя никакого теста, или же он/она провел тест на вопросы, которые он уже хорошо решил. Случайно новичок мог запомнить ответы и сделать хорошо. На рисунке -2 показан возможный результат теста для начинающих. Цифра говорит нам о том, что новичок очень плохо учится. Применяя эту аналогию к модели машинного обучения, обратите внимание, что модель машинного обучения не очень хорошо работает с обучающим набором данных. у этой модели есть все возможные преимущества, чтобы преуспеть, и все же потеря не есть хорошо. обучение на этом рисунке модель не соответствует данным правильно, если потери при обучении высоки.

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

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

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

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

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

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

Во второй ситуации здесь происходит несколько вещей. Во-первых, до определенного момента потери на тренировках и тестах уменьшаются, и это хорошо. Затем внезапно потери при тестировании начинают увеличиваться. До определенного момента модель хорошо подходит, но после этого начинается переоснащение. Он запоминает тренировочные данные и больше не обобщает. Главный вывод: мы слишком долго обучали модель. Простой способ решить эту проблему — ранняя остановка. Мы хотим прекратить обучение прямо перед тем, как модель переобучится. Это кривые обучения, которые вы можете использовать для диагностики своих моделей.

Две вещи, которые нужно помнить:

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

Спасибо за прочтение….