Как машины учатся

Недообучение и переобучение моделей машинного обучения

Когда обучения слишком много или слишком мало

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

Представьте студента, который готовится к экзамену по истории. Один успел прочитать только введение к учебнику – он знает слишком мало, чтобы отвечать уверенно. Другой зазубрил все билеты наизусть, слово в слово, но стоит преподавателю немного изменить формулировку вопроса, как студент теряется: он не освоил материал, а просто его запомнил. Оба провалятся, но по разным причинам.

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

Причины и признаки недообучения модели

Когда примеров не хватает

Начнём с первой крайности. Допустим, мы хотим научить модель отличать кошек от собак на фотографиях. Если мы покажем ей всего десять снимков – по пять каждого вида, – она, скорее всего, не сформирует объективного представления о том, как выглядят эти животные. Десять примеров – слишком узкая выборка. Среди них может оказаться три рыжих кота и две белые собаки, и модель решит, что рыжий цвет – это признак кошки, а белый – собаки. Это не знание, а случайная корреляция, которая работает на этих десяти картинках, но окажется бесполезной на одиннадцатой.

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

Хорошая аналогия – ребёнок, которому показали одну-единственную птицу и сказали: «Это птица». Теперь он убеждён, что все птицы – серые голуби. Воробья он ещё узнает, но попугай или пеликан поставят его в тупик.

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

Это заметно даже на простых задачах. Если попросить такую модель классифицировать отзывы на фильмы как положительные или отрицательные, она может научиться реагировать только на самые очевидные слова – «отлично» или «ужасно», полностью игнорируя контекст. Саркастическая фраза «Ну и шедевр, ничего не скажешь» останется для неё непонятой.

Недообучение – это не катастрофа, а сигнал: модели нужно больше качественных и разнообразных данных.

Что такое переобучение в машинном обучении

Когда примеров слишком много или они однотипны

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

Вот тут начинается переобучение.

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

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

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

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

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

Методы поиска баланса при обучении ИИ

В поисках золотой середины

Итак, перед нами две крайности. При нехватке данных модель не понимает, чего от неё хотят. При избытке однообразных данных – «переусердствует» и перестаёт видеть общее за частным. Где же находится точка баланса?

Универсального ответа не существует. Это не формула, а процесс постоянной настройки, в котором задействовано несколько инструментов одновременно.

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

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

Третий инструмент – регулярный мониторинг ошибки. Если ошибка на тренировочных данных снижается, а на проверочных – растёт, это явный признак переобучения. Модель начала заучивать, а не понимать. В такой момент нужно остановиться и скорректировать процесс.

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

Именно эта гибкость и является целью: не заучить, а понять.

Итоги: как избежать переобучения и недообучения

Что в итоге

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

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

Хорошая модель – это не та, которая идеально справляется с уже знакомыми задачами, а та, которая уверенно работает с новыми. Разница между этими подходами и есть разница между запоминанием и пониманием.

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

Предыдущая статья 9. Как система учится: шаг за шагом Как машины учатся Следующая статья 11. Генерализация: как ИИ учится работать с незнакомым Как машины учатся