Повторяющийся круг машинного обучения

Как управлять проектом машинного обучения?

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

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

Основной причиной этих неудач, а также высокой стоимости, связанной с ними, является разрыв между машинным обучением и разработкой программного обеспечения. Разработка программного обеспечения имеет тенденцию быть предсказуемой и измеримой. Его жизненный цикл в основном протекает в одном направлении: Требования > Дизайн > Реализация > Тестирование > Развертывание.

Однако машинное обучение все еще находится в стадии исследования, и ожидать 100% успеха нереально. Его жизненный цикл проходит через повторяющийся круг с множеством итераций и экспериментов. Можно не ожидать столь знаменитых поставок проектов на основе Agile. Просьба к специалистам по данным или инженерам по машинному обучению представить прогресс в каждом стендапе приведет только к предложениям «если-иначе» вместо нейронных сетей. Вот некоторые важные предварительные условия, прежде чем даже планировать проект машинного обучения:

  1. Нахождение технической возможности. (проект по созданию видео из текста в качестве дополнительной функции для вашего продукта может быть технически неосуществимым в 2021 году).
  2. Ясность критериев успеха. (Должно быть ясно, какая точность, время вывода и т. д. модель анализа настроений должна быть запущена в производство, прежде чем начинать ее.)
  3. Четкие ожидания от руководства. (Бизнес-лидеры должны понимать, как работает машинное обучение и какую выгоду для бизнеса даст проект.)

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

План и настройка

Первый шаг при запуске проекта — начинать его или нет? Вам не нужен ни JCB, чтобы выкорчевать растения томата, ни машинное обучение, чтобы выполнить добавление. Убедившись в ценности, которую он будет предоставлять, должна быть поставлена ​​надлежащая цель проекта. Какие компромиссы между точностью и скоростью приемлемы, какие фреймворки можно использовать, как настроить кодовую базу — все эти ответы нужны на данном этапе.

Подготовка данных

На этом этапе нам необходимо собрать и собрать данные из различных источников.

  1. Подготовьте и обработайте данные в соответствии с условием задачи.
  2. Если это контролируемая проблема, нужны основные истины или метки каждой точки данных.
  3. Создайте конвейер приема данных.

При выполнении всего этого нам может потребоваться вернуться к этапу Планирование и настройка в таких случаях, как:

  1. Получить размеченные данные слишком сложно.
  2. Легче пометить другую задачу, которая может дать такую ​​же ценность для бизнеса.

Подготовка модели

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

В разделе "Построение моделей и отладка"

  1. Создайте базовую модель для измерения производительности. (например, для последовательной задачи — простой LSTM, для данных изображения — архитектура типа LeNet и т. д.)
  2. Узнайте модели SOTA для задачи (если они есть) и попробуйте их воспроизвести.
  3. Узнайте, что пробуют другие люди, или любую предварительно обученную модель, доступную для задачи (если она доступна).
  4. Быстро пробуйте различные изолированные идеи на ранней стадии.
  5. Реализуйте модели и тренируйтесь с несколькими точками данных.
  6. Отладка реализации, если таковая имеется. (В 75% случаев это будут проблемы с версиями библиотек или формами тензоров.)

В разделе "Обучение и настройка моделей"

  1. Получите необходимую инфраструктуру для передачи всех данных для обучения (при необходимости выберите ресурсы и графические процессоры).
  2. Определите метрику, например. точность, точность и т. д. из критериев успеха, определенных на этапе планирования проекта.
  3. Обучите модель и измерьте метрику на проверочном наборе.
  4. Если метрика на обучающих данных хуже, чем базовая, увеличьте сложность модели, настроив необходимые гиперпараметры. Это может быть количество слоев или количество нейронов в слое и т. д.
  5. Если метрика с избыточной подгонкой, т. е. метрика для обучающих данных, великолепна, но не так хороша для проверочных данных, что будет в большинстве случаев, попробуйте с этим справиться. Вы можете попробовать различные методы регуляризации или методы отсева. Возможно, нормализация (в недавно опубликованных работах предпочтение отдается регуляризации) будет лучше.
  6. Итеративно продолжайте отлаживать модели и выявляйте распространенные виды отказов.

В разделе "Тестирование и оценка"

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

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

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

Развертывание

На этом этапе у вас готов конвейер данных, готова нужная модель. Запустите модель в пилотном режиме на пару недель, оцените отклонения, устраните их и запустите модель в производство.

На этом этапе, если вам нужна повышенная точность или улучшение какой-либо метрики, снова вернитесь к этапу Подготовка модели.

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

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

PS:извлекая уроки из наших предыдущих экспериментов в CSAT.AI, мы всегда убеждаемся, что перед началом проекта мы правильно определяем приемлемый компромисс между точностью, временем вывода и стоимостью вывода. Будучи инженером, мы всегда можем стремиться к современным вещам, но размещение BERT на графическом процессоре для повышения точности анализа настроений на 1% может не обеспечить желаемой ценности для бизнеса.

Использованная литература: