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

Все видео первого курса этого курса вы можете посмотреть бесплатно по этой ссылке.

Эта статья является частью 2, Вы можете прочитать часть 1 здесь

Курс состоит из 3 тем (3 недели)

  • Неделя 1: Обзор жизненного цикла и развертывания ML
  • Неделя 2: выбор и обучение модели
  • Неделя 3: определение данных и исходный уровень

Часть 2 будет посвящена теме недели 2 и 3. (Часть 1 посвящена теме недели 1)

Из сводной части 1 жизненный цикл проекта машинного обучения включает 4 этапа: определение объема, данные, моделирование и развертывание.

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

Моделирование

Следует помнить, что

Система ИИ = код + данные

Вы можете улучшить систему ИИ, улучшив код (модель, алгоритм) или улучшив набор данных.

Разработка модели представляет собой итерационный процесс, требующий корректировки после анализа ошибок.

При разработке модели вы можете столкнуться со многими проблемами.

Проблемы в разработке моделей

  • Сначала модель должна хорошо работать на тренировочном наборе. Затем он должен хорошо показать себя на тестовом наборе. Наконец, он должен служить целям проекта.
  • Некоторые результаты могут быть более важными, чем другие в производстве.
  • В некоторых областях модель не должна различать этническую принадлежность, пол, язык и т. д.
  • Рекомендации по продуктам должны быть справедливыми для всех розничных продавцов и категорий.
  • В редких классах, например, когда 99% случаев заболевания отрицательные, точности 99% недостаточно.

Установите базовый уровень

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

Базовый уровень может прийти разными способами, включая

  • Производительность на уровне человека (HLP) или, проще говоря, насколько хорошо люди могут выполнять эту задачу. Люди лучше справляются с неструктурированными данными, чем со структурными данными (таблица), поэтому этот базовый уровень подходит для неструктурированных данных, таких как классификация изображений и распознавание речи.
  • Литературный поиск современного/открытого исходного кода
  • Быстрая и грязная реализация
  • Производительность старой системы

Советы по запуску проекта машинного обучения

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

Анализ ошибок и аудит производительности

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

Пример для проекта распознавания речи.

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

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

  • % этого тега во всех данных
  • % этого тега в образцах ошибок
  • % ошибочная классификация (ошибка) этого тега
  • Сколько возможностей для улучшения этого тега?

Чтобы расставить приоритеты, над чем работать, умножив возможности для улучшения на % данных, вы получите ожидаемый прирост точности.

Определите, насколько легко и насколько важно улучшить эту категорию.

Улучшите точность модели этой категории:

  • Соберите больше данных
  • Используйте увеличение данных, чтобы получить больше данных
  • Повышение точности этикеток/качества данных

Искаженные наборы данных

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

Использование матрицы путаницы для расчета точности и отзыва. Затем вы можете рассчитать оценку F1, которая представляет как точность, так и полноту.

Эти показатели дадут вам представление о производительности модели для каждого класса.

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

Аудит производительности

Система аудита

  1. Подумайте, как система может пойти не так.
  2. Установите метрики для доступа к производительности по этим проблемам на соответствующих срезах данных.
  3. Получить поддержку владельца бизнеса/продукта

Разработка ИИ, ориентированного на данные

После анализа ошибок есть 2 взгляда на улучшение системы ИИ: ориентированный на модель и ориентированный на данные (обратитесь к структуре системы ИИ = код + данные).

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

Эндрю Нг предполагает, что подходы, ориентированные на данные, будут более полезными для многих приложений, поэтому он сосредоточится на этом подходе.

Увеличение данных

Цель: создать реалистичные примеры, на которых алгоритм работает плохо, но люди (или другие исходные данные) работают хорошо.

Например

  • Звук: синтетический звук = оригинальный звук + шум
  • Изображение: отражение, изменение контраста, изменение яркости, использование Photoshop, GAN

Увеличение данных также является итерационным циклом.

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

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

Вы можете задаться вопросом "Может ли добавление данных путем увеличения данных повлиять на производительность модели?"

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

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

Отслеживание экспериментов

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

Это сводка по отслеживанию экспериментов из курса.

Ключевым выводом является то, что постарайтесь иметь некоторые системы для отслеживания экспериментов и включения столько информации, сколько вам удобно.

От больших данных к хорошим данным

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

Хорошие данные должны

  • Охватывает важные дела
  • Определяется последовательно
  • Имеет своевременную обратную связь с производственными данными для отслеживания отклонений концепции и данных.
  • имеет разумный размер

Данные

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

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

Чтобы прояснить определение данных, важно спросить: «Что такое ввод x и какова целевая метка y?» для обеспечения согласованности в наборе данных.

Основные типы проблем с данными

Проекты машинного обучения можно разделить на 2 основных параметра:
неструктурированные VS структурированные данные и малые VS большие данные.

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

Неструктурированные данные

  • Может иметь или не иметь массивную коллекцию немаркированных примеров.
  • Однако люди могут маркировать больше данных.

Структурированные данные

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

Малые данные

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

Большие данные

  • Процесс выделения данных

Согласованность этикетки

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

Как улучшить согласованность этикеток?

  • Попросите несколько маркировщиков пометить один и тот же пример.
  • В случае разногласий попросите MLE, эксперта в предметной области
    (SME) и/или специалистов по маркировке обсудить определение y, чтобы прийти к соглашению.
  • Если разработчики считают, что x содержит недостаточно информации,
    рассмотрите возможность его изменения.
  • Повторяйте до тех пор, пока не станет трудно значительно увеличить согласие.

Производительность на уровне человека (HLP)

Производительность на уровне человека — это, как следует из названия, производительность людей при выполнении конкретной задачи. Чтобы измерить HLP, просто позвольте людям выполнять задачу и измерьте точность людей в этой задаче.

Зачем измерять HLP?

  • Оцените ошибку Байеса/неустранимую ошибку, чтобы помочь с анализом ошибок и расстановкой приоритетов.
  • Используйте в качестве эталона для поддержки публикации.
  • Установите разумную цель.

⚠️ Его следует использовать, когда четко определена метка истинности.

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

Маркируйте и систематизируйте данные

Получение данных

Есть много вещей, которые следует учитывать в процессе получения данных.

  • Сколько времени вы должны потратить на получение данных?
    Вы можете начать с ограниченного периода времени и посмотреть, сколько данных можно получить.
  • Где собирать данные?
    Продумайте список источников данных.
  • Как маркировать данные? и Кто имеет право маркировать?
    Варианты: собственные, аутсорсинговые или краудсорсинговые
    Не увеличивайте данные более чем в 10 раз за раз.

Конвейер данных

Система ИИ должна реплицировать сценарий предварительной обработки данных. Мы называем это конвейером данных.

Существуют разные концепции конвейера данных между продуктами ИИ на этапах POC и производства.

POC (доказательство концепции):

  • Цель состоит в том, чтобы решить, является ли приложение работоспособным и стоит ли развертывать его.
  • Сосредоточьтесь на том, чтобы заставить прототип работать!
  • Ничего страшного, если предварительная обработка данных выполняется вручную. Но делайте обширные заметки/комментарии.

Этап производства:

  • После установки утилиты проекта используйте более сложные инструменты, чтобы убедиться, что конвейер данных воспроизводим.
  • Например, TensorFlow Transform, Apache Beam, Airflow и т. д.

Метаданные, происхождение данных и происхождение

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

Они полезны для анализа ошибок и выявления неожиданных эффектов.

Обучение/разработка/тестирование

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

Обзор

Поздравляю!! Это последний шаг (или первый шаг) жизненного цикла проекта машинного обучения.

Процесс оценки

  1. Обсудите бизнес-задачи (не проблемы с ИИ)
  2. Мозговой штурм ИИ-решений
  3. Оценить осуществимость и ценность потенциальных решений
  4. Определить вехи
  5. Бюджет на ресурс

⚠️ Не начинайте с ИИ! Вы можете заблудиться.

Осуществимость и ценность

Осуществимость проекта

Приведенная ниже таблица представляет собой руководство по осуществимости проекта.

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

Ценность проекта

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

Этические соображения

Вы должны думать и об этике.

  • Создает ли этот проект чистую положительную общественную ценность?
  • Является ли этот проект достаточно справедливым и свободным от предвзятости?
  • Высказывались ли открыто и обсуждались какие-либо этические проблемы?

Вехи и ресурсы

Основные характеристики контрольных точек:

  • Показатели машинного обучения (точность, точность/отзыв и т. д.)
  • Показатели программного обеспечения (задержка, пропускная способность и т. д. с учетом вычислительных ресурсов)
    Бизнес-показатели (доход и т. д.)
  • Необходимые ресурсы (данные, персонал, помощь других команд)
  • График

Если вы не уверены, рассмотрите возможность сравнения с другими проектами или сначала создайте POC (Proof of Concept).

Спасибо, что дочитали до конца. По моему опыту, MLOps действительно важны для проектов ИИ. Точность модели ничто, если модель реализована неправильно.

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