Повторяющийся круг машинного обучения
Как управлять проектом машинного обучения?
Машинное обучение — это новый инструмент для достижения программного обеспечения 2.0 продукта путем перехода от управления по правилам к управлению данными. Машинное обучение позволяет приложениям и службам перейти от интерактивных к персонализированным.
Несмотря на то, насколько горячей и модной является тема машинного обучения, на самом деле процент неудач этих проектов шокирует. Некоторые удивительные цифры об уровне отказов проектов машинного обучения:
- По оценкам Gartner, 85% проектов машинного обучения терпят неудачу.
- VentureBeat AI говорит, что «87% проектов машинного обучения никогда не доходят до производства.
Основной причиной этих неудач, а также высокой стоимости, связанной с ними, является разрыв между машинным обучением и разработкой программного обеспечения. Разработка программного обеспечения имеет тенденцию быть предсказуемой и измеримой. Его жизненный цикл в основном протекает в одном направлении: Требования > Дизайн > Реализация > Тестирование > Развертывание.
Однако машинное обучение все еще находится в стадии исследования, и ожидать 100% успеха нереально. Его жизненный цикл проходит через повторяющийся круг с множеством итераций и экспериментов. Можно не ожидать столь знаменитых поставок проектов на основе Agile. Просьба к специалистам по данным или инженерам по машинному обучению представить прогресс в каждом стендапе приведет только к предложениям «если-иначе» вместо нейронных сетей. Вот некоторые важные предварительные условия, прежде чем даже планировать проект машинного обучения:
- Нахождение технической возможности. (проект по созданию видео из текста в качестве дополнительной функции для вашего продукта может быть технически неосуществимым в 2021 году).
- Ясность критериев успеха. (Должно быть ясно, какая точность, время вывода и т. д. модель анализа настроений должна быть запущена в производство, прежде чем начинать ее.)
- Четкие ожидания от руководства. (Бизнес-лидеры должны понимать, как работает машинное обучение и какую выгоду для бизнеса даст проект.)
Давайте обсудим повторяющийся цикл жизненного цикла проекта машинного обучения.
План и настройка
Первый шаг при запуске проекта — начинать его или нет? Вам не нужен ни JCB, чтобы выкорчевать растения томата, ни машинное обучение, чтобы выполнить добавление. Убедившись в ценности, которую он будет предоставлять, должна быть поставлена надлежащая цель проекта. Какие компромиссы между точностью и скоростью приемлемы, какие фреймворки можно использовать, как настроить кодовую базу — все эти ответы нужны на данном этапе.
Подготовка данных
На этом этапе нам необходимо собрать и собрать данные из различных источников.
- Подготовьте и обработайте данные в соответствии с условием задачи.
- Если это контролируемая проблема, нужны основные истины или метки каждой точки данных.
- Создайте конвейер приема данных.
При выполнении всего этого нам может потребоваться вернуться к этапу Планирование и настройка в таких случаях, как:
- Получить размеченные данные слишком сложно.
- Легче пометить другую задачу, которая может дать такую же ценность для бизнеса.
Подготовка модели
На этом этапе у нас достаточно данных в нужном формате для построения модели машинного обучения для задачи, к которой мы стремимся. Он состоит из нескольких подэтапов, таких как построение и отладка модели, обучение и настройка модели, тестирование и оценка.
В разделе "Построение моделей и отладка"
- Создайте базовую модель для измерения производительности. (например, для последовательной задачи — простой LSTM, для данных изображения — архитектура типа LeNet и т. д.)
- Узнайте модели SOTA для задачи (если они есть) и попробуйте их воспроизвести.
- Узнайте, что пробуют другие люди, или любую предварительно обученную модель, доступную для задачи (если она доступна).
- Быстро пробуйте различные изолированные идеи на ранней стадии.
- Реализуйте модели и тренируйтесь с несколькими точками данных.
- Отладка реализации, если таковая имеется. (В 75% случаев это будут проблемы с версиями библиотек или формами тензоров.)
В разделе "Обучение и настройка моделей"
- Получите необходимую инфраструктуру для передачи всех данных для обучения (при необходимости выберите ресурсы и графические процессоры).
- Определите метрику, например. точность, точность и т. д. из критериев успеха, определенных на этапе планирования проекта.
- Обучите модель и измерьте метрику на проверочном наборе.
- Если метрика на обучающих данных хуже, чем базовая, увеличьте сложность модели, настроив необходимые гиперпараметры. Это может быть количество слоев или количество нейронов в слое и т. д.
- Если метрика с избыточной подгонкой, т. е. метрика для обучающих данных, великолепна, но не так хороша для проверочных данных, что будет в большинстве случаев, попробуйте с этим справиться. Вы можете попробовать различные методы регуляризации или методы отсева. Возможно, нормализация (в недавно опубликованных работах предпочтение отдается регуляризации) будет лучше.
- Итеративно продолжайте отлаживать модели и выявляйте распространенные виды отказов.
В разделе "Тестирование и оценка"
- Оцените производительность модели при распределении тестовых данных. Предполагается, что распределение ваших тестовых данных имитирует данные реального мира.
- Пересмотрите выбранные метрики оценки модели, чтобы убедиться, что производительность модели соответствует желаемому уровню.
- Также протестируйтеконвейер входных данных, функцию вывода модели, вывод явных сценариев, ожидаемых в рабочей среде.
При выполнении этого шага, если вы поняли, что собранных данных недостаточно, требования к функциям отличаются или метки данных неверны, вернитесь к этапу Подготовка данных.
Если задача слишком сложна для решения или компромиссные требования невыполнимы, вернитесь к этапу Планирование и настройка.
Развертывание
На этом этапе у вас готов конвейер данных, готова нужная модель. Запустите модель в пилотном режиме на пару недель, оцените отклонения, устраните их и запустите модель в производство.
На этом этапе, если вам нужна повышенная точность или улучшение какой-либо метрики, снова вернитесь к этапу Подготовка модели.
Если существует несоответствие данных между рабочими и тестовыми данными, вы собрали больше данных или модель определенных сценариев всегда не дает правильного прогноза, вернитесь к этапу подготовки данных и повторите шаги.
После рассмотрения всех шагов, если производительность по-прежнему невелика ни с точки зрения точности, ни с точки зрения скорости, или критерии успеха, определенные во время планирования, не подходят для производства, тогда необходимо повторить весь цикл снова. на этапе Планирование и настройка.
PS:извлекая уроки из наших предыдущих экспериментов в CSAT.AI, мы всегда убеждаемся, что перед началом проекта мы правильно определяем приемлемый компромисс между точностью, временем вывода и стоимостью вывода. Будучи инженером, мы всегда можем стремиться к современным вещам, но размещение BERT на графическом процессоре для повышения точности анализа настроений на 1% может не обеспечить желаемой ценности для бизнеса.