Если ваш ответ был «Да, я использовал раннюю остановку», вы можете прочитать это

Вы сидите в баре, полном специалистов по данным, когда вы подслушиваете этот разговор:

- Подождите минуту! Вы позаботились о переобучении?

- Да, раньше я раньше останавливался.

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

И это не просто разговоры в баре. Если вы пролистаете Библию глубокого обучения, на странице 425 вы прочитаете Раннее прекращение обучения должно использоваться почти повсеместно (Гудфеллоу). В науке о данных не каждый день можно встретить слово универсально. Итак, у вас может возникнуть соблазн поверить, что ранняя остановка - это философский камень переобучения. Но, к сожалению, Николас Фламель никогда не занимался машинным обучением.

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

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

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

Вот список следующих абзацев:

  1. Что такое переобучение?
  2. Что такое ранняя остановка?
  3. Исследователь данных в лесу
  4. Заблуждение Джонни Деппа
  5. Ужин в Dwight’s
  6. Подведение итогов

1. Что такое переобучение?

Переобучение - это неспособность модели прогнозирования обобщить то, что она извлекла из некоторых данных A («обучающие данные»), на некоторые новые данные B («тестовые данные»).

Например, вы даете модели 100 000 портретов кошек и 100 000 портретов собак (данные обучения), чтобы она научилась отличать кошек от собак. Затем вы берете 10 000 новых портретов кошек и собак (тестовые данные) и просите модель пометить их. Если модель не работает на тестовых данных так же хорошо, как на обучающих данных, это означает, что ваша модель не может быть обобщена.

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

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

2. Что такое ранняя остановка?

Ранняя остановка - это метод регуляризации, используемый для борьбы с переобучением. Это вероятно, наиболее часто используемая форма регуляризации в глубоком обучении (Глубокое обучение, стр. 247) . Он настолько прост, эффективен и лишен побочных эффектов, что Хинтон, Бенжио и ЛеКун назвали его прекрасным бесплатным обедом.

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

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

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

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

Удивительно, не правда ли? Что ж, ранняя остановка - это хорошо, но не обязательно. Посмотрим почему.

(*) для простоты в этой статье я буду неправильно использовать термин «тестовые» данные вместо «проверочные»

3. Data Scientist в лесу

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

Набор данных состоит из 8124 грибов. Для каждого гриба были зарегистрированы 22 различных характеристики (например, запах, форма шляпки, цвет жабр и т. Д.). Целевая переменная - съедобный или ядовитый гриб. Этот набор данных имеет некоторые особенности:

  • все 22 характеристики категоричны;
  • все они состоят из нескольких уникальных ценностей.

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

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

Вот так выглядит тренировочный набор Дуайта:

Да, вы правильно поняли. Дуайт случайно забыл индекс строки среди функций! Мальчик такой рассеянный. Однако эта ошибка не должна навредить. Фактически, поскольку Дуайт будет использовать некоторые методы регуляризации, «ROW_INDEX» следует автоматически игнорировать в модели, так как это приведет к слишком сильному переобучению.

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

После установки некоторых гиперпараметров, которые он считает необходимыми, Дуайт запускает CatBoostClassifier:

4. Заблуждение Джонни Деппа.

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

Эта цифра является ярким примером того, почему раннее прекращение лечения не так непобедимо, как многие думают.

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

Фактически, на последней итерации модель достигла средней точности 94% на обучающем наборе и 79% на тестовом наборе. Между этими двумя числами существует огромная разница, что является явным признаком переобучения.

Но Дуайту все равно. «В конце концов, - считает он, - 79% на тестировании - это не так уж и плохо». Вот как он это видит:

«Единственное, что имеет значение, - это производительность на тестовом наборе. Кого волнует переоснащение, если у меня хорошие результаты теста? »

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

При чем здесь Джонни Депп?

Представьте, что вы кинопродюсер. Вам нужен ведущий актер для вашего следующего фильма, и вы начинаете оглядываться, пока не поймете: Джонни Депп идеально подходит для этой роли. Поскольку вы очень внимательный парень, вы делаете уроки и проверяете кассовые сборы некоторых из его фильмов, таких как «Мортдекай» (47 миллионов долларов), «Черная месса» (100 миллионов долларов), «Одинокий рейнджер» (260 миллионов долларов). Теперь вы можете подумать: «Ого, это большие деньги! Джонни Депп определенно хороший выбор ».

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

Как это применимо к машинному обучению?

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

Модельные ожидания Дуайта были высокими. Фактически, модель «обещала» обеспечить среднюю точность 94% (эффективность обучения). Однако результат оказался очень неутешительным - всего 79% (производительность теста). Эта модель похожа на актив, который не смог вернуть инвестору.

5. Ужин в Dwight’s.

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

«ROW_INDEX» - безусловно, самая важная функция в модели. По сути, Дуайт решает, какие грибы он собирается съесть, в основном на основе индекса строки грибов в наборе данных, который является просто случайным числом! Если вы не любитель русской рулетки, я бы дважды подумал, прежде чем принять от него приглашение на ужин.

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

Например, у вас могут быть две следующие модели:

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

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

  1. Когда у вас есть модель переобучения, вероятно, возможно найти лучшую модель (т. Е. Модель с более низкой производительностью обучения и / или более высокой производительностью тестирования), а именно: переход от модели A к модели Б.
  2. Модель машинного обучения предназначена для изучения шаблонов. Модель переобучения - это модель, которая усвоила множество неправильных шаблонов.
  3. Переоснащенная модель скоро устареет. Если вы намереваетесь использовать вашу модель с течением времени, вы больше пострадаете от дрейфа концепций.

6. Заключение

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

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

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

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

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

Любая ошибка в записной книжке - это вина Дуайта.

Спасибо за чтение! Надеюсь, статья вам понравилась.

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