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

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

Что это за проблемы? Давайте взглянем!

1. Сбор данных

Данные играют ключевую роль в любом сценарии использования. 60% работы специалиста по данным заключается в сборе данных. Новички, которые экспериментируют с машинным обучением, могут легко найти данные из Kaggle, UCI ML Repository и т. Д.

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

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

2. Меньший объем обучающих данных.

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

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

Представьте, что ваша модель машинного обучения - это ребенок, и вы планируете научить его различать кошку и собаку. Итак, мы начинаем с того, что указываем на кошку и говорим «это КОШКА», а затем делаем то же самое с СОБАКОЙ (возможно, повторяя эту процедуру много раз). Теперь ребенок сможет различать собаку и кошку, определяя формы, цвета или любые другие особенности. И вот так малыш становится гением (в различении)!

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

Поэтому ясно одно. Нам нужно обучить модель с достаточным количеством ДАННЫХ.

3. Непредставительные данные обучения

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

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

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

Популярный случай изучения предвзятости выборки произошел во время президентских выборов в США в 1936 году (Лэндон против Рузвельта). Литературный дайджест провел очень крупный опрос, отправив почту примерно десяти миллионам человек, из которых 2,4 миллион ответил, и предсказал, что Лэндон собирается получить 57% голосов с высокой степенью уверенности. Как бы то ни было, Рузвельт победил, набрав 62% голосов.

Проблема здесь в методе выборки, чтобы получить адреса для проведения опроса, Литературный дайджест, использованные подписки на журналы, списки членства в клубах и т. Д., Которые используются более состоятельными людьми, которые вынуждены бросать бюллетень республиканца (отсюда Лэндон). Кроме того, проявляется предвзятость отсутствия ответа, поскольку только 25% людей ответили на опрос.

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

4. Низкое качество данных

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

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

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

5. Нерелевантные / нежелательные функции

Мусор на входе, мусор на выходе

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

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

  1. Среди этих 5 функций l ocation значение может не влиять на нашу функцию вывода. Это неактуальная функция, мы знаем, что без нее можно добиться лучших результатов.
  2. Кроме того, мы можем объединить две функции для создания более полезной, например, Feature Extraction. В нашем примере мы можем создать функцию под названием ИМТ, исключив вес и рост. Мы также можем применять преобразования к набору данных.
  3. Также помогает создание новых функций путем сбора дополнительных данных.

6. Переоснащение обучающих данных

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

Это означает, что модель работает хорошо, делая вероятные прогнозы на основе обучающего набора данных, но она плохо обобщается.

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

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

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

7. Недостаток тренировочных данных

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

Основные варианты уменьшения недостаточного оснащения:

  1. Разработка функций - добавление лучших функций в алгоритм обучения.
  2. Удаление шума из данных.
  3. Увеличение параметров и выбор мощной модели.

8. Автономное обучение и развертывание модели.

Инжиниринг машинного обучения следует этим шагам при создании приложения 1) Сбор данных 2) Очистка данных 3) Разработка функций 4) Анализ шаблонов 5) Обучение модели и оптимизация 6) Развертывание.

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

Как правило, многие разработчики собирают данные с таких веб-сайтов, как Kaggle, и начинают обучать модель. Но на самом деле нам нужно создать источник для сбора данных, который динамически изменяется. Автономное обучение или пакетное обучение нельзя использовать для этого типа переменных данных. Система проходит обучение, а затем запускается в производство и работает без обучения. Здесь данные могут дрейфовать, поскольку они меняются динамически.

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

Ссылки





Заключение

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

Буду рад услышать предложения, если они у вас есть. Я очень скоро вернусь с другой интригующей темой. А пока оставайтесь дома, оставайтесь в безопасности и продолжайте исследовать!

Если вы хотите связаться, свяжитесь со мной в LinkedIn.