Заметки из индустрии, СЕРИЯ ПРЕДПРИЯТИЙ МАШИННОГО ОБУЧЕНИЯ

Машинное обучение предприятия - Почему сложно построить и обучить «реальную» модель

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

Что такое Enterprise ML?

Что нужно для создания приложения машинного обучения (ML), которое принесет вашей компании реальную пользу для бизнеса?

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

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

Какие передовые практики переняли ведущие мировые технологические компании?

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

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

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

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

Взросление на пути к машинному обучению

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

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

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

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

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

Жизненный цикл и роли приложения ML

Доставка приложения ML включает в себя несколько задач. За последние несколько лет в отрасли появился ряд специализированных ролей для выполнения этих задач.

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

Однако некоторые из этих концепций начинают выкристаллизовываться. Так что нам все еще полезно получить общее представление о процессе.

  • Процесс начинается с построения и обучения модели специалистом по данным, часто с использованием моментальных снимков обучающих данных.
  • Затем инженер по обработке данных настраивает конвейер данных для получения обучающих данных из хранилища аналитики компании. Конвейер также может заполнять хранилище Analytics из источников операционных данных.
  • Затем обученная модель должна быть интегрирована с бизнес-приложением, используемым конечными пользователями. Он получает входные данные, которые модель использует для прогнозирования. Прогнозируемые результаты затем возвращаются конечным пользователям. Это делает разработчик приложений или инженер по продукту.
  • Инженер по машинному обучению развертывает приложение машинного обучения в производственной среде.
  • Наконец, ML Ops отвечает за поддержание работы приложения в производственной среде и мониторинг его производительности.

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

Чем обучение модели машинного обучения «реального мира» отличается от «демонстрационного» проекта машинного обучения?

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

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

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

  • Какие источники данных доступны?
  • Как мы запрашиваем и извлекаем данные?
  • Какие поля они содержат?
  • Какие функции данных мы будем использовать?
  • Как мы получаем этикетки?
  • Правильно ли отформатированы данные?
  • Есть ли пропущенные значения или значения мусора?
  • Какие срезы / сегменты данных мы должны использовать?
  • Сколько тренировочных данных мне нужно?
  • Как я могу пополнить свои данные?

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

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

Построение модели и рабочий процесс обучения

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

  • Обнаружение данных: вы можете начать с просмотра источников данных, чтобы найти набор данных, который вы хотите использовать. Важно также указать, какие данные будут использоваться в качестве целевых меток.
  • Очистка данных. Данные, вероятно, беспорядочные и требуют проверки и очистки. Могут быть отсутствующие или недопустимые значения, выбросы, дубликаты и т. Д. Некоторые поля могут иметь бесполезные значения, например. В поле типа «Причина оттока» много значений, в которых просто написано «Неизвестно». Некоторые значения могут быть отформатированы неправильно, например. числа, даты. Если вы работаете с изображениями, у вас могут быть нечеткие изображения, изображения разного размера и разрешения, недостаточное освещение или фотографии, снятые под разными углами.
  • Исследовательский анализ данных (EDA). Посмотрите на распределения данных, чтобы выявить закономерности и взаимосвязи между полями. Вы можете определить сезонные тенденции или разбить данные на соответствующие сегменты и т. Д.
  • Разработка функций. Создавайте новые функции, дополняя некоторые поля, выполняя агрегаты или свертки, или выполняя вычисления путем объединения нескольких полей. Например, вы можете использовать поле даты для извлечения новых функций для количества дней с начала месяца или года или того, является ли это праздничным днем.
  • Выбор функций. Определите функции, которые наиболее полезны для модели для прогнозирования результатов. Удалите элементы, которые не добавляют ценности модели.
  • Выбор модели. Вы можете попробовать несколько различных алгоритмов машинного обучения или архитектур глубокого обучения, чтобы найти наиболее эффективный.
  • Настройка гиперпараметров. Для каждой модели необходимо оптимизировать несколько значений гиперпараметров, например. количество скрытых слоев и размеры каждого слоя в нейронной сети.
  • Обучение модели: выберите модель, выберите некоторые функции данных, попробуйте некоторые гиперпараметры и обучите модель.
  • Оценка модели. Протестируйте модель по набору данных проверки. Отслеживайте и сравнивайте показатели для каждой модели.
  • Вывод: после определения многообещающей потенциальной модели (наряду с функциями и гиперпараметрами) создайте логику для прогнозирования невидимых данных.
  • Повторять, повторять и повторять снова: измените что-нибудь, попробуйте другую идею и продолжайте делать это много-много раз, пока не найдете что-то, что работает хорошо.

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

Проблемы построения модели

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

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

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

Наконец-то модель готова! Теперь действительно начинается тяжелая работа ...

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

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

Разработка модели обычно выполняется в ноутбуках Jupyter. Вероятно, что модель обучается с использованием статического снимка набора данных в файлах CSV или Excel. Обучение проводится на локальном ноутбуке разработчика или, возможно, на виртуальной машине в облаке.

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

Заключение

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

Однако не этот этап, а следующий часто сбивает с толку многие проекты и мешает им увидеть свет. Теперь, когда у нас есть представление о фазе «Построение модели», мы готовы взглянуть на фазу «Ввод модели в производство» в следующей статье.

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