Машинное обучение стало неотъемлемой частью различных отраслей, от финансов до здравоохранения и не только. Однако создание мощной и эффективной модели машинного обучения — это только начало пути. Развертывание модели в производственной среде сопряжено с собственным уникальным набором проблем, и без надлежащего планирования и исполнения модель может не принести ожидаемых преимуществ.
В этой статье мы сосредоточимся на двух основных категориях проблем при развертывании модели машинного обучения. Во-первых, это вопросы машинного обучения или статистики, а во-вторых, вопросы разработки программного обеспечения.
Независимо от того, являетесь ли вы специалистом по данным, инженером по машинному обучению или бизнес-лидером, желающим внедрить машинное обучение в свою организацию, эта статья предоставит ценную информацию о важнейших аспектах развертывания модели машинного обучения. Поняв эти проблемы и научившись их преодолевать, вы можете быть уверены, что ваши модели машинного обучения будут приносить значимые результаты и способствовать успеху бизнеса.
Оглавление:
- Дрейф концепции и данных
1.1. Примеры дрейфа данных и концепций в реальных приложениях
1.2. Дрейф данных и концепции - Проблемы разработки программного обеспечения
2.1. Контрольный список проектирования системы
Если вы хотите бесплатно изучать науку о данных и машинное обучение, ознакомьтесь со следующими ресурсами:
- Бесплатные интерактивные дорожные карты для самостоятельного изучения науки о данных и машинного обучения. Начните здесь: https://aigents.co/learn/roadmaps/intro
- Поисковая система для учебных ресурсов Data Science (БЕСПЛАТНО). Добавляйте в закладки свои любимые ресурсы, отмечайте статьи как завершенные и добавляйте учебные заметки. https://aigents.co/learn
- Хотите изучить науку о данных с нуля при поддержке наставника и учебного сообщества? Присоединяйтесь к этому учебному кружку бесплатно: https://community.aigents.co/spaces/9010170/
Если вы хотите начать карьеру в области обработки данных и искусственного интеллекта и вам нужно знать, как это сделать. Я предлагаю сеансы наставничества по науке о данных и долгосрочное наставничество по карьере:
- Долгосрочное наставничество: https://lnkd.in/dtdUYBrM
- Менторские сессии: https://lnkd.in/dXeg3KPW
Присоединяйтесь к программе Среднее членство всего за 5 $, чтобы продолжать обучение без ограничений. Я получу небольшую часть вашего членского взноса, если вы перейдете по следующей ссылке без каких-либо дополнительных затрат с вашей стороны.
1. Дрейф концепции и данных
Одной из основных проблем развертывания вашей модели в рабочей среде является расхождение концепции и данных. Грубо говоря, это означает, что если ваши данные изменятся после того, как ваша система уже развернута?
Давайте возьмем два примера, прежде чем дать им конкретное определение, чтобы иметь лучшее представление о том, как это может выглядеть в реальной жизни.
1.1. Примеры дрейфа данных и концепций в реальных приложениях
Для первого примера предположим, что вы работаете в компании по производству мобильных устройств и обучили алгоритм обучения обнаружению царапин на смартфонах при одном наборе условий освещения, а затем, возможно, освещение на фабрике изменится. Это один из примеров распределения изменений данных или дрейфа данных.
Давайте рассмотрим второй пример, используя задачу распознавания речи. Предположим, вы обучили несколько систем распознавания речи, и когда вы строили речевые системы, довольно часто у вас были некоторые приобретенные данные для обучения вашей модели. В дополнение к данным, которые вы можете приобрести у поставщика, у вас также могут быть исторические пользовательские данные о пользователях, обращающихся к вашему приложению, вместе с расшифровками этих необработанных пользовательских данных. Такие пользовательские данные, конечно, должны собираться с очень четким разрешением пользователя и четкими гарантиями конфиденциальности пользователя.
После того, как вы обучили свою систему распознавания речи на таком наборе данных, вы можете затем оценить ее на тестовом наборе, но, поскольку речевые данные со временем меняются, при создании систем распознавания речи иногда вам нужно будет собрать набор для разработки или удерживайте проверочный набор, а также тестовый набор, содержащий данные только за последние несколько месяцев. Вы можете протестировать его на относительно свежих данных, чтобы убедиться, что ваша система работает даже на относительно свежих данных.
После того, как вы подтолкнете систему к развертыванию, вопрос в том, изменятся ли данные, или после того, как вы запустили ее в течение нескольких недель или нескольких месяцев, данные снова изменились? Поскольку данные изменились, например, изменился язык или, возможно, люди используют совершенно новую модель смартфона с другим микрофоном, поэтому звук звучит по-другому, производительность системы распознавания речи может ухудшиться.
1.2. Данные против концептуального дрейфа
Для вас важно понимать, как изменились данные и нужно ли вам в результате обновить алгоритм обучения. Когда данные меняются, иногда это постепенное изменение, как, например, в английском языке, который меняется, но меняется очень медленно, поскольку новая лексика вводится относительно медленно.
Иногда данные меняются очень внезапно, когда в системе происходит внезапный шок. Например, когда разразилась пандемия COVID-19, многие системы мошенничества с кредитными картами перестали работать, потому что модели покупок людей внезапно изменились. Многие люди, которые относительно мало совершали покупок в Интернете, внезапно стали гораздо больше совершать покупки в Интернете. Таким образом, то, как люди использовали кредитные карты, изменилось очень внезапно, и это фактически привело к срабатыванию многих систем по борьбе с мошенничеством.
Этот очень внезапный переход к распределению данных означал, что многие команды машинного обучения в начале COVID немного пытались собрать новые данные и переобучить системы, чтобы заставить их адаптироваться к этому совершенно новому распределению данных.
Иногда терминология описания этих изменений данных используется не совсем последовательно, но обычно термин дрейф данных используется для описания того, изменяется ли входное распределение x, например, если новый политик или знаменитость внезапно становится известным, и его упоминают гораздо больше, чем раньше.
Термин изменение концепции относится к желаемому сопоставлению. От x до y меняется как будто до COVID-19. Возможно, для данного пользователя множество неожиданных онлайн-покупок должны были пометить его учетную запись как мошенническую. После начала COVID-19, возможно, те же самые покупки действительно не были бы поводом для беспокойства с точки зрения пометки. Что кредитная карта могла быть украдена, еще один пример дрейфа понятий. Предположим, что x – это размер дома, а y – цена дома, потому что вы пытаетесь оценить цены на жилье. . Если из-за инфляции или изменений на рынке дома со временем могут подорожать. Тот же самый размер дома будет в конечном итоге с более высокой ценой. Это было бы изменением концепции. Может быть, размер домов не изменился, но изменилась цена данного дома. В то время как дрейф данных будет, если, скажем, люди начнут строить большие дома или начнут строить дома меньшего размера, и, таким образом, входное распределение размеров домов действительно изменится с течением времени.
При развертывании системы машинного обучения одной из наиболее важных задач часто будет обеспечение возможности обнаружения любых изменений и управления ими. Включая дрейф понятий, когда определение того, что есть у при данном х, меняется. А также дрейф данных, который возникает, если распределение x изменяется, даже если отображение из x или y не меняется.
2. Проблемы разработки программного обеспечения
Второй набор проблем, которые вам придется решить для успешного развертывания системы, — это проблемы разработки программного обеспечения. Вы реализуете службу прогнозирования, работа которой состоит в том, чтобы принимать запросы x и выводить прогноз y; у вас есть много вариантов дизайна того, как реализовать эту часть программного обеспечения.
2.1. Контрольный список проектирования системы
Вот контрольный список вопросов, которые могут помочь вам в принятии правильных решений по управлению проблемами разработки программного обеспечения:
- Вам нужны прогнозы в реальном времени или пакетные прогнозы?
Например, если вы строите систему распознавания речи, в которой пользователь говорит, и вам нужно получить ответ через полсекунды, то, очевидно, вам нужны прогнозы в реальном времени.
Напротив, вам может потребоваться создать системы для больниц, которые ведут записи пациентов. Вы можете взять электронные медицинские карты и запустить их как ночной пакетный процесс, чтобы увидеть, есть ли что-то, связанное с пациентами, которых вы можете обнаружить. Таким образом, в системе такого типа было бы нормально, если бы мы просто запускали ее в пакете записей пациентов один раз за ночь. Независимо от того, нужно ли вам написать программное обеспечение для работы в реальном времени, которое может реагировать в течение сотен миллисекунд, или вы можете написать программное обеспечение, которое просто выполняет множество вычислений за одну ночь, это повлияет на то, как вы реализуете свое программное обеспечение.
2. Работает ли ваша служба прогнозирования в облаке, на периферии или, может быть, даже в веб-браузере?
Сегодня существует множество систем распознавания речи, которые работают в облаке, потому что вычислительные ресурсы облака позволяют более точно распознавать речь. Есть также некоторые речевые системы, работающие на периферии, например, множество речевых систем в автомобилях. Есть также некоторые мобильные системы распознавания речи, которые работают, даже если ваш Wi-Fi отключен. Это были бы примеры речевых систем, работающих на границе.
Когда вы развертываете системы визуального контроля на фабриках, вы практически запускаете их и на периферии. Потому что иногда, неизбежно, Интернет-соединение между заводом и остальной частью Интернета может прерваться. Вы просто не можете позволить себе закрыть фабрику всякий раз, когда у нее пропадает подключение к Интернету, что случается очень редко, но, возможно, иногда случается. С появлением современных веб-браузеров появились более совершенные инструменты для развертывания алгоритмов обучения прямо в веб-браузере.
3. Сколько у вас вычислительных ресурсов?
При создании службы прогнозирования также полезно учитывать, сколько ресурсов компьютера у вас есть. Вы довольно часто будете сталкиваться с ситуациями, когда будете обучать нейронную сеть на очень мощном графическом процессоре, только чтобы понять, что вы не сможете позволить себе такой же мощный набор графических процессоров для развертывания и вам придется делать что-то еще для сжатия. или уменьшить сложность модели. Поэтому, если вы знаете, сколько ресурсов процессора или графического процессора и, возможно, также сколько ресурсов памяти у вас есть для службы прогнозирования, это может помочь вам выбрать правильную архитектуру программного обеспечения.
4. Насколько приемлема задержка?
В зависимости от вашего приложения, особенно если это приложение реального времени, задержка и пропускная способность, например, измеренные с точки зрения количества запросов в секунду и запросов в секунду, будут другими показателями разработки программного обеспечения, которые вам могут понадобиться. В распознавании речи обычно требуется получить ответ пользователю в течение полсекунды или 500 миллисекунд. Из этого бюджета в 500 миллисекунд вы можете выделить около 300 миллисекунд на распознавание речи. Таким образом, это дает требование к задержке для вашей системы. Пропускная способность означает, сколько запросов в секунду вам нужно обрабатывать с учетом ваших вычислительных ресурсов или может быть предоставлено определенное количество облачных сервисов. Например, если вы создаете систему, которая должна обрабатывать 1000 запросов в секунду, было бы полезно проверить вашу систему, чтобы у вас было достаточно компьютерных ресурсов для выполнения требования QPS.
5. Какой уровень безопасности требуется для вашей системы?
Наконец, что касается безопасности и конфиденциальности, в зависимости от ваших приложений требуемые уровни безопасности и конфиденциальности могут сильно различаться. Например, если вы работаете с медицинскими данными, такими как электронные медицинские карты и карты пациентов, очевидно, что требования к безопасности и конфиденциальности будут очень высокими, поскольку карты пациентов являются очень конфиденциальной информацией.
В зависимости от вашего приложения вы можете захотеть разработать соответствующий уровень безопасности и конфиденциальности в зависимости от того, насколько конфиденциальны эти данные, а также иногда на основе нормативных требований. Если вы где-нибудь сохраните этот контрольный список, просмотр его при разработке программного обеспечения может помочь вам сделать правильный выбор программного ядра при реализации службы прогнозирования.
Подводя итог, можно сказать, что развертывание системы требует выполнения двух широких наборов задач:
- Написание программного обеспечения, позволяющего развернуть систему в производственной среде.
- Контролируйте производительность системы и продолжайте поддерживать ее, особенно перед лицом смещения концепции, а также смещения данных.
Одна из вещей, которую вы увидите при создании систем машинного обучения, заключается в том, что методы самого первого развертывания будут сильно отличаться от тех, когда вы обновляете или поддерживаете систему, которая уже была развернута ранее.
Если вам понравилась статья и вы хотите меня поддержать, сделайте следующее:
- 👏 Похлопайте в ладоши (50 хлопков), чтобы эта статья попала в топ
- Подпишитесь на меня в Среднем
- 📰 Смотрите больше контента в моем среднем профиле
- 🔔 Подпишитесь на меня: LinkedIn|Youtube| Гитхаб | Твиттер
Присоединяйтесь к программе Среднее членство всего за 5 $, чтобы продолжать обучение без ограничений. Я получу небольшую часть вашего членского взноса, если вы перейдете по следующей ссылке, без каких-либо дополнительных затрат
Хотите начать карьеру в области науки о данных и искусственного интеллекта, но не знаете, как это сделать. Я предлагаю сеансы наставничества по науке о данных и долгосрочное наставничество по карьере:
- Долгосрочное наставничество: https://lnkd.in/dtdUYBrM
- Менторские сессии: https://lnkd.in/dXeg3KPW