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

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

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

Когда сохранение всех данных невозможно

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

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

Работа с большими наборами данных также делает поиск гиперпараметров, процесс настройки некоторых параметров модели перед фактическим обучением, чрезвычайно утомительным, поскольку он включает в себя сотни или тысячи отдельных обучений модели на долях полного обучающего набора. В то время как классический поиск по сетке очень медленный для больших наборов данных, расширенные стратегии поиска, такие как Hyperband [1], используют небольшие случайные выборки, чтобы отбросить плохие конфигурации гиперпараметров (HP) на ранних этапах процесса.

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

Случайная выборка: модели обучения на меньшем количестве данных

Если говорить о выборке выборки, первым естественным методом является случайная однородная выборка. Кривые обучения, основанные на случайной выборке, широко изучались и публиковались для многих задач, например, большая база данных для табличных моделей scikit-learn (с HP по умолчанию) доступна в LCDB [2].

Если мы рассмотрим три больших набора данных из LCDB (poker, covertype и codrna), мы можем наблюдать три разные ситуации (рисунок ниже), когда модель все еще обучается (poker), кривая точности выравнивается (covertype) и кривая обучения уже плоская (codrna).

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

В среднем по моделям это соответствует ускорению обучения с 5 до 140 раз, как показано ниже. На этом рисунке показана ситуация с сохранением 95% окончательной точности: центральная ось y графика показывает ускорение по отношению к общему времени подбора (аннотировано внутри столбцов), а самая правая ось y графика указывает необходимую часть всего набора данных (чем меньше, тем лучше, полный размер набора данных аннотирован внутри столбцов). Ускорение обучения зависит от масштабируемости модели, например, логистическая регрессия имеет меньшее ускорение, чем случайный лес для той же части обучающего набора.

Случайная выборка: случай XGBoost

Чтобы взглянуть на кривые обучения более эффективных моделей машинного обучения для табличных данных, таких как XGBoostingClassifier, мы реализуем собственный тест на шести наборах данных, содержащих от 10 000 до 10 миллионов образцов (293/covertype, набор данных о задержке полета, higgs, metropt_failures, tabular-playground-series-sep-2021, user_sparkify_event_data). Мы применяем оптимизацию HP перед тренировкой и наблюдаем за надежными показателями, такими как AUC и оценка F1 (вместо точности), чтобы учесть дисбаланс в наших данных.

Давайте сначала посмотрим, как падает производительность классификатора XGBoosting при обучении на различных частях данных. На этом этапе мы рассматриваем один набор данных с 10 миллионами строк, metropt_failures, и моделируем другие шесть меньших наборов данных, взяв его части. Например, набор данных, выделенный синим цветом, состоит из 10 000 образцов из одного и того же исходного набора данных, metropt_failures. На рисунке ниже видно, что чем больше набор данных, тем меньше сокращение обучающего набора повлияет на производительность.

Относительный AUC — это отношение AUC, полученного при обучении модели на подмножестве данных, и обычного AUC при обучении модели на всем наборе данных. Например, обучение на 5% набора данных с 10 миллионами образцов (розовая линия) снизит AUC до 95% конечного AUC, в то время как использование 5% набора данных с 50 000 образцов (желтая линия) снизит AUC до 85% от конечного AUC.

Несмотря на особенности каждого набора данных (рисунок ниже), мы всегда получаем один и тот же паттерн убывающей отдачи. Даже с учетом различных моделей (XGBoosting, MLP, логистическая регрессия), если 5-процентное падение итогового балла F1 приемлемо, мы можем ограничить размер обучения от 1% до 30% случайной выборки всего набора данных и, таким образом, получить от 10x до 500x ускорение времени обучения.

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

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

Случайная выборка: настройка гиперпараметров на меньшем количестве данных

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

Другими словами, мы надеемся, что если конфигурация C1 лучше, чем конфигурация C2 в обычном HP-поиске, мы также обнаружим то же соотношение, C1 лучше, чем C2, при выполнении аппроксимированного HP-поиска на небольших разбиениях. Независимо от размера набора данных относительная производительность конфигураций приблизительно сохраняется, даже если показатель производительности, вероятно, будет выше (как для C1, так и для C2) при обычном поиске HP, чем при аппроксимированном поиске HP, потому что последний обучается на меньшем количестве моделей данных, которые, следовательно, будут иметь более низкое качество.

Простой эксперимент [3], настраивающий классификатор SVM для классификации цифр MNIST, сравнивает производительность (ошибки проверки) аппроксимированного поиска по сетке HP с использованием 1/128, 1/16, 1/4 всего обучающего набора с обычным поиском по сетке HP по всему набору данных (цифры слева направо, от 391 до 50 000 выборок). Поиск осуществляется по сетке 10x10 значений в лог-пространстве для двух гиперпараметров, C и gamma.

Мы легко можем заметить, что лучшие конфигурации (выделены синим цветом) остаются примерно одинаковыми независимо от размера тренировки. Чтобы дать представление о продолжительности процесса, на нашей машине (ЦП Intel Xeon E-2288G @ 3,70 ГГц, 8 ядер, 64 ГБ ОЗУ) полный поиск сетки HP занимает около трех часов, а приблизительный поиск по 1/128 данных занимает 40 секунд, таким образом, ускорение настройки HP составляет 269x.

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

Предположение о том, что две конфигурации можно ранжировать даже с использованием небольших наборов данных, лежит в основе усовершенствованного метода поиска HP Hyperband [1], авторы которого отмечают, что чем ближе по производительности две конфигурации, тем больше бюджета (большего размера) нам нужно, чтобы выбрать лучшую из них.

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

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

Кривые обучения: прогнозирование эффекта большего количества обучающих данных

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

Имеются эмпирические данные о том, что кривые обучения грубо масштабируются как степенные законы как для классических табличных моделей, так и для нейронных сетей [4, 5]. Исследователи машинного обучения разработали методы отбора, предназначенные для определения разделов, более репрезентативных, чем простые случайные разбиения, чтобы закон масштабирования производительности увеличивался быстрее. Чем круче кривая, чем меньше размер набора данных, при котором достигается заданная точность, тем эффективнее выбор данных, как показано на этом рисунке.

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

Заключение

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

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

Рекомендации

[1] Hyperband: новый бандитский подход к оптимизации гиперпараметров

[2] LCDB 1.0: обширная база данных кривых обучения для задач классификации

[3] Быстрая байесовская оптимизация гиперпараметров машинного обучения на больших наборах данных

[4] Формы кривых обучения: обзор

[5] Помимо законов нейронного масштабирования: превзойти масштабирование по степенному закону за счет сокращения данных