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

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

Мы создали эталонную реализацию в Azure ML для Active Learning, чтобы продемонстрировать, как Active Learning работает на практике. Сюда входят шаблоны и библиотеки, упрощающие внедрение нового активного обучения в Azure.

Функциональный дизайн

Процесс активного обучения состоит из двух основных блоков: «Обучение модели» и «Модель в производстве». Как и обычные MLOps, эти два блока связаны, и изменения автоматически развертываются из обучения модели в модель в производстве. Есть важные особенности, которые отличают процесс активного обучения от обычных MLOps:

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

Технический дизайн

Технический дизайн — это реализация функционального потока с помощью компонентов Azure.

  • Служба оценки реализуется с помощью Managed Online или Batch Endpoint.
  • Мы создали библиотеку мониторинга моделей и данных для сбора данных из службы оценки, затем сохраняем их в таблицах Azure Data Explorer и используем сильные стороны ADX в масштабируемом анализе данных для выполнения выбора данных и аналитических запросов.
  • Мониторинг моделей собирает прогнозные данные, включая вероятности, прогнозируемую метку и необработанные данные изображения, сохраняет их в таблицах ADX и хранилище Azure.
  • В проекте маркировки Azure ML настроена папка входных данных в хранилище Azure ML, настроенная на автоматическое обновление для маркировки человеком.
  • Задание службы выбора данных периодически запускается для собранных прогнозных данных, где применяется стратегия приоритизации для выбора части данных. Выбранные примеры отправляются во входное расположение проекта Azure ML Labeling.
  • AML Labeling создает задачи для специалистов по маркировке для работы с новыми данными
  • Специалист по маркировке людей выпускает помеченные данные в виде набора данных о борьбе с отмыванием денег
  • Функция Azure с триггером очереди BLOB-объектов вызывает рабочий процесс github, чтобы запустить конвейер обучения и развертывания (рабочий процесс github).
  • Шаг обучения в конвейере загружает текущую контрольную точку модели и выполняет добавочное обучение с новыми помеченными данными. В конце он производит новую версию модели
  • Начинается этап развертывания для развертывания новой версии модели в рабочей среде.

Модули кода

Основной модуль

  • azure_function: это функция azure, которая реагирует на событие, когда помеченный набор данных экспортируется из проекта Azure ML Labeling. Функция Azure запускает новый рабочий процесс обучения, который реализован как рабочий процесс Github (active_learning_cv_training_deployment).
  • data_engineering: содержит функции и классы, которые реализуют одну из четырех стратегий расстановки приоритетов и подготавливают набор данных в формате, который может использоваться учебным модулем.
  • конвейеры: содержит определение конвейеров, которые объединяют компоненты функционального потока, такого как обучение
  • оценка: содержит реализацию оценки в реальном времени и пакетной оценки с использованием управляемой онлайн-конечной точки Azure ML и конечной точки пакетной обработки.
  • обучение: содержит определения процедур обучения. Предоставляется реализация компьютерного зрения AutoML, но можно подключить настраиваемый учебный модуль.
  • мониторинг: содержит служебный класс для сбора данных в потоковом и пакетном режимах и предоставляет службу запросов к таблицам данных в ADX.

Автоматизация с помощью действий и рабочих процессов Github

Для автоматизации ряда операций при изменении и доступности ввода реализованы следующие рабочие процессы Github.

  • active_learning_cv_data_selection: этот рабочий процесс запускается по расписанию (например, ежедневно), который оценивает данные, собранные из модуля мониторинга из службы подсчета очков, и приоритизирует данные в соответствии со стратегией выбора и этапами данных для маркировки.
  • active_learning_cv_training_deployment: запускает задание обучения, а затем выполняет развертывание в службе оценки. Триггером для этого рабочего процесса является событие, когда набор данных экспортируется из службы маркировки машинного обучения Azure.

Модуль моделирования

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

  • Первоначальное обучение и развертывание модели на небольшом наборе данных, выбранном из полного набора данных.
  • Модуль моделирования оценки, который выбирает данные из полного набора данных, минус данные, которые использовались, и оценивает с помощью развернутой модели.
  • Оцененные данные собираются и расставляются по приоритетам с использованием стандартных модулей. Здесь выходные данные напрямую соединяются с полным набором данных с метками для получения метки, а не отправляются в Azure ML Labeling.
  • Набор обучающих данных создан и отправлен на обучение и развертывание. Используя режим симуляции, вы можете оценить эффективность активной маркировки с различными настройками. Однако для этого требуется большой размеченный набор данных. На приведенной ниже диаграмме и в таблице показано сравнение динамики производительности модели в моделировании активного обучения после 30 раундов пошагового обучения с активным обучением, в каждом из которых используется 50 помеченных изображений, выбранных из 500 изображений, используемых для оценки.

Наблюдение

Кажется, нет явного победителя среди стратегий достоверности (LC), наименьшей маржинальной неопределенности (SMU), энтропийной выборки (ES). Однако по сравнению со случайной выборкой, например, с наименьшей достоверностью в моделирующем упражнении, мы наблюдаем повышение точности примерно на 5–10 % в каждом дополнительном раунде обучения. Еще одно наблюдение заключается в том, что чем более избирательным он является, тем эффективнее преднамеренная стратегия по сравнению с методом случайной выборки.

Репозиторий Github: MLOpsTemplate/src/active_learning_cv at james-simdev · microsoft/MLOpsTemplate (github.com)

Источник: Эта работа написана в соавторстве с моей коллегой из Microsoft Николь Серафино.